Vývojář si jen s programováním nevystačí

klávesnice brýle programování

Programátor, který umí jen přepisovat algoritmy do programovacího jazyka, dnes ztrácí aureolu vysoce kvalifikovaného odborníka, a jeho cena na pracovním trhu neklesá, ale přímo padá. Pojďme se společně podívat, jaké základní schopnosti jsou nutné k tomu, aby se z tuctového „ťukače kódu“ stal Vývojář.

Začneme aktuálním citátem:

Také samotné IT profese se mění – IT odborníci se transformují do kombinace IT specialisty a byznys konzultanta. Například systémový specialista se stává spíše IT architektem. Programátor se transformuje do analytika, který umí programovat. Případně musí odborníci zvládat více technologií najednou, takže jsou schopni nabídnout balíček řešení. Firmy očekávají, že za své peníze získají všestranného a velmi užitečného zaměstnance. – Petr Krčmář, Kde a jak získat IT práci i v nejisté době – Root.cz

Je to tak. Bývaly doby, kdy se člověk naučil základům algoritmizace, k tomu jeden či dva programovací jazyky, a s referenční příručkou v ruce mohl zaťukat na libovolné dveře v libovolné IT firmě, tvrdit, že je programátor – a byl přijat! Jenže heroické časy solitérních tvůrců pominuly a tvorba software se stala postupně průmyslem se vším, co k průmyslové výrobě patří: s normalizovanými technologickými postupy, s ověřenými a opakovatelnými modely vývoje, postavenými nikoli na nejistých záblescích osvícení geniálního tvůrce, ale na hrubé síle mnoha průměrných…

Webový vývoj má za vývojem software obecně několik let zpoždění – a to nejen co do nástrojů a možností, ale i co do organizace práce. Ještě před deseti lety byla významná část úspěšných webů tvořena solitéry, popř. malými týmy kolem výrazného tvůrce. Během posledních let se i „webová vývojařina“ proměnila a stále víc se prosazuje týmová práce, standardizace a „zprůmyslnění“ celého odvětví.

PHP code ilustrace

Velkému množství webových vývojářů připadá, že jim stačí znát PHP (nebo Javu nebo ASP.NET), SQL, JavaScript, HTML a CSS – a mají vystaráno a jsou profesionálové, schopní tvořit jakékoli weby. Pokud náhodou umí všechny tři programovací jazyky, mají absolvovaný předmět „Algoritmy a datové struktury II“ a opravdu umí programovat, mohou se snadno považovat za programátorské mistry. Jenže ani znalost tří jazyků v praxi pomalu nestačí.

Dobrý vývojář musí totiž znát (kromě programování) spoustu věcí, které ho ve škole nikdo nenaučí a které z manuálů, referenčních příruček a učebnic programování nevyčte. Namátkou: Řešení obchodních záležitostí. Zákonitosti návrhu uživatelského rozhraní. Reálná práce s týmovými nástroji. Analýza reálných zadání. Komunikace s ostatními členy týmu, s lidmi v reálné firmě (např. s manažerem, s obchodníky či oddělením marketingu), se zákazníkem…

Pokud nepřemýšlíte pečlivě, můžete dospět k názoru, že programování spočívá v psaní příkazů programovacího jazyka. (Ward Cunningham)

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ů. Je dobré si takovou praxí projít, to ano, ale zůstat na této úrovni znamená, že budete pro trh práce čím dál tím méně použitelní – na vaše místo se tlačí spousta čerstvých absolventů s minimálními finančními nároky, a vaši „praxi v oboru“ bude jen stěží někdo ochoten zaplatit.

Co by měl vývojář umět?

Schopnost přesáhnout úzce vymezené hranice oboru a komunikovat i s dalšími lidmi v týmu i mimo něj se ukazuje při tvorbě webů (a software obecně) jako mnohem důležitější než to, aby PHP programátor uměl dělat webdesign, webdesignér uměl psát HTML kód a kodér znal SQL. Je fajn umět jednu disciplínu perfektně a v dalších se alespoň orientovat. Je úžasné, když je někdo perfektní hned v několika disciplínách. Ale pokud se naše schopnosti omezují jen na obory spojené s „ťukáním do klávesnice“, brzy zjistíme, že nám cosi důležitého chybí.

Schopnost organizovat práci

Pravděpodobně základní netechnická schopnost každého vývojáře. Ačkoli se hardcore programátorům může zdát, že jde o kravaťáckou disciplínu, je dobré se alespoň zorientovat v metodikách organizace práce, používaných při vývoji. Využijeme je totiž nejen při řízení týmu, ale i při uspořádání své vlastní práce.

