Jak přistát svou první vývojovou práci v 5 jednoduchých krocích

Stopy v pouštním písku - Edward Musiak (CC BY 2.0)

Když právě začínáte, zdá se, že je nemožné proniknout na trh. Každý chce najmout někoho, kdo má zkušenosti. Jak získáváte tuto zkušenost, pokud nikdo nepřijme vývojáře bez zkušeností? Tento článek vás krok za krokem provede tak, aby vám pomohl při pohovorech s kódováním půdy a esa. Pokud máte kotlety, nikdo se nestará o to, že jste pro někoho nikdy předtím nepracovali.

Začněme tím, co dělat. Když jsem hledal svou první práci na vývoji softwaru, udělal jsem v knize každou chybu. Byl jsem mladý teenager, čerstvý ze střední školy. Ještě jsem nezačal vysokou školu. Chtěl jsem zážitek, jak dostávat zaplaceno za psaní softwaru.

Myslel jsem, že jsem horké věci. Bylo mi asi 18 let a už jsem měl více programových „zkušeností“, než požadovala většina výpisů. Začal jsem programovat kolem 5–6 let. Stále jsem se učil číst a psát, když jsem psal svůj první program v BASICu. Vypadalo to takto:

10 TISK „Ahoj, svět!“
20 GOTO 10

Moje další programy byly samozřejmě mnohem komplikovanější. Nakonec jsem se odbočil od BASICu a naučil jsem se Pascala, Assembly Assembly, C a C ++. Znal jsem procesor x86 na velmi nízké úrovni. Miloval jsem experimentování s grafikou a hudbou s kódem.

Dokonce jsem psal velmi jednoduché programy v čistě strojovém kódu. Jinými slovy, místo toho, abych se obtěžoval jazykem vysoké úrovně, jako je Shromáždění (je to chromý vtip, ale je to vyšší úroveň než strojový kód), napsal jsem šestnáctkový kód.

Hexový kód je v podstatě stejný jako zápis kódu přímo do 1 a 0. Představuje pouze čísla způsobem, který je pro lidi účinnější číst a psát. Vypadá to trochu takto:

49 66 20 79 6f 75 20 63 61 6e 20 72 65 61 64 20 74 68 69 73 2c 20 79 6f 75 27 72 65 20 68 69 72 65 64 21 20 4a 75 73 74 20 6b 69 64 64 69 6e 67 2e 20 42 75 74 20 79 6f 75 27 72 65 20 69 6e 20 61 6e 20 65 6c 69 74 65 20 63 6c 75 62 2e 0a 0a 47 65 74 20 31 30 25 20 6f 66 66 20 61 6e 79 20 70 75 72 63 68 61 73 65 20 66 72 6f 6d 20 68 74 74 70 73 3a 2f 2f 65 72 69 63 65 6c 6c 69 6f 74 74 6a 73 2e 63 6f 6d 20 77 69 74 68 20 74 68 65 20 63 6f 75 70 6f 6e 20 63 6f 64 65 3a 20 68 65 78 63 6c 75 62
Poznámka: Nesnažte se spustit tento kód, jedná se pouze o hexadecimální výpis tajné zprávy, který není určen jako návod pro žádný procesor.

V podstatě jsem si myslel, že kdybych mohl přijít s nápadem na program a zajistit, aby to skutečně fungovalo zadáním hex kódu, kterému stroj přímo rozumí, nebyla pro mě žádná výzva příliš velká!

Investice do technologií se zahřívaly a všude se objevovaly dobře financované spouštění softwaru. Jako každý ambiciózní kluk, který neví nic o najímání softwaru, napsal jsem životopis a plnil jej každým jazykem, ve kterém jsem kdy něco zakódoval. Vypadalo to takto:

Dovednosti:

Více než 10 let zkušeností s programováním *
Photoshop, ACiDDraw, 3D Studio Max **

Jazyky

BASIC, QBASIC, Pascal, ASM, strojový jazyk x86, C, C ++, MS DOS Batch, Perl, AutoLISP.

