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

39

Attualmente la nostra azienda sviluppa applicazioni costituite, per la maggior parte del tempo, dai server Web di Ruby on Rails e da una serie di diversi client REST, dai sistemi kiosk in Java ai dispositivi embedded in C / C ++ (oltre alle interfacce per i browser Web standard) . Abbiamo bisogno di espandere il nostro team e, avendo fallito nel trovare buoni programmatori senior, abbiamo deciso di impegnarci per formare i programmatori junior che sarebbero cresciuti insieme alla compagnia.

Abbiamo già fornito loro alcuni libri di Ruby and Rails e abbiamo chiesto loro di creare alcuni programmi giocattolo, ma ora sto realizzando quanto sia ripida la curva di apprendimento per lo stato attuale della programmazione web.

Quando ho iniziato a programmare 15 anni fa, usavo solo Delphi e Source Safe ed ero in grado di produrre software utilizzabile fin 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 so tanto su come Ruby on Rails funziona come ho fatto in passato su Delphi, e per me è stato 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 utile, perché ci sono così tante cose da imparare a usare un singolo framework (Rails): Ruby, HTML, CSS , JavaScript, REST, test-cases, accesso al database (con SQL magicamente costruito all'interno del framework!), MVC, tre diversi gestori di pacchetti (apt per Ubuntu, gem e bundler per Ruby), ssh, git, Apache e Phusion Passenger per l'implementazione , ecc.

Mi sento perso poiché è la prima volta che devo trattare direttamente con i programmatori junior. Qual è il modo migliore per formare i programmatori junior nelle odierne best practice per lo sviluppo web quando ci sono così tante scelte?

    
posta Rômulo Ceccon 22.03.2013 - 18:38
fonte

3 risposte

39

A molte persone non piacerà questa idea, ma lo sto sostenendo ovunque io possa: indipendentemente dal linguaggio di programmazione e dall'ambiente, se non hanno alcuna esperienza e se ci sono compiti di manutenzione che derivano da bug del mondo reale rapporti di clienti tuoi, cerca di assicurarti che vengano assegnati a quel tipo di compito almeno per il 30-40% (+) del loro tempo. "Ecco il bug report, dare un'occhiata, risolverlo, se non sai di cosa si tratta, comunica con colleghi esperti, google, qualunque cosa". Lavoro vero su problemi reali, giocattoli no , almeno: non solo giocattoli. Assicurati, inoltre, che qualcuno con molta esperienza dia un'occhiata a quello che stavano facendo prima che venga rilasciato e spedito al cliente, naturalmente. Assicurati che il nuovo collega ottenga feedback onesti su ciò che ha fatto da colleghi e clienti. Scegli attentamente queste attività per non sovraccaricarle, ma tieni presente che un giorno vorresti che facciano il loro lavoro in modo indipendente.

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

L'attenzione viene messa automaticamente sui punti dolenti. Inizieranno ad apprendere quei dettagli che stanno effettivamente causando problemi. Mette anche la responsabilità reale sulle loro spalle fin dall'inizio, che (mentre la manutenzione in quanto tale non è davvero attraente) può essere piuttosto motivante se viene eseguita in modo soddisfacente per il cliente / utente finale. Passare attraverso ciò che hanno fatto sarà preso più seriamente dai senior, perché sanno che l'impatto se le cose vanno male, e in questo modo semplificherà anche l'integrazione nel team, perché farà in modo che anche loro parlino automaticamente.

Il punto è non per 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 una lista.

Ho alcuni anni di esperienza lavorativa di tanto in tanto con persone che arrivano direttamente dal college nel loro nuovo lavoro di sviluppatore, e i risultati peggiori che ho avuto modo di vedere erano di solito quando qualcuno che non aveva almeno una certa esperienza nella manutenzione era invitato a fare nuovo sviluppo di applicazioni. Assicurati che abbiano sempre qualcuno a cui chiedere assistenza se si sentono persi.

    
risposta data 22.03.2013 - 22:33
fonte
8

Supponiamo innanzitutto di aver assunto programmatori junior che sono effettivamente competenti. Questo non è necessariamente un presupposto sicuro, soprattutto perché i programmatori esperti che intervistano "qualcuno meno esperto di me" è probabile che trascurino l'incompetenza di base.

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

Dopo aver acquisito le conoscenze di base, collabora con loro sedersi in una scrivania adiacente e rinunciare almeno alla metà del tempo per assicurarsi che comprendano la tua attività e il tuo modo di fare cose. Sì, ridurrà la tua produttività, almeno inizialmente, ma a lungo termine renderà la tua squadra nel complesso più produttiva. E se pensi di nuovo ai costi, se una persona anziana spreca un mese facendo la cosa sbagliata, probabilmente è all'incirca un mese e mezzo del tuo stipendio.

    
risposta data 22.03.2013 - 19:55
fonte
4

Le applicazioni giocattolo che chiedi loro di fare dovrebbero implementare alcune funzionalità CRUD di base e ogni sviluppatore dovrebbe scrivere il proprio codice. Ma puoi discutere l'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 colpire da solo i temi associati come Javascript, CSS, DAL, generatori di template, routing e così via. Puoi dare loro una guida su quali argomenti studiare (può basarsi sui bisogni più urgenti della tua azienda), supportarli e monitorarne i progressi. Sposta gli sviluppatori uno alla volta in progetti semplici che producano funzionalità in grado di far avanzare lo sforzo di sviluppo effettivo, nel momento in cui dimostrano di comprendere le competenze necessarie.

Puoi accoppiare alcuni dei tuoi sviluppatori esperti con un apprendista come una sorta di programma di mentoring. Ci dovrebbero essere delle linee guida disponibili 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 riuscirai a trovare giovani molto intelligenti, intellettualmente curiosi e autonomi. Ho visto questo processo funzionare; era l'approccio del mio precedente datore di lavoro, dal momento che non voleva pagare cifre esorbitanti per gli esperti, sebbene si trattasse più di un tipo "affondare o nuotare" (non esisteva un programma di formazione formale in quanto tale). La sua più grande sfida è stata farli rimanere abbastanza a lungo da recuperare il suo investimento; c'era sempre l'esca di una paga migliore da qualche altra parte.

    
risposta data 22.03.2013 - 18:45
fonte