Při učení této schopnosti můžeme začít u GTD (např. tímto blogpostem o GTD na Rootu) a u Agilních metod a technik (viz též miniseriál na Zdrojáku o agilních metodách). Lze si prostudovat materiály o metodě Getting Real (Agilní vývoj: Getting Real). Metod pro organizování práce je mnohem víc, ale tyto patří mezi nejznámější a při vývoji software asi nejpoužívanější. Existují i nástroje, které pomáhají v dodržování výše zmíněných metod.

Stejně jako v jiných oblastech platí i zde: Je lépe pochopit a upravit si metodiku podle svých potřeb, než bez pochopení principů pouze mechanicky aplikovat naučené poučky.

Schopnost týmové práce

team spolupráce ruce

Je to tak – doba geniálních všeumělů, co zvládli udělat všechno sami, pominula. Jste-li geniální všeuměl, smiřte se s tím, že v reálném světě nikdo nedokáže postavit rozumný byznysplán na tom, že vás osvítí múza. Nikdo vám neupírá právo ani schopnost přijít s něčím převratným, ale tahle schopnost je pro průmysl (a tudíž i pro trh práce) stěží využitelná, protože není předvídatelná. Pokud se s vaším géniem snoubí zároveň talent s nikým nevyjít, jste pro moderní vývoj téměř nepoužitelní.

Je to možná smutné, mnozí (včetně mne – pozn.aut.) to považují za konec romantických a báječných časů velkých hrdinských skutků, ale taková je realita.

Schopnost týmové práce se nedá naučit z žádné metodiky ani z knih. Jedinou použitelnou radou je: Buďte členy týmů co nejčastěji. Ať už jako ti nejlepší, nebo jako ti nejslabší. Když jste v týmu nejlepší, učíte se vést a inspirovat; když jste ten nejslabší, máte příležitost naučit se od lepších.

Schopnost obchodního myšlení

Není potřeba studovat ekonomii do hloubky, vystačíme si do jisté míry se „selskou logikou“ a „kupeckými počty“. Důležité je připustit si, že programování a vývoj SW není umělecká disciplína ani magie, ale řemeslo, a to řemeslo by nás mělo uživit. Spousta programátorů jako by žila v zajetí představ, které vznikly kdysi v 60. letech a které se dodnes drží v některých oblastech – totiž (s trochou nadsázky) že komerce je sprosté slovo, neslučitelné se vznešeným posláním programátora, a že programátor by měl pracovat bez nároku na odměnu a svou práci dávat k dispozici zdarma pro blaho všeho lidu (nebo alespoň komunity). Jenže obchodní myšlení využijeme velmi dobře i při vývoji open source a freeware, protože v něm nejde zdaleka jen o peníze, ale především o smysluplnost konání – tedy především o to, aby směřovalo k nějakému efektivnímu uspokojení potřeb.

kalkulačka

Jak se tedy naučit obchodnímu uvažování? Stačí si pro začátek nahradit ošklivé a komercí zavánějící slovo „byznysplán“ nějakým neutrálnějším výrazem – řekněme „plán rozvoje a rozšiřování vašeho webu pro následujících pět let“. Kolik času chceme webu věnovat? Kolik to je v průměru na jeden den? Co je naším cílem? Jak budeme vyhodnocovat, zda se nám daří nebo ne? Jak budeme web propagovat? Kolik nám propagace zabere času? Co budeme dělat v případě, že se bude dařit? Co v případě, že se dařit nebude? Zkrátka takový jednostránkový soupis důležitých bodů, itinerář, kterého se při vývoji a provozování budeme držet. Ačkoli se v něm neobjeví ani jednou slovo „peníze“, jistě změní náš pohled na to, co děláme a jak – místo okouzlení možnostmi software a hardware začneme uvažovat nad efektivitou, nad smyslem a hodnotou práce, nad hodnotou času…

V zásadě jde o to uvědomit si, že psaní software není pro profesionála nějaká „vnitřní nutnost“, ale konání, které má nějaký účel, nějaký cíl, smysl, … a že tyto faktory nevisí ve vzduchoprázdnu, ale musí zapadat do požadavků a potřeb reálného světa. Až na výjimky totiž platí, že zákazník (nebo okolní svět) má nějaké potřeby, které chce vývojář naplnit svým konáním, a vice versa… Obchod a peníze jsou jen univerzálně dohodnutou abstrakcí pro vyjádření těchto vztahů.