* Pamatujte, byl jsem čerstvý ze střední školy. Je pravda, že jsem nejprve kódoval před více než 10 lety, ale moje „zkušenost“ spočívala v tom, že jsem dělal hloupé hry a šlápl na hobby projekty.
 ** Jak cool děti navrhly uživatelské rozhraní

Tento životopis mi poskytl rozhovory, ale nešli tak dobře.

Můj první kódový rozhovor

Díky svému úžasnému seznamu klíčových slov pro dovednosti jsem šel do svého úplně prvního rozhovoru s kódem a cítil jsem se o sobě úplně rád. Tazatel se podíval na můj životopis a řekl: „Vezměte si tento kus papíru a napište třídu v C ++, která vede seřazený seznam jmen. Měl by mít dvě metody: add a list. “

Moje srdce se propadlo podlahou. Když přidám do seznamu nové jméno, musím vložit jméno tak, aby bylo abecedně řazeno podle příjmení ...

Byl jsem si jistý, že to dokážu snadno udělat pomocí jednoduchých funkcí v C, ale v té době jsem byl do C ++ úplně nový. Jaká byla opět syntaxe třídy? Jak definuji metody? Potřebuji virtuální metody nebo statické metody nebo veřejné nebo co? Jaké byly rozdíly?

Samozřejmě, kdybych byl doma se svou knihou C ++, mohl bych prostě otočit na příklad a klikat na to, žádný pot! Když kóduji, mám vždy své referenční knihy. To je naprosto nespravedlivé! Vím, že bych mohl udělat tuto práci, kdyby mi jen nechali nahlédnout do knihy.

A WTF? !!! Kdo ve své správné mysli kódy NA PAPÍRU ?! Vážně? Dej mi počítač a knihu, a já to zahodím hned.

Vzdal jsem se a odešel z rozhovoru s pocitem CELKEM ZELENÝ.

Zpět k tabuli.

Krok č. 1: Odpojte svůj životopis.

Pojďme mluvit o všem, co je špatného s mým prvním pokračováním v programování. Každý zkušený manažer najímání může najít nafouknutý životopis od mil daleko. Nikoho jsem neoklamal.

Tip pro pokračování: Vyfouknutí životopisu, abyste nahradili nedostatek zkušeností, vám nepomůže. Ublíží ti to. Pokud jste vývojář juniorů, vlastníte jej: „Jr dev s vášní pro učení!“

Kdybych měl hodnotit své dovednosti se všemi těmito věcmi v době 1–10, hodnotil bych je takto:

  • Photoshop: 8
  • ACiDDraw: 3
  • 3D Studio Max: 2
  • Aktuální dovednosti grafického designu: -10
  • ZÁKLADNÍ: 8
  • QBASIC: WTF? Skupina s BASIC, poser.
  • Pascal: 8
  • ASM: 6
  • x86 Machine Language: 1 (možné pouze malé, základní programy)
  • C: 6
  • C ++: 1
  • Dávka MS DOS: 9
  • Perl: 3
  • AutoLISP: 2
Tip pro pokračování: Pokud byste ohodnotili méně než 5 na jakoukoli dovednost, nedávejte to na svůj životopis.

Byl jsem eso ve Photoshopu. Strávil jsem v tom hodně času a opravdu jsem věděl, jak se pohybuji kolem funkcí a nabídek, ale protože jsem hrozný návrhář, veškeré technické know-how Photoshopu na světě by mému zaměstnavateli moc nepomohlo. Proč jsem se připravil zklamat lidi (včetně mě)?

Po nějaké brutální poctivosti se podívejme, co nám zbývá:

BASIC, Pascal, ASM, C, MS DOS Batch

Tip pro pokračování: Pokud si ho nikdo nenajme a vy se jen chlubíte bezcenné dovednosti, nechte to mimo svůj životopis.

Nyní jsme na Pascalu, ASM a C.

