Tanulságok az utazásomból, mint önálló fejlesztő

Az autodidakta fejlesztő útja nehéz és bizonytalansággal teli. Nincs egyenes vonal a kezdőtől a karrier-programozóig. Emiatt úgy gondolom, hogy minden autodidakta fejlesztőnek egyedi története van.

Ebben a cikkben megosztom a kódolási utamat egy sor leckével, amelyeket útközben megtanultam. Remélhetőleg, ha elolvastam a tapasztalataimat, amikor megtanítottam magamnak a kódolást, akkor jobban átgondolhatod saját múltadat, és motiválhatom a továbblépésre.

1. lecke: Fókuszáljon a folyamatra

Amikor először kezdtem el programozni, soha nem volt szándékomban karriert csinálni. Csak egy konkrét alkalmazást akartam készíteni.

Utam akkor kezdődött, amikor idősebb voltam az egyetemen. Most fejeztem be Richard Branson életrajzát, és valószínűleg túl sokat olvastam a TechCrunchot. Tele voltam vállalkozói energiával.

Folyamatosan olvastam, hogy az egyetemisták hatalmas összegeket kaptak-e mobilalkalmazás-ötleteikért. Azt hittem, egyike lehetek azoknak az egyetemistáknak.

Egy nap, miközben az órák között sétáltam, egy alkalmazás ötlete támadt. Gyorsan meggyőződtem arról, hogy megtaláltam a következő nagy dolgot.

Engem felemésztett az ötlet, és nem figyeltem az előadásokra. Izgalmam az alkalmazás ötletével kapcsolatban gyorsan odáig fajult, hogy úgy éreztem, cselekednem kell.

Egy nagy probléma volt. Az ötletem mobilalkalmazás volt, és nem ismertem senkit, aki mobilalkalmazásokat tudna készíteni.

Szóval arra gondoltam: "mi a fene, milyen nehéz lehet a programozás?" Elvesztettem az érdeklődésemet a szakom iránt, és sok időt töltöttem az Xbox játékával. Szabadidőm egy részét a mobilalkalmazás-ötlet fejlesztésére fordíthatnám.

Néha a naivitás segít abban, hogy cselekedj, amikor általában nem tennéd.

Főiskolai hallgató voltam, programozási, üzleti vagy tervezési tapasztalatok nélkül, és megpróbáltam megtanulni az Android-ot, így egy összetett mobilalkalmazást tudtam építeni. Gondolom, ez az, amit kapsz, ha egy nagy ötletet keversz a Szilícium-völgy hype gépével.

Bárcsak elmondhatnám, hogy a dolgok innen jól mentek.

Vettem néhány könyvet az Android fejlesztéséről, és számtalan órát töltöttem a szobámban, és megpróbáltam összeragasztani az alkalmazásomat. Nem érdekelt az alkalmazás működése, csak kész terméket akartam.

Telt az idő, és az alkalmazás Frankensteinné vált másolt és beillesztett kódként. Az alkalmazás nem sok funkcióval rendelkezett, és alig futott összeomlás nélkül.

Csak amikor véletlenül bekerültem egy informatika órára, rájöttem, hogy inkább arra kell összpontosítanom, hogy valóban megpróbáljam megtanulni a szoftverfejlesztést.

Képtelenségem programozni arra késztetett, hogy felhagyjak a kezdeti alkalmazásötletemmel. Arra a felismerésre jutottam, hogy nem a következő nagy dolgot fogom elkészíteni, legalábbis még nem.

Idővel kijavítottam a viselkedésemet, és komolyabban vettem a tanulást. Élvezni kezdtem a programozást, és végül szoftverfejlesztőként kezdtem el a karrieremet.

A nagy alkalmazás ötletem sokáig emésztett. Inkább a végeredményre összpontosítottam, mint az oda jutás folyamatára.

Ha túlságosan a végeredményre koncentrál, elkezdi használni a parancsikonokat. A hivatkozások rövid távú előrelépést eredményezhetnek, de hosszú távon a tudás hiánya mindig utolér.

Fontos megjegyezni, hogy bármi nagy megtanulása, például a programozás, sok apró lépést igényel. Minden lépést óvatosan kell kezelni.

