neděle 4. května 2014

Mýty o češtině v softwarových projektech

Pojďme společně rozkrýt několik mýtů pojících se k používání češtiny v softwarových projektech. Do mých názorů se promítají zkušenosti ze dvou zcela odlišných softwarových firem a světů. Dřívější firma byla orientovaná na regionální trh (ČR, SK) a všechny projekty byly realizovány v češtině. Stávající firma naopak dodává systémy do všech koutů světa a na vývoji pracují lidé z více států. Vývoj tedy logicky probíhá kompletně v angličtině.

Je potřeba přiznat, že ještě před několika lety bych určitě mluvil jinak a tento blogpost bych nenapsal. I z některých mých prehistorických příspěvků je zřejmé, jaký pasivní zastánce češtiny v kódu jsem dříve býval. :) Možná ne přímo zastánce, ale spíš ten, kterému čeština nijak výrazně nevadila. Byl jsem tak prostě zvyklý roky programovat a celé to zapadalo do požadavků na software realizovaných projektů. Domnívám se, že není problém své názory měnit na základě poučení z chyb a podle postupně získaných zkušeností. :)

Mýtus "Programátor nepotřebuje umět výborně anglicky"

Znalost angličtiny je jednou z klíčových dovedností programátora. Dalo by se říct, že je to takový meta-skill. Náš obor klade vysoké nároky na průběžné učení a rozšiřování profesní kvalifikace. Bez znalosti angličtiny je právě získávání nových dovedností a znalostí velmi problematické. Knížky, fóra, github, blogy, socsítě, návody, dokumentace, a další jsou studnicí informací, které mohou rozhodovat o úspěchu či neúspěchu celého projektu.

Zdrojový kód je důležitý komunikační prostředek celého týmu. Jazykové schopnosti členů týmu se výrazně projeví na kvalitě celého kódu. Špatné pojmenování je významným zdrojem programových chyb a nečekaných překvapení. Testy slouží jako interní dokumentace systému a jejich názvy musí být co nejvýstižnější.

Určitě nezastávám názor, že programátor, který neumí pořádně anglicky, není schopen vytvářet ve výsledku kvalitní aplikace. Věřím, že mnoho dobrých aplikací napsali a ještě napíšou lidé, kteří anglicky umí velice špatně. Ale mnohem větší procento dobrých programátorů angličtinu ovládá dobře. Je to stejné jako s jinými skilly. Nemusíte psát testy, používat TDD, CI, agilní metodiky, prototypování, iterativní vývoj, revize kódu, apod. a požadovaného výsledku také dosáhnete. Otázkou je v jaké kvalitě a s jakou efektivitou? A hlavně, kdo a jak bude schopen aplikaci dlouhodobě udržovat a rozvíjet?

Souvislost jazykové vybavenosti programátora a otázka pracovních příležitostí na zajímavých projektech je na samostatný blogpost. Určitě má zkušenosti každý, kdo se v poslední době zajímal o nějaké pracovní nabídky. Angličtina je již téměř všude must-have. A kde není, tam je to podezřelé. :)

Mýtus "Čeština ve zdrojovém kódu nevadí"

English. Lingua franca for programming.

Z pohledu někoho, kdo angličtinou příliš nevládne, je čeština jedinou šancí jak významu kódu porozumět. Já ale za ideální situaci považuji, když jediným místem ve zdrojových kódech, kde objevíme češtinu, jsou lokalizované resources. Čeština namíchaná s angličtinou snižuje čitelnost kódu. Do názvosloví se zanášejí patvary typu ObjednavkaFactory, ObjednavkaTovarna, getCena, apod. Neustále se řeší, co se má přeložit a kdy je lepší ponechat anglický ekvivalent. Pamatuji na situaci, kdy kolega pojmenoval třídu 'Kanalovna', protože pracovala s channels WCF služby. Jiným hezkým případem programátorské lidové tvořivosti budiž chybová hláška z přiloženého tweetu, kterou nedávno zpopularizoval Augi. Prostě hromada problémů způsobená díky pokusům sloučit dva nekompatibilní jazykové světy.


Mýtus "Terminologie domény by měla být v češtině, protože v ní máme větší vyjadřovací možnosti"

Nejčastější výjimky z pravidla “vše v angličtině” se dělají na úrovni názvů doménových objektů. Argumentem bývá terminologická složitost některých specifických domén, kdy je problém najít vhodný termín “alespoň v češtině”. Pokud ale najdeme vhodný termín v češtině, určitě ho najdeme také v angličtině. V některých případech se určitě vyplatí spolupracovat se zkušeným překladatelem. Doménu by měli dobře znát doménoví analytici a v potřebném rozsahu také programátoři. Kodéři bez znalostí souvislostí nemají obvykle v projektu příliš vysokou hodnotu.

Osobně vidím problém ještě někde jinde. A sice je nutné, aby každý projekt měl dobře definovaný doménový slovník, ze kterého vychází terminologie používaná v projektu. Z vlastní zkušenosti vím, jak velký problém to bývá. Pokud se už na začátku projektu nezadefinují jednoznačně pojmy, pak to dopadá tak, že se systém hemží synonymy a různými názvy pro stejnou entitu nebo vlastnost. Takové nejednoznačnosti výrazně komplikují pochopení a udržovatelnost systému.

Mýtus "Každý softwarový projekt by měl být realizován v angličtině"