To neznamená, že mé další dovednosti nebyly cenné. Výčet všech mých schopností / předávání zájmů bez rozdílu však rozhodně nepomohl náborovým manažerům porozumět mým hlavním schopnostem nebo tomu, co jsem opravdu chtěl dělat.

Nyní pojďme třídit dovednosti podle relevance. Měl jsem dojem, že Pascal byl většinou výukovým jazykem a stále se používal, ale na trhu práce klesal. Opravdu jsem chtěl získat kódování zakázky v C. V té době bylo zapotřebí mnoho softwaru, aby bylo možné optimalizovat ručně v Assembly, když existují horká místa, která vyžadují optimalizaci, takže Assembly byla stále užitečná dovednost:

  • C
  • ASM
  • Pascal

Ach, mnohem lepší. A teď to zapadá do malého shrnutí v horní části mého životopisu:

Vášnivý juniorský vývojář softwaru se zkušenostmi v oblasti C, ASM a Pascal.

Krok č. 2: Cvičte, dokud nebudete moci žít kód na místě.

Ve vaší nové roli budete každý den požádáni o napsání kódu na místě. Musíte být připraveni prokázat, že to dokážete, když vstoupíte na pohovor.

Můj druhý programovací rozhovor

S revidovaným životopisem jsem byl v mnohem lepší pozici, abych absolvoval pohovor. V C, x86 ASM a Pascalu jsem byl dostatečně přesvědčený, že pokud mě požádají, abych kódoval na papíře nebo na tabuli bez dostupných knih, mohl bych to udělat.

Můj druhý programovací rozhovor byl hodně odlišný od prvního. Když mi generální ředitel vedl turné, neočekávaně ho zavolali a nechal mě viset s některými dalšími vývojáři. Když se vrátil, byl jsem zaneprázdněn pomáháním jim. Najal jsem si na místě, zbytek dne jsem zůstal a první ráno jsem začal pracovat. Nejlepší rozhovor vůbec.

Při této práci jsem musel používat C, Delphi (v podstatě Pascal ++) a C ++. To je také místo, kde jsem byl poprvé představen do Java, a nakonec i nový nový skriptovací jazyk pro webový prohlížeč s názvem JavaScript. Netušil jsem, jak důležité to bude v té době.

Jak jsem mohl začít hned hned přispívat během druhého programovacího rozhovoru? Přišel jsem připraven. Měl jsem dovednosti, které jsem potřeboval, abych měl okamžitý dopad.

Faktem je, že se naučíte většinu toho, co potřebujete vědět, abyste byli v práci produktivní, ale smutnou realitou je, že se o to zaměstnavatelé nestarají. Chtějí, abyste narazili na zem, dokonce i jako vývojář základní úrovně.

Pokud jste čerstvý z dev bootcampu nebo máte méně než rok zkušeností, je to opravdu nereálné očekávání, ale pokud chcete přistát a vyhnout se praní, musíte být připravený na. Než se zapojíte do pohovoru, musíte se naučit co nejvíce.

Čerstvý gradace bootcampů bude pravděpodobně potřebovat několikaměsíční pracovní zkušenosti s budováním aplikací, aby skutečně zasáhl tempo produktivity, které chtějí zaměstnavatelé vidět.

Poté, co absolvujete výcvik na zhruba 1 000 hodin na cvičeních v kódech a na praktických projektech, budete potřebovat dalších asi 320 hodin, abyste na hranici svých schopností vytvořili složitější aplikace.

Co mám na mysli pod pojmem „složitější aplikace?“ Mám na mysli, že by to měly být větší projekty, kompletní s přihlašovacími údaji uživatele (nejlépe bez hesla) a aplikační rámec (doporučuji React + Redux. Angular 2 je také populární. Pokud půjdete s Úhel 2, podívejte se na ngrx / obchod).

Potřebujete nápady na aplikace? Podívejte se na „Nejlepší způsob, jak se naučit kódovat, je kód: Naučte se architekturu aplikací vytvářením aplikací“.

Nejlepší scénář je třeba, abyste na svou první programovací práci byli připraveni alespoň 1320 hodin praxe.

Krok č. 3: Studujte.

