10x programátoři: Mýtus nebo realita?

10x programátoři jsou v současné době v softwarovém průmyslu horkým tématem k diskusi, a tak jsem si říkal, že by bylo dobré podělit se o svůj pohled na věc.

Přímo řečeno, neznám přesnou definici 10x programátora, ale předpokládám, že se týká hyperproduktivních programátorů (což nemusí odpovídat přesně desetinásobku produktivity, ale výrazné úrovni blízké nebo vyšší než desetinásobek).

Na základě několika úspěchů, které jsem zaznamenal při dodávání ultra velkých kusů softwaru pro startupy a korporace, a pracovních zkušeností s několika špičkovými vývojáři se mohu podělit o několik postřehů k tomuto tématu.

Tehdejší 10x programátor

Software vyvíjený před 20-30 lety byl ve srovnání s moderním softwarem mnohem jednodušší, pokud jde o funkčnost, bezpečnost, výkon a škálovatelnost. Na druhou stranu v té době byla k dispozici jen hrstka knihoven nebo frameworků, které umožňovaly implementovat nějaké funkcionality.

Proto software napsaný před 20-30 lety vyžadoval značné programátorské úsilí.

Definovat 10x programátora je v tomto kontextu poměrně snadné. Rozdíl mezi množstvím základního programátorského úsilí vynaloženého na implementaci stejné sady funkcí 10x a běžnými programátory.

10x dev

Inženýr 10x nyní

Než se pustíme do dalších podrobností, ujasněme si jednu věc: vývoj softwaru je komplexní proces a programování je jen jednou z oblastí, která má přispět k modernímu softwaru.

Vzhledem k rostoucímu využívání softwaru, zejména přes internet, jak spotřebiteli, tak organizacemi, je software velmi složitý a vytvořit něco od nuly by mohlo být šílené rozhodnutí. Upřímně řečeno, pokud se nejedná o zcela novou platformu nebo operační systém, je jádro programování potřebné k vývoji moderního softwaru méně intenzivní ve srovnání se staršími snahami.

Přestože znalosti programování a úsilí jsou stále velmi důležité, množství úsilí, které je nutné k vytvoření skvělého softwaru (bez chyb, bezpečného a prodejného), je v inženýrství.

V dnešním kontextu tedy 10x programátor nemusí v oboru přinést velkou hodnotu, ale 10x inženýr vytváří velmi široký dopad v procesu vývoje.

Rád bych zde přidal své 3 centy.

1. Nejlépe využívají nástroje

Vývoj softwaru je komplexní proces, který zahrnuje mnoho různých druhů úsilí. Kromě kódování zahrnuje úsilí od dokumentování procesu po formátování dat, od čtení dat z protokolů po odesílání zpráv, od automatického testování po ruční testování, od složitého ladění po ruční zkoumání problémů a tak dále a tak dále.

Obrovské úsilí lze mimořádně zefektivnit použitím správné sady nástrojů a platforem (které odpovídají rozpočtu a dalším omezením klienta).

Editory

Psaní softwaru zahrnuje jeden nebo více editorů, z nichž některé se také označují jako IDE (Integrated Development Environment). Moderní IDE, jako je Visual Studio nebo Eclipse, nabízejí velké množství funkcí, které umožňují produktivitu vývojářů, ale značnou část těchto funkcí většina vývojářů nezná.

Populární IDE mají také komerční a bezplatné zásuvné moduly (například Resharper), které umožňují ještě větší produktivitu vývojářů.

Kromě IDE jsou v příslušném kontextu velmi užitečné i další editory, například NotePad++, MarkdownPad atd.

Utility a online služby

Utility a online služby, jako je čtení nebo prohledávání velkých souborů protokolu, ladicí programy http, například Fiddler, nástroje pro sestavení a nasazení atd.

Vlastní nástroje

10x inženýři si také vytvářejí vlastní sady nástrojů pro provádění opakujících se činností, pro které nemusí být externě k dispozici vhodný software.

V mnoha případech se zdá, že majitelé firem ve vývojovém domě nemají zájem příliš investovat do nástrojů pro vývojáře, ale použití správné sady nástrojů umožní překvapivě vysokou produktivitu.

Pro vývojáře softwaru, kteří patří mezi nejdražší zaměstnance, se vyplatí utratit peníze za správné nástroje pro ně.

Jako vedoucí týmu .net vývojářů mi vývoj startovací šablony ASP.NET Core & Visual Studio podle nejnovějších postupů kódování .net pomohl zvýšit celkovou produktivitu mého týmu třikrát.

2. Nevynalézají znovu kolo

Softwarový průmysl za poslední tři desetiletí velmi vyspěl. Téměř každý problém, který se vývojáři snaží vyřešit kódováním, byl již vyřešen a je k dispozici jako API (buď jako binární, nebo webové služby), z nichž některé jsou komerční, zatímco jiné jsou zdarma.

Kromě toho open source frameworky také poskytují velkou flexibilitu pro pochopení základního chování API nebo přizpůsobení podle potřeb uživatelů.

Než se inženýři 10x vrhnou do programování, skutečně se ujistí, že tento problém nebyl již dříve plně (nebo částečně) vyřešen, nebo pokud ano, nejsou k dispozici k použití.

3. (Neustále) píší krásně navržený kód

Psaní skvělého softwaru vyžaduje definování dobré architektury, která nejen dodržuje dobré návrhové vzory a zásady, ale také využívá moderní infrastruktury. Vytváření dobře navrženého kódu umožňuje nejen rychleji psát nové funkce, ale také výrazně snižuje počet chyb.

Krásně navržený kód však vyžaduje neustálé zlepšování.

V průběhu své profesní kariéry jsem se v různých softwarových projektech setkal s překvapivým množstvím nekvalitního kódu, který neustále zvyšuje technický dluh. Jednoduchý projekt, který začal před 5 lety, je plný neinženýrsky ošklivého kódu a vyžaduje více než 20 lidí, kteří se starají o vývojový cyklus (přičemž 80 % svého času skutečně tráví opravováním chyb).

Jedním z hlavních důvodů této hrozné situace, jak jsem zjistil, je „strach“.

Organizace, zejména podnikové subjekty, se většinou bojí změn.

Vývoj softwaru je neuvěřitelně rychle se měnící disciplína, pokud jde o nástroje, rámce a inženýrství, a vyžaduje neustálé změny, aby se dostala na správné místo.

Změny nahánějí strach, ale nejsou tak nebezpečné, jak to zní, zejména v softwarovém průmyslu (se správnými sadami nástrojů a lidí). Pokud se však neprovede podle očekávání, nebude trvat dlouho a projekt bude jednoho dne zcela opuštěn.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.