Come includere sviluppatori rookie nel tuo progetto?


9

Stiamo pensando di insegnare ad alcuni dipendenti che hanno esperienza di programmazione a livello di hobbista generale o pari a zero per scaricare il carico di lavoro.

Usiamo Python / Django che ha la documentazione più amichevole in circolazione e un gioco da ragazzi da imparare.

Attualmente sono un dipartimento IT individuale per la mia azienda e non ho abbastanza ore per sviluppare tutto ciò di cui l'azienda ha bisogno. Non siamo una società di software, ma aiuta ad avere l'IT interno per automatizzare le attività, sviluppare le funzionalità del servizio clienti, analizzare i dati, ecc.

Come si integrano lentamente i rookie lavorando sul tuo codebase? Supponi di avere un tirocinante: cosa fanno? Sono completamente riluttante a lasciarli progettare o sviluppare il codice di base poiché ci occuperemo degli errori / degli strani schemi di progettazione per anni. Come sviluppatore principale, sarò io quello che dovrà aggirare il loro codice.

Il mio pensiero era che i rookie modificassero solo il codice esistente, non costruendo mai funzionalità di base. Posso scaricare il lavoro su di essi con semplici compiti dopo aver creato la funzione stessa.

Vorremmo che i nostri dipendenti imparassero / trovassero valore nell'azienda e in genere facciamo in modo che le persone "scalino le classifiche".

È pratica normale insegnare alle persone con programmazione di livello generale / hobbistico? Come funziona il "passaggio di livello" in una società di software per programmatori di livello junior? Quando iniziano a lavorare sul codice principale?

Sto cercando di decidere se causerà più danni che aiuto, o se c'è un modo in cui possiamo usare il loro aiuto senza rischiare potenzialmente il codice del sito principale (ambienti isolati?).


3
La "programmazione di livello generale / amatoriale" è molto diversa dai "programmatori di livello junior" nella mia mente. Il primo suona come qualcuno che suona con script shell / batch sul fine settimana per modificare il loro sistema. Quest'ultimo suona come qualcuno che ha appena finito un diploma di laurea specialistica. Gestire questi due tipi sarebbe molto diverso. Sto solo dicendo ...
FrustratedWithFormsDesigner,

@FrustratedWithFormsDesigner Grazie! Non ho familiarità con la terminologia. Hobbista che ho inteso dire che ha autodidatta alcuni linguaggi di programmazione, costruito un programma o due, un sito Web. Livello junior Ho pensato di essere qualcuno che ha abbastanza conoscenze di programmazione da assumere in una società di software, ma ora mi viene in mente che questi due possono essere abbastanza simili (nelle mie definizioni)?
Yuji Tomita,

3
Ragazzi giovani con educazione formale alla CS e nessuna esperienza: sono ingenui, ma spesso di talento, imparano velocemente cose nuove e si adattano alle tue pratiche di lavoro. I "veterinari per hobby" sono molto più pericolosi, in quanto sono spesso schiavi delle loro abitudini, quindi possono essere riluttanti ai cambiamenti e avere problemi che si adattano al tuo ecosistema. Tuttavia, solo dando loro la libertà, puoi vedere la loro stupidità o intelligenza. Se darai loro compiti banali primitivi, né loro impareranno nulla sul lavoro, né imparerai nulla su di loro.
c69,

@ c69 Grazie! La mia domanda è: come facilitare il debuttante nel nostro codebase? L'obiettivo non è quello di colpirli e fare solo compiti banali. È pericoloso consentire a qualcuno di accedere al nostro codebase e fargli costruire il loro primo progetto di django / programmazione come parte del nostro sistema (o è questo che vuoi dire? Lasciali provare e vedere?). PS: debitamente annotato sui veterinari per hobby
Yuji Tomita,

Risposte:


5

Se deleghi il debuttante a un ruolo inefficace, lui / lei non impareranno mai nulla di sostanziale e certamente non ti saranno di grande utilità.

