Come formare programmatori junior per l'ambiente web (complicato) di oggi?


39

Attualmente la nostra azienda sviluppa applicazioni costituite, nella maggior parte dei casi, da server Web Ruby on Rails e da una serie di client REST diversi, dai sistemi kiosk in Java ai dispositivi integrati in C / C ++ (oltre alle interfacce per browser Web standard). Dobbiamo espandere il nostro team e, avendo fallito nel trovare buoni programmatori senior, abbiamo deciso di impegnarci nella formazione dei programmatori junior che sarebbero cresciuti insieme all'azienda.

Abbiamo già dato loro alcuni libri su Ruby e Rails e abbiamo chiesto loro di costruire alcuni programmi giocattolo, ma ora sto realizzando quanto sia ripida la curva di apprendimento per l'attuale stato della programmazione web.

Quando ho iniziato a programmare 15 anni fa, ho utilizzato solo Delphi e Source Safe e sono stato in grado di produrre software utilizzabile sin dall'inizio. Erano entrambi strumenti semplici ed era facile approfondire il funzionamento interno dell'ambiente. Lentamente ho iniziato a utilizzare framework di terze parti, sono passato a CVS, SVN e infine Git, ho imparato i pezzi che rendono il web di oggi, come HTTP, JavaScript, CSS, REST ecc. Oggi, anche dopo anni di esperienza, non lo so tanto su come funziona Ruby on Rails come in passato su Delphi, e per me era importante per poter collegare i blocchi di apprendimento di base agli strumenti che stavo usando.

Mi sembra che i programmatori che sto assumendo impiegheranno molto tempo per integrarsi con il team e produrre qualcosa di utilizzabile, perché ci sono così tante cose da imparare per usare un singolo framework (Rails): Ruby, HTML, CSS, JavaScript, REST, casi di test, accesso al database (con SQL creato magicamente all'interno del framework!), MVC, tre diversi gestori di pacchetti (adatti per Ubuntu, gem e bundler per Ruby), ssh, git, Apache e Phusion Passenger per la distribuzione, ecc.

Mi sento perso poiché è la prima volta che devo occuparmi direttamente dei programmatori junior. Qual è il modo migliore per formare programmatori junior nelle migliori pratiche odierne per lo sviluppo web quando ci sono così tante scelte?


8
Il secondo all'ultimo paragrafo sembra che potresti non aver notato un importante cambiamento che si è verificato negli ultimi 15 anni: i programmatori generalisti sono praticamente spariti . Per chiunque sappia tutti i dettagli a cui ti riferisci, dovrebbero essere nel settore da 15 anni. Potresti avere risultati migliori nella ricerca / formazione di specialisti che conoscono una o due delle cose che elenchi molto intimamente e creando una squadra dai vari specialisti di cui hai bisogno ( quindi crosstrain). In alternativa, trova ingegneri senior con 15 anni di esperienza come te, ma non è un compito facile.
Jimmy Hoffa,

Solo FYI, una curva di apprendimento ripida significa che impari qualcosa di veramente veloce. Confonde alcune persone se usato in modo errato :)
Alternatex

Ho sempre usato l'espressione come "difficile" (l'inglese non è la mia madrelingua) ma Wikipedia dice che è ambigua, quindi non conosco la scelta migliore qui: en.wikipedia.org/wiki/Learning_curve :)
Rômulo Ceccon

Risposte:


39

A molte persone questa idea non piacerà, ma la sto sostenendo ovunque sia possibile: indipendentemente dal linguaggio di programmazione e dall'ambiente, se non hanno alcuna esperienza e se ci sono attività di manutenzione che emergono da segnalazioni di bug nel mondo reale dei clienti del tuo, cerca di assicurarti che vengano assegnati a quel tipo di attività almeno per il 30-40% (+) del loro tempo. "Ecco la segnalazione di bug, dai un'occhiata, risolvila. Se non sai di cosa si tratta, comunica con colleghi esperti, cercalo su Google, qualunque cosa". Lavoro reale su problemi reali, nogiocattoli, almeno: non solo giocattoli. Assicurati anche che qualcuno con molta esperienza abbia uno sguardo a quello che stavano facendo prima che venga rilasciato e spedito al cliente, ovviamente. Assicurati che il nuovo collega ottenga un feedback onesto su ciò che ha fatto da colleghi e clienti. Scegli attentamente questi compiti per non sovraccaricarli, ma tieni presente che un giorno vorresti che svolgessero il loro lavoro in modo indipendente.

Fare il bug fixing è apprendere sul lavoro che consente loro di lavorare su codice che viene effettivamente eseguito e ha una certa rilevanza (altrimenti non ci sarebbero segnalazioni di bug) e mostrerà loro in molti esempi come non farlo.