Schopnost porozumět potřebám okolního světa, porozumět jazyku, kterým okolní svět o těchto potřebách promlouvá a domluvit se s ním je pro dobrého vývojáře kruciální, ať už pracuje na jakékoli pozici – podle pozice je jeho „okolním světem“ vedoucí týmu, vedení divize, vedení firmy, obchodní oddělení nebo zákazník, ale princip zůstává stejný.

… a hlavně by měl umět programovat!

Ano, to by programátor měl umět především. Ale neměl by spoléhat na to, že si vystačí jen s tím, že umí převést problém do algoritmů a zapsat je v nějakém programovacím jazyce. Pro programátora je umět programovat nezbytné minimum a samozřejmost, asi jako je pro rybu nezbytné minimum umět plavat – s trochou zdravé provokace se dá říct, že programátor, který umí jen programovat, vlastně neumí nic. Že je často problém sehnat programátora, který opravdu umí programovat a ne jen psát kód, je jiná věc, a je smutnou realitou, že u webového vývoje to platí dvojnásob.

Schopnosti vývojáře SW se totiž dnes pomalu začínají počítat až za hranicí práce s počítačem. Výše uvedené dovednosti zvyšují naši hodnotu na trhu práce – a tím i šanci, že budeme dělat to, co nás baví, a budeme za to slušně placeni. Znalost obchodu, organizace, komunikace, trhu či managementu, tedy oborů, které se netýkají přímo programování, ale s vývojem souvisí, zvýší náš náskok před ostatními mnohem víc, než znalost dalšího programovacího jazyka.

Závěrečné pravidlo, které shrnuje a doplňuje vše, co bylo výše řečeno, by se dalo vyjádřit zhruba takto: Je důležité mít na paměti, že software (nebo v našem případě web) není sám o sobě konečným cílem, ale prostředkem – a tomu přizpůsobit svoje chování a uvažování.

Začal programovat v roce 1984 s programovatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď by rád neprogramoval a radši se věnoval starým počítačům.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 156

Přehled komentářů

