Apie specializaciją ir bendrumą

Spręskite, ar „nebūti„ iOS “inžinieriumi“

„Iš esmės jūs jau nebebūsite„ iOS “inžinierius?“

Kai mano geras draugas Sorošas paklausė to, išgirdęs, kad ėmiausi naujo darbo „Stripe“, aš abejoju, ar jis labai galvojo, kaip tai gauti. Vis dėlto tai mane tikrai išmetė už kilpos. Aš tiksliai nelaikiau savęs pokyčiais karjeroje, bet ar aš tai buvau? Tiesa, kad nesinaudosiu „iOS“, atlikdamas naujus vaidmenis, tačiau ne visada dirbau tokiose pareigose ir ankstesniuose darbuose. Ar praleidę didesnę penkerių metų dalį, skirtą „iOS“, pavertėte mane „iOS inžinieriumi“? Jei taip, kada tiksliai tapau tokiu ir kada vėliau nustojau būti? Ar paskyrimas grindžiamas faktiška kasdienybe ar apibūdina darbą, kurio pirmiausia siekiama ir ko tikimasi?

Kai pakankamai ilgai dirbate kaip programinės įrangos inžinierius, labai tikėtina, kad jums teks nuspręsti, ar specializuotis tam tikroje subdisciplinoje, ar dirbti platesniame vaidmenyje, turint bendrųjų žinių, apimančių kelias disciplinas. Čia nėra teisingo ar neteisingo sprendimo ir šiaip tai nėra griežta dichotomija.

Nors neabejotinai programuotojai gali būti specialistai arba generalistai, viduryje yra daugybė pilkų spalvų. Priešingai nei iš prigimties specialistas, dažnai taip pat įprasta specializuotis tam tikru laikotarpiu. Galbūt tai yra subtilus skirtumas, bet aš manau, kad jį verta erzinti; galima elgtis kaip specialistui, kai to reikalauja padėtis, ir aš manau, kad kiekvienas „generalistas“ laikas nuo laiko tai daro, pats savęs nenustatydamas kaip tolimąjį reisą.

Netinkamas atsakymas nėra todėl, kad viena nėra geresnė už kitą, bet ir todėl, kad, norint atlikti geriausią darbą, daugelyje komandų turėtų būti specialistai ir generalistai. Geriausi produktai dažnai būna įgyvendinami derinant bendrą požiūrį ir specialisto kompetenciją.

Specialistai, turintys žinių apie domeną, reikalingą sukurti geriausios kokybės programinę įrangą, kuria būtų visiškai pasinaudojama kuriamos platformos galimybėmis, yra didžiulis turtas bet kuriai komandai. Atsižvelgiant į tai, kaip tapo pažangios platformos, būtų beveik neįmanoma tvirtai suvokti visas detales, prieš tai nepasirinkus iš esmės suprasti tam tikros platformos painiavos.

Tuo pačiu metu specialistai rizikuoja „turėti tik plaktuką“ ir tokiu atveju kiekvienas įmanomas projektas „atrodo kaip vinis“. Turėdamas tik vieną įrankį dirže - gilią, bet palyginti siaurą kompetencijos sritį - tai lengva netyčia sukurti programą, kuri iš tikrųjų turėjo būti svetainė arba atvirkščiai. Arba turite puikią idėją, kurios, nepaisydami jūsų jaudulio, nelabai galite įgyvendinti dėl to, kad jai reikia ir priekinės, ir pagrindinės programos darbo. Ši idėja gali būti būtent provokacija, kuri gali paskatinti tą, kuris istoriškai specializuojasi, pradėti truputį išsišakoti. Bet ar tai padarę, jie vis dar yra „priekinių programų kūrėjas“ ar „vidinis programos kūrėjas“? Akivaizdu, kad tokios etiketės praranda savo reikšmingumą, kai nubraukiame ribas, apibrėžiančias, ką mes galime padaryti, o galbūt dar svarbiau, ką mes norime padaryti.

„Twitter“, „Slack“ ir „GitHub“ draugų ratuose, į kuriuos dažnai keliauja šiuolaikinės programinės įrangos kūrėjai, nesunku susidaryti dėl to, koks žmogus yra geriau žinomas, palyginti su tuo, kaip jie iš tikrųjų mato save. „Tumblr“ buvo gana populiarus tuo metu, kai aš vedžiau „iOS“ kūrimą ten, kuris man suteikė galimybę parašyti ir kalbėti apie mūsų atliekamą darbą ir netgi išleisti kai kuriuos jo kaip atviro kodo. Šiuose skaidrių deniuose ir tinklaraščių įrašuose nebuvo pamiršta paminėti, kad aš iš tikrųjų buvau pasamdytas būti interneto kūrėju ir tik perėjau į „iOS“, kai iškilo poreikiai, po to kelerius ateinančius metus parkuodavau save ten. Kitame darbe aš sukūriau „Rails“ užpakalines dalis ir „React“ priekines plokšteles, tačiau ankstyvojo etapo įmonėje su daug mažesne platforma, kur mes pirmiausia dirbome „žemyn“, daug negalėdami nukreipti savo technologijos į išorę.

Šiuo atžvilgiu nesu išskirtinė. Vienas geriausių mano laikų „Tumblr“ mobiliųjų telefonų kūrėjų nuo tada perėjo į internetą. Kitas, animacijos, gestų ir UI atlikimo ekspertas, dabar yra dizaineris. Kadangi, dirbdamas aukšto lygio įmonėje kaip specialistas, gali pakenkti jūsų statusui ir nustojęs dirbti tokias pareigas, labai svarbu, kad išorinis suvokimas neleistų jums formuoti karjeros, kaip jums atrodo tinkama.

2014 m. Rugpjūčio mėn. Kambaryje, kuriame pilna naujų programuotojų, kurie mokėsi kurti „iOS“ programas „Flatiron“ mokykloje, kalbėjau „Nebūk„ Tikslas-C “ar„ Greitas kūrėjas “. „Swift“ programavimo kalba buvo pristatyta tik prieš du mėnesius, o „iOS“ kūrėjų reakcija, švelniai tariant, buvo skirtinga. Daugelis atrodė, kad pagaliau atėjo laikas šiuolaikinei kalbai pakeisti „Objective-C“ ir kad toks pakeitimas jau seniai pasibaigė, o kiti netikėjo, kad „Objective-C“ reikia taisyti, ir būtų geriau, jei „Apple“ ištekliai ir jos bendruomenės dėmesys buvo nukreiptas kitur. Mano tikslas buvo pabandyti įtikinti šiuos naujus inžinierius, kad jie neturėtų stengtis išsilaipinti vienoje ar kitoje stovykloje, o greičiau išmokti pagrindines, perkeliamąsias programavimo koncepcijas ir parodyti save įvairiais būdais, kaip konkrečiai kurti programinę įrangą. Nesuprasdamas, kas ten yra, kaip galima priimti pagrįstą sprendimą, kaip leisti laiką? Net jei nuspręsite užleisti šaknis į vieną bendruomenę, kaip galite išvengti suvokimo, kaip ši bendruomenė istoriškai veikė, kaip būdas, kuriuo ji turėtų žengti į priekį?

Manau, kad šiandien galėčiau tą patį pasikalbėti inžinierių grupei ir tiesiog pakeisti „Objective-C and Swift“ į „fronton and backend“ arba „mobile and web“. Idėja ta pati - technologijos juda greitai, o karjera yra ilgą laiką, ir nors jums kurį laiką gali patikti būti specialistu ar generolu, niekada iš tikrųjų nežinote, kada jūsų situacija gali pasikeisti, o kada aplinkybės gali pateisinti kitaip. Arba, kai gali tiesiog jaustis išbandęs kažką naujo.

Kai rašau „Ruby“, man skaudžiai akivaizdu, kad aš nepažįstu „Ruby“ beveik tiek pat, kiek aš pažįstu „Swift“. Kai kuriomis dienomis tai mane liūdina, bet taip pat dažnai verčia jaustis įgaliota. Galbūt aš nuspręsiu praleisti laiką, reikalingą „Ruby“ meistriškumui pasiekti, o gal kada nors ateityje grįšiu į „Swift“. Realiau kalbant, aš būsiu šiek tiek geresnis už ankstesnįjį, o šiek tiek blogesnis bus su antruoju ir susitaikysiu su tuo, tik laiku pereisdamas prie mokymosi kažko kito. Bet kokiu atveju, kaip kiti apibūdina tai, ką aš darau, ir dar svarbiau, kaip aš pats į tai žiūriu, išlieka sklandus nebaigtas darbas.

Nemanau, kad tai pasikeis, ir aš esu su tuo taika.