L'enigma dell'apprendimento

Quando ho iniziato a lavorare professionalmente nel settore dell'informatica nel 1989, le cose erano piuttosto semplici in termini di scelta di una direzione da prendere in considerazione. Almeno nella mia zona (sud della Florida), sei entrato in una delle seguenti aree:

  • Gestione di reti e sistemi
  • Amministrazione del database
  • Sviluppo software
  • Attività relative alla gestione del progetto (incluso il lavoro di assicurazione della qualità)

ColdFusion era la mia tecnologia di scelta e anche per me è durata quasi dieci anni.

Ho seguito il percorso di sviluppo del software e per molto tempo, è stato facile scegliere un linguaggio di programmazione su cui basare la tua carriera. Nel mio caso, ho iniziato con Clipper (un compilatore basato su dBase) e alla fine si è ramificato nello sviluppo client-server usando PowerBuilder, quest'ultimo è il mio strumento goto per quasi cinque anni.

E anche quando sono entrato nello sviluppo del web, gli strumenti e le tecnologie erano ancora facili da scegliere, soprattutto perché il web era ancora giovane e semplice post-back, sviluppo di stile di aggiornamento della pagina lato server. ColdFusion era la mia tecnologia di scelta e anche per me è durata quasi dieci anni. E più di recente, jQuery e JavaScript sono stati il ​​mio obiettivo dal 2008.

C'è una ragione per cui ti sto dicendo tutto questo.


La ruota del criceto

Sono stato molto fortunato ad aver scelto tecnologie che hanno avuto una grande longevità, ma di recente ho notato un cambiamento radicale nel settore. La maturazione dello sviluppo web ha portato a un'esplosione di nuovi strumenti che mirano a contribuire alla gestione del complesso processo di creazione di siti Web e app sofisticati di oggi. Questa è in realtà una cosa molto buona poiché per molto tempo lo sviluppo del web è stato come il selvaggio west. La formalizzazione di modelli, processi e migliori pratiche è certamente una cosa positiva e invariabilmente aiuterà a costruire sistemi sostanzialmente più stabili.

E gran parte di questa esplosione è stata guidata dalla facilità di accesso a sofisticati linguaggi e strumenti di programmazione, molti offerti gratuitamente dalla comunità open source. Ciò ha permesso agli sviluppatori di ripensare il modo in cui le cose dovrebbero essere costruite e le ha potenziate per creare strumenti straordinari.

Questo potenziamento, tuttavia, può essere un'arma a doppio taglio per la comunità degli sviluppatori in quanto ci sembra di essere su una ruota del criceto senza freni che ci permettono di fermarci e prendere qualcosa. È un po 'un ciclo di apprendimento perpetuo in cui in molti casi, non rimanere al passo con le ultime tendenze di sviluppo, possono metterti incredibilmente indietro in termini di pratiche di sviluppo attuali. So di averlo sentito più di una volta e nel parlare con i miei coetanei, sembra essere una sensazione pervasiva.


L'evoluzione dell'apprendimento

Penso che sia giusto dire che gli sviluppatori di software hanno uno dei lavori più complessi al mondo.

Sentirai costantemente dagli altri che il nostro campo è uno di costante apprendimento e che è così vero. Al giorno d'oggi gli sviluppatori sono rockstars ed è perché lavoriamo su cose d'avanguardia che hanno un impatto tangibile su grandi comunità di persone. E queste comunità richiedono più informazioni attraverso esperienze utente più semplici attraverso molteplici fattori di forma. Penso che sia giusto dire che gli sviluppatori di software hanno uno dei lavori più complessi al mondo. Quindi l'apprendimento continuo non è più una scelta; è un requisito.

Ecco perché stavo menzionando il mio percorso di carriera fino ad oggi. Penso che simuli quello di molti miei coetanei, in cui potremmo comodamente contare sulla conoscenza di qualche "cosa" per "x" numero di anni prima che dovessimo iniziare a riqualificare noi stessi. Se sei nel mondo dello sviluppo web, non è più così e, secondo me, una mossa limitante per la tua carriera. Non sto dicendo che devi andare fuori e imparare ogni nuova libreria che viene fuori. Onestamente, penso che molte delle librerie e degli strumenti siano stati eliminati:

  • Sono destinati a graffiare un prurito molto specifico
  • Replica uno strumento esistente e offre un piccolo valore aggiuntivo
  • Sono destinati a soddisfare l'ego di qualcuno in un tipo di cosa "guarda a cosa ho costruito"

