Het leer-raadsel

Toen ik in 1989 professioneel met informatietechnologie begon, was het vrij eenvoudig om een ​​richting te kiezen. Tenminste in mijn gebied (Zuid-Florida), ging je naar een van de volgende gebieden:

  • Netwerk- en systeembeheer
  • Database administratie
  • Software ontwikkeling
  • Project management-gerelateerde taken (inclusief QA werk)

ColdFusion was mijn voorkeurskeuze en ook dat duurde bijna tien jaar.

Ik volgde de softwareontwikkelingsroute en heel lang was het gemakkelijk om een ​​programmeertaal te kiezen waarop je je carrière kon baseren. In mijn geval begon ik met Clipper (een op dBase gebaseerde compiler) en uiteindelijk vertrok ik naar client-server-ontwikkeling met PowerBuilder, de laatste is mijn goto-tool voor bijna vijf jaar.

En zelfs toen ik aan de ontwikkeling van het web begon, waren tools en technologieën nog steeds gemakkelijk te kiezen, vooral omdat het web nog steeds zo jong en eenvoudig was om de pagina later opnieuw te ontwikkelen, aan de serverzijde. ColdFusion was mijn voorkeurskeuze en ook dat duurde bijna tien jaar. En meest recent zijn jQuery en JavaScript mijn focus sinds 2008.

Er is een reden dat ik je dit allemaal vertel.


Het hamsterwiel

Ik heb het geluk gehad dat ik voor technologieën heb gekozen die een lange levensduur hebben gehad, maar van de laatste tijd heb ik een dramatische verandering in de industrie opgemerkt. De rijping van de webontwikkeling heeft geleid tot een explosie van nieuwe tools die helpen bij het beheren van het complexe proces van het bouwen van geavanceerde websites en apps van vandaag. Dit is eigenlijk een hele goede zaak, omdat webontwikkeling lange tijd leek op het wilde westen. Het formaliseren van patronen, processen en best practices is zeker positief en zal steevast helpen om aanzienlijk stabielere systemen te bouwen.

En veel van deze explosie werd gedreven door het gemak van toegang tot geavanceerde programmeertalen en -hulpmiddelen, waarvan vele gratis werden aangeboden via de open-sourcecommunity. Dit heeft ontwikkelaars in staat gesteld om de manier waarop dingen moeten worden gebouwd opnieuw te bekijken en hen in staat te stellen verbazingwekkende gereedschappen te bouwen.

Deze empowerment kan echter een tweesnijdend zwaard zijn voor de gemeenschap van ontwikkelaars, omdat het voelt alsof we op een hamsterwiel zitten zonder remmen, waardoor we kunnen stoppen en dingen kunnen opnemen. Het is een eeuwige leercyclus waarin in veel gevallen, en niet op de hoogte blijven van de nieuwste ontwikkelingstrends, kun je ongelooflijk achterlopen op het gebied van de huidige ontwikkelingspraktijken. Ik weet dat ik het meer dan eens heb gevoeld en in gesprekken met mijn leeftijdsgenoten lijkt het een doordringend gevoel te zijn.


De evolutie van leren

Ik denk dat het eerlijk is om te zeggen dat softwareontwikkelaars een van de meest complexe banen ter wereld hebben.

Je hoort constant van anderen dat ons vakgebied voortdurend leert en dat is zo waar. Ontwikkelaars zijn tegenwoordig rocksterren en dat komt omdat we werken aan geavanceerde dingen die een tastbare impact hebben op grote groepen mensen. En die gemeenschappen eisen meer informatie via eenvoudigere gebruikerservaringen over meerdere vormfactoren. Ik denk dat het eerlijk is om te zeggen dat softwareontwikkelaars een van de meest complexe banen ter wereld hebben. Dus voortdurend leren is geen keuze meer; het is een vereiste.

Daarom noemde ik mijn carrièrepad tot nu toe. Ik denk dat het dat van veel van mijn leeftijdsgenoten nabootst, waar we comfortabel konden afhangen van het kennen van een of ander 'ding' voor 'x' aantal jaren voordat we onszelf moesten gaan herscholen. Als je in de wereld van webontwikkeling bent, is dat niet langer het geval en naar mijn mening een carrièrebeperkende zet. Ik zeg niet dat je elke nieuwe bibliotheek die eruit komt moet leren. Eerlijk gezegd denk ik dat veel van de libs en tools naar buiten worden geschoven:

  • Zijn bedoeld om een ​​heel specifieke jeuk te krabben
  • Repliceer een bestaande tool en biedt weinig extra waarde
  • Zijn bedoeld om iemands ego te bevredigen in een "kijk naar wat ik gebouwd" type ding

