RSS: Vše - Teamworking



Svoboda programátora

24. 02. 2008, 22:41:21,Teamworking,

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.
Opravdový programátor píše v binárním kódu

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ů?

Autor: Pavel Šindelka

Komentáře


[1] (Maple) - 25. 02. 2008, 08:01:27
Naprostý souhlas a tuhle myšlenku šířím už dlouho. Znalost IDE je taky znalostí a má cenu. Umožňuje to pak často třeba i sdílení konfigurace IDE v source control (CVS/SVN/...) a podobně. Provedu checkout a mám nastaveno, nehraju si dva dny laděním prostředí.
[2] (Wu) - 25. 02. 2008, 08:22:09
A sčítat hrušky s jabkama ve firmě umíte? :)
Ne že bych chtěl zpochybňovat argumenty hrající pro jednotnost prostředí, ty jsou jasné, ale tvrdit, že volný prostor při řešení problémů je stejný druh svobody jako výběr IDE? Ba přímo větší? Volnost řešit problémy... připomíná mi to svobodu výběru typu "můžeš se svobodně rozhodnout, buď půjdeš s košem, nebo dostaneš pár facek". Problémy se přece MUSÍ vyřešit takřka za každou cenu, tam svoboda není žádná :).
[3] (David Majda) - 25. 02. 2008, 09:43:00
No nevím, mě přijde, že standardizací vývojového prostředí se firma připravuje o ty lidi, kteří v daném prostředí dělat v žádném případě nechtějí.

Zrovna Eclipse je fajn IDE, ale třeba já jsem (pokud nepíšu Javu) mnohonásobně produktivnější ve vimu a Unixové příkazové řádce a pokud by mi někde neumožnili tyto nástroje používat, prostě tam nebudu chtít pracovat - nebudu se přece dobrovolně mučit. Jiní jsou na tom podobně třeba s emacsem.

Zajímavé je, že třeba i taková firma jako Microsoft na standardním prostředí údajně nijak nelpí a zastává názor "pište si kód v čem chcete". Výsledek? Značná část vývojářů tam používá něco jiného než Visual Studio a jsou spkojení.
[4] (Jan Vrana) - 25. 02. 2008, 09:47:48
Re:2

Ono je otazkou co se vam jevi jako svoboda. Pokud prijmete Senecovo "Svoboda je poznana nutnost" nemuzete se citit nesvobodne kdyz scela svobodne poznate ze je nutne mit shodne IDE, shodne pracovni postupy apod.. Problem je v tom poznani nutnosti, pokud k te nutnosti dospejete na zaklade predchozich zkusenosti jste svobodny. Pokud vam to nekdo naridi a vy to neprijmete pak svobodny nejste... Zuby si cistite taky scela nesvobodne protoze vam to maminka nakazala... Kdyz si je nebudete cistit tak prvni trhani nervu vas dovede k poznani nutnosti, se o zuby starat a pak si je scela svobodne budete cistit.

S pozdrave Jan Vrana
[5] (evzen) - 25. 02. 2008, 10:24:19
Re 4

Docela by mne zajimalo, jak obecne inspirovat lidi k tomu, aby delali veci tak jak potrebujeme (co uz mame overene - ona nutnost) a citili se pritom "svobodne" aniz by museli jit vlastni cestou poznani (to je drahe a dlouhe)...
[6] (Pavel Šindelka) - 25. 02. 2008, 10:37:47
[2] Já přece netvrdím, že se jedná o stejný typ svobody. Pouze říkám, že jeden z nich považuji za podstatnější než ten druhý. Že jsou věci, které mou svobodu omezují mnohem víc, než možnost zvolit si IDE.
[7] (Wu) - 25. 02. 2008, 22:34:13
[4] já bych se do definování svobody raději nepouštěl, ale když zůstaneme u té poznané nutnosti, sedí to:
Z pohledu firmy platí "čím jednotnější tím líp".
Z pohledu programátora "čím větší volnost, tím líp".
Protože nesrozumitelnost kódu jiného programátora mi přinese velké potíže, až bude na dovolené, nebo až po něm projekt převezmu, akceptuji standardy kódu (poznaná nutnost). Znalost IDE, které používám, a kterou musím zahodit, když mi firma nutí jiné, je samozrejmě omezení (protože to pro mě není poznaná nutnost).

[6] no dobře, možná jde jen o nedobrou formulaci ("řešení problémů" nebo "volnost při tvorbě"). A na juniory pozor, znám velmi dobře z praxe přísloví o kostlivcích ve skříni :).
[8] (Petr Ocásek) - 26. 02. 2008, 10:41:24
[4] Jakube, hezký příspěvek, moc jsem se pobavil :o)