Új dolgok megtanulása olyan, mint egy házépítés. Az alapokkal kezdi és felépíti. Ha az alapozás hibás, az egész előbb-utóbb összeomlik.

Néha egy erős alap megépítéséhez lassulásra van szükség. Nincs szégyen lassan haladni. Azok, akik először értik az alapokat, előbbre jutnak, mint azok, akiknek vissza kell térniük és újra meg kell tanulniuk őket.

Van egy régi kínai közmondás:

"Jobb, ha sok apró lépést megteszünk a megfelelő irányba, mint hogy nagy ugrást tegyünk előre, hogy csak hátrabotlassunk."

Nem az, hogy milyen gyorsan tudsz valamit csinálni, hanem az, hogy milyen lassan tudsz helyesen.

Tökéletes példa voltam. Kívülről úgy tűnhetett, mintha programozó szeszes gyerek lennék. A valóságban nem tudtam olyan alkalmazást létrehozni, hogy megmentsem az életemet.

Koncentráljon a folyamatra, és meglepheti magát azzal, hogy mennyi haladást ér el minden nap.

2. lecke: A verem túlcsordulása félelmetes (de veszélyes)

Amikor építettem a gyilkos alkalmazást, a Stack Overflow lett a legjobb barátom.

Bármikor elakadtam, megpróbáltam egy tökéletes kérdést kidolgozni, hogy feltegyem a Stack Overflow közösségnek. Naponta átlagoltam néhány kérdést.

Nemcsak kérdéseket tennék fel, hanem a verem túlcsordulásával kapcsolatos válaszokat is evangéliumként kezelném. Őrülten sok időt töltenék a webhely felkutatásával, hogy megpróbáljak megtalálni egy pontos kódrészletet, amely megoldja a problémámat.

Amikor találtam egy megfelelő választ, átmásoltam és beillesztettem a kódbázisomba, és megpróbáltam a meglévő kódommal működni. Kevés időt töltöttem azzal, hogy megértsem a hozzáadott kódot.

Új művészeti formává tettem a nyers erővel történő próbát és hibát.

Ez a folyamat egy ideig tartott, míg végül felismertem és rájöttem a megközelítésem hibáira.

A Stack Overflow áldás és átok. Remekül segít megoldani a problémákat - ha azonban nem vigyáz, gyorsan függővé válhat a weboldaltól.

Néha a weboldal túl jól képes megoldani a problémákat. Hamis bizalomérzetet kelt, amely több fejfájást okozhat az úton.

A Stack Overflow megmutatja, hogyan lehet valamit működtetni, de általában nem mondja meg kifejezetten, hogy miért működik.

A hogyan megértése fontos. Javítani kell a hibákat és futtatni kell a kódot.

Azonban annak megértése, hogy miért működik valami, segít abban, hogy a jövőben újra alkalmazza az ismereteket.

Olyan, mint az idézet ...

"Adj egy embernek egy halat, és egy napig eteted. Taníts meg egy embert halászni, és egy életen át eteted."

A Stack Overflow kódjának másolása és beillesztése olyan, mintha valaki halat adna valakinek. A kódrészlet működésének megértése olyan, mintha halászatra tanítanánk őket.

Nincs semmi baj a kód másolásával és beillesztésével. Mindannyian csináljuk. Csak akkor jelent problémát, ha mankóvá válik, és elkábítja fejlesztőnk növekedését.

Azt a nehéz utat kellett megtanulnom, hogy lehetetlen bármit is megtanulni, ha a válaszokat folyamatosan megkapják. A tanulási folyamatban nincsenek rövidítések.

Amikor elakadt, próbáljon legalább néhányszor megoldani a kódolási problémát, mielőtt a Google-hez fordulna.

Amikor azt találja, hogy másol és beilleszt kódot, töltsön egy kis időt arra, hogy megpróbálja megérteni a kódrészletet, mielőtt továbblépne.

3. lecke: Ismerje meg, hogyan lehet tapasztalt segítséget találni

Az első dolog, amit megtettem, miután eldöntöttem, hogy tanulni akarok programozást, az volt, hogy megvettem két Android fejlesztő könyvet.