Maar er is een duidelijke reden om op de hoogte te blijven van opkomende technologieën, vooral wanneer u uw collega's ziet praten over hen. En om duidelijk te zijn, definieer ik geen peers in de buurt van degenen waarmee ik werk. Ik kijk goed naar mensen op Twitter, Facebook, Google+, blogs en forums om te peilen naar waar hun denken is. Als je niet hetzelfde doet, doe je jezelf en je carrière als een slechte dienst.

Naarmate je ouder wordt (ja, ik raak op leeftijd), voor de meesten wordt 'tijd' de grootste beperkende factor om actueel te blijven. Ik kan dit als 45-jarige leeftijd beamen met een ton aan familietoezeggingen, ik moet uiterst gedisciplineerd zijn om de nodige leerzame "tijd" te wijden terwijl ik ervoor zorg dat ik "tijd" besteed aan mijn gezin (wat mijn nummer één prioriteit is) . En ik ben ervan overtuigd dat ik niet de enige ben in dit raadsel. Ik denk terug aan toen ik in de twintig was en schreef voor gedrukte tijdschriften (jullie herinneren het je nog precies?) En mijn collega's zouden vragen: "Hoe heb je daar tijd voor?". Nou, het is rond en ik merk dat ik mijn 20-jarige ontwikkelaarsvrienden hetzelfde vraag.

Wat ik heb geleerd, is dat ik mezelf niet kan vergelijken met een 20-iets omdat onze prioriteiten in de meeste gevallen anders zijn. Een jonge bok zal altijd meer tijd hebben om zich te concentreren op de nieuwste dingen die hem of haar in staat stellen weg te sleutelen en zelfs die volgende geweldige tool te bouwen. En dat is geweldig en ik herinner me die dagen zelf!

Naarmate je verder komt in je carrière, is het echter belangrijk om niet in slaap te vallen en een plan te ontwikkelen waarmee je up-to-date kunt blijven door selectief te zijn, niet alleen van de technologieën die je kiest, maar ook van de doelen die je wilt bereiken.


Keuzes, keuzes, keuzes

Als je kijkt naar de technologieën die momenteel beschikbaar zijn, is het gemakkelijk om overweldigd te raken bij waar te beginnen, laat staan ​​te kiezen. Ik leef mee met je en je bent zeker niet de enige. Een deel van het probleem is dat we als ontwikkelaars natuurlijk nieuwsgierig zijn naar nieuwe technologie. Ik noem het graag het "mot naar een vlam" -syndroom:

  • Oh kijk, er is een nieuw lib om webcomponenten na te bootsen! (flutter, flutter, flutter)
  • Deze influencer heeft zojuist deze nieuwe preprocessor vrijgegeven! (flutter, flutter, flutter)
  • Oh mijn god, hier is de 4e SaaS die real-time back-enddiensten biedt! (flutter, flutter, flutter)

De lijst kan maar doorgaan. Wat ik probeer te bereiken is dat we af en toe lijden aan een tekort aan aandacht en proberen het te rationaliseren door te denken dat het een niet-bestaand of toekomstig probleem voor ons meteen zal oplossen. In essentie zijn we technologiehammers die een "voor het geval dat" doen. In werkelijkheid is het belangrijk om achterover te leunen en te bepalen wat u probeert te bereiken en hoe de huidige reeks hulpprogramma's uw problemen oplost op basis van waar u naartoe wilt gaan.

Een deel van het probleem is dat we als ontwikkelaars natuurlijk nieuwsgierig zijn naar nieuwe technologie.

Ik heb bijvoorbeeld zoveel ontwikkelaars horen zeggen dat ze alleen iOS willen leren om te ontdekken dat ze geen echte plannen hebben om een ​​iOS-app te bouwen. Als je de tijd hebt om dat voor de lol te doen, meer kracht voor je, maar als je dat niet doet, is dat de tijd die besteed moet worden aan het leren van dingen die echt belangrijk zijn.

Als u bijvoorbeeld een front-end webontwikkelaar bent en dat is wat u van plan bent al een tijdje te doen, denk ik dat u ervoor zorgt dat u op de hoogte bent van zaken als AMD, ES6, Sass en Yeoman is veel belangrijker dan duiken in IPTables, ActiveRecord, WebView of Amazon EC2. Voordat iedereen zijn verstand verliest vanwege wat ik net heb gezegd, laten we duidelijk zijn, als het je lukt om al deze dingen te leren (bijvoorbeeld een full-stack-ontwikkelaar), meer macht voor jou omdat het zullen maak je meer waardevol.

Wat ik probeer over te brengen is dat in plaats van jezelf te laten overweldigen door de gedachte om "de volledige stack" te leren, het bereik beperken tot gemakkelijker te beheren doelen. Bepaal waar je focus op je carrière ligt, bepaal een handvol sleuteltechnologieën waar je op moet letten en richt je daarop, zodat je relevant blijft in je loopbaanfocus.