Kromě toho, že dokážete vytvářet skutečné aplikace, budete také muset zapůsobit na verbální rozhovor a dobře znát některé základní koncepty programování.

Obecně to znamená, že budete muset číst nějaké knihy a blogové příspěvky nebo sledovat některá videa nebo absolvovat nějaké kurzy. Nestudujte však bezcílně. Měli byste mít na paměti směr. Podívejte se na „10 otázek rozhovoru, které by měl každý vývojář JavaScriptu vědět“ a na mé sérii příspěvků na blogu „Master the Interview JavaScript Interview“.

Naučte se běžné otázky kladené při pracovních pohovorech a přistupte k pohovoru s dobrým porozuměním konceptu. To znamená, že se budete muset dozvědět o každém konceptu a získat praktickou aplikaci v reálném kódu.

Když se tazatel například zeptá „Co je uzávěr?“, Neměli byste znát pouze definici, měli byste mít možnost uvést několik případů použití pro uzavření a vysvětlit, proč jsou užitečné.

Krok č. 4: Vytvoření portfolia.

Očekává se, že designéři a fotografové se objeví v portfoliu: sbírka ukázkových projektů, které dokončili, aby ukázali kvalitu své práce.

V těchto dnech je stále běžnější, že náboroví manažeři očekávají to samé od vývojářů. Je nám velmi užitečné, když se můžeme podívat na nějaký kód, který jste již napsali. Je váš účet GitHub plný vzdělávacích projektů a málo praktických aplikací? Skvělý!

To nám dává dobrý přehled o tom, kde se nacházíte, pokud jde o rozvoj dovedností. Pokud nemáte účet GitHub a nikdy jste veřejně nezveřejnili žádný zdrojový kód ani nepřispěli k nějakým projektům s otevřeným zdrojovým kódem, řekne nám to také něco o vás.

Možná si myslíte, že nemáte čas. Myslíte si, že jste jediná osoba s rodinou nebo jediná osoba, která podepsala NDA se společnostmi a písemným kódem, který nesmíme sdílet?

Nejsi. Čas je také cenný pro všechny ostatní. Ale vaše kariéra je důležitá. Důkaz je váš závazek a vaše vášeň. Pokud nemáte portfolio, na které se můžeme podívat, je to určitě červená vlajka. Možná nejsi dost vášnivý? Možná se vám vlastně nelíbí dostatek kódu na to, abyste něco udělali ve svém volném čase? (Pokud tomu tak je, měli byste zvážit nalezení kariéry, která by lépe odpovídala vašim zájmům a vášním).

Možná si myslíte, že vás nespravedlivě posuzuji. Realita je taková, že ostatní to také budou. Někteří hodí váš životopis přímo do koše, pokud neuvidí odkaz GitHub. Opravdu chcete riskovat toto riziko?

Přestaňte se omlouvat a vybojujte si čas. Tohle je tvoje kariéra. To je to, co strávíte velkou část svých hodin bdění se svým životem. Vezmi to vážně. Dej do práce. Udělej to.

Krok č. 5: Pracujte na dovednostech svých lidí.

Hraje se stereotyp sociálně nešťastného geeka. Tyto dny skončily. To neznamená, že musíte být extrovertem. To znamená, že musíte za všech okolností jednat s ostatními lidmi s úctou.

Musíte vědět, jak najít přátele, spolupracovat a prezentovat se dobře. Pokud si chcete rychle najít přátele, naučte se rozpoznávat a ukazovat vděčnost za příležitost. Ukazování ocenění ostatním je pravděpodobně nejrychlejší způsob, jak se dostat do svých dobrých milostí.

Učte se a procvičujte empatii. Ať je součástí vaší osobní značky. Empatie je nejdůležitější dovednost, kterou může mít vývojář softwaru. Bez toho nemáte nic.

Jak se bez empatie postavíte do bot uživatele softwaru? Jak začnete chápat potřeby obchodního týmu nebo manažera nebo spolupracovníků? Pokud nedokážete pochopit, co ostatní lidé potřebují, proč je potřebují, a jak s nimi můžete pracovat, abyste těmto potřebám vyhověli, bude pro vás život mnohem těžší.