Ma c'è un chiaro fondamento logico per stare al passo con le tecnologie emergenti, specialmente quando vedi i tuoi coetanei che parlano di loro. E per essere chiari, non definisco i pari in modo restrittivo come quelli con cui lavoro. Osservo da vicino le persone su Twitter, Facebook, Google+, blog e forum per valutare dove si trovano i loro pensieri. Se non stai facendo lo stesso, stai facendo a te stesso e alla tua carriera un disservizio.

Quando si invecchia (sì, sto toccando l'età), per la maggior parte, "tempo" diventa il più grande fattore limitante per rimanere aggiornati. Posso attestare questo come a 45 anni con un sacco di impegni familiari, devo essere estremamente irreggimentato per dedicare il "tempo" di apprendimento necessario assicurandomi di dedicare "tempo" alla mia famiglia (che è la mia priorità numero uno) . E sono sicuro di non essere solo in questo enigma. Ripenso a quando avevo 20 anni e scrivevo per riviste di stampa (voi ragazzi ricordate quelle giuste?) E i miei colleghi chiedevano: "Come avete tempo di farlo?". Bene, è tornato al punto di partenza e mi ritrovo a chiedere ai miei amici sviluppatori 20-qualcosa la stessa cosa.

La cosa che ho imparato è che non posso confrontarmi con un 20-qualcosa perché le nostre priorità nella maggior parte dei casi sono diverse. Un giovane buck avrà sempre più tempo per concentrarsi sulle cose più nuove che gli permettono di armeggiare e persino costruire il prossimo grande strumento. E questo è fantastico e mi ricordo quei giorni io stesso!

Mentre progredisci nella tua carriera, è importante non cullarsi nel compiacimento e sviluppare un piano che ti permetta di rimanere aggiornato essendo selettivo non solo delle tecnologie che scegli ma anche degli obiettivi che intendi raggiungere.


Scelte, Scelte, Scelte

Osservando le tecnologie attualmente disponibili, è facile sentirsi sopraffatti da dove iniziare, e tanto meno cosa scegliere. Mi identifico con te e tu non sei certamente solo. Parte del problema è che come sviluppatori, siamo naturalmente curiosi della nuova tecnologia. Mi piace chiamarla sindrome della "falena di una fiamma":

  • Oh guarda, c'è una nuova lib per imitare i componenti web! (flutter, flutter, flutter)
  • Questo influencer ha appena rilasciato questo nuovo preprocessore! (flutter, flutter, flutter)
  • Oh mio Dio, ecco il 4 ° SaaS che offre servizi di back-end in tempo reale! (flutter, flutter, flutter)

L'elenco potrebbe continuare all'infinito. Quello che sto cercando di ottenere è che a volte soffriamo di deficit di attenzione e proviamo a razionalizzarlo pensando che risolverà immediatamente un problema inesistente o futuro per noi. In sostanza, siamo degli accaparratori della tecnologia che fanno un "solo nel caso". In realtà, è importante sedersi e determinare cosa si sta cercando di realizzare e come l'attuale suite di strumenti risolve i problemi in base a dove si desidera andare.

Parte del problema è che come sviluppatori, siamo naturalmente curiosi della nuova tecnologia.

Ad esempio, ho sentito così tanti sviluppatori dire che vogliono imparare iOS solo per scoprire che non hanno piani per costruire un'app per iOS. Se hai il tempo di farlo per divertimento, più potere per te, ma se non lo fai, è il momento che dovrebbe essere speso per imparare cose che sono davvero importanti.

Ad esempio, se sei uno sviluppatore web front-end e questo è ciò che prevedi di essere per un po 'di tempo, sono del parere che ti assicuri di essere aggiornato su cose come AMD, ES6, Sass e Yeoman è molto più importante che immergersi in IPTables, ActiveRecord, WebView o Amazon EC2. Prima che tutti perdano la testa per quello che ho appena detto, sia chiaro, se riesci a imparare tutte queste cose (ad esempio, uno sviluppatore full stack), hai più potere perché volontà ti rendono più prezioso.

Quello che sto cercando di trasmettere è che invece di lasciarti travolgere dal pensiero di apprendere "lo stack completo", restringi il campo d'azione in obiettivi più facili da gestire. Determina dove si focalizza la tua carriera, individua una manciata di tecnologie chiave che dovrebbero essere sempre aggiornate e concentrarsi su quelle in modo che tu rimanga rilevante nell'ambito della tua carriera.

Il tratto di sviluppatore front-end, ad esempio, è abbastanza coinvolto e il rimanere aggiornato ti terrà occupato per molto tempo. Lou Lazaris ha scritto un post nel 2011 intitolato "Skills for Front-end Developers" e in molti casi è perfetto. Se guardi la sua lista, è specificamente preso di mira fine frontale tecnologie che sono importanti per quel ruolo. Rafforza il mio pensiero sul fatto che è meglio restringere la portata di ciò che stai imparando in blocchi gestibili all'interno del ruolo in cui ti trovi. Ma è anche importante filtrare ulteriormente gli elenchi come questi. Penso che CoffeeScript sia fondamentale per il mio successo come sviluppatore front-end? Assolutamente no, ed è per questo che non ho intenzionalmente dedicato del tempo ad esso.

Ancora una volta, non sto sostenendo di non imparare più che puoi. Nonostante io sia chiaramente sul lato front-end delle cose, al momento sto lavorando per imparare Ruby e Rails perché mi piacerebbe imparare un nuovo stack lato server per completare le mie capacità. Per me, significa sacrificare l'apprendimento di come usare qualcosa come Yeoman, ma mi sono preso il tempo per determinare la proposta di valore di percorrere questa strada e penso che valga la pena per me.


Impara qualcosa

L'apprendimento arriva in diversi stili. Imparo meglio da:

  • Leggere un libro (uno reale con pagine di carta reali)
  • Digitando esempi di codice e vedendo i risultati
  • Avere un mentore posso fare domande da

Altri preferiscono semplicemente immergersi in qualcosa e imparare dalla scuola dei duri colpi. In qualunque modo si impari, avere buone risorse disponibili è una parte fondamentale dell'equazione.

Sempre più, mi sono dedicato ai corsi online perché sono maturati a un punto in cui in molti casi sono paragonabili per qualità ai loro fratelli in loco. Offrono anche la flessibilità di consentire di fare le cose secondo il proprio programma (quasi sempre) e di concentrarsi sulle tecnologie che sono importanti per voi.

Nel mio caso, di recente mi sono iscritto a One Month Rails che mi ha offerto quanto segue:

  • Flessibilità: Partecipo al mio programma senza la pressione di dover sacrificare enormi quantità del mio tempo personale
  • Accessibilità: Suo $ 49 $ 99 e sembra essere ben strutturato per il prezzo.
  • tutoraggio: Posso contattare direttamente l'autore del corso e avere il supporto della loro comunità

Indipendentemente da quali siano le opzioni di apprendimento disponibili, se non si dedica tempo dedicato all'apprendimento, è irrilevante.

La vedo come un'opportunità di lancio che sarà completata da siti come Nettuts + e Tuts + Premium, nonché libri e contatti della mia comunità. Ma alla fine, la flessibilità e il ritmo del corso sono ciò che sento mi consentirà di apprendere qualcosa di nuovo in maniera tempestiva. Il costo è certamente un fattore che devi valutare rispetto al beneficio di apprendimento atteso e alla competenza aggiornata risultante.

Il fatto che ci siano così tante opzioni di apprendimento online disponibili (molte di queste gratuite) rende sostanzialmente più semplice mantenere aggiornati i tuoi skill-set, specialmente se sei metodico riguardo a ciò che vuoi imparare (per esempio, non essere un falena).

Ma hai bisogno di ritagliarti il ​​tempo per imparare. Indipendentemente da quali siano le opzioni di apprendimento disponibili, se non si dedica tempo dedicato all'apprendimento, è irrilevante. Personalmente ho scoperto che passare da una a due ore, due o tre volte alla settimana subito dopo il lavoro sembra funzionare bene perché la mia mente è ancora in modalità sviluppatore. Recentemente ho chattato con un amico che trova che è meglio svegliarsi molto presto (6:00) e concentrarsi sull'apprendimento durante le prime ore del mattino prima di iniziare a lavorare. In questo modo, è fresco e concentrato, privo di distrazioni o preoccupazioni sul suo lavoro.

Il mio buon amico e cattivo sviluppatore Joe McCann ha offerto questo ottimo feedback:

"L'unica cosa che aggiungerò è che la cosa numero uno che ho imparato a studiare filosofia al college non era quello che stavo imparando, ma come imparavo effettivamente le cose. Comprendere veramente come uno impara, capisce, ecc. È la chiave per imparare una nuova abilità o migliorare quelle attuali.

Se qualcuno impara leggendo un libro o scrivendo note o ascoltandolo tramite lezioni, tutti questi sono disponibili per l'uso online. Si tratta di capire come si impara e poi andando e cercando il mezzo giusto per farlo."

Ben detto.


Risorse di apprendimento

Inutile dire che penso che Nettuts + e le varie proprietà di Envato offrono alcune delle migliori opzioni di apprendimento online. Inoltre, qui ci sono un paio di siti di apprendimento che ho usato e consigliato:

  • Codeacademy: impara JS, Ruby, Python e altro attraverso il loro sito interattivo
  • Ember 101: Ryan Florence ha fatto un lavoro eccezionale creando screencast che ti guidano nel processo di apprendimento di Ember
  • Why's Poignant Guide to Ruby: lo stile richiede un po 'di tempo per abituarsi, ma è sicuramente una grande risorsa per imparare Ruby
  • Egghead.io: focalizzato quasi esclusivamente su AngularJS e consigliato da molti membri della comunità
  • The Ruby on Rails Tutorial: questo è il tutorial goto per chiunque abbia appena iniziato con lo sviluppo di Rails

Se vuoi qualcosa di un po 'più strutturato e hardcore, una nuova tendenza sono i bootcamp in loco in cui investirai una notevole quantità di tempo per imparare a utilizzare le tecnologie più recenti. Basta notare che molti di questi richiedono di spostarsi dove si trova il bootcamp e di impegnarsi a tempo pieno per un certo numero di settimane. Inoltre, questi corsi costano caro a migliaia di dollari in cambio di un'esperienza di apprendimento più personale. Ho partecipato personalmente al bootcamp Bloc.io ma non ho bisogno di spostarmi. Mentre non ero in grado di terminarlo a causa di limiti di tempo, lo raccomanderei. Ecco alcuni dei bootcamp che hanno ricevuto molta stampa positiva:

  • Bloc.io: Corso ben strutturato che ti guiderà attraverso tecnologie aggiornate e ti fornirà mentorship online via email, chat o voce. Non richiede di muoverti.
  • Hacker School: con sede a New York, è un bootcamp in loco di tre mesi in cui lavorerai a tempo pieno con le competenze di programmazione in Ruby e Python
  • The Starter League: Onsite a Chicago, IL e in partnership con 37signals (produttori di Basecamp) per migliorare la loro esperienza di apprendimento.

Il sito BootCamper ha aggregato un elenco dei vari bootcamp disponibili e fornisce informazioni su di essi in modo ricercabile.


Sblocca

La cosa principale è continuare a imparare e farlo a un ritmo gestibile e in modo ponderato.

Volevo scrivere qualcosa del genere per un po '. È un po 'self-serving dal momento che mi ha aiutato a annotare i sentimenti che ho avuto sul fatto di essere sopraffatto dalla ruota del criceto dell'apprendimento. Nel corso del tempo, ho cercato dei modi per assicurarmi di rimanere in cima alle cose senza bruciarmi e ho capito che è impossibile rimanere al passo con tutto, anche nella mia nicchia. Ci sono troppi sviluppatori che costruiscono troppi oggetti e non abbastanza "tempo".

Quindi ho deciso di concentrarmi su cose che siano tempestive e pertinenti ma che potrebbero non essere all'avanguardia e il nuovo giocattolo più cool. Trovo che questo sia un modo molto più gestibile per imparare me. E penso anche che sia importante rivisitare le cose provate e vere che potrebbero non essere l'ultima auto del modello, ma potrebbero avere delle grandi sorprese per te sotto il cofano. Guardo al grande post di Jeff Atwood "Perché Ruby?" dove discute la sua scelta di usare Ruby per costruire Discourse e in particolare tocca la maturità di Ruby e la mancanza di freddezza.

L'importante è continuare a imparare e farlo a un ritmo gestibile e in modo ponderato. Pensa davvero a dove ti stai dirigendo nella tua carriera, delinei le cose fondamentali che dovresti essere bravo in questo ambito e lavora per sviluppare un piano per affrontare il rimanere aggiornato. Ci sono molte fiamme e non c'è bisogno di sbattere le ali su ognuna di esse.

Mi piacerebbe imparare di più da voi ragazzi come state aggiornati quindi per favore assicuratevi di offrire i vostri suggerimenti nei commenti.