Het front-end ontwikkelaarskanaal, bijvoorbeeld, is voldoende betrokken en blijft actueel en houdt je lange tijd bezig. Lou Lazaris schreef in 2011 een post met de titel "Vaardigheden voor front-end ontwikkelaars" en in veel gevallen is hij perfect. Als je naar zijn lijst kijkt, is hij specifiek gericht voorkant technologieën die belangrijk zijn voor die rol. Het versterkt mijn denkwijze dat het beter is om de reikwijdte van wat je leert te beperken tot hanteerbare brokken binnen de rol waarin je je bevindt. Maar het is ook belangrijk om dergelijke lijsten nog verder te filteren. Denk ik dat CoffeeScript cruciaal is voor mijn succes als front-end ontwikkelaar? Absoluut niet, daarom heb ik er bewust niet aan toegewijd.

Nogmaals, ik pleit er niet voor om niet zoveel te leren als je kunt. Ondanks dat ik duidelijk aan de voorkant zit, ben ik momenteel bezig met het leren van Ruby en Rails omdat ik graag een nieuwe server-side stack wil leren om mijn vaardigheden te completeren. Voor mij betekent het opofferen van leren hoe iets als Yeoman te gebruiken, maar ik heb de tijd genomen om de waardevoorstel te bepalen om deze route af te leggen en ik denk dat het de moeite waard is voor mij.


Iets leren