L'attenzione si concentra automaticamente sui punti di dolore. Inizieranno a conoscere quei dettagli che stanno effettivamente causando problemi. Mette anche una vera responsabilità sulle loro spalle fin dall'inizio, che (mentre la manutenzione in quanto tale non è davvero attraente) può essere piuttosto motivante se lo fanno in modo soddisfacente per il cliente / utente finale. Passare attraverso quello che hanno fatto sarà preso più sul serio dai tuoi anziani perché conoscono l'impatto se le cose vanno male, e in questo modo semplificherà anche l'integrazione nel team, perché li farà anche parlare automaticamente tra loro.

Il punto non è di renderli produttivi dal primo momento (come potrebbe sembrare). Il punto è assicurarsi che sappiano che dovrebbero fare qualcosa di prezioso fin dal primo momento e concentrarsi su ciò che conta di più senza la necessità di creare effettivamente un elenco.

Ho qualche anno di esperienza di lavoro ogni tanto con persone che arrivano direttamente dal college nel loro nuovo lavoro di sviluppatore, e i risultati peggiori che ho visto sono stati di solito quando a qualcuno senza almeno qualche esperienza di manutenzione è stato chiesto di fare lo sviluppo di nuove applicazioni . Assicurati solo che abbiano sempre qualcuno a cui chiedere aiuto se si sentono persi.


Faccio la stessa cosa. Buona risposta.
Rocklan,

Ho iniziato la mia carriera riparando i difetti per il primo anno. Quando sono passato ad altri progetti, sento che la correzione dei bug mi ha reso molto più bravo perché sapevo cosa non fare.
Brandon,

8

Supponiamo innanzitutto che tu abbia assunto programmatori junior che sono effettivamente competenti. Questo non è necessariamente un presupposto sicuro, soprattutto perché i programmatori senior che intervistano "qualcuno meno esperto di me" probabilmente trascureranno l'incompetenza di base.

Ma, supponendo che siano competenti, il primo passo è inviarli a una lezione. Una lezione di una settimana ti costerà $ 2.000- $ 3.000 (US). Tuttavia, darà loro un'esperienza pratica, con un istruttore che (si spera) capirà il materiale e un piano di lezione progettato per renderli veloci. Inviare qualcuno con un libro e la direttiva per "imparare questo" non sarà altrettanto prezioso, e probabilmente costerà di più (il costo della classe è circa uguale a una settimana programmatore sprecata).

Dopo che hanno le conoscenze di base, lavora con loro. Sedersi a una scrivania adiacente e rinunciare almeno alla metà del tempo per assicurarsi che comprendano la tua attività e il tuo modo di fare le cose. Sì, ridurrà la tua produttività, almeno inizialmente, ma a lungo termine renderà la tua squadra nel suo insieme più produttiva. E se pensi, ancora, ai costi, se una persona minore spreca un mese a fare la cosa sbagliata, probabilmente è circa un mese e mezzo di stipendio.


4

Le applicazioni giocattolo che stai chiedendo loro di fare dovrebbero implementare alcune funzionalità CRUD di base e ogni sviluppatore dovrebbe scrivere il proprio codice. Ma puoi discutere dell'applicazione nelle revisioni del codice e offrire suggerimenti. Dovranno prima comprendere l'architettura generale di un'applicazione MVC, se è possibile una ragionevole aspettativa di produttività.

Da lì, ogni sviluppatore dovrebbe essere in grado di entrare da solo nei soggetti associati come Javascript, CSS, DAL, generatori di modelli, routing e così via. Puoi fornire loro una guida su quali argomenti studiare (può essere basato sulle esigenze più urgenti della tua azienda), guidarli e monitorarne i progressi. Sposta gli sviluppatori uno alla volta verso progetti semplici che producano funzionalità che possano far progredire il tuo vero sforzo di sviluppo, nel momento in cui dimostrano la comprensione delle competenze necessarie.

Puoi associare alcuni dei tuoi sviluppatori esperti a un apprendista come una sorta di programma di tutoraggio. Dovrebbero essere disponibili linee guida per gli sviluppatori junior in modo che sappiano quando possono interrompere il loro mentore e per quanto tempo. Il loro mentore può supervisionare il loro lavoro quando iniziano a scrivere codice reale.

Avrai un momento migliore se riesci a trovare giovani che sono molto intelligenti, intellettualmente curiosi e avviatori di sé. Ho visto questo processo funzionare; era l'approccio del mio precedente datore di lavoro, dal momento che non voleva pagare un sacco di soldi per gli esperti, anche se si trattava più di una specie di "affondamento o nuoto" (non esisteva un programma di formazione formale in quanto tale). La sua più grande sfida era farli rimanere abbastanza a lungo da recuperare il suo investimento; c'era sempre l'esca di pagare meglio altrove.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.