Jinak já jsem u nás vždy bojoval za to, aby si lidi psali v čem chtějí (ať už mluvíme o operačním systému či vývojovém prostředí/editoru). A že to nějak funguje dokazuje z jmenovaných třeba Skype (a mám pocit že Seznam také).

Ve výsledku jsme však skončili (i když třeba jen na čas zakotvili) u jednotného Eclipse.

Řekl bych, že to záleží na počtu vývojářů. Jakmile se kolem nějakého vývojového prostředí shromáždí dostatečně velká (stačí i několikačlenná) "komunita", tak vícenáklady z toho, že se musí prozkoumat více cest budou zanedbatelné. A vyvážené buď vyšší efektivitou, nebo minimálně vyšší spokojeností "svobodných" programátorů :o)
[9] (Michal Aichinger) - 26. 02. 2008, 13:21:41
Předně chci říci, že jsem při té diskuzi stál na Pavlově straně barikády a ne naopak, jak si lidé mohou ze článku myslet :-)

Ano v Benetě jsme meli jedno vývojové prostředí a je jasné proč. Vyvíjeli jsme v něm stejné projekty, tedy PHP + CSS + JS + HTML. Pak jak píše Petr nade mnou, když máte malý tým je vhodné prostředí sjednotit, protože znalosti o řešení problému se lépe sdílí.

Nicméně dnes pracuji v Seznamu a zde se programuje ve více jazycích a na více různých úkolech a různými postupy, tudíž jedno prostředí nemusí vždy stačit. Např. teď jsem zaměřen na JavaScript a jediné vyhovující prostředí je InteliJ Idea. Problém je, že ho tu nikdo nepoužívá, takže sice můžu použít libovolné prostředí, ale jelikož na žádné nemá firma slevu, tak stejně skončím u nějakého zadarmo ;-) Takže až můžete používat ve vaší firmě cokoli, je to jen o tom jestli Vám to ve skutečnosti koupí.

A už chci vidět jak při pohovoru říkám, že chci plat XY a že mi musíte koupit Visual Studio jinak k vám nejdu ;-)
[10] (Bochi) - 28. 02. 2008, 04:56:34
[7] "A na juniory pozor, znám velmi dobře z praxe přísloví o kostlivcích ve skříni :)."

To přísloví znáte z praxe tak "dobře", že jste ani nepochopil, co čem je. ;-)
[11] (Jiří Šoler) - 29. 02. 2008, 12:04:03
Jistá unifikace je nutná - těžko vyvíjet část aplikace pro Unix a zbytek pro Windows - samozřejmě, pokud cílem není právě komunikace mezi takovými systémy. Stařičký spor mezi "opravdovými programátory", kteří pracují nejlépe binárně a těmi, kdo dají přednost různým IDE. Viz http://www.pbm.com/~lindahl..., český překlad http://www.logix.cz/michal/... . V době mého programátorského mládí to byl rozpor mezi zastánci FORTRANU a COBOLU, nemluvě o assemblerech - ale budete se divit, jeden větší projekt jsme dokázali udělat ve dvou lidech - jeden v PL/I, kolega v COBOLu, a fungovalo to. Problém byl, když jsem měl opravit chyby v kolegově programu. Sami vidíte, že je to historie.

Jak by to mělo být. Domnívám se, že určitá unifikace je žádoucí, jinde může být svoboda. Např. pokud se dohodneme, že budeme používat IDE a tabulátory pro členění programu, potom nevadí, když jeden miluje tabelátory na 2 mezery a jiný na 4. Pouze nesmí někde ujet s mezerníkem.

Problém je, když jeden miluje používání grafických nástrojů pro návrh dialogů, druhý je raději píše třeba v notepadu. Pokud zavedu pravidlo: dělej si to jak chceš, ale výsledek musí být funkční v grafickém prostředí, potom nenarazím, pokud to od "opravdových programátorů" nebudu vyžadovat, potom musím sestavit tým jen z takových.

Kromě toho i jeden člověk může měnit své zvyklosti, a potom úprava vlastního programu po několika letech může být lahůdkou, Naštěstí málokterý program přežije dnes více let - prostředí se vyvíjí rychle a starší programy rychle ztrácejí svou životnost - přežívají maximálně algoritmy.

Konečně pohled dnešních mladíků na moje předchozí odstavce je snad přesvědčí, že málokterý program, technika, operační systém či jazyk přežije řekněme 10 let. Ale znám i takové, kteří začali před 50 lety s Fortranem a vystačili s ním dodnes.
[12] (Wu) - 29. 02. 2008, 23:41:29
[10] wow, tady mi někdo vidí do hlavy

Komentovat


Tento článek byl uzavřen. Už není možné k němu přidávat komentáře ani hlasovat