„Dobrý vývojář musí totiž znát (kromě programování) spoustu věcí“
Mít širší rozhled, nemít klapky na očích, nevidět jen ty svoje proměnné, bajty a nízkoúrovňové metody… je samozřejmě správné. ALE: ne neznamená to, že by programátor měl všechny ty věci kolem dělat (byť rozumět by jim měl).
Tady jsou totiž dva protichůdné faktory:
- Týmová práce zdržuje – e-mailování, telefonování, IM, schůzky, to všechno bere čas. Vysvětlit, co chci udělat, ostatním* zabere často víc času než kdyby si to měl člověk udělat sám. K tomu se přičítají ještě případné osobní antipatie, byrokratické procesy (kdy schvalovací proces trvá několikanásobně déle než vlastní činnost – a stejně to většinu času někomu jen leží na stole nebo ve schránce). Z tohoto pohledu je ideální renesanční člověk, všeuměl, který zvládne projekt od začátku do konce a nemusí se s nikým rozčilovat.
- Příliš mnoho činností člověka rozptyluje, „multitasking“ má velkou režii, člověk se nemůže soustředit na to, co umí nejlépe a řeší administrační věci kolem. Proto máme specializaci (které vděčíme za ekonomický růst a díky které nežijeme v jeskyních). Každý dělá to, co umí nejlépe, pak efektivně využíváme zdroje (lidi). Není dobré když vysoce kvalifikovaný zdroj (programátor) dělá věci, které může zastat sekretářka nebo nějaký brigádník, který se stará o síť, myši a tiskárny.
Než doputuje informace od zákazníka/uživatele k programátorovi, je to taková tichá pošta, na každém komunikačním rozhraní (zákazník/analytik, analytik/vývojář atd.) dochází k šumům a nedorozuměním – a také k časovým zpožděním, než se dohodne několik schůzek. Ovšem když má vývojář vstávat od rozdělané práce a sbírat požadavky od zákazníků, to je taky otrava a žrout drahocenného času. Ideálně by měl mít každý vývojář (nebo skupina vývojářů) sekretářku (někdy tuhle roli zastává projekťák), který zařídí všechno kolem a vývojář se pak může soustředit na svoji práci a výjimečně důležité schůzky, kde se řeší zásadní věci. A nemusí zabít třeba půl dne vyjednáváním o tom, aby mu síťaři povolili nějaký port na firewallu nebo popohánět jiné kolegy, aby dodali ikony nebo překlady, které měly být hotové už dávno.
Univerzální závěr z toho udělat nejde, záleží čemu dáme větší váhu, co nás víc trápí. Trochu se obávám, že budeme vždy nespokojení – každý chce to, co nemá (jako s manželstvím :-). Když budu mít problémy s analytiky a dalšími kolegy, budu se vztekat a říkat, že bych si radši všechno udělal sám a po svém. Když budu na všechno sám, budu naštvaný na to, že musím trávit čas s těmi pitomými zákazníky a vysvětlovat jim banality, což může dělat obchodník s analytikem, a já bych se mohl soustředit na programování (což nikdo jiný dělat nemůže). Prostě život je boj a trefit to optimum není vůbec jen tak.
„Samosebou, každý má možnost říct: Já jsem přeci PROGRAMÁTOR, tyhle věci za mne má řešit někdo jiný, já jsem od toho, abych programoval… Ano, ale takový ‚programátor‘ je něco jako dělník u pásu – ráno přijde do práce, osm hodin dělá to, co má v pracovní návodce, a pak jde domů.“
S tím si dovolím nesouhlasit – šéf směny v montovně si klidně může stoupnout k pásu a montovat, mistr na stavbě nebo v dílně může vzít rozdělanou práci po učňovi a dodělat ji (dokonce často lépe než on). Ale dokáže si manažer (nebo projekťák, obchodník, analytik, tester…) stáhnout zdrojáky aplikace a pokračovat v práci programátora, který odešel? Někdy ano, zažil jsem takové dva (nebo spíš jeden a půl), ale většinou to v IT neplatí a manažeři umí řídit a všechno kolem, ale programovat neumí (v lepším případě už to zapomněli, v horším to nikdy neuměli). To je v pořádku – každý má nějakou specializaci, ale není to vztah jako na té stavbě nebo v dílně či montovně u pásu.
*) ať už to jsou podřízení nebo někdo další v řetězci (např. analytik → vývojář → tester), nebo kolegové z jiných odděleních (síťaři, po kterých něco chci).