Come possiamo migliorare l'istruzione e la formazione del programmatore in generale? [chiuso]

13

La scorsa settimana stavo guardando questa incredibile intervista di Kevin Rose di Phillip Rosedale, di Second Life.

E hanno avuto una discussione stupefacente su come trovare, assumere e identificare i programmatori bravi, e quanto è difficile trovare quelli validi.

Il che mi ha portato a pensare veramente al modo in cui i programmatori apprendono, vengono insegnati. Per la maggior parte di noi, me compreso, siamo autodidatti. Il bello di essere un programmatore, chiunque può apprendere e sviluppare competenze.

Ma ciò significa anche che non esistono standard reali su ciò che un buon programmatore è / sono e che tipo di ambiente incoraggia la crescita delle capacità di programmazione.

Questa non è una domanda, ma solo un desiderio in me, per vedere come possiamo cambiare la cultura della programmazione e i manager della programmazione, in modo che l'educazione e l'auto-miglioramento siano incoraggiati.

Ci sono molte vie per la formazione continua, video di youtube, libri, conferenze, ma a causa della natura esperienziale di ciò che facciamo, non è sempre chiaro cosa è importante imparare e padroneggiare.

Diamo un'occhiata a The Joel 12 Steps.

Il test di Joel

Usi il controllo del codice sorgente?

Puoi creare una build in un solo passaggio?

Crea build giornalieri?

Hai un database di bug?

Risolvi i bug prima di scrivere un nuovo codice?

Hai una pianificazione aggiornata?

Hai una specifica?

I programmatori hanno condizioni di lavoro silenziose?

Usi gli strumenti migliori che il denaro può comprare?

Hai dei tester?

I nuovi candidati scrivono il codice durante il colloquio?

Esegui test di usabilità nel corridoio?

Penso che tutti questi abbiano un valore importante, ma a causa di qualcosa che definisco Gap Esperienziale, se un programmatore o un manager non ha mai avuto alcuna conseguenza negativa per non aver fatto gli articoli sulla lista, non vedranno mai la necessità per farne uno qualsiasi.

The Experiental Gap, è la mia teoria di base, che ognuno di noi ha diversi lavori e diverse esperienze. Quindi per alcuni di noi, che hanno sempre lavorato con dozzine di programmatori, il controllo del codice sorgente è un must. Ma per le persone che sono sempre state l'unico programmatore, non possono immaginare la necessità del controllo del codice sorgente.

Ed è a causa di questo grande difetto nel modo in cui apprendiamo, che valutiamo le persone secondo le migliori pratiche che fanno o non fanno, e la ragione di entrambi può iniziare una guerra di fiamma.

Valutiamo sempre le persone nel nostro campo con quello che fanno, e pensiamo "Oh se questo ragazzo / ragazza non sta facendo le migliori pratiche xyz, non può essere un buon programmatore, quindi non perdiamo tempo o energia parlando con loro. "

Questo è esattamente il motivo per cui abbiamo così tante guerre di programmazione in programmazione, che diventa, a causa di Experiental Gap, non possiamo immaginare che le persone non abbiano preso le decisioni che abbiamo dovuto prendere.

Quindi questo mi ha portato a pensare che abbiamo totalmente bisogno di ripensare a come addestriamo, istruiamo e gestiamo i programmatori.

Ad esempio, quale percentuale di voi ha avuto l'incoraggiamento da parte del vostro manager di andare alle conferenze, e persino farle pagare per questo?

Per me, e molte persone, questo è estremamente raro, molti di noi vorrebbero andare alle conferenze, per saperne di più, ma i soldi non sono lì per farlo.

Quindi il punto di questa domanda è proprio quello di stimolare molto il modo in cui possiamo allenarci, imparare e gestire meglio?

Come possiamo creare una nuova cultura dell'apprendimento che non insulti le persone per non avere le stesse esperienze lavorative.

Sì, tutti noi abbiamo lavoro e lavoro da fare, ma la nostra capacità di svolgere bene il nostro lavoro dipende dal nostro desiderio, interesse e supporto nel migliorare la nostra padronanza delle nostre capacità.

In questo momento, vedo che la nostra cultura è piuttosto disorganizzata, sosteniamo l'élite, ma quelle tonnellate di noi che vogliono migliorare, semplicemente non hanno abbastanza supporto per imparare e migliorare noi stessi.

Voglio dire, noi come industria, vogliamo essere percepiti come ingranaggi sostituibili?

Grazie ...

    
posta crosenblum 20.03.2011 - 17:54
fonte

3 risposte

13

Wow, grande domanda a cui pensare, difficile da rispondere. Poiché tutti noi abbiamo esperienze e desideri diversi, è difficile trovare una soluzione adatta a tutte le dimensioni. Ma getterò alcune opinioni che ho avuto nel corso degli anni su questo stesso argomento.

1) Smettere di vedere il job hopping come brutto e incoraggiarlo. Cambia aziende ogni pochi anni. Il programmatore viene esposto a molte tecnologie, metodologie e attività diverse nel corso della sua carriera. Le aziende ottengono un flusso costante di nuove idee.

2) Smettila di considerarti un programmatore della compagnia X e ti consideri un professionista che fornisce un servizio alla compagnia X. Se pensi come un professionista, sarai trattato come un professionista. Se siamo visti come ingranaggi sostituibili, è perché agiamo come ingranaggi sostituibili.

