Full-stack, T-shaped, M-shaped, comb-shaped… můžeme s tím přestat, prosím?

fullstack vs softeng

Historie se opravdu ráda opakuje – to je fakt. Z nějakého důvodu to ale v oblasti IT platí skoro dvojnásob. Principy, které byly definovány před 70 lety a skoro zapomenuty před 40 lety, jsou nyní prezentovány jako nejnovější trendy. Ano, mluvím například o funkcionálním programování, jehož principy postupně podporují všechny moderní jazyky, pro některé se pak jednalo o čistou revoluci (zdravíme Javu a Stream API). Kolik mileniálů ale slyšelo o LISPu a základech funkcionálního programování, které se datují do padesátých let minulého století? Téměř to samé platí o co-rutinách, tedy konceptu, který definovali Donald Knuth a Melvin Conway již v roce 1958. Přesto si mnoho lidí myslí, že se jedná o moderní „cool feature“, se kterou přišla jednovláknová javascriptová běhová prostředí.

Historie se naneštěstí opakuje i v oblastech, ve kterých nahlížíme na schopnosti lidí. Být programátorem na počátku oboru IT znamenalo, že je člověk vysoce inteligentní, má dokončen minimálně magisterský obor s velkou porcí (a zde je myšleno opravdu VELKOU) matematiky, fyziky a elektrotechniky (jelikož počítače té doby vyžadovaly nemalou péči o hardware). Proto není divu, že většina definic algoritmů, datových struktur a principů, které dnes denně používáme, se datuje do 50. a 60. let minulého století. Tedy doby, kdy byly položeny základy počítačových věd a softwarového inženýrství.

Z výše uvedené doby existuje i legenda o náborovém procesu IBM. Jedna z otázek byla například: „Máte 8 lidí, kteří hlasují ano a ne. Kolik rozdílných výsledků hlasování můžete získat?“ Okamžitá odpověď by měla být samozřejmě 256. Jednou možností je, že kandidát použije kombinatoriku (v tomto případě variace) a spočítá jednoduché dvě na osmou. Druhou možností je, že kandidát zná datový typ byte, jeho velikost a počet hodnot, které lze do tohoto typu uložit (osm bitů, hodnoty 1/0). Trik této otázky byl ale v tom, že se jednalo o tzv. „jednou a dost“ otázku. Pokud tedy kandidát odpověděl chybně, již nikdy nemohl být do IBM přijat. Ano, je to legenda, ale dosti poučná a vypovídající o dané době a vyžadovaných znalostech. Pro srovnání se dnes zkuste zeptat průměrného čerstvého absolventa informatického oboru na osm na třetí bez možnosti použít kalkulačku (tyto úlohy jsou někdy součástí našich pohovorů). Výsledek? Většinou pohroma.

Co chci říct, je fakt, že v počátcích IT oboru bylo mnoho odlišného hardwaru, programovacích jazyků, dialektů, byl nedostatek podpůrných nástrojů a dalších věcí, které činily dokončení úloh téměř nesplnitelným. Ti lidé to ale zvládli!

Jak to dokázali? Aplikovali svoji inteligenci, zkušenosti a principy počítačových věd a softwarového inženýrství tak, aby úlohu dokončili – ať už byla jakákoliv. Byli univerzální, schopní – absolutně rozuměli tomu, co dělají.

Během let jsme v našem oboru „vynalezli“ specializace. Zde si dovolím předpokládat, že jedním z důvodů bylo i nepochopení ze strany kandidátů, kdo je to vlastně ten softwarový inženýr. Pak nezbylo než najít povědomé jméno nějaké technologie nebo jazyka, se kterým jste byli schopni se identifikovat. Tak se stalo, že téměř celý svět začal nabírat hlavně Java, .Net, Javascript, C++ a Python vývojáře plus X dalších variant technologií a jazyků. V určitém bodě nám konečně došlo, že to možná nebyl ten úplně nejlepší nápad. Technologie, frameworky a platformy přijdou a odejdou – tomu se říká evoluce a moc se s ní dělat nedá. Nechat však své lidi v týmu přicházet a odcházet není evoluční, ale naopak dost nepraktické. Ztrácíte znalost domény a kontinuitu, bez které se žádný dlouhodobě rozvíjený projekt neobejde. Dalším aspektem pak je, že znalost programovacího jazyka je pouze jeden dílek celé skládačky v rámci komplexity systému. A to samo o sobě jednoduše nestačí.