Permettetemi di darvi un consiglio: il mio primo lavoro IT fuori dalla scuola è stato presso una società di produzione relativamente piccola dove avrei lavorato su software per assistere gli ingegneri di vendita nella stesura di preventivi per vari progetti. Dovevo anche aiutare il ragazzo IT che gestiva da solo l'IT per l'intera azienda.

Il ragazzo era un disastro stressato e affaticato, e il peggior perfezionista di micro-gestione in cui abbia mai lavorato. Avrei dovuto alleggerire il suo carico di lavoro, ma ha trascorso quasi tutto il tempo a controllare me e il mio lavoro in modo preoccupante come se stessi lavorando (non ha quasi mai lasciato l'ufficio, penso che disprezzasse la sua famiglia). Se avessi commesso un singolo errore, avrebbe perso completamente la testa e avrebbe iniziato a fare una scenata: "Sapevo che non avrei dovuto fidarmi di te per questo, era troppo importante!" e altri sfoghi.

Il punto che sto cercando di sottolineare è di NON essere così. Non solo renderà i principianti infelici e distruggerà il loro morale, ma brucerai la candela ad entrambe le estremità preoccupandoti del loro lavoro.

Offri loro la possibilità di mettersi alla prova ma hanno specifiche tecniche formali, revisioni del progetto e revisioni del codice. Inoltre è possibile testare ciò che producono per assicurarsi che soddisfi i requisiti.

Penso che rimarrai sorpreso dalla capacità di alcuni di loro.


1
Va anche detto che se delegate il rookie a un ruolo in cui non si sentono utili, prenderanno la poca esperienza che fanno per trovare un lavoro migliore. Anche un novellino dovrebbe essere in grado di seguire le indicazioni, le attività di manutenzione vanno bene, ma a meno che tu non sia disposto ad aiutarli a crescere, si aspettano di avere sempre un novellino.
Ramhound,

Grazie per il tuo contributo - è molto apprezzato. Dobbiamo iniziare da qualche parte poiché stiamo prendendo in considerazione persone che letteralmente non hanno esperienza. Introduzione a Python 101, tutorial di Django, script bash, come usare il controllo versione, ecc., Ascolterò il tuo avvertimento riguardo alla non micro gestione. E sì! Credo che le nostre persone siano abbastanza capaci.
Yuji Tomita,

5

Lavoravo in un negozio di software, dove stavamo programmando un grande progetto (tempo di accelerazione significativo).

I principianti sono stati trattati come veterinari. A loro è stato assegnato un leader tecnico e hanno iniziato le funzionalità "da sole". Lo stile dell'architettura era dettato, ma erano liberi di elaborare un proprio design pulito. Gli "strani schemi di progettazione" sono stati eliminati durante le revisioni (giornaliere) del codice dei pari.

Un errore che ho visto in un altro negozio: supponiamo che "core" sia difficile e "ui" sia facile. I principianti hanno avuto un momento più facile nel core e hanno incasinato il codice front-end dell'interfaccia utente.

In bocca al lupo!


1
Le frequenti revisioni del codice erano proprio quello che stavo per suggerire. Ci vorrà un'ora della tua giornata e ripagherai a picche mentre insegni loro cosa è sbagliato, devono ripararlo e le loro abilità migliorano. Dopo un po 'di tempo, non sarà necessario dedicare tanto tempo alle revisioni del codice delle prime settimane. Assicurati anche che sappiano usare (e usare) il controllo del codice sorgente. Quindi eventuali errori possono essere ripristinati abbastanza facilmente.
HLGEM,

1
@isgab - Un efficace design dell'interfaccia utente è difficile da ottenere anche con 30 anni di esperienza. Voglio dire, Microsoft e Apple hanno entrambe idee diverse su come dovrebbe funzionare un'interfaccia utente.
Ramhound,

Adoro quello che stai dicendo su core vs ui. Ho pensato che ci fossero pro e contro per entrambi (rookie su backend, rookie su frontend). Da un lato, l'HTML si basa spesso sull'esperienza: sapere cosa non funziona. È anche "sicuro" in quanto i progetti sono isolati. Il backend funziona esattamente come dovrebbe, ma il codice creato ora deve essere mantenuto e lavorato in futuro.
Yuji Tomita,

2

Volete iniziare dando loro piccole funzionalità discrete da implementare. Definisci l'input che prometti e l'output che ti aspetti e lascia che colleghino i punti. E quindi utilizzare la revisione del codice condotta dal team per garantire la qualità e la revisione tra pari per addestrarli a imparare gli uni dagli altri e a insegnare loro stessi.

Ciò presuppone che si disponga di un'architettura applicativa globale che consenta di costruire unità atomiche di logica in modo disaccoppiato. Altrimenti, ti stai dirigendo verso un mondo di dolore mentre ci lavorano più sviluppatori - questo sarebbe il caso anche con i vecchi professionisti.

Inevitabilmente, ci saranno alcune persone che lo prendono, imparano in fretta e si alzano. Assicurati di continuare ad alimentare loro attività che sono solo un piccolo passo oltre le loro attuali capacità. Nulla educa qualcuno come un compito che inizia impossibile. Inevitabilmente avrai delle persone che ci provano e non riescono mai ad afferrarlo. Queste persone dovrebbero essere ringraziate per i loro sforzi e trasferite con grazia verso qualcos'altro.


1
"Assicurati di continuare a dar loro da mangiare compiti che sono solo un piccolo passo oltre le loro attuali capacità." - Se ciò non viene fatto, potresti scoprire che queste persone conoscono un'altra società. Se non dai da mangiare, ti alleni e non cammini con il novellino, scapperanno come il tuo cane.
Ramhound,

Altre opzioni sarebbero: Offri loro una funzionalità di (già) attrezzo, in modo che possano confrontare gli output
Etsitpab Nioliv

1

In che modo la tua azienda può permettersi di prendere tempo dagli altri dipendenti, ma non assumere qualcuno con esperienza di programmazione? La quantità di tempo che dedichi all'allenamento, alla risoluzione dei problemi e al mantenimento della mano è costosa.

L'unica cosa che io abbia mai fatto in questo settore è insegnare alle persone come utilizzare un autore di report o forse un codice VBA / Macro per Excel. Di solito do i set di dati per riutilizzarli. Far loro imparare l'SQL è una cosa lunga, ma l'ho visto fatto (pagato per loro per ottenere una formazione esterna). La maggior parte di queste persone erano analisti finanziari che hanno la capacità di imparare a programmare, ma potrebbero non aver impiegato del tempo. Provare questo con alcune persone in operazioni è una cosa a lungo termine.

Assicurati di avere la persona giusta e che vogliono davvero imparare a programmare. Non avrai tempo di insegnare loro tutto. Dovranno fare molto da soli.


Ho detto che stiamo parlando di persone con esperienza precedente pari a zero (o una quantità molto piccola), quindi non stiamo parlando dei gradi di paga richiesti per assumere un programmatore professionista.
Yuji Tomita,

Ah, e la nostra azienda è un po 'come una famiglia: ci piace fare tutto da soli e fare in modo che le persone si classifichino. Ero principalmente curioso di come strutturare il flusso di lavoro di un novellino nel mio.
Yuji Tomita,

0

@louisgab aveva ragione sulla revisione del codice. Questo sarebbe anche il mio primo passo. Una cosa fondamentale che ti aiuterà è assicurarti che debbano correggere i propri errori sia che li trovi nella revisione del codice o in seguito. Hanno vinto; non si rendono nemmeno conto che stanno commettendo errori a meno che non debbano ripararli. Assicurati anche di spiegare perché la soluzione che hanno usato è un errore e perché ciò che stai proponendo è migliore. Le prime settimane si sentirà come se avessi più lavoro a causa di avere queste altre persone, ma se fai le tue recensioni di codice e spieghi le cose e ti aspetti che imparino, in poche settimane saranno molto più utili che se tu fai tutto da solo. Ma c'è un impegno iniziale del tuo tempo per metterli al passo con i tempi di cui il tuo management deve essere consapevole.

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.