Da jeg begynte å jobbe med informasjonsteknologi profesjonelt i 1989, var det ganske enkelt når det gjaldt å velge en retning å gå inn i. I hvert fall i mitt område (South Florida) gikk du inn i et av følgende områder:
ColdFusion var min valgte teknologi, og den varet meg også nesten ti år.
Jeg tok utviklingsruten, og det var veldig enkelt å velge et programmeringsspråk som du kunne basere din karriere på. I mitt tilfelle begynte jeg med Clipper (en dBase-basert kompilator) og til slutt forgrenet seg til klient-serverutvikling ved hjelp av PowerBuilder, sistnevnte er min goto-verktøy i nesten fem år.
Og selv når jeg kom inn i webutvikling, var verktøy og teknologier fortsatt enkle å velge, hovedsakelig fordi weben fortsatt var så ung og enkel etterpå, oppdatering av server-sideoppdatering av stilutvikling. ColdFusion var min valgte teknologi, og den varet meg også nesten ti år. Og senest har jQuery og JavaScript vært mitt fokus siden 2008.
Det er en grunn jeg forteller alt dette.
Jeg har vært veldig heldig å ha valgt teknologier som har hatt stor levetid, men nylig har jeg lagt merke til en dramatisk forandring i bransjen. Modningen av webutvikling har ført til en eksplosjon av nye verktøy som har som mål å bidra til å håndtere den komplekse prosessen med å bygge dagens sofistikerte nettsteder og applikasjoner. Dette er faktisk en veldig god ting siden i lang tid, webutvikling var som det ville vest. Formaliseringen av mønstre, prosesser og beste praksis er absolutt en positiv ting og vil alltid bidra til å bygge betydelig stabile systemer.
Og mye av denne eksplosjonen har blitt drevet av enkel tilgang til sofistikerte programmeringsspråk og verktøy, mange tilbys gratis via open source-fellesskapet. Dette har gjort det mulig for utviklere å tenke på hvordan ting skal bygges og gi dem mulighet til å bygge fantastisk verktøy.
Denne bemyndigelsen kan imidlertid være et dobbeltkantet sverd for utviklerfellesskapet fordi det føles som om vi er på hamsterhjul uten bremser som gjør at vi kan stoppe og ta ting i. Det er litt av en evig læringssyklus hvor vi mange tilfeller, som ikke holder seg oppdatert på de nyeste utviklingenstrender, kan sette deg utrolig bak når det gjelder dagens utviklingspraksis. Jeg vet at jeg har følt det mer enn en gang, og i samtaler med mine kolleger synes det å være en gjennomgripende følelse.
Jeg synes det er rimelig å si at programvareutviklere har en av de mest komplekse jobbene i verden.
Du hører hele tiden fra andre at vårt felt er en av konstant læring, og det er så sant. Utviklere er rockstars i dag, og det er fordi vi jobber med banebrytende ting som gir en konkret innvirkning på store samfunn av mennesker. Og disse samfunnene krever mer informasjon via enklere brukeropplevelser på tvers av flere formfaktorer. Jeg synes det er rimelig å si at programvareutviklere har en av de mest komplekse jobbene i verden. Så kontinuerlig læring er ikke noe valg lenger; det er et krav.
Derfor nevnte jeg min karrierevei til dato. Jeg tror det etterligner det som mange av mine kolleger, der vi komfortabelt kunne stole på å vite noe "ting" for "x" antall år før vi måtte begynne å omskole oss selv. Hvis du er i webutviklingsverdenen, er det ikke lenger tilfelle, og etter min mening, en karrierebegrensende bevegelse. Jeg sier ikke at du må gå av og lære hvert nytt bibliotek som kommer ut. Ærlig talt tror jeg at mange av libsene og verktøyene blir presset ut:
Men det er en klar begrunnelse for å holde seg på toppen av nye teknologier, spesielt når du ser dine jevnaldrende chatter om dem. Og for å være klar definerer jeg ikke jevnaldrende som de jeg jobber med. Jeg ser nøye på folk på Twitter, Facebook, Google+, blogger og fora for å måle hvor de tenker på. Hvis du ikke gjør det samme, gjør du deg selv og din karriere en disservice.
Etter hvert som du blir eldre (ja jeg rører på alder), for de fleste, blir "tid" den største begrensende faktoren for å holde seg oppdatert. Jeg kan vitne til dette som i en alder av 45 med massevis av familieforpliktelser. Jeg må være ekstremt regimentert for å dedikere den nødvendige læringsperioden, samtidig som jeg sørger for at jeg tilbringer "tid" til familien min (som er min første prioritet) . Og jeg er sikker på at jeg ikke er alene i dette kongerommet. Jeg tenker tilbake til da jeg var i 20-årene og pleide å skrive for trykte magasiner (dere husker dem riktig?) Og mine kolleger ville spørre, "Hvordan har du tid til å gjøre det?". Vel, det har kommet full sirkel, og jeg finner meg selv å spørre mine 20-noe-utviklere venner samme.
Det jeg har lært er at jeg ikke kan sammenligne meg med en 20-noe fordi våre prioriteringer i de fleste tilfeller er forskjellige. En ung bukke vil alltid ha mer tid til å fokusere på de nyeste tingene slik at han eller henne kan tinker bort og til og med bygge det neste flotte verktøyet. Og det er kjempebra, og jeg husker de dagene selv!
Etter hvert som du utvikler seg i karrieren din, er det viktig å ikke lulled til selvtilfredshet og utvikle en plan som gjør at du kan holde deg oppdatert ved å være selektiv av ikke bare teknologiene du velger, men også målene du planlegger å oppnå.
Når du ser på teknologiene som er tilgjengelige for øyeblikket, er det lett å bli overveldet hvor du skal begynne, mye mindre hva du skal velge. Jeg empati med deg og du er absolutt ikke alene. En del av problemet er at vi som utviklere er nysgjerrige på ny teknologi. Jeg liker å kalle det "moth to a flame" syndrom:
Listen kan gå videre og videre. Det jeg prøver å få på er at det til tider lider vi av oppmerksomhetsunderskudd og forsøker å rationalisere det ved å tro at det umiddelbart løser et ikke-eksisterende eller fremtidig problem for oss. I hovedsak er vi teknologi-hoarders som gjør en "bare i tilfelle". I virkeligheten er det viktig å lene seg tilbake og avgjøre hva du prøver å oppnå og hvordan dagens verktøyverktøy løser dine problemer basert på hvor du vil lede til.
En del av problemet er at vi som utviklere er nysgjerrige på ny teknologi.
For eksempel har jeg hørt så mange utviklere si at de bare vil lære iOS for å finne ut at de ikke har noen virkelige planer for å bygge en iOS-app. Hvis du har tid til å gjøre det for moro, mer kraft til deg, men hvis du ikke gjør det, er det tid som bør brukes til å lære ting som faktisk er viktige.
Hvis du for eksempel er en web-utvikler på forhånd og det er det du planlegger å være på en stund, tenker jeg på at du er rask på ting som AMD, ES6, Sass og Yeoman er langt viktigere enn å dykke i IPTables, ActiveRecord, WebView eller Amazon EC2. Før alle taper sine tanker på grunn av det jeg nettopp sa, la oss være klare, hvis du klarer å lære alle disse tingene (for eksempel en full-stack-utvikler), mer kraft til deg fordi det vil gjøre deg mer verdifull.
Det jeg prøver å formidle er at i stedet for å la deg bli overveldet med tanken på å lære "full stack", smalere ned i omfanget til enklere å håndtere mål. Bestem hvor din karrierefokus er, velg en håndfull nøkkelteknologier du bør være opptatt av, og fokus på de for at du skal være relevant innenfor ditt karrierefokus.
Front-end-utviklerbanen, for eksempel, er involvert nok, og det er fortsatt aktuelt å holde deg opptatt i lang tid. Lou Lazaris skrev et innlegg tilbake i 2011 med tittelen "Ferdigheter for front-end-utviklere" og i mange tilfeller er han spot on. Hvis du ser på listen, er han spesielt målrettet front-end teknologier som er viktige for den rollen. Det forsterker min tenkning at det er bedre å begrense omfanget av det du lærer i håndterbare biter innenfor rollen du er i. Men det er også viktig å filtrere ned lister som disse enda lenger. Tror jeg at CoffeeScript er kritisk for min suksess som en front-end dev? Absolutt ikke, det er derfor jeg har med vilje ikke dedikert tid til det.
Igjen, jeg fortaler ikke å lære så mye du kan. Til tross for at jeg tydeligvis er på forsiden av tingene, jobber jeg for tiden med å lære Ruby and Rails fordi jeg vil lære en ny server-side-stabel for å utvide mine ferdigheter. For meg betyr det å ofre å lære å bruke noe som Yeoman, men jeg har tatt deg tid til å bestemme verdien forslaget om å gå ned denne ruten og jeg synes det er verdt for meg.
Læring kommer i forskjellige stiler. Jeg lærer best ved:
Andre foretrekker å bare dykke inn i noe og lære av skolen med harde baner. Uansett hvor du lærer, å ha gode ressurser tilgjengelig er en kritisk del av ligningen.
Jeg har flere og flere latt meg mot nettkurs fordi de har blitt modnet til et punkt der de i mange tilfeller er sammenlignbare i kvalitet til sine lokale brødre. De har også råd til fleksibiliteten slik at du kan gjøre ting på egen plan (nesten alltid) og å fokusere på teknologiene som er viktige for deg.
I mitt tilfelle registrerte jeg nylig for One Month Rails som tilbød meg følgende:
Uansett hvilke læringsmuligheter som er tilgjengelige, hvis du ikke setter bort en dedikert læringstid, er det alt irrelevant.
Jeg ser dette som en jumpstart-mulighet som vil bli supplert av nettsteder som Nettuts + og Tuts + Premium, samt bøker og mine fellesskapskontakter. Men til slutt, fleksibiliteten og tempoet i kurset er det jeg føler vil tillate meg å lære noe nytt i tide. Kostnad er absolutt en faktor som du må veie mot den forventede læringsfordelen og resulterende oppdatert ferdighet.
Det faktum at det er så mange muligheter for nettbasert læring tilgjengelig (mange av dem gratis) gjør det vesentlig lettere å beholde ferdighetsinnstillingene dine, spesielt hvis du er metodisk om hva du vil lære (for eksempel, vær ikke en møll).
Men du må gi deg tid til å lære. Uansett hvilke læringsmuligheter som er tilgjengelige, hvis du ikke setter bort en dedikert læringstid, er det alt irrelevant. Jeg har personlig funnet ut at jeg bruker en til to timer, to til tre ganger i uken, umiddelbart etter at arbeidet ser ut til å fungere bra, fordi tankene mine fortsatt er i utviklingsmodus. Jeg har nettopp chattet med en venn som finner det bedre å våkne veldig tidlig (6 am) og fokusere på læring i de første timene om morgenen før du starter arbeidet. På den måten er han frisk og fokusert, fri for distraksjoner eller bekymringer om jobben sin.
Min gode venn og badass-utvikler Joe McCann tilbød denne gode tilbakemeldingen:
"Den ene kunnskapen jeg vil legge til er at nummer én jeg lærte å studere filosofi på college var ikke det jeg lærte, men hvordan jeg faktisk lærer ting. Å forstå hvordan man lærer, forstår, etc. er nøkkelen til å lære en ny ferdighet eller forbedre dagens.
Hvis noen lærer seg ved å lese en bok eller skrive ned notekort eller høre den via forelesninger, er alle disse tilgjengelige for å kunne brukes nå online. Det handler om å forstå hvordan du lærer og deretter går og søker riktig medium for å gjøre det."
Bra sagt.
Det sier seg selv at jeg tror Nettuts + og de ulike Envato-egenskapene tilbyr noen av de beste online læringsalternativene rundt. I tillegg er her et par læringssteder jeg har brukt og anbefaler:
Hvis du vil ha noe litt mer strukturert og hardcore, er en ny trend onsite bootcamps hvor du vil investere betydelig tid på å lære å bruke de nyeste teknologiene. Bare vær oppmerksom på at mange av disse krever at du flytter til hvor bootcampen holdes og forplikter seg fulltids til det i flere uker. Også disse kursene er kostbare å løpe inn i tusenvis av dollar i bytte for den mer personlige læringsopplevelsen. Jeg har personlig deltatt i Bloc.io bootcamp, men trengte ikke å flytte. Mens jeg ikke kunne klare det på grunn av tidsbegrensninger, vil jeg anbefale det. Her er noen av bootcampene som har fått mye positiv presse:
Nettstedet BootCamper har samlet en liste over de forskjellige bootcamps som er tilgjengelige og gir informasjon om dem på en søkbar måte.
Det viktigste er å fortsette å lære og gjøre det på et overkommelig tempo og på en omtenksom måte.
Jeg har lyst til å skrive noe slikt her for en stund. Det er litt selvbetjente siden det hjalp meg med å skrive ned følelser jeg har hatt om å være overveldet med hamsterhjulet i læring. Over tid har jeg sett på måter å sikre at jeg holder meg på tingene mens jeg ikke brenner meg ut, og jeg har innset at det er umulig å holde seg på toppen av alt, selv i min egen nisje. Det er bare for mange devs som bygger for mange, kjøler ting og ikke nok "tid".
Så jeg har besluttet å fokusere på ting som er rettidig og relevant, men kan ikke være blødende kant og det nyeste kule leketøy. Jeg synes dette er en mye mer overkommelig måte å lære på meg. Og jeg synes også det er viktig å se på de prøvde og sanne ting som kanskje ikke er den nyeste modellbilen, men kan ha noen gode overraskelser for deg under hetten. Jeg ser tilbake til Jeff Atwoods store innlegg "Hvorfor Ruby?" hvor han diskuterer sitt valg for å bruke Ruby til å bygge diskurs og spesifikt berører Rubins modenhet og mangel på kulhet.
Det viktigste er å fortsette å lære og å gjøre det på et overkommelig tempo og på en omtenksom måte. Virkelig gi tanke på hvor du er på vei i din karriere, skissere de viktigste tingene du burde være gode på innenfor det omfanget og jobbe for å utvikle en plan for å takle oppholdet nåværende. Det er mange flammer der ute, og du trenger ikke å klappe vingene til hver enkelt av dem.
Jeg vil gjerne lære mer fra dere hvordan du holder deg oppdatert, så vær så snill å gi forslagene dine i kommentarene.