Empatie je něco, co můžete praktikovat. Když interagujete s ostatními, zvláště když nesouhlasíte, vynakládejte vědomé úsilí, abyste se dostali do svých bot. Pokuste se pochopit, proč se cítí tak, jak se cítí, a co můžete udělat, abyste jim pomohli.

Zvládněte svůj osobní výtah. Pochopte své silné stránky. Co vás odlišuje? Jak se můžete v prvních několika sekundách dobře prezentovat? Pokaždé, když se přestěhujete z jednoho zaměstnání do druhého, setkáváte se s novými lidmi nebo se chystáte na smluvní práci, musíte se prodat.

Uvědomte si, že v dnešní společnosti má každý osobní značku, ať už o tom vědomě přemýšlíte nebo ne. Odráží se to ve vašich sociálních médiích, způsobu, jakým se vyjadřujete stylem, a způsobu, jakým komunikujete.

Pokud budete mít osobní značku, můžete ji také vlastnit, tvarovat a spravovat. Jaký člověk chceš být? Jak byste chtěli, aby vás ostatní viděli? Pomysli na to. Zapište si seznam zvláštností, které chcete znát, a pak se zaneprázdněte jejich vývojem a praktikováním.

Ujistěte se, že jsou viditelné při každé komunikaci s ostatními.

Empatie je nejdůležitější dovednost vývojáře. Procvičujte si to.

Závěr

  1. Odpojte svůj životopis: Jste juniorský dev s vášní pro učení. Vlastnit. Využijte ji ve svůj prospěch. Dev týmy musí najmout juniorské vývojáře. Vaše nezkušenost je součástí vaší hodnoty.
  2. Cvičení: Skutečná, úmyslná praxe s laserovým zaměřením a herním plánem. Musíte vložit asi 1 000 hodin do kódovacích cvičení a dalších asi 320 hodin vytvářet skutečné aplikace. Udělejte to a budete připraveni na většinu živých výzev kódování, se kterými se setkáte v rozhovorech.
  3. Studie: Čtěte knihy. Podívejte se na online kurz. A co je nejdůležitější, seznamte se s běžnými otázkami na pohovory a buďte připraveni na ně.
  4. Vybudujte si portfolio: Kromě toho, že jste skvělým nástrojem k posouzení úrovně svých dovedností, pokud nemáte portfolio, vyvolá manažerské otázky také otázku, jak vážně berete svoji kariéru v rozvoji, nebo jak vášnivě se zajímáte o programování. Je čas přestat se omlouvat a dělat to. Toto je skvělé místo pro uvedení aplikací, které chcete vytvořit, do praxe. (Viz # 2).
  5. Rozvíjení dovedností lidí: Empatie je pro vývojáře softwaru nejdůležitější dovedností. Možná nejdůležitější dovednost pro život. Praxe s ohledem na perspektivy ostatních lidí. Vytvoříte uživatelsky přívětivější aplikace a budete mít lepší vztahy se svými spolupracovníky a týmovými vedoucími.

Chcete se rychle dostat na studii? Pomůžu vám překonat propast mezi dovednostmi juniorského a středního jazyka JavaScriptu až po pokročilý vývoj aplikací JavaScriptu.

Naučte se důkladně dva pilíře JavaScriptu (prototypové OO a funkční programování) spolu s kritickými dovednostmi, jako je TDD. Sledujte mě také kódovat skutečné aplikace.

Naučte se JavaScript s Ericem Elliottem

Eric Elliott je autorem „Programování aplikací JavaScriptu“ (O’Reilly) a „Naučte se JavaScript s Ericem Elliottem“. Přispěl k softwarovým zkušenostem pro systémy Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC a špičkové umělce včetně Usher, Frank Ocean, Metallica a mnoho dalších.

Většinu času tráví v San Francisco Bay Area s nejkrásnější ženou na světě.