Ale pozor! Vyvěste vlajky, zrodil se full-stack vývojář. Osoba, která vyřeší problém odshora až dolů nebo zleva doprava. Geniální, že? Dobrou zprávou je, že to trvalo pouze 10 let, než jsme si uvědomili, že tudy cesta nevede. Full-stack přístup je v roce 2020 oficiálně mrtvý. Tedy téměř – nyní prý máme Stack 2020.

Odpusťte, ale opravdu nelze říct, že „jeden stack vládne všem“. Co ale udělá obor IT? Zavede nový buzzword, tentokrát v podobě implementace tzv. T-shaped vývojáře. Vždyť v dnešní době si přeci správný „cross-functional“ (zde se opravdu těžko hledá český ekvivalent) tým nemůže vystačit s čistými specialisty, že? Je tedy potřeba hledat mix specializací, které jdou ruku v ruce s univerzálními a obecnými schopnostmi.

Máme tu ale jedno velké ALE. „T-shape“ znamená, že máte jen jednu specializaci. Slovy klasika: „A není to málo, Antone Pavloviči?“ Samozřejmě, že ano. Pojďme tedy zkusit „Pi-shaped“, a máme specializace hned dvě. Stále málo? Co takhle další písmenka abecedy? Můžeme zkusit „M-shaped“, „E-shaped“ anebo mého osobního oblíbence – „comb-shaped“ vývojáře (více informací o daných variantách zde). To by bylo, aby to tentokrát už opravdu nevyšlo.

Jenže víte co? To se nikdy nestane. Samozřejmě nemohu mluvit za ně, ale pevně věřím, že když Alistair Cockburn, Martin Fowler, Jeff Sutherland a další „best-in-the-world“ inženýři sepisovali Agile Manifesto, představovali si týmy inženýrů se shodnými vlastnostmi, jako mají oni sami. Ta důležitá slova jsou zvýrazněna schválně. Čistá pravda je (a také důvod, proč tolik agilních týmů selhává), že tolik lidí se shodnými dovednostmi a schopnostmi prostě není. Byla to pravda v padesátých letech minulého století, je to pravda teď a shodné bude platit nejspíš i v roce 2050. Nezáleží na tom, jak vysoká je „poptávka“. Části „nabídky“ nezbývá než následovat statistiku, konkrétně normální rozložení – prostě doložitelný fakt.

Pojďme se tedy prosím vrátit ke kořenům a přijmout fakt, že existuje pouze jedna skupina lidí, která je schopná řešit problémy, které náš obor přináší. Můžeme se společně zasnít a představit si svět, kde pro jednou nedominují náborové letáky na full-stack vývojáře, .Net Core experty se znalostí EF Core a T-shaped front-end hackery se znalostí Angular 10+. Představte si, že bychom znovu hledali inženýrky a inženýry s kvalitním vzděláním v oboru softwarového inženýrství a počítačových věd (a ano, opravdu je velký rozdíl mezi pětiletým magisterským programem a dvoutýdenním online kurzem). Oni budou znát Javu, .Net nebo Javascript, budou ochotní nastavit vaši CI/CD a určitě budou chápat principy await/async, a také proč eventuální konzistence možná není právě to, co jste si představovali v rámci migrace na mikroslužby. Bezesporu budou excelovat minimálně v jedné oblasti – v té budou opravdoví specialisté, protože obor IT milují. A pokud přijde nová technologie nebo framework, tak se je naučí, a to rychle. Budou totiž stavět na svém vzdělání, znalostech, inteligenci a zkušenostech. Full-stack, T-shaped, M-shaped, comb-shaped – koho tedy chtít? Prosím, ignorujte to. Začněte se opět zajímat o chytré softwarové inženýry a inženýrky a máte splněno. A pokud právě vaše HR potřebuje to správné „písmenko“, věřte, že tito lidé nebudou mít problém se jím na chvíli dle potřeby stát.

 

Autor: Michal Petřík

Head of Software Development