Az elején szorosan követtem a könyvek gyakorlatait, és átdolgoztam a példaprojekteket. Azonban gyorsan elkeseredtem a könyv nyomán elért haladásom miatt, és úgy döntöttem, hogy elmegyek, és kitalálom, hogyan programozhatom egyedül.

Amint fentebb olvasta, ez lassan katasztrófát eredményezett.

Számtalan órát töltöttem elszigetelten a szobámban, hogy egyszerű programozási problémákat találjak ki. Elakadtam minden új kódsoron, és nem éreztem úgy, hogy sokat fejlődnék.

Tehetetlenül elakadtam, és az életem a kétely, a frusztráció és az elveszés elsöprő érzésének koktélja volt.

A helyzetet tovább rontja az a jó ötlet, hogy elkezdjem használni az FFMPEG nevű hatalmas C könyvtárat. Alkalmazásomnak videókat kellett szerkesztenie, ezért úgy gondoltam, hogy jó ötlet a könyvtár robusztus funkcióinak kihasználása.

Nem ez volt a legokosabb lépésem, tekintve annak idején, alig tudtam működtetni az Android-alkalmazást.

Sok időt pazaroltam azzal, hogy megpróbáltam elolvasni a C kódot, és rájöttem, hogyan használhatnám az alkalmazásomban. Küzdöttem azért, hogy még a könyvtárat is importálhassam az Android projektembe. Az Android és a C kód nem akart szépen játszani.

Sok órás sehova jutás után végül csalódott lettem, és otthagytam a könyvtárat.

Körülbelül ugyanabban az időben, mint az FFMPEG hibája, feliratkoztam egy objektumorientált programozási osztályra. Őszintén szólva nem vagyok biztos benne, hogyan kerültem be. Később megtudtam, hogy én vagyok az egyetlen nem informatikus szak az osztályban. Azt hiszem, volt egy hiba a beiratkozási szoftverben.

Az első feladat egy Blackjack program felépítése volt. Ezen a ponton 5-6 hónapig tanítottam magamnak a programozást, és kissé magabiztosnak éreztem a képességeimet.

Befejeztem a feladatot, és jól éreztem magam a munkámban.

Nem tartott sokáig, hogy ez az érzés elhalványuljon.

Az egész programomat egy hatalmas módszerrel írtam. Csaknem mindenki más az osztályban képes volt felvenni azt a tényt, hogy a programot osztályokra kellett osztani.

Nem jó.

Szerencsére az órai munka és a tanár útmutatása lehetővé tette, hogy egy lépéssel hátrébb lépjek az Android alkalmazásomtól, és átgondoljam a programozási képességeimet. Elkezdtem értékelni a tanulást, és visszafogtam a vágyaimat egy elkészült alkalmazás elkészítésére.

Most jöttem rá, hogy ha csak egy tapasztalt fejlesztővel beszéltem volna azokban a korai időkben, akkor látták volna, mit csinálok. Egyenesen meghatározhattam volna a prioritásaimat, és értelmet nyerhettem volna belém. Segítettek volna kijavítani az utamat, amikor haszontalan zsákutcákon jártam (például megpróbáltam az FFMPEG-vel dolgozni).

Ehelyett részben elszigeteltem magam a világtól, mert úgy éreztem, nincs senki, aki segíthetne nekem.

Az izolálás kétélű kard. Egyrészt segít összpontosítani a feladatra. A másik oldalon eltávolít benneteket a világtól, és ezzel elengedhetetlen a fontos visszajelzés.

Nagyon sokféleképpen találtam segítséget. Megpróbálhattam volna egy professzort / hallgatót találni az egyetemen Android-tapasztalattal, vagy segítséget kértem a helyi közösségtől. Megpróbálhattam volna egy online Android-közösséget is találni.

A tapasztalt fejlesztők olyanok, mint egy iránytű. Nem viszik el az úti céljába, de megbizonyosodnak arról, hogy jó irányba mutat-e. Segítségük gyakran a különbség a siker és a kudarc között.

Ügyeljen arra, hogy bárhol keresse az útmutatást. Időt és frusztrációt fog megtakarítani az úton.

4. lecke: Készítse el környezetét

Ez lehet az egyetlen dolog, amit úgy éreztem, hogy jól tettem, amikor programozásra tanítottam magam.