3) Le università devono cambiare. Dovrebbero avere un periodo iniziale di 2 anni di istruzione di base in computer seguiti da una scelta. Informatica o ingegneria informatica. E la pista di ingegneria ha bisogno di professionisti che lavorano sul campo ogni giorno, non di qualcuno che scrive solo articoli. E ciò che viene insegnato deve essere pratico, in modo da poter andare a fondo il giorno dopo la laurea. Forse avere un programma di apprendistato per coloro che non seguono un corso di laurea.

4) Modifica: questo era un po 'ridicolo. Quello che volevo dire era che tutti noi abbiamo molto da imparare gli uni dagli altri, indipendentemente dall'età e dall'esperienza.

5) Abbastanza legato al punto 2. Non vedi più il tuo datore di lavoro come responsabile della tua carriera. Siete. E solo tu. Se vuoi andare a una conferenza, pagalo tu stesso se la tua azienda non lo farà. Metti da parte i soldi ogni anno specificamente per i libri e la formazione e lo sviluppo professionale. Se aspetti che il tuo datore di lavoro ti invii alla formazione, starai aspettando molto tempo. Tempo trascorso a guardare le tue abilità diventare irrilevanti. Non fare abbastanza per permetterselo? Cambia lavoro.

6) Dobbiamo essere onesti con noi stessi e con i nostri colleghi programmatori. La programmazione è difficile. Molto difficile. Vedo ancora pubblicità per l'addestramento al computer con ricchezza garantita dopo la laurea. Ciò porta molte persone sul campo che semplicemente non sono qualificate o che peggio non hanno alcun interesse reale al di là del denaro. Dobbiamo trovare un modo per incoraggiarli a ripensare ai loro piani di carriera.

A questo punto penso che la mia testa stia per esplodere, quindi concluderò.

Ottima domanda! Non vedo l'ora di leggere più risposte.

    
risposta data 20.03.2011 - 19:00
fonte
1

Non penso che sia disorganizzato unicamente a causa della mancanza di insegnamento. Penso che sia effettivamente riflessivo che le "migliori pratiche" differiscono da lavoro a lavoro. Le "migliori pratiche" saranno sempre basate in un contesto particolare.

Ci sono molti passaggi incrociati per alcune delle aree di lavoro più comuni, ad es. sviluppo web. Tuttavia, ritengo sia un errore credere che solo perché è opportuno impegnarsi in una particolare pratica nella maggior parte dei lavori dovrebbe essere utilizzato in tutti i lavori.

Le pratiche che intraprendi dovrebbero derivare da un'analisi e dalla sperimentazione di ciò che ti fa lavorare meglio. Non dovrebbero essere scelti attraverso la cieca credenza. Solo perché qualcosa viene ripetuto spesso in rete non lo rende una verità nella tua situazione, né una verità (per tutte le situazioni).

    
risposta data 21.03.2011 - 06:32
fonte
0

Ottima domanda per esercitare la mente, sono d'accordo che qualcosa deve essere fatto, ma penso che sia impossibile rispondere. Il mio tentativo:

Prima Non uccidere la creatività in generale, devo dire che sono d'accordo con Sir Ken Robinson, guarda questo fantastico TED talk . Il nostro sistema educativo sta uccidendo la creatività e questo deve essere modificato. Soprattutto per i programmatori.

Secondo Insegnare come modelli il nostro campo professionale non è abbastanza maturo. Abbiamo molte cose diverse che pensiamo siano la strada da percorrere, ma non possiamo davvero essere d'accordo su di loro. (penso a TDD, BDD, Agile vs Waterfall, la quantità di documentazione necessaria, Java o .Net) Nella mia mente ciò è dovuto alla discussione senza contesto e con molta specializzazione. Non è possibile fare la scelta giusta senza sapere in quale contesto viene posta la domanda e non si può fare la scelta giusta se si conosce solo un'opzione. Quando lo riporti all'educazione, sembra impossibile da risolvere. Non puoi aspettarti che qualcuno sappia tutti i contesti possibili e tutte le possibili soluzioni. Ma con i modelli ora alcune soluzioni generali e i contesti sono applicabili e contesti quando le soluzioni si rompono. IMHO questo è il modo in cui abbiamo bisogno di insegnare, soluzioni generali all'interno di un contesto e descrizioni di quando la soluzione non funziona.

Terzo metti le dichiarazioni di non responsabilità sugli esempi Penso che ci sia un problema con gli esempi che mostriamo su MSDN, sui blog, sui libri, ecc. Gli esempi sono spesso messi a tacere per far capire che lo scrittore è cercando di fare. Ma negli esempi più elementari ci sono già decisioni su molti livelli. Questi esempi insegnano tutte queste altre decisioni sbagliate. Penso che ogni esempio debba venire con un disclaimer che dica qual è il punto e cosa non dovresti fare in generale. Un grande esempio di questo è stato bloggato oggi qui .

Ultimo Do Do Do Penso che ci sia bisogno di fare di più. Ho imparato a fare, fallire, correggere e discutere.

    
risposta data 20.03.2011 - 20:26
fonte

Leggi altre domande sui tag