Minden szoftvermérnöknek van egy készsége, amelyet a megszerzett különböző készségek alkotnak. A készség „mély és keskeny”, ha elsajátítottál egy-két készséget és még keveset; „széles és sekély”, ha mindent meg tudsz csinálni egy kicsit anélkül, hogy bármilyen terület szakértője lennél.
a webalkalmazásoktól eltérő mobilalkalmazások
Legtöbben valahol a közepén vagyunk, néhány erős képességgel, néhány átlagos képességgel és sok hiányossággal. Ebben a cikkben a széles mély spektrumot szeretném megvitatni, és azzal érvelnék, hogy a szélesebb véghez közelítés a legtöbb programozó számára előnyös lenne.
A szélesség és a mélység természetesen relatív. Például lehet a webfejlesztés szakértője , vagy csak kliensoldali webfejlesztésben, vagy csak JavaScript-ben. Mindezek bizonyos értelemben „mély és keskeny” készségek, de az utolsó sokkal szűkebb, mint az első.
Ezenkívül lehetséges a „mély és széles”, valamint a „sekély és keskeny” készség is: az első azt jelenti, hogy mindenki téged akar felvenni, a második pedig azt, hogy még nem tanultál meg semmi értelmes dolgot. Mivel nem túl gyakoriak, nem is érdemes részletesen megbeszélni őket.
A mély készség azt jelenti, hogy legalább egy szakterület szakértője vagy.
Vegyük az SQL-t: Tegyük fel, hogy mindent tud a relációs adatbázis-elméletről; a MySQL, a PostgreSQL, az Oracle és az SQLite előnyei és hátrányai; hogyan lehet optimalizálni a lekérdezéseket; mikor és hogyan kell denormalizálni az adatbázist stb. Az ezt a speciális készséget kereső ügyfelek ASAP-ot akarnak majd felvenni, és jó okkal. Futva fog érni a földön, és olyan értéket hoz, mint néhányan mások.
Ha azonban a projekt jelentősen kibővül vagy megváltozik, akkor a programozók helyettesítik vagy kiegészítik a hiányzó képességekkel. Nagyobb változások nélkül is tudna javasolni építészeti változtatásokat? Lehet, hogy az ügyfél jobban jár egy NoSQL adatbázissal vagy egyáltalán nem, de szűk szakértelme elfogulhatja ezeket az ismeretlen lehetőségeket.
Másrészről, ha generalista vagy, aki nem domainszakértő, akkor időre van szükséged ahhoz, hogy új projekteket végezz el, mielőtt elérnéd a csúcstermelékenységet.
Példaként említeném, hogy talán Python-projektet kell végrehajtanod, és még soha nem használtad ezt a nyelvet. Ennek ellenére valószínűleg hallott róla néhány dolgot (dinamikus, értelmezett, több paradigma), és más nyelvekkel kapcsolatos tapasztalatai sokkal könnyebbé teszik az átállást.
Lehet, hogy az eredetileg írt kód nem az Python (sorrenddel, megértéssel vagy generátorral), de tudni fogja, hol kezdje. Állandóan halad majd, és jól kidolgozott moduljait később könnyebb fejleszteni. A technológia széleskörű szemlélete ötleteket fog adni másoknak.
Amikor a projekt megváltozik, akkor inkább a csapat eszköze leszel, mint felelősség.
Földrajzi értelemben a keskeny készségek magas hegyeknek tűnnek, a széles készségek pedig a fennsíkoknak. Ezt az analógiát használva a tipikus készségek valószínűleg tartalmaznak néhány hegyet, egy dombot itt-ott, és sok síkságot.
Egy véletlenszerű programozó nagyszerű lehet az SQL-ben és a Pythonban, a webes programozásban és az algoritmusokban rendben van, és nagyon aggódik a legtöbb egyéb dologban, például a központi kiírásokban, az OAuth-kiszolgálókban vagy a natív alkalmazásokban. Egy ilyen programozónak folytatnia kell szakterületeinek kiaknázását, ugyanakkor fel kell találnia és ki kell töltenie a tudásbeli hiányosságokat is.
Ez a stratégia valószínűleg az évek során a legjobban szolgálja őket.
Számos projekt kiszámíthatatlan módon, egymással nem összefüggő készségeket igényel. Míg a széles képzettséggel rendelkező mérnökök hasznukkal hozzájárulhatnak a legtöbbjükhöz, a szakértői készségek kevés munkaadó pontos követelményeinek felelnek meg. Ez nem feltétlenül rövid távon kérdés, mivel a számlák kifizetéséhez csak egy munkára van szükség.
Azonban…
A túlspecializáció kockázatos. A tojásait egy kosárba helyezni jó lehet, ha mindenki másnál jobban meg tudja jósolni a jövőt, de ez a képesség ritka és nem kapcsolódik a technológiai készségekhez. Tekintsük az ezredfordulónk iránti keresletet a Windows programozási ismeretek iránt. Vagy kérdezd meg magadtól: sokan kitalálhattuk volna egy évtizeddel ezelőtt az Android, a Flash, a Nokia vagy a Blackberry megfelelő pályáit?
Végül a legjobb munkaadók nagyra értékelik a különféle készségeket. A Facebook csak hat héttel az indulás után rendel új csapatokat a csapatokhoz. A Google ösztönzi a belső átutalásokat és több rotációs programot futtat. Még akkor is, ha élvezi a szabadúszó munkát, a lehetőségeinek nyitva tartása nem fog ártani. Ha valaha is fontolgatná, hogy ezeknél a vállalatoknál dolgozik, akkor legalább valamennyire általánosnak kell lennie.
Feltéve, hogy meg van győződve arról, hogy szerteágazni szeretné képességeit, hogyan tenné ezt?
Pénzzel kereskedhetett készségekért:
Időt is cserélhetne készségekre:
Meg kell keresni a tanulási lehetőségeket, de ezt nem lehet folyamatosan megtenni. ApeeScape interjúprojektemhez a Node.js-t és a Backbone-ot használtam, amelyek egyikével sem volt sok tapasztalatom. Szórakoztató volt, de az előírt tanulási tempót hónapokig nem tudták fenntartani.
Ideális esetben hosszú stabilitás (állandó kimenettel és jövedelemmel) és rövid időintervallumok között váltakozhat, amikor kihívást jelent Önnek, hogy valami újat tanuljon. Az utóbbi gyakorisága több tényezőtől függ, például jelenlegi készségeitől, piaci keresletétől és személyes céljaitól.
Ami a munkaadókat illeti, bizonyos esetekben mindig mély ismeretekre lesz szükség:
Ennek ellenére sok projekt egyikét sem ellenőrzi, és alkalmazó menedzsereiknek mérlegelniük kell a jól képzett mérnököket. Számos technikai készség, például tesztelés és kóddokumentáció, és minden puha készségek (mint a kommunikáció) transzfer. Az ellenálló képesség akkor is számít, ha a termékek nem változnak teljesen; ha az a rész, amelyet bérelt a standokhoz, egy generalista dolgozhat a következő legmagasabb prioritással.
Tekintettel a széles készségek fontosságára, ösztönözni kell a fejlesztőket a diverzifikációra, és közölnünk kell a széles körű ismeretek fontosságát a munkaadókkal, akik esetleg túlságosan a különböző területeken és készségekkel rendelkező „éves tapasztalatokra” koncentrálnak.
A végcél az elégedett ügyfelek nyilvántartása; a kemény és puha képességek mellett ez bizonyítja a mérnök képességét az ismeretlen területekre való áttérésre. Ez egyben erős ösztönző a szabadúszók számára, hogy ne merészkedjenek új területekre, mielőtt készen állnak erre.
Amikor az általános készségeket alulértékelik, néhány jó fejlesztő tétlen, és néhány jó projekt létszámhiányos vagy meghaladja a költségvetést. A tökéletes készségmérkőzés követelése olyan, mint a helyszíni munka követelése, mivel megnehezíti a kínálat (képzett munkaerõ) és a kereslet (jutalmazó munka) összehangolását.
Mindez nem érv a tartományi szakértelem ellen; mindig számít és szép jutalmat kap. Csak azt kell szem előtt tartanunk, hogy a széles készségek is többet számítanak, mint amilyennek látszik.
Ez egy fejlesztői technikai készségek összessége, például nyelvek, keretrendszerek, eszközök stb. Két általános típus a mély / keskeny (kevés szakértői képesség) és a széles / sekély (sok készség, nincs szakterületbeli szakértelem).
c++ programozási nyelv
Azonosítsa a gyakran szükséges készségeket, amelyek ismeretlenek. Az olyan általános készségek, mint az értelmezett nyelvek és a webes keretek, hosszabb távon jobb értéket adnak, mint az egyes technológiák (Python, Rails stb.)
Pénzbefektetéssel, például árfolyamcsökkentéssel vagy fizetetlen bemutatómunkával új területre való áttérés közben, vagy időbefektetéssel, például nyílt forráskódú vagy személyes projektek portfóliójának felépítésével.