Egész életemben nagyon rosszul jártam teszteknek tanulni vagy otthoni házimunkát végezni. Túl sok zavaró tényező van egy adott pillanatban. Gyakran próbáltam menedéket találni könyvtárakban vagy kávézókban.

Szerencsére ezt a szabályt alkalmaztam, amikor programozásra tanítottam magam.

Végül törzsvendég lettem néhány helyi kávézóban. Inkább a kávézókat választottam, mint más tanulmányi helyszíneket, mert ezek némi változatosságot biztosítottak, és könnyen elrejthető (a koffeinhez való könnyű hozzáférés sem árt).

Ha otthon tanultam, megbizonyosodtam arról, hogy az ajtóm be van csukva, és szobatársaim tudták, hogy egy bizonyos ideig nem zavarnak.

Függetlenül attól, hogy hol vagyok, meggyőződnék arról, hogy a zeném elég hangos-e, hogy ne halljam, mi zajlik körülöttem.

Nem mondhatom, hogy tökéletes voltam a figyelemelterelés nélküli munkakörnyezet megtalálásában, de legtöbbször sikerrel jártam.

A megfelelő munkakörnyezet megléte gyakran figyelmen kívül hagyja a tanulás részét.

A hangsúly a memória és a készségek elsajátításának egyik alapeleme. Amikor megpróbálsz újat tanulni, a tanulás ereje közvetlenül kapcsolódik a fókusz intenzitásához. Ha gyenge a figyelem, az új információk kevésbé ragadnak, ami lassabb tanulást és több időt igényel.

Munkakörnyezetének zavarónak kell lennie, és hosszú, megszakítás nélküli fókuszterületeket kell lehetővé tennie. Még akkor is, ha a COVID-19 szükségessé teszi a távmunkát, továbbra is megteheti a tanulási környezet megtervezéséhez szükséges intézkedéseket.

Íme néhány dolog, amit tehet:

  • Keressen egy helyet, ahol az emberek nem szakítanak meg
  • Állítsa telefonját repülőgépes üzemmódba
  • Használjon valamilyen időzített webhelyblokkolót a közösségi médiához és a híroldalakhoz
  • Viseljen fejhallgatót, és hallgasson nem zavaró zenét (lehetőleg hosszú lejátszási listát, hogy ne kelljen folyamatosan dalokat váltania)
  • Kerülje a tévét vagy más erősen stimuláló környezetet
  • A közelben legyen egy jegyzetfüzet, amellyel felírhatja a fejébe ugró feladatokat vagy ötleteket
  • Tudassa a körülötted élő emberekkel, hogy nem akarja, hogy zavarjanak

Csak Ön döntheti el, hogy hol és hogyan készítse el a környezetét. De mindenképpen tegye meg, mert megéri.

5. lecke: Menj ki a világba és ismerkedj meg emberekkel

Az első programozási munkám egy véletlenszerű eset volt.

Most költöztem Omahába, Nebraskába, és körülbelül egy év autodidakta fejlesztés volt az övem alatt.

Nagyon kevés embert ismertem Omahában, ezért a Meetup.com-on kerestem, hogy megpróbáljak más embereket találni az Android fejlesztése iránt. Találtam egy mobil fejlesztésre összpontosító Meetup-ot, amely mind az iOS, mind az Android fejlesztésre kiterjedt, és úgy döntöttem, hogy elmegyek.

Az első találkozóra idegőrlő volt. Körülbelül 10 percet töltöttem az autómban a helyszínen annak eldöntésével, hogy be kell-e mennem, vagy elhajtok.

Megfélemlítettem. Nem voltam biztos a programozási képességeimben, és tudtam, hogy a Meetup-on mindenki sokkal több tapasztalattal rendelkezik, mint én.

Végül azt mondtam, csavarja be és bementem.

Örülök, hogy megtettem.

Rendszeresen elkezdtem részt venni, és az egyik Meetup során, nem sokkal azután, hogy Omahába költöztem, találkoztam egy toborzóval, aki Android-vállalkozót keresett. Beszéltünk egy ideig, és a héten később kaptam egy interjút a munkához.