peter :-()
balki Re: :-()
balki Re: :-()
Aleš Roubíček Re: :-()
pas2007 Re: :-()
Aleš Roubíček Re: :-()
Pavel Šimek Re: :-()
uf Re: :-()
Aleš Roubíček Re: :-()
balki Re: :-()
Aleš Roubíček Re: :-()
Hejty Re: :-()
Radovan Re: :-()
balki Re: :-()
Radovan Re: :-()
balki Re: :-()
Radovan Re: :-()
Kiki Re: :-()
bitsmith Re: :-()
uf Re: :-()
Čermi Re: :-()
balki Re: :-()
o Re: :-()
ahl Re: :-()
uf Re: :-()
Michal Augustýn Re: :-()
Aleš Roubíček Re: :-()
Václav Novotný Re: :-()
Michal Augustýn Re: :-()
Joey Re: :-()
Michal Augustýn Re: :-()
Michal Re: :-()
Michal Augustýn Re: :-()
prochor Re: :-()
tomo19 Re: :-()
martin Re: :-()
dc Re: Vývojář si jen s programováním nevystačí
Aleš Roubíček Moc pěkné!
tojefuk Re: Moc pěkné!
norwi Re: Moc pěkné!
uf Re: Moc pěkné!
stej Re: Moc pěkné!
Equilibrix Re: Moc pěkné!
Aleš Roubíček Re: Moc pěkné!
Equilibrix Re: Moc pěkné!
Aleš Roubíček Re: Moc pěkné!
Equilibrix Re: Moc pěkné!
Aleš Roubíček Re: Moc pěkné!
Equilibrix Re: Moc pěkné!
Inkvizitor Re: Moc pěkné!
Aleš Roubíček Re: Moc pěkné!
Inkvizitor Re: Moc pěkné!
radek pekny clanek
ondra.novacisko.cz Programátor je cvičená opice
Václav Novotný Re: Programátor je cvičená opice
ondra.novacisko.cz Re: Programátor je cvičená opice
drevolution Re: Programátor je cvičená opice
ondra.novacisko.cz Re: Programátor je cvičená opice
Joey Re: Programátor je cvičená opice
heh Re: Programátor je cvičená opice
brebta Re: Programátor je cvičená opice
František Kučera Re: Programátor je cvičená opice
bpbp Re: Programátor je cvičená opice
uf Re: Programátor je cvičená opice
Petr N Re: Programátor je cvičená opice
Tom5 Re: Programátor je cvičená opice
Ja. Amen.
Lukas Re: Vývojář si jen s programováním nevystačí
ondra.novacisko.cz Re: Vývojář si jen s programováním nevystačí
Michal Zahradnicek Re: Vývojář si jen s programováním nevystačí
uf mladi programatori
Tom5 Že by seriál?
Lokutus Hm hm hm
Adam Šnobl celá kniha
Břetislav Wajtr Re: celá kniha
Aleš Roubíček Re: celá kniha
tommy Re: celá kniha
Aleš Roubíček Re: celá kniha
roman3 Re: celá kniha
Cody Re: Vývojář si jen s programováním nevystačí
danaketh Dřív jsem si tě vážil...
ondra.novacisko.cz Re: Dřív jsem si tě vážil...
danaketh Re: Dřív jsem si tě vážil...
ondra.novacisko.cz Re: Dřív jsem si tě vážil...
danaketh Re: Dřív jsem si tě vážil...
kert O čem je článek...
Honza Skýpala Osobní postřeh
pas2007 Re: Osobní postřeh
Honza Skýpala Re: Osobní postřeh
JS Re: Osobní postřeh
uf Re: Osobní postřeh
Inkvizitor Re: Osobní postřeh
František Kučera Re: Vývojář si jen s programováním nevystačí
Honza Skýpala Re: Vývojář si jen s programováním nevystačí
František Kučera Re: Vývojář si jen s programováním nevystačí
Aleš Roubíček Re: Vývojář si jen s programováním nevystačí
František Kučera Re: Vývojář si jen s programováním nevystačí
ondra.novacisko.cz Re: Vývojář si jen s programováním nevystačí
František Kučera Re: Vývojář si jen s programováním nevystačí
Michal Augustýn Re: Vývojář si jen s programováním nevystačí
Avatar Dobrý článok
František Kučera Re: Dobrý článok
stej Různé světy, různé potřeby
Jiří Řezníček Jr. krásně vystiženo
estonto antiteze z praxe
Jean Re: antiteze z praxe
Joey Re: antiteze z praxe
Jean Re: antiteze z praxe
Joey Re: antiteze z praxe
František Kučera Re: antiteze z praxe
Joey Re: antiteze z praxe
truhla Re: antiteze z praxe
Joey Re: antiteze z praxe
petiar Skvelý článok
Mirek Téma
backup kdyby tyhle kraviny zustaly pouze v mediich
100% Lenin Re: kdyby tyhle kraviny zustaly pouze v mediich
backup Re: kdyby tyhle kraviny zustaly pouze v mediich
unknown Re: kdyby tyhle kraviny zustaly pouze v mediich
100% Lenin Re: kdyby tyhle kraviny zustaly pouze v mediich
Jirka Hradil Pod tohle se podepíšu
drevolution Umí ten člověk vůbec programovat?
backup Re: Umí ten člověk vůbec programovat?
ferren realita
Tom5 Re: realita
František Kučera Re: realita
100% Lenin Re: realita
Mirek Re: realita
Joey Re: realita
100% Lenin Re: realita
Jean Re: realita
Joey Re: realita
LennyCZ Re: realita
Mirek Re: realita
Jean Re: realita
Barbar Pokud to někdo všechno umí, NENI ZAMESTNANEC!!
peter Re: Pokud to někdo všechno umí, NENI ZAMESTNANEC!!
ooo velka hloupost
memox Algoritmicke myslenie a sklamane ambicie .
memox algoritmicke myslenie vs znalostne systemy, systemy rozoznavania reality, polohy, rovnovahy...
memox Tristna realita zapadnej civilizacie
s jinymi slovy, chce to praxi...
Jenda Ja jsem programator!
manualni zrucnik Re: Ja jsem programator!
MindTheGap Re: Ja jsem programator!
kos webový vývoj je složitější
Tomáš Re: Vývojář si jen s programováním nevystačí
atom Co by měl umět programátor v Javě
drevolution Re: Co by měl umět programátor v Javě
Paia A nejhorší je ta postupná kumulace profesí, aneb firmy nevěděj, co chtěj
paso + ctyri jednicky zavinac seznam v cz Re: A nejhorší je ta postupná kumulace profesí, aneb firmy nevěděj, co chtěj
Aminux Re: A nejhorší je ta postupná kumulace profesí, aneb firmy nevěděj, co chtěj
Petr N Pohled systemaka a spravce site
Martin Malý Re: Pohled systemaka a spravce site
samboush Zajimavy, ale
opis To je přesně ono
Zdroj: https://www.zdrojak.cz/?p=3183