Svoboda programátora
Dnes už se téměř nikdo nepozastavuje nad tím, že je po vývojářích pracujících v týmu vyžadováno dodržování společného způsobu psaní a formátování zdrojového kódu. Snad s výjimkou klasických freelance vývojářů, kteří (v některých případech) nejsou nuceni ke svým zdrojákům nikoho pouštět, si prakticky všichni uvědomují, že psát jaksi "normalizovaně" je nutnost. Trendem větších i menších firem je snaha produkovat kód, na kterém není poznat, který konkrétní vývojář ho napsal. V ideálním případě by programátor neměl být schopen rozlišit rozdíl mezi kódem vlastním a kódem, který napsal jeho kolega.Ještě před pár lety jsem se účastnil vášnivých diskuzí, kde byly tyto změny označovány za "katy" skutečných programátorů, kreativního myšlení a prostě programátorské svobody vůbec. Rok se s rokem sešel, celý problém se posunul o jednu úroveň dál - a já mám intenzivní pocit déjà vu.
V srpnu jsem si odnesl zajímavé postřehy z neformální diskuze po oficiální části Openmeetingu o profesionálním vývoji v PHP. Debatoval jsem tam tuším s Radkem Domínem (Skype), Michalem Aichingerem (tehdy BENETA.cz, dnes Seznam.cz), Jakubem Vránou a možná několika dalšími lidmi. Probírali jsme právě téma svobody programátora (potažmo vývojáře) a já se s překvapením dověděl, že:
- psát kód podle sjednocujících pravidel nevadí
- nejen, že obyčejný (méně zkušený) programátor nemá dostat možnost rozhodnout o tom, co má dělat, ale dokonce ani o tom, jakým způsobem to dělat
- používat ve firmě jednotné nástroje, zejména pak jednotné vývojové prostředí, je kruté omezení vývojářovy svobody a deklasuje ho do pozice "dělníka"
Na následujících řádcích se pokusím vysvětlit, proč nedokáži přijmout některé výše zmíněné názory za své.
Ve firmě, kde pracuji, jsme se zhruba před rokem a půl rozhodli, že budeme všichni jednotně používat ke své práci vývojové prostředí Eclipse. Aplikace vyvíjíme v naprosté většině případů v PHP5, používáme šablonovací systém Smarty a CVS, a Eclipse se nám jevilo jako nevhodnější. Po těch osmnácti měsících musím konstatovat, že jsme udělali dobře. Za nejdůležitější považuji ty skutečnosti, že:
- I když zpočátku nebyli touto myšlenkou všichni nadšeni, tak přechod na nové prostředí se řešil týden. Pak si všichni zvykli a prostředí Eclipse jim nikterak nebrání v práci. Vzhledem k tomu, že většina vývojových prostředí je si způsobem práce s nimi velice podobná a liší se pouze v detailech, tento potenciální problém jsme prakticky nemuseli řešit.
- V Eclipse nám všechno šlape jako hodinky, všechny problémy jsou vyřešeny. Mohli jsme totiž spojit síly při zdolávání jednotlivých překážek a využít jakéhosi "kolektivního vědomí". Během několika málo týdnů vznikly ve firemním intranetu návody na instalaci a konfiguraci jednotlivých pluginů i celého prostředí.
- Dokážeme si vzájemně radit nejen na úrovni kódu, ale právě i na úrovni vývojového prostředí. Neplýtváme tak časem na vlastní zkoumání "jak to rozchodit zrovna u mě".
- Při nástupu nového vývojáře má tento k dispozici výbornou interní dokumentaci, předpřipravený balík k instalaci a plnou místnost lidí s potřebnými zkušenostmi. Ve výsledku tak šetříme svůj čas i peníze.

A že bychom se cítili "omezováni"? Ne, volnost a tolik zmiňovaná "svoboda" totiž spočívá v něčem zcela jiném. I programátoři na junior pozicích dostávají prostor k tomu, aby ukázali, co v nich je. Dostanou k dispozici detailní popis toho, co chceme, ale to, jak konkrétně to bude realizováno, necháváme na nich (jistě, úplné nováčky je třeba nasměrovat). Samozřejmě je to trochu riskantní, ale v praxi neskutečně motivující postup. Pokud jednotliví vývojáři dostávají úkoly, které odpovídají jejich schopnostem (a o to se postaráme), málokdy to skonči nějak výrazně špatně a méně zkušení programátoři tak dostávají možnosti kvalitativně růst. Nutností je pak samozřejmě vytvořený kód a použité řešení alespoň nahrubo zkontrolovat a s jeho tvůrcem ho diskutovat.
Ve zkratce tedy říkám - svoboda programátora nespočívá v tom, jestli pracuje v tom nebo onom vývojovém prostředí. Pokud to firmě šetří peníze a nově přijatým lidem ulehčuje zapracování, rozhodně má smysl tato prostředí sjednotit. Naopak běžnou praxi některých firem, kde je veškeré rozhodování o konečné podobě zdrojového kódu pouze na těch "zkušenějších", pochopit nedokážu a vnímám ji jako brzdu rychlého rozvoje zaměstnanců (a omezování jejich "programátorské" svobody).
Cítí se vývojář svobodnější, když může používat své vlastní vývojové prostředí, nebo je mu lépe ve chvíli, kdy dostane větší prostor při řešení problémů?