Az interjú előtt magabiztosnak éreztem magam. Az interjú során őz voltam a fényszórókban.

A kérdező arról a projektről beszélt, amin dolgoznék, és minden a fejemen ment. Próbáltam elkötelezett maradni, de tudták mondani, hogy ez nem tartozik a hatósugaramba.

Az interjú után arra kértek, hogy lógjak egy órát, hogy beszélhessek mással. Tudva, hogy kifújtam, bejártam a belvárost, és megpróbáltam kitisztítani a fejem.

Végül interjút készítettem mással a cégnél, és nem sokkal később felajánlottak egy gyakorlatot.

Annyira megdöbbentem, hogy miután aláírtam az összes papírt és elindultam a munkahelyi laptopommal, átmentem a vezérigazgatóhoz, és megkérdeztem, hogy ez fizetős szakmai gyakorlat-e vagy sem.

A gyakorlatból teljes munkaidős munka lett, és karrieremet szoftverfejlesztőként kezdtem.

Amikor autodidakta vagy, akkor az emberek nem fognak eljönni és megkeresni. Meg kell találnia a lehetőségeket magának.

A négyéves egyetemek és a kódiskolák végzettjeinek az az előnye, hogy kihasználják iskolájuk hálózatát az álláskeresés során. Az autodidakta fejlesztők nem rendelkeznek ezzel a luxussal.

Az autodidakta fejlesztőknek ki kell menniük a világba, és maguknak kell kiépíteniük hálózatukat.

A munkaadók hideg hívása és önéletrajzok küldése működhet. A közösségi hálózatukban azonban olyan embereket találtam, mint olyan emberek, akik közel állnak hozzájuk.

Az olyan webhelyek, mint az Meetup.com, kiválóan alkalmasak havi programozás-specifikus csoportok keresésére. Még egy járvány idején is sok virtuális találkozó létezik, amelyek nagyon informatívak és hasznosak.

Vannak más Slack csatornák vagy diszkord közösségek is, amelyeket felhasználhat az értelmes kapcsolatok kialakításához. Megpróbálhatja megkeresni a környékén élő embereket, és kérhet egy gyors 15 perces virtuális kávét velük.

Tegyen meg mindent annak érdekében, hogy felépítse az idegét, hogy elérje és beszéljen emberekkel. Legyen barátságos, és beszéljen velük tapasztalatairól. Győződjön meg arról, hogy az emberek tudják-e az Ön hosszú távú munkalehetőségét.

Helyezze magát olyan helyzetekbe, ahol valami pozitív történhet. Nem nyerhet tombolát, ha soha nem vesz jegyet.

Gondoljon minden lehetőségre, amely eljön az utadba, mert még ha zsákutcának is tűnik, mégis nagyobb dologhoz vezethet.

A szakmai gyakorlatom hatalmas fizetést jelentett az akkori többi ajánlatomhoz képest. Tudtam azonban, hogy ha keményen dolgozom, alkalom nyílik arra, hogy betörjek a technológiai iparba.

A legfontosabb, hogy hosszú távon gondolkodjunk a munkalehetőségekről. A szakmai gyakorlat vagy a részmunkaidős állás lehet, hogy nem adja meg előre a kívánt fizetést, de a jövőben ajtókat nyithat.

Remélem, hogy megtanulja a hibáimat, és izgalmas új hibákat követ el a sajátjaiban

Amint láthatja, sok hibát követtem el az autodidakta fejlesztővé válás utam során.

A kódolás megtanítása soha nem egyenes út. Minden történetünk egyedi.

A legfontosabb a folytatás és a csüggedés elkerülése, amikor a dolgok nem az Ön útján mennek.

Arra biztatok más autodidakta fejlesztőket, hogy osszák meg történeteiket. Nemcsak értékes betekintést nyújtanak, hanem segítenek megvilágítani az általunk megtett egyedi utakat.

Remélhetőleg az én történetem és a tanult leckék segítenek előrelépni.

Köszönöm, hogy elolvasta. Ha szeretne hallani más meglátásokról, amelyeket útközben megtanultam, kövesse a Twitteren a Zero to Programmer fiókomat. Célom, hogy segítsek a programozás hatékonyabb elsajátításában.