A 10x programozók manapság forró téma a szoftveriparban, ezért gondoltam, jó ötlet megosztani a véleményemet ezzel kapcsolatban.
Őszintén szólva nem ismerem a 10x programozó pontos definícióját, de feltételezem, hogy a hiperproduktív programozókra utal (ami nem biztos, hogy pontosan 10-szeres termelékenységet jelent, de a 10-hez közeli vagy azt meghaladó jelentős szintet).
A néhány siker alapján, amelyeket a startupoknak és vállalatoknak szállított ultra-nagy szoftverek szállítása során értem el, valamint néhány elsőrangú fejlesztővel való munkatapasztalat alapján meg tudok osztani néhány meglátást a témával kapcsolatban.
A 10x programozó akkor
A 20-30 évvel ezelőtt kifejlesztett szoftverek sokkal egyszerűbbek voltak a modern szoftverekhez képest, a funkcionalitás, a biztonság, a teljesítmény és a skálázhatóság tekintetében. Másrészt, akkoriban csak egy maroknyi könyvtár vagy keretrendszer állt rendelkezésre bármilyen funkcionalitás megvalósításához.
Ezért a 20-30 évvel ezelőtt írt szoftverek jelentős programozási erőfeszítéssel jártak.
A 10x programozó meghatározása ebben a kontextusban viszonylag egyszerű. A különbség a 10x és a normál programozók által ugyanazon funkcionalitások megvalósítására fordított alapvető programozási erőfeszítés mennyisége között.
A 10x mérnök most
Mielőtt további részletekbe bocsátkoznánk, tisztázzunk egy dolgot: a szoftverfejlesztés összetett folyamat, és a programozás csak az egyik olyan terület, amely hozzájárul a modern szoftverekhez.
A szoftverek megnövekedett használata miatt, különösen az interneten keresztül, mind a fogyasztók, mind a szervezetek részéről, a szoftverek nagyon összetettek, és őrült döntés lehet valamit a semmiből felépíteni. Őszintén szólva, hacsak nem egy teljesen új platformról vagy operációs rendszerről van szó, a modern szoftverek fejlesztéséhez szükséges alapvető programozás kevésbé intenzív a régebbi erőfeszítésekhez képest.
Míg a programozási tudás és erőfeszítés még mindig nagyon fontos, a nagyszerű (hibamentes, biztonságos és eladható) szoftverek létrehozásához szükséges erőfeszítés mértéke a mérnöki munkában van.
A mai viszonylatban tehát egy 10x programozó nem hozhat nagy értéket az iparágban, de egy 10x mérnök nagyon nagy hatást gyakorol a fejlesztési folyamatra.
Itt szeretném hozzátenni a 3 centemet.
1. A lehető legjobban használják ki az eszközöket
A szoftverfejlesztés egy összetett folyamat, amely sokféle erőfeszítéssel jár. A kódoláson kívül a folyamat dokumentálásától az adatok formázásáig, a naplóadatok olvasásától a jelentések küldéséig, az automatikus teszteléstől a kézi tesztelésig, a komplex hibakereséstől a problémák kézi kivizsgálásáig és így tovább és így tovább.
Ez a hatalmas erőfeszítés a megfelelő eszközkészlet és platformok használatával (amelyek megfelelnek az ügyfél költségvetésének és egyéb korlátainak) rendkívül hatékonnyá tehető.
Szerkesztők
A szoftverek írásához egy vagy több szerkesztőprogram tartozik, amelyek közül néhányat IDE-nek (integrált fejlesztési környezet) is neveznek. A modern IDE-k, mint például a Visual Studio vagy az Eclipse, rengeteg olyan funkciót kínálnak, amelyekkel a fejlesztők produktívak lehetnek, de e funkciók jelentős részét a legtöbb fejlesztő nem ismeri.
A népszerű IDE-knek kereskedelmi és ingyenes bővítményei is vannak (például a Resharper), amelyek még nagyobb fejlesztői produktivitást tesznek lehetővé.
Az IDE-k mellett más szerkesztők, például a NotePad++, MarkdownPad stb. is nagyon hasznosak a megfelelő környezetben.
Segédprogramok és online szolgáltatások
A segédprogramok és online szolgáltatások, például a nagy naplófájlok olvasása vagy keresése, http debuggerek, mint a Fiddler, build és deployment eszközök stb.
Saját eszközök
A 10x mérnökök saját eszközkészleteket is készítenek olyan ismétlődő műveletek elvégzéséhez, amelyekhez a megfelelő szoftverek nem feltétlenül állnak rendelkezésre kívülről.
A szoftverfejlesztő házak üzleti tulajdonosai sok esetben látszólag nem érdekeltek abban, hogy sokat fektessenek a fejlesztők eszközeibe, pedig a megfelelő eszközkészlet használatával meglepően nagy termelékenység érhető el.
A szoftverfejlesztők számára, akik a legdrágábban felvehető emberek közé tartoznak, érdemes pénzt költeni a számukra megfelelő eszközkészletre.
A .net-fejlesztői csapat vezetőjeként a legújabb .net-kódolási gyakorlatokat követő ASP.NET Core & Visual Studio starter sablon kifejlesztése segített a csapatomnak háromszorosára növelni az általános termelékenységet.
2. Végezze el a munkáját! Nem találják fel újra a kereket
A szoftveripar az elmúlt három évtizedben nagyon éretté vált. Szinte minden olyan probléma, amelyet a fejlesztők kódolással próbálnak megoldani, már megoldott és elérhető API-ként (bináris vagy webes szolgáltatásként), amelyek közül néhány kereskedelmi, míg mások ingyenesek.
A nyílt forráskódú keretrendszerek emellett nagy rugalmasságot biztosítanak a mögöttes API viselkedésének megértéséhez vagy a felhasználók igényei szerinti testreszabáshoz.
A 10x mérnökök, mielőtt beleugranak a programozásba, valójában meggyőződnek arról, hogy ezt a problémát még nem oldották meg teljesen (vagy részben) korábban, vagy ha igen, akkor nem állnak rendelkezésre a felhasználásra.
3. (Folyamatosan) gyönyörűen megtervezett kódot írnak
A nagyszerű szoftverek írásához egy jó architektúra meghatározása szükséges, amely nemcsak a jó tervezési mintákat és elveket követi, hanem a modern infrastruktúrákat is kihasználja. A jól megtervezett kód előállítása nemcsak az új funkciók gyorsabb megírását teszi lehetővé, hanem jelentősen csökkenti a hibák számát is.
A szép tervezés azonban folyamatos fejlesztést igényel.
A szakmai pályafutásom során meglepően sok rossz minőségű kódot láttam különböző szoftverprojektekben, ami folyamatosan növeli a technikai adósságot. Egy egyszerű, 5 évvel ezelőtt indult projekt tele van nem mérnöki szempontból csúnya kóddal, és több mint 20 embert igényel a fejlesztési ciklus kezelése (ahol az idejük 80%-át ténylegesen a hibák javításával töltik).
Az egyik fő ok, ami e szörnyű helyzet mögött áll, úgy találtam, a “félelem”.
A szervezetek, különösen a vállalati entitások, többnyire félnek a változástól.
A szoftverfejlesztés hihetetlenül gyorsan változó tudományág az eszközök, a keretrendszerek és a mérnöki munka tekintetében, és folyamatos változtatásokat igényel, hogy a megfelelő helyre kerüljön.
A változás ijesztő, de nem olyan veszélyes, mint amilyennek hangzik, különösen a szoftveriparban (a megfelelő eszközkészletekkel és emberekkel). De ha nem az elvárásoknak megfelelően történik, akkor nem kell sok idő ahhoz, hogy a projektet egy nap teljesen elhagyják.