Leren komt in verschillende stijlen. Ik leer het best door:

  • Een boek lezen (een echte met echte papieren pagina's)
  • Typen in codevoorbeelden en resultaten bekijken
  • Met een mentor kan ik vragen stellen van

Anderen duiken liever ergens in en leren door de school van harde klappen. Welke manier je ook leert, het hebben van goede bronnen is een cruciaal onderdeel van de vergelijking.

Steeds meer heb ik naar online cursussen geluisterd omdat ze zijn uitgegroeid tot een punt waar ze in veel gevallen vergelijkbaar zijn in kwaliteit met hun plaatselijke broeders. Ze bieden ook de flexibiliteit om je dingen te laten doen in je eigen schema (bijna altijd) en je te concentreren op de technologieën die belangrijk voor je zijn.

In mijn geval heb ik me onlangs aangemeld voor One Month Rails, die mij het volgende heeft aangeboden:

  • Flexibiliteit: Ik neem deel aan mijn schema zonder de druk om enorme hoeveelheden van mijn persoonlijke tijd op te offeren
  • betaalbaarheid: Het is $ 49 $ 99 en lijkt goed gestructureerd voor de prijs.
  • Mentorschap: Ik kan rechtstreeks contact opnemen met de maker van de cursus en de steun van hun community hebben

Ongeacht welke leeropties er beschikbaar zijn, als je een bepaalde leerperiode niet opzij zet, is het allemaal niet relevant.

Ik zie dit als een jumpstart-kans die wordt aangevuld met sites zoals Nettuts + en Tuts + Premium, evenals boeken en mijn contacten met de community. Maar uiteindelijk, de flexibiliteit en het tempo van de cursus is wat volgens mij me in staat zal stellen om op tijd iets nieuws te leren. Kosten zijn zeker een factor die u moet afwegen tegen het verwachte leervoordeel en de daaruit voortvloeiende bijgewerkte vaardigheid.

Het feit dat er zoveel online leeropties beschikbaar zijn (vele gratis) maakt het aanzienlijk eenvoudiger om je vaardigheden op peil te houden, vooral als je methodisch bent over wat je wilt leren (bijvoorbeeld wees niet een mot).

Maar je moet tijd vrijmaken om te leren. Ongeacht welke leeropties er beschikbaar zijn, als je een bepaalde leerperiode niet opzij zet, is het allemaal niet relevant. Ik heb persoonlijk vastgesteld dat een uur of twee, twee tot drie keer per week, onmiddellijk na het werk één tot twee uur lijkt te werken, omdat mijn gedachten nog steeds in de ontwikkelaarsmodus verkeren. Ik heb onlangs met een vriend gepraat die het beter vindt om heel vroeg op te staan ​​(6 uur 's ochtends) en zich te concentreren op het leren tijdens de eerste paar uur van de ochtend voordat het werk begint. Op die manier is hij fris en geconcentreerd, vrij van afleidingen of zorgen over zijn werk.

Mijn goede vriend en badass-ontwikkelaar Joe McCann bood deze geweldige feedback:

"Het enige stukje kennis dat ik wil toevoegen is dat het belangrijkste ding dat ik leerde filosofie studeren op de universiteit niet was wat ik leerde, maar hoe ik in feite dingen leer. Echt begrijpen hoe men leert, begrijpt, etc. is de sleutel tot het leren van een nieuwe vaardigheid of het verbeteren van de huidige vaardigheden.

Als iemand leert door een boek te lezen of notitiekaarten op te schrijven of het via lezingen te horen, zijn al deze beschikbaar om nu online te gebruiken. Het is een kwestie van begrijpen hoe je leert en vervolgens op zoek gaat naar het juiste medium om dat te doen."

Goed gezegd.


Leermiddelen

Het spreekt voor zich dat ik denk dat Nettuts + en de verschillende Envato-eigenschappen een aantal van de beste online leeropties bieden. Hiernaast volgen een aantal leersites die ik heb gebruikt en aanbevelen:

  • Codeacademy: leer JS, Ruby, Python en meer via hun interactieve site
  • Ember 101: Ryan Florence heeft een geweldige klus gekost door screencasts te maken die je door het proces van het leren van Sintel leiden
  • Waarom is de ontroerende gids voor Ruby: de stijl is even wennen, maar het is zonder meer een geweldige bron voor het leren van Ruby
  • Egghead.io: Bijna uitsluitend gericht op AngularJS en aanbevolen door veel leden van de gemeenschap
  • De Ruby on Rails-zelfstudie: dit is de goto-zelfstudie voor iedereen die net begint met de ontwikkeling van Rails

Als je iets meer gestructureerd en hardcore wilt, zijn een nieuwe trend bootcamps op locatie waar je een aanzienlijke hoeveelheid tijd gaat investeren in het leren gebruiken van de nieuwste technologieën. Merk op dat veel van deze vereisen dat je naar een locatie gaat waar de bootcamp wordt gehouden en dat je er een aantal weken voltijds aan vasthoudt. Ook zijn deze cursussen duur in duizenden dollars in ruil voor de meer persoonlijke leerervaring. Ik heb persoonlijk deelgenomen aan de Bloc.io-bootcamp maar hoefde niet te verhuizen. Hoewel ik het vanwege tijdgebrek niet kon afmaken, zou ik het aanraden. Hier zijn enkele van de bootcamps die veel positieve pers hebben ontvangen:

  • Bloc.io: Goed gestructureerde cursus die u door up-to-date technologieën leidt en u voorziet van online mentorschap via e-mail, chat of stem. Je hoeft niet te bewegen.
  • Hacker School: gebaseerd in New York, het is een bootcamp van drie maanden ter plekke waar je full-time leert programmeervaardigheden te oefenen in Ruby en Python
  • The Starter League: Onsite in Chicago, IL en samen met 37signals (makers van Basecamp) om hun leerervaring te verbeteren.

De BootCamper-site heeft een lijst samengesteld van de verschillende bootcamps die beschikbaar zijn en biedt informatie over hen op een doorzoekbare manier.


Kom los

Het belangrijkste is om te blijven leren en het op een beheerst tempo en op een doordachte manier te doen.

Ik wilde al een tijdje zoiets schrijven. Het is een beetje egoïstisch, omdat het mij helpt gevoelens op te schrijven die ik heb gehad over het feit dat ik overweldigd ben door het hamsterwiel van leren. In de loop van de tijd heb ik manieren gezocht om ervoor te zorgen dat ik op de hoogte blijf en mezelf niet uitbrandt en ik ben gaan beseffen dat het onmogelijk is om op de hoogte te blijven, zelfs in mijn eigen niche. Er zijn gewoon te veel ontwikkelaars die te veel coole dingen maken en niet genoeg "tijd".

Dus ik heb besloten om me te concentreren op dingen die actueel en relevant zijn, maar misschien niet de laatste zijn en het nieuwste coole speeltje. Ik vind dat dit een veel hanteerbaardere manier van leren is me. En ik denk ook dat het belangrijk is om de beproefde dingen die misschien niet de nieuwste modelauto zijn, opnieuw te bekijken, maar mogelijk enkele fantastische verrassingen voor je onder de motorkap. Ik kijk terug naar Jeff Atwood's geweldige bericht "Why Ruby?" waar hij zijn keuze voor het gebruik van Ruby bespreekt om discours op te bouwen en specifiek raakt aan Ruby's volwassenheid en gebrek aan koelte.

Het belangrijkste is om te blijven leren en het op een beheerst tempo en op een doordachte manier te doen. Denk goed na over waar je naartoe gaat in je carrière, zet de belangrijkste dingen uiteen waar je goed in moet zijn en werk aan het ontwikkelen van een plan om het huidige leven aan te pakken. Er zijn veel vlammen en je hoeft je vleugels niet naar elk van hen te klappen.

Ik zou graag meer van jullie willen weten hoe je up-to-date blijft, dus zorg ervoor dat je je suggesties in de comments aanbiedt.