Jsou projekty, u kterých je jasné, že jiná možnost než angličtina neexistuje. Např. děláte pro zahraničního zákazníka, ve vašem týmu se mluví více jazyky, máte globálnější ambice, vyvíjíte nějaký open-source nebo prostě jen chcete, aby váš kód pochopil i někdo nemluvící česky. Na druhou stranu jsou stále situace, kdy je nutné projekt realizovat ve větší míře v češtině. V případě, že máte pouze lokálního zákazníka, kterému nevadí, že nebude mít projektové artefakty v angličtině a současně nemáte tým, který by to v angličtině zvládl. Pak to zřejmě smysl má. Osobně si ale myslím, že takové ryze české projekty budou stále více v menšině. Uvědomělí zákazníci budou požadovat za svoje (nemalé) investice realizace projektů, které nebudou pevně svázané s lokálním jazykem.

Mýtus "Dobrá kombinace je kód v angličtině a zbytek v češtině"

Nevidím to jako úplně dobrý nápad. Takový hybrid asi nebude použitelný pro někoho, kdo nemluví česky. Při realizaci projektu se navíc budete muset neustále přepínat mezi češtinou a angličtinou. Rozhodněte se pro angličtinu a vytvářejte všechny projektové artefakty v angličtině. Zpočátku to možná bude trochu drhnout, ale vydržte, výhody jsou zřejmé.

Mýtus "Kód v angličtině, komentáře v češtině"

Raději dobře čitelný kód, který nepotřebuje (nedokumentační) komentáře. A pokud jsou přeci jen potřeba, pak bych rozhodně zůstal u angličtiny. Komentáře v češtině by se nejspíše staly nesmyslnými ostrůvky vítězství programátorova nacionálního cítění. U dokumentačních komentářů předpokládám, že budou vždy v angličtině.

A na závěr jeden bonbónek ...

"Pro větší názornost jsem zdrojový kód přeložil do češtiny"

Néé, jen to ne. Pokud k tomu autor překladu odborné literatury přidá ještě jako bonus diakritiku, pak takovou knížku dočte do konce zřejmě jen hodně otrlý jedinec. ;)

Jaký názor na symbiózu češtiny a angličtiny máte vy? Díky za komentář.

8 komentářů:

  1. Ja osobne jedu a tlacim "vse v anglictine". Nemyslim, ze by bezny programator dneska tohle nezvladl a do budoucna to ma jen vyhody. A samozrejme odpadaji patvary jako prave MlekoFactory atp.

    Snazim se to delat i u domenovyhc objektu a zjistit si nejaky "oficialni" preklad toho terminu. Kdyz nejde tak zkusim neco v anglictine podobneho - pristup "aspon neco" - ale uz jsem parkrat zoufale pouzil i spojeni v cestine.

    Vseho vsudy kod nepiseme do skaly, zmenit se da vsechno.

    OdpovědětVymazat
  2. Moc děkuji za zmínění doménového slovníku. Bez něho to podle mě smysluplně nejde: co programátor, to různá úroven jazyka. Ne nadarmo je správné pojmenování jedním ze dvou nejsložitějších úkolů programování.

    OdpovědětVymazat
  3. Kolega dělal na projektu, kde byla dokumentace (a občas i proměnné) ve španělštině. No, nezáviděl jsem mu to.

    Nemám rád angličtinu, ale v IT to asi jinak fakt nejde.

    OdpovědětVymazat
  4. Je to opravdu příspěvek od Roberta Dreslera, toho, kterého s oblibou sleduji na tweeteru, a který má většinou velmi trefné - byť často převzaté, glosy?!

    V IT se profesionálně pohybuji 10 let a nikdy, opravdu nikdy mě nenapadlo psát komentáře nebo dokumentaci v češtině. Považuji to v IT za velmi těžké faux pas, omluvitelné jen u studentů bakalářských programů. No way!

    OdpovědětVymazat
    Odpovědi
    1. Jsem programátor, který se neustále učí a s postupem času mění své názory. Jednou z věcí, kterou mě život naučil, je nebýt dogmatický. Nesoudit lidi podle jedné vlastnosti nebo úrovně jedné dovednosti. Dogmatismus zabraňuje vidět problém z mnoha odlišných pohledů. Programování je hodně komplexní obor náročný na technické i sociální dovednosti. Jsou firmy technologicky špičkové, kde jsou také špičkoví programátoři. Pak jsou regionální firmy, kde jsou lidé méně ambiciózní, neumí toho tolik, ale je fajn s nimi spolupracovat z jiných důvodů. Každé prostředí tě navíc nějak formuje. Pokud děláš roky na projektu, kde aktivně angličtinu nepotřebuješ, pak ji nějak víc neřešíš. A to byl právě můj případ. ;)

      Měj se fajn a díky za komentář.

      Vymazat
  5. Musím jedině souhlasit. V mém případě byl zpočátku s angličtinou trochu problém, ale právě jejím používáním jsem si ji výrazně zlepšil.

    OdpovědětVymazat
  6. Ideály jsou pěkné. Jenže v angličtině je rozdíl číst, psát rozumět a mluvit. Jsou to 4 samostatné dovednosti. Pokud nemám špičkový tým, bude nejspíš fungovat kód v angličtině, vše v ostatní česky. Komentáře IMO možno vždy prelozit, ve chvíli, kdy do projektu vstupuje někdo z venku.

    OdpovědětVymazat
  7. Zkušenost z aktuálního zaměstnání: legacy kód je směsicí češtiny a angličtiny (je ho hodně), moderní kód je čistá angličtina; legacy komentáře spíš čeština, moderní omezujeme (struktura kódu), jinak angličtina. Projektová dokumentace, bugtrack, help desk — všechno v angličtině.

    Občas to drhne, ale funguje to. Největší problém je se dvěma českými zákazníky, kde nám ta čeština prosakuje do dokumentací a bug trackeru, do kódu už prostě nesmí (neprojde code review).

    OdpovědětVymazat