Kako postati dobar mlađi softver inženjer

Čestitamo! Uspio si! Postali ste mlađi softverski inženjer. Prije samo godinu dana, istu sam čast primio kad sam se pridružio AdHawku, i to je bila prilično vožnja. U nastojanju da prenesem znanje iz svojih prošlih iskustava, prikupio sam popis savjeta i savjeta o tome kako i vi možete biti sjajni softverski inženjer Junior.

Moj tim (ja sam s desne strane) s voditeljem proizvoda Joe (centar) - AdHawk Sjedište 2018

Budite glasni!

Ako se i kada zaglavite tijekom kodiranja, nemojte dozvoliti da sjedite predugo. Apsolutno se trudite da gurate sebe u pronalaženju rješenja, ali kad se predugo nalazite u praznom hodu, obratite se svom programeru. Postavite što više pitanja koja vam padnu na pamet pri druženju s kolegom. Nema glupih pitanja i razjašnjavanja stvari za vas koristi objema strankama. Ako niste glasni, to može rezultirati umanjivanjem vašeg rasta i rasta.

Tražite mentora

Pronađite mentora koji je unutarnji ili vanjski prema vašem specifičnom timu. Kad se sastanete s tim mentorom, donesite SMART (određene, mjerljive, dostižne, realistične i pravovremene) ciljeve na ove prijave i prijavite svom mentoru s bilo kakvim rezultatima.

Pokušajte unositi i propuste u svoje prijave. Jedan od najjačih alata za učenje je introspekcija. Raspravite o svim poteškoćama i pitajte svog mentora kako biste mogli rasti iz ovih iskustava.

Poduzeće u nepoznato

Pritisnite za izvršavanje zadataka koji se mogu osjećati izvan vašeg područja znanja. Predanost izazovima izgradit će vašu količinu iskustava i produbiti vaše upoznavanje s novim i ponekad uobičajenim problemima koje treba riješiti.

Naučite natrag ono što naučite

Postoji mnoštvo različitih načina da se okrenete i podučate ono što ste naučili. Možete pisati dokumentaciju, napraviti video tutorial ili napisati blog. Bez obzira koji ste medij odabrali, čin poučavanja unatrag povezuje vaš obrazovni rast. Nužno jasno artikulirati bilo što, prisiljava vas da analizirate problem i popunite sve moguće praznine u vašem znanju.

Uspostavite raspored rada

Imamo brojne poteze i odgovornosti koje imamo kao programere. U bilo kojem trenutku mogli biste pisati novu značajku, popraviti bugu, pregledati vršnjački kôd, naučiti novu tehnologiju, sudjelovati na sastanku ili bilo kojem broju drugih zadataka. Stvaranje rasporeda koji diktira vrijeme za svaku vrstu zadatka tijekom određenog radnog tjedna jamčit će vam da ćete napredovati u svakom novom području odgovornosti.

Moj tipičan dan

  1. Pregledajte zahtjeve za povlačenje (pola sata do sat)
  2. Radite na razvojnoj kartici (do stanja pripravnosti, otprilike 2-3 sata)
  3. Stajanje (pola sata)
  4. Ručak (sat)
  5. Nastavite rad na razvojnim karticama
  6. Podignite zahtjev za povlačenjem u tijeku i / ili pregledajte nove zahtjeve za povlačenje

Sastanci će se pojaviti i biti prolazni između svih ovih zadataka.

Prisilite se na testiranje

TDD označava razvoj-test. Ukratko, TDD znači da ćete najprije napisati testove koji potvrđuju funkcionalnost trenutno nepostojeće značajke ili interakcije. Na taj se način stvara vrlo bitna povratna sprega informacija koja će jasno definirati cilj i opseg vašeg zadatka. Primjer nedavnog testa koji sam napisao može biti:

Sada kada se pokreće ovaj kôd, prva greška je da varijanta_path staze ne postoji. Sada je vaša razvojna pripovijest postavljena. Kao mlađi, Test Driven Development pruža mi mogućnost postavljanja puta prema određenoj značajci. Zatim me taj put usmjerava s putem poruka o pogreškama koje mi pomažu da popunim praznine u bilo kojem potencijalnom rješenju.

Pritisnite za uparivanje

Ne postoji brži način da rastu kao Juniori od sparivanja s starijim vragovima. Okružje koje je stvoreno kada će par viši i mlađi služiti pojačavanju ponašanja potrebnih za uspjeh svih uključenih strana. Starije osobe će trebati priopćiti svoje ideje i odluke na općenitiji i sažetiji način. Vjerujem da svi inženjeri mogu lakše pisati kod duboko u kontekstu pronalaska rješenja. Međutim, kada se od njih zatraži da objasne ili potvrde svoje odluke, oni uistinu počinju razumijevati cilj i postoji mogućnost ponovnog faktoringa.

Juniori će s druge strane moći donositi odluke više razine i zajedničke interakcije brzo se uklopiti u njihovo iskustvo. To im omogućuje da preskoče neke od poskočnih odskočnih kamena, poput detaljnog opisa načina prvog izrade testa ili rukovanja greškama na prikladniji način. Ovo uspostavlja ispravne navike i dugoročno poboljšava zdravlje aplikacije.

Ono što je najvažnije, također se poboljšava iskustvo programera za sve sudionike. Na pamet nam pada stara poslovica: „Samo brzo možete ići, ali zajedno možemo daleko“. Koncept mentalnog ili kognitivnog umora od „zaglavljenosti“ ne pojavljuje se gotovo tako često.

Imati par za odbijanje ideja ili prebacivanje uloge s "vozača" na "navigator" (tko unosi nasuprot onima koji razgovaraju bez tipkanja) ili obrnuto može skočiti startne kognitivne blokove i zapravo povećati brzinu razvoja. Iako uparivanje ima svojstveni trošak (plaćeni sati), rast koji se događa i vrijednost vraćena u iskustvu programera znatno nadmašuje početnu investiciju.

Oštrite svoje alate

Davno prije nego što sam znao da je inženjering na horizontu, izveo sam niz predavanja tijekom srednje škole o grafičkom dizajnu. Prvi test koji smo položili za tu klasu bio je za tipkovne prečace. Zašto ne bismo naučili teoriju boja ili kako pravilno koristiti alat maske? To je zato što je moj instruktor znao da istinski ne može biti umjetnik bez da se naučio upravljati vašim alatima. Ova lekcija ostala je uz mene do kraja života. Bila je to jednostavna, ali vrlo moćna poruka.

Kao inženjer vaš je um jedan od vaših najjačih alata i nastavit će svakodnevno jačati. Međutim, ako se vaše razvojno okruženje ne postavlja na učinkovit način, na kraju se spotaknete kroz strukture mapa, koristeći pokazivač umjesto uobičajenih prečaca, a mala brzina tipkanja može uvelike ometati sposobnost prevođenja vaših rješenja u kod.

Nekoliko alata koji su vam na raspolaganju:

  • Naučite prečace svog IDE-a (osnovne VSCode prečice)
  • Zsh - unix školjka koja se može koristiti za optimizaciju interakcija vaše ljuske (naredbe za automatsko dovršavanje, poduzimanje naredbi itd.)
  • Instalirajte upravitelja prozora (Spectacle je moja aplikacija po izboru)

Mogućnost učinkovitog pristupa mojim resursima uštedjela mi je bezbroj minuta (koje se vremenom sabiraju). To mi je omogućilo da najveći dio svog vremena provedem radeći na pronalaženju rješenja, umjesto da se borim sa svojim okruženjem.

Mediji Mediji

Mnogi najuspješniji pojedinci u povijesti preporučuju zakazivanje vremena za učenje tijekom vašeg radnog tjedna. Elon Musk, Bill Gates i Oprah samo su neki od zagovornika ove filozofije, pravila od 5 sati. Pravilo kaže da bi pojedinac koji želi povećati svoj ukupni uspjeh trebao provesti najmanje 5 sati tjedno učeći nešto novo.

Ja vjerujem u njihovu prosudbu! Nije tajna da postoji gotovo beskonačna količina blogova, podcasta, članaka, konferencijskih razgovora, tutorijala i još mnogo toga što se može potrošiti kako bi se ojačalo znanje softverskog inženjera. Tijekom svog mladog putovanja umetat ćete se u more nepoznatih pojmova i koncepata. Nemojte se sramiti ovog iskustva. U stvari, predlažem da se krene prema naprijed.

Nekoliko resursa s kojima sam uživao u prošloj godini:

  • Podcast Bike Shed - Razvoj softvera podcast od ljudi u Thoughtbotu (sadržaj visoke razine koji vam se može činiti iznad glave, ali dugoročno će biti vrijedan za slušanje)
  • Egghead.io - Sjajna platforma s vrlo jezgrenim i dobro oblikovanim video tutorijalama
  • Exercism.io - TDD fokusirana platforma za podučavanje mnogih popularnih jezika i okvira

Izdvajanje nekoliko sati za učenje s ovim i eventualno drugim alatima optimizirat će vaš rast i gurnuti vas da postanete najbolji programer koji možete biti.

Idi naprijed i prosper

Čestitamo vam na putu koji se spremate poduzeti. To je ono što nije bez opasnosti. Kao što se softver, navike i uspjeh ne grade preko noći. S ovim savjetima i velikodušnim naporima, uvjeren sam da ćete postati najbolji softverski inženjer Junior.