Non programmo nel tempo libero. Questo mi rende un cattivo sviluppatore?


387

Molti blog e consigli sul web sembrano suggerire che per diventare un grande sviluppatore non basta fare il proprio lavoro quotidiano. Ad esempio, dovresti contribuire a progetti open source nel tuo tempo libero, scrivere app per smartphone, ecc. In effetti molti di questi consigli sembrano suggerire che se non ti piace programmare abbastanza per farlo tutto il giorno, allora sei probabilmente nella carriera sbagliata.

Questo non suona vero con me. Mi piace il mio lavoro, ma quando torno a casa dall'ufficio non ho voglia di tornare al computer e iniziare a programmare fino all'ora di andare a letto. Ho solo un certo numero di ore di tempo libero ogni giorno e preferirei spenderli in altri hobby, vedere amici o andare fuori piuttosto che davanti al computer.

Mi viene fuori dalla programmazione e ogni tanto lavoro fuori dal lavoro. Sono impegnato nel mio sviluppo personale e passo il tempo a leggere blog e libri di tecnologia come un modo per continuare a imparare e migliorare. Ma ciò non si estende al mio desiderio di utilizzare tutto il mio tempo libero per la programmazione.

Questo significa che non sono uno sviluppatore di software "vero" nel cuore? È possibile diventare un buon sviluppatore di software senza fare extra al di fuori del proprio lavoro? Sarei molto interessato a sentire cosa ne pensi.

Aggiornamento: grazie a tutti per i vostri commenti e risposte. Un sacco di buoni pensieri e consigli!


133
Penso che ti renda più normale, probabilmente hai più connessioni con ciò che noi geek chiamiamo "vita reale". Valorizzalo.
Orbling

146
@Orbling Qual è questa "vita reale" di cui stai parlando? È simile a WoW? Funziona su un sistema operativo a 64 bit?
biziclop,

18
@biziclop - È come WOW con una grafica migliore e un gioco molto più noioso.
ChaosPandion,

39
@ChaosPandion: le missioni fanno schifo a lungo, noioso, e il bottino non è sicuramente epico.
Orbling

4
Per motivi di efficienza, raccomando di sperimentare cose nuove e di lavorare su progetti personali quando dovresti lavorare. In questo modo hai ancora tempo libero limitato. :-)
Carson63000,

Risposte:


446

IMO questo atteggiamento proviene da persone che hanno lavori orribili che succhiano l'anima, combinati con capacità di gestione del tempo piscio-poveri. Se stai praticamente scrivendo moduli Web tutto il giorno, esci e trova un lavoro più impegnativo, oppure inizia il tuo.

Ecco la cosa. Un musicista da concerto (violoncellista / pianista / qualunque cosa) si eserciterà al massimo 6 ore al giorno. La maggior parte pratica solo poche ore al giorno. ai massimi livelli

La gente dice di più sul programma perché impari di più, ma questa è una cortina fumogena. 8 ore al giorno sono molte .

Il progresso NON è lineare. È logaritmico:

inserisci qui la descrizione dell'immagine

L'unica ragione per cui un musicista potrebbe esercitarsi per più di 3 ore è che devono spremere l'1% in più che quelle ore gli danno. Se pensi che ti riguardi, risolvendo un problema risolto da CS due decenni fa, hai un complesso prima donna da avviare.

Ho già lavorato in aziende di pentole a pressione e, credetemi, l'effettiva quantità di lavoro svolto da quei ragazzi non è migliore di un'azienda come 37signals che pone vincoli sulla quantità di lavoro: http://37signals.com / svn / messaggi / 996-perché-i-love-lavoro-con-famiglia-persone

Quello che finisce per succedere è che potresti essere di fronte a un computer per 10-12 ore e in ufficio per altre 2, ma questo non include il pranzo di 90 minuti che hai preso, le 2 ore che hai trascorso sfogliando la discussione forum e l'ora in cui hai dovuto giocare a uno dei tanti giochi presentati in ufficio (biliardino, biliardo, yada ...).

Guarda indietro a quel grafico. Ora torna da me.

La tua mente in realtà ha l'opportunità di espandersi molto di più se la coinvolgi in qualche altra attività: impara a suonare uno strumento . Impara una lingua straniera . Meglio ancora uscire e fare un po 'di esercizio fisico e connettersi con persone reali dal vivo .

Sulla natura logaritmica della produttività:

Nel rinomato studio del 1993 di giovani violinisti, il ricercatore Anders Ericsson ha scoperto che i migliori si sono tutti esercitati allo stesso modo: al mattino, con tre incrementi di non più di 90 minuti ciascuno, con una pausa tra i due. Ericcson ha trovato lo stesso schema tra altri musicisti, atleti, giocatori di scacchi e scrittori.

Per una produttività reale, meno è davvero di più

Questo è in realtà un principio ben noto nel mondo degli affari, sono sorpreso che più programmatori non ne abbiano mai sentito parlare.

Aggiornamento: ulteriori informazioni sullo studio Ericsson.

L'intera idea che ci vogliono 10.000 ore / 10 anni per diventare esperti in realtà deriva dagli studi condotti da Ericsson, non da Malcom Gladwell.

Come tutti sappiamo, puoi avere 1 anno di esperienza ripetuto 10 volte ... quindi solo avere il culo al posto per 10 anni non è idoneo. Ciò che qualifica è ciò che Ericsson chiama pratica deliberata .

Ha trovato questo principio valido in atletica leggera, musica, scrittura, scacchi e matematica. Definisce inoltre la pratica deliberata come così faticosa, che anche ai massimi livelli si possono fare solo circa 4 ore al giorno . Altrimenti soffrirai di sovrallenamento o esaurimento. Ancora una volta, riconosce che ci sono rendimenti decrescenti per la pratica deliberata, fino a circa 4 ore.

Per quanto riguarda il fatto di non avere un lavoro buono / stimolante:

Fesserie. O ottieni un lavoro migliore, o ecco un'idea: trasforma il tuo attuale lavoro in qualcosa che non lo è , almeno in questo momento.

Uno dei migliori programmatori che ho conosciuto ha iniziato a lavorare come programmatore di manutenzione su un sistema legacy che consisteva in dozzine di programmi e centinaia di migliaia di righe di codice. La maggior parte dei quali era stata violata nel corso degli anni così tanto che avresti dovuto dire che non vi era più alcun progetto coerente.

Questo è stato praticamente un lavoro senza fine, in un vicolo cieco. La direzione voleva che ti abbassassi la testa e risolvi i maledetti bug. I bravi sviluppatori stavano lavorando al progetto greenfield. Le persone sono venute qui per restare fuori dai giorni rimanenti fino a quando non si sono ritirati, o hanno acquisito qualche anno di esperienza prima di passare allo sviluppo di nuove applicazioni. Mentre la maggior parte dei programmatori si lamenterebbe della mancanza di sviluppo della carriera, o dell'opportunità di imparare nuove cose, o di non avere progetti entusiasmanti su cui lavorare, o più in generale lamentarsi di nessuno che li abilitasse , questo ragazzo si è semplicemente seduto e ha continuato a fare il lavoro che doveva essere fatto.

E nel corso di 2 anni, aveva trasformato quel sistema da un buggy di codice spaghetti a qualcosa che era una cosa di bellezza e funzionava come un orologio svizzero. La trasformazione è stata così completa che il vicepresidente della divisione ha iniziato a prestare sempre più attenzione al progetto esistente e ha iniziato a mettere in discussione il valore del progetto greenfield. Sebbene non avesse un titolo, gli addetti alle operazioni andarono da lui come leader de facto del gruppo. Quando me ne sono andato, il vicepresidente stava parlando della creazione di un nuovo ruolo per lui come architetto di sistemi ...

Non sono sicuro di cosa gli sia successo dopo, ma mi ha insegnato un paio di lezioni molto importanti:

  1. Il tuo lavoro è quello che fai, e ci sono problemi interessanti da risolvere ovunque . Se odi scrivere schermate CRUD, risolvi il problema generandole automaticamente.

  2. Non sederti in attesa di opportunità per venire da te. È probabile che non lo faranno mai.


Commentatori: i commenti hanno lo scopo di cercare chiarimenti, non di discussioni estese. Se hai una soluzione, lascia una risposta. Se la tua soluzione è già stata pubblicata, ti preghiamo di votarla. Se desideri discutere questa domanda con altri, utilizza la chat . Vedi le FAQ per maggiori informazioni.

30
Questo, e molte altre risposte, pongono troppa enfasi sulla programmazione come "pratica". Per continuare il confronto con il musicista, ci crediate o no, ma in realtà suonano anche per piacere. Quello che cercano gli intervistatori alla ricerca di qualcuno che programmi nel loro tempo libero non è qualcuno che sente il costante bisogno di esercitarsi continuamente. Stanno cercando qualcuno che sia appassionato e che apprezzi davvero quello che fanno. Se sei appassionato del tuo lavoro, spesso lo trasformi anche in un hobby, ed è difficile evitarlo. Non è diverso dal prendere qualsiasi altro hobby.

7
L'esempio del musicista non è davvero buono. Quando un musicista raggiunge un alto livello di abilità, quando ha imparato tutta la teoria, quando può mescolare canzoni con gli occhi chiusi, quando può suonare oltre 9000 strumenti contemporaneamente, non ha altro da fare. Il programmatore o l'ingegnere informatico deve conoscere le nuove tecnologie per tutta la vita. C'è sempre qualcosa di nuovo da imparare. Quindi, rispondendo alla domanda, un ragazzo che programma tutto il giorno e non ha vita sociale è molto meglio di un ragazzo che non programma nel suo tempo libero.

2
@GabrielLlamas Le teorie della musica sono cose di base come fondamenti di algoritmi, calcolo distribuito e sistemi operativi che impariamo al college. Queste basi non cambiano molto nel tempo. In circa 20 anni avevamo già il modello di client e server, e ora abbiamo ancora il modello di client e server. Quindi le basi di client e server si applicano ancora, sono solo le cose di alto livello che cambiano rapidamente. Puoi pensare a diversi strumenti come a diverse tecnologie come HTML, Javascript. Ma se sei in grado di applicare i fondamenti, le cose saranno simili.
David Gao,

1
Un altro esempio è come quando sai come programmare in c, imparare c ++ non sarà difficile. Ricordo di aver risolto le domande di programmazione del mio coinquilino usando Scheme senza conoscere alcun Scheme. Il programma di apprendimento non è stato affatto difficile per me perché so ad alto livello quale sia un linguaggio funzionale.
David Gao,

150

C'è di più nascosto in questo messaggio.

A molti programmatori entusiasti piace esplorare le cose, sperimentare, seguire le loro idee, è così che impariamo e otteniamo le nostre capacità e visione.

Di solito non riesci a seguire i tuoi interessi durante l'orario di lavoro. Fai solo le cose che ti viene detto di fare e basta. Solo pochi di noi hanno la fortuna di fare sul lavoro ciò che faremmo personalmente anche se non pagato.

Pertanto, se non stai facendo nulla in più, non stai sviluppando il tuo potenziale. E questo è esattamente il problema.


2
wow, questo è un grande sollievo, dato che a volte sento di essere interessato a conoscere altri aspetti della programmazione, ma il lavoro fa sembrare tutto come un duro lavoro.
Melaos,

3
Vero. Una cosa da tenere presente è qualsiasi Accordo di invenzione che potresti aver firmato durante l'assunzione. Non li usavamo, ma avevo un accordo verbale con i miei programmatori: se è fuori dall'orario di lavoro e non è in diretta concorrenza con l'azienda, allora mi diverto. Non mi importava nemmeno se usassero le attrezzature dell'azienda, sebbene ci fosse un accordo generale sul fatto che fosse "più pulito" tenerlo a casa.
Peter Rowell,

3
Va bene seguire la tua curiosità fuori orario. Questo potrebbe essere il modo in cui distribuire automagicamente la prossima versione di Windows in tutta la notte (Mwah hah hah). Oppure potrebbe essere la fotografia, la birra o il canottaggio. Gli interessi esterni ti rendono una persona più rotonda. Non DEVE essere correlato al tuo lavoro quotidiano.
quick_now

5
-1 Come altri hanno notato in altre risposte e commenti, ciò implica che non è possibile ottenere realisticamente un lavoro buono, divertente e stimolante. Nella mia esperienza personale questo non è vero. Finora ho imparato molte cose nuove nella maggior parte dei miei lavori. IMHO è una questione di attitudine personale almeno quanto quella della cultura aziendale.
Péter Török,

26
Se ti piace programmare e non ti piace il tuo lavoro, dovresti trascorrere il tuo tempo libero alla ricerca di un lavoro migliore.
Nikie,

70

Non ti rende un cattivo sviluppatore, ma sfortunatamente, devi ancora competere con quelli che lo fanno.

Leggi questo, dal blog di Seth Godin :


Irragionevole

È irragionevole alzarsi dal letto in una giornata di neve, quando la scuola è stata cancellata, e trasformare i tempi di inattività in sei ore di lavoro in un laboratorio di fisica del credito extra.

È irragionevole lanciare un prodotto tecnologico che salta la curva di sviluppo di nove mesi, portando la prossima generazione molto prima di concorrenti più ragionevoli.

È irragionevole per una società di autotrasporti rispondere al telefono al primo squillo.

È irragionevole avviare una nuova società senza la rassicurazione che il denaro può portare.

È irragionevole aspettarsi che uno studio medico abbia un personale della reception piacevole e disponibile.

È irragionevole abbandonare un buon concerto nell'economia di oggi, anche se vuoi fare qualcosa di coraggioso e originale.

È irragionevole per gli insegnanti aspettarsi che possiamo consentire ai bambini delle città svantaggiate di fare bene al liceo.

È irragionevole trattare i tuoi colleghi e concorrenti con rispetto, vista la pressione che stai subendo.

È irragionevole aspettarsi che chiunque tranne una grande donna, qualcuno con sia unità che vantaggi, possa fare qualcosa di importante in un mondo in cui il mazzo è impilato contro la gente comune.

È irragionevole dedicare anni della tua vita a creare un prodotto che la maggior parte delle persone non apprezzerà mai.

Fortunatamente, il mondo è pieno di persone irragionevoli. Sfortunatamente, devi competere con loro.


13
Sì, è anche irragionevole lavorare 8 ore al giorno e poi tornare a casa per lavorare ancora. Per chi lavori? E perché? Devi rispondere a queste domande (chi sta pagando? Perché? Per ottenere cosa?) Se sei stanco mentalmente entro la fine della giornata, la cosa migliore che puoi fare per te è - qualcos'altro!
quick_now

37
Supponete che gli sviluppatori non siano sfidati al lavoro e non apprezzino il loro lavoro. Non è vero. Le persone che programmano solo al lavoro non programmano a casa perché sono già pienamente soddisfatte
nessuno il

8
-1 perché a) le virgolette non sono direttamente correlate a questa domanda, b) IMO (la maggior parte di) queste cose non sono affatto irragionevoli. Molte persone ragionevoli possono pensare sia a lungo che a breve termine. OTOH molti di noi hanno esperienza nell'inventare belle (e false) spiegazioni razionali per la nostra pigrizia / incompetenza / disattenzione :-(
Péter Török,

13
-1 È irragionevole chiamare un sacco di cose ragionevoli irragionevoli. Non aggiunge nulla alla domanda e suona bene, principalmente come molte cose che Seth Godin scrive.
Vitor Py,

5
"È irragionevole aspettarsi che uno studio medico abbia uno staff della reception piacevole e disponibile." No non lo è. Ciò che è irragionevole sono i medici che fanno pagare quello che fanno e poi ci sottopongono al personale scortese dell'ufficio, attendono a lungo nelle loro sale d'attesa dell'ufficio ed essendo irrispettosi personalmente.
GreenMatt,

57

Per rispondere alla domanda posta: non programmare nel tempo libero non ti rende uno sviluppatore cattivo, tuttavia, programmare nel tuo tempo libero può renderti uno sviluppatore migliore.

Programmare nel tuo tempo libero sicuramente non danneggerà le tue abilità, ma non dovresti sentirti obbligato a farlo. La programmazione sembra essere un campo relativamente unico perché per molte persone è sia il loro lavoro che il loro hobby, quindi si divertono a programmare nel tempo libero.


8
La programmazione non è unica nel farlo sia come carriera che come hobby. Un paio di esempi: una volta sapevo che diversi piloti di compagnie aeree hanno i loro piccoli aerei che volano per divertimento. Ho conosciuto astronomi professionisti che osservano con le stelle.
GreenMatt,

4
Con " relativamente unico" intendevo dire che è uno tra i pochi, ma certamente non l'unico. Conosco molte più persone che, sebbene possano godere del proprio lavoro, non passerebbero il tempo a fare se non vengono pagate. Spesso è difficile trovare lavoro facendo ciò che ti appassiona.
shortkaik,

1: Tecnologia, lingue e tecniche cambiano così frequentemente e così rapidamente. I programmatori devono trascorrere un po 'di tempo libero affinando il loro mestiere. // Domanda correlata: ti sentiresti a tuo agio con un PCP che non ha letto le riviste mediche?
Jim G.

Penso che questa risposta riassuma meglio la situazione. Ma dipende interamente dalla propria situazione. Se il tuo lavoro soddisfa tutte le tue esigenze di programmazione, in termini di spingere te stesso, tenersi aggiornato con la tecnologia, ecc., C'è molto meno bisogno di fare lavoro nel tuo tempo. Tuttavia, se il tuo lavoro è abbastanza facile, usando la tecnologia più vecchia, allora un po 'di tempo dovrebbe essere speso per migliorare le tue abilità e conoscenze nel tuo tempo.
Nellius,

@shortkaik "La programmazione nel tempo libero può renderti uno sviluppatore migliore" - Non è sempre vero. Se sei sfidato nel tuo lavoro, allora se stai programmando anche a casa, ciò contribuirà alla tua stanchezza e al tuo esaurimento più che alle tue capacità, anche questo può danneggiare la tua produttività sul lavoro. D'altra parte, se non sei soddisfatto di ciò che il tuo lavoro ti dà (e prende da te), la codifica aggiuntiva dopo potrebbe essere una buona decisione.

23

No, non ti rende un cattivo programmatore. A seconda di ciò che fai, potrebbe renderti un programmatore migliore a lungo termine. All'inizio della tua carriera può influenzare la velocità con cui apprendi la varietà di abilità di cui hai bisogno. Tuttavia, potresti raccogliere competenze e informazioni che ti aiuteranno a lungo termine. Fare un po 'di esercizio fisico non farebbe male.

C'è una buona dose di ricerca che mostra sbirciatine delle prestazioni di circa 40 settimane lavorative. Mentre possiamo essere in produzione per un periodo di tempo lavorando più ore, a lungo andare perdiamo efficienza. La ricerca che ho visto mostra che le persone che lavorano 80 settimane sono produttive quanto quelle che lavorano 40 ore alla settimana.

Ci sono alcune cose su cui puoi riflettere sulle ore di spegnimento (o accensione) che potrebbero aiutarti a ottenere prestazioni migliori:

  • Cosa fai? Puoi farlo meglio? Devi farlo?
  • Cosa stai imparando? Cosa devi imparare?
  • In quali problemi ti imbatti? Chi è il migliore per risolverli? Cosa sai fare?

Programmare come un hobby non significa lavorare dopo ore sul lavoro biz - questo non si ridimensiona definitivamente. Ma programmare un gioco su iPhone in ObjC come hobby può migliorare le tue abilità e la produttività totale sul lavoro (se il lavoro è ad esempio la scrittura di app finanziarie in Java EE).
Heiko Rupp,

@Heiko Vero, ma ci sono molte altre abilità oltre alla programmazione che possono renderti un programmatore migliore. Un buon sviluppatore ha molte abilità oltre alla programmazione.
BillThor,

Certo :) Mi riferivo in particolare alla "massima produttività alle 40h" - che sembrava che se facessi 5 ore di programmazione per hobby, puoi fare solo 35 ore al lavoro. Che io non credo che sia giusto
Heiko Rupp

1
@Heiko Il lavoro è sufficientemente diverso, quindi potresti essere in grado di fare entrambi. I miei primi due anni dopo la laurea, ho regolarmente superato le 40 ore settimanali, ma ho applicato un'ampia varietà di abilità. Ho imparato molto e non sembra aver colpito il muro delle prestazioni. Per fortuna, avevo un amico che mi avrebbe trascinato fuori dall'ufficio qualche volta la sera. In un altro progetto sono tornato a casa alle 14:00 quando mi sono reso conto di non aver realizzato nulla dalle 10:00. Ho ancora fatturato le 4 ore.
BillThor,

15

È possibile diventare un buon sviluppatore di software senza fare extra al di fuori del proprio lavoro?

Decisamente.

Potrebbe volerci più tempo che se dovessi passare ore extra a perfezionare la tua abilità. Ho anche trovato difficile dedicare abbastanza tempo all'auto-miglioramento se sono impiegato a tempo pieno e faccio poca programmazione al di fuori dell'orario di lavoro.

Quando ero più giovane, dedicavo molto più tempo all'apprendimento di quanto non faccia ora. I concetti che uso quotidianamente sono profondamente radicati a questo punto, e sembra più facile acquisire ulteriori conoscenze con questa esperienza alla mia portata.

I "bravi" programmatori sembrano dedicare più ore in più perché sono ossessivi per natura, tendono verso la fine antisociale dello spettro e godono sinceramente della programmazione e l'intero ciclo di risoluzione dei problemi.


13

Nel grande schema delle cose si tratta di trovare il giusto equilibrio nella vita.

L'importante è se ti piace programmare e se continui ad imparare, indipendentemente dal livello a cui sei. Indipendentemente dal fatto che tu programmi o no al di fuori del lavoro non ti rende automaticamente un programmatore "buono" o "cattivo".

Per dare una prospettiva personale, ho programmato per circa 25 anni (prima da bambino, poi professionalmente). Lo adoro assolutamente.

Tuttavia, non programma quasi mai al di fuori del lavoro. Questo ha a che fare con diverse cose:

  • Sono molto fortunato nel fatto che al lavoro riesco a fare ciò che amo, ogni giorno, tutto il giorno.
  • Molto semplicemente, ci sono altre cose nella vita e ci sono solo tante ore al giorno.

-1: Sì, ci sono altre cose nella vita, ma ciò non risponde alla domanda; stai semplicemente cercando di convincerti che stai scegliendo il percorso migliore.
Jim G.

9

Puoi diventare un buon programmatore semplicemente programmando durante il lavoro, soprattutto se gestisci bene la tua carriera. Tuttavia, anche i più grandi programmatori programmano durante le ore di inattività. Detto questo, una persona che sceglie buoni lavori con molte opportunità di apprendimento, usa bene il proprio tempo di lavoro, e così via sarà un programmatore migliore di qualcuno che codifica a casa perché non riesce a trovare lavori che offrano sfide interessanti durante giornata lavorativa.

Mentre la codifica a casa è preziosa, direi che massimizzare il valore del tuo ambiente di lavoro (imparando dai colleghi, scegliendo buoni lavori, gestendo la tua carriera in modo aggressivo) è spesso ancora più prezioso. I più grandi programmatori fanno entrambe le cose, inoltre hanno grandi attitudini verso l'apprendimento e il tutoraggio degli altri.


"Tuttavia, anche i più grandi programmatori programmano durante le ore di inattività." Non hai prove per questo.
Djechlin,

7

Il vero problema è se un nuovo sviluppatore sta programmando abbastanza (su problemi abbastanza impegnativi) per superare alcune centinaia di migliaia di righe di codice di pratica e diventare un programmatore decente.

In teoria questo può essere fatto al lavoro, nel tempo libero o in entrambi i modi. La pratica deve essere in qualche modo auto-diretta, quindi puoi imparare cosa devi imparare. Ciò significa che il lavoro è un po 'flessibile.

Molte volte i lavori entry-level sono un mucchio di correzioni di bug o altri lavori che non ti insegneranno a essere bravo. Quello che devi fare è scrivere un sacco di codice da zero, e quel codice probabilmente sarà cattivo. È difficile per i datori di lavoro pagare per questo. Ecco perché le persone finiscono per fare un progetto open source sul lato o lanciare una startup o altro.

Quando la gente dice che devi programmare nel tuo tempo libero, penso che significhi davvero che devi affrontare anni di pratica significativa all'inizio. Devi fare tutto il necessario per ottenere la pratica e imparare a scrivere e mantenere una grande base di codice da zero. Se nessuno ti paga per scrivere da zero una serie di progetti probabilmente disastrosi, allora il tempo libero è l'unica opzione.

Se hai già praticato la pratica da giovane e sei diventato un buon programmatore, non penso che perderai le abilità di base se le mantieni da 9 a 5 in seguito. Successivamente è più una questione di stare al passo con le nuove tecnologie che non richiedono molto tempo.

Tuttavia, è un raro lavoro entry-level che ti darebbe da solo la quantità e la qualità della pratica per diventare un buon programmatore. Un nuovo sviluppatore deve prendere l'iniziativa per apprendere, non semplicemente uscire in un lavoro entry-level facendo attività entry-level.

Sarebbe davvero difficile diventare un buon programmatore da zero se avessi già una famiglia e enfatizzassi fortemente l'equilibrio tra lavoro e vita privata. Proprio come sarebbe davvero difficile diventare un medico o diventare un musicista virtuoso o qualsiasi altra cosa in quella situazione. C'è una ragione per cui le persone tendono a superare le migliaia di ore di pratica quando sono più giovani piuttosto che quando sono più grandi.


5

Se trascorressi del tempo nei prossimi sei mesi a sviluppare un gioco di base nel mio tempo libero e tu no, e supponendo che tutte le altre cose siano uguali (non lo sono mai), chi di noi ne saprebbe di più? Chi di noi avrebbe più abilità ed esperienza?

Questo effetto sarebbe cumulativo, in quanto le precedenti conoscenze fuori orario alimenterebbero il nuovo lavoro e le nuove conoscenze fuori orario.

Ed è per questo che la gente consiglia di programmare nel tempo libero, per quanto posso dire.


5

Tra grande e cattivo ci sono molti livelli nel mezzo. Non puoi diventare un grande sviluppatore facendolo solo circa 8 ore al giorno, possibilmente lavorando su problemi da un campo molto limitato.

Se il tuo lavoro è abbastanza vario, puoi diventare "decente" o "realizzato" o qualunque aggettivo tu preferisca, ma per essere un grande sviluppatore dovresti essere un po 'mentale, temo.

Un altro motivo per fare la programmazione hobby è che in un lavoro spesso devi aderire a standard non ottimali e scendere a compromessi in generale e anche quando impari una cosa nuova, potresti non essere autorizzato a usarla.

E ancora un altro, ancora più prosaico è che qualunque codice tu scriva sul lavoro è di proprietà del tuo datore di lavoro. Non puoi tornare ad esso e imparare dai tuoi vecchi errori anni dopo, quando lavori per qualcun altro.


5

Ci vogliono 10.000 ore di sforzo per diventare un esperto in qualsiasi cosa. [Michael Gladwell, "Outlier"]

Quindi, fare un lavoro extra prima di arrivare a quel livello ti accelererà lungo il percorso verso il vero status di Esperto.

Una volta superato quel livello, quindi passare più tempo avrà rendimenti piccoli / decrescenti.


3
Ma cos'è una "cosa" in qualcosa? La "programmazione" è una sola "cosa" o sono le cose "haskell", "lisp", "java", "python", ecc? Oppure "programmazione funzionale", "programmazione GUI", "programmazione di basso livello", ecc.? Di per sé, questo non ci dice nulla.
André Paramés,

4

Non dovresti guardarlo come "Mi rende un cattivo programmatore" perché come ogni abilità più pratica rende solo uno migliore.

Quindi, se vuoi essere migliore di quello che sei attualmente e apprendere nuove tecnologie e domini che il tuo lavoro non consente, è qui che lo sforzo extra e il tempo spesi sono utili.

Ma dedicare più tempo alla programmazione (solo per dimostrare a qualcuno che si codifica in più) non significa necessariamente diventare un buon programmatore a meno che non si impari ciò che si fa e si faccia qualcosa di diverso o si migliora ciò che già si conosce, piuttosto che tagliare / copiare / incollare alla cieca e mettendo insieme hack. Mettere ore extra e fare la stessa cosa più e più volte in nessun modo penso che ti aiuterà a migliorare.


Penso che il punto dell'OP sia che alcuni programmatori diffondano l'idea che se non si programma al di fuori del lavoro, allora si è un cattivo programmatore. Avevo perso il conto del numero di volte che ho visto post su SO, qui e altrove in cui qualcuno dice che quando intervista un potenziale nuovo assunto chiedono da che parte sta andando l'intervistato e se la risposta è "Nessuna ", quindi l'intervistato non è visto abbastanza appassionato di programmazione come non è considerato per il lavoro.
GreenMatt,

+1 - Non fa molto bene se tutto ciò che fai è quello che stai già facendo al lavoro.
Dunk,

Solo la pratica da sola non ti rende migliore, devi mettere in pratica le cose giuste da cui puoi effettivamente radicare ulteriormente le cattive abitudini e peggiorare.
HLGEM,

4

Durante il giorno la tua programmazione è scommesse brevi. Ci sono soldi da guadagnare, sai esattamente quanto e per cosa, e non hai molto più da guadagnare di una busta paga.

Di notte stai lavorando a scommesse lunghe, idee folli che non funzioneranno affatto. Questi sono i progetti che ti catapulteranno fuori dal rango e dai file. È così che diventi l'inventore di PHP piuttosto che la scimmia codice che lo utilizza.

Intervisto molti programmatori, e se hanno fatto cose strane interessanti al di fuori dell'orario di lavoro è un semaforo istantaneo. È sorprendentemente raro.

Anche se dirò questo: una volta un ragazzo che ha fatto un sacco di cose interessanti al di fuori dell'orario di lavoro si è rivelato essere un totale disastro di un noleggio. Sono ancora sconcertato da quel ragazzo.


3

Essere un buon sviluppatore di software nel cuore, dipende davvero dal tuo cuore. Puoi provare a essere un grande musicista e dedicare molto tempo alla musica, ma ciò non ti rende un buon musicista. Devi goderti quello che fai per essere bravo in quello. Inizialmente avevo le stesse domande che tu ma a causa dei miei gusti ho iniziato a fare cose extra sul software oltre al normale lavoro. Ha migliorato le mie prestazioni nel normale lavoro e mi ha anche dimostrato con molto tempo di impegnarmi in altre attività non correlate al software. Quindi la linea di base è goditi ciò che fai e alla fine farai ciò che è richiesto.


3

La vera domanda è cosa stai facendo tutto il giorno. Le analogie con atleti e musicisti di solito non vengono applicate correttamente. Il tuo lavoro quotidiano non è pratica, è prestazione, a meno che tu non abbia la capacità esplicita di trascorrere parte della giornata di lavoro in "pratica" autentica. Come lo sai? Se non hai mai il tempo di fare qualcosa di "giusto" o imparare a fondo una nuova lingua / tecnologia / quadro / ecc., Allora non ti stai esercitando, ti stai esibendo. Atleti e musicisti professionisti non migliorano durante il gioco o il concerto, ma migliorano durante la pratica focalizzata. Quindi, se sei come la maggior parte, l'unica volta che hai per una vera "pratica" di programmazione è al di fuori del lavoro. Detto questo, vale la pena solo se è focalizzato. Se fai hack per tutto il giorno e poi fai hack per tutta la notte, ti stanchi solo, non meglio.

Ad esempio, devi ottimizzare un pezzo di codice al lavoro e lanciare i soliti strumenti di profilatura su di esso e accelerarlo forse del 50% e passare al compito successivo, ma pensi che ci siano altre cose che potresti fare che potrebbero aiutare anche di più ma non hai il tempo di provarli. Se porti quel pezzo di codice a casa con te e passi qualche ora in più a scriverlo, stai imparando tecniche che ti migliorano la prossima volta che ottimizzi qualcosa. Non stai facendo la stessa cosa a casa come al lavoro.

La pratica riguarda l'aggiunta di abilità e affinamento e quelle attività sono necessariamente svolte in modo artificiale (è come isolare un gruppo muscolare in palestra, nessuno lo fa durante la normale attività fisica). Costruire app a casa non è automaticamente pratica. Il lavoro a casa dovrebbe concentrarsi sulle tecniche e sul processo, non sul prodotto finale. Se un prodotto finale è ciò di cui hai bisogno per essere motivato, fantastico. Non cadere nella trappola dello sviluppo nello stesso modo in cui lo fai al lavoro.

Il movimento di codifica dei kata è un esempio di ciò che riguarda la pratica.


3

Per rispondere alla tua domanda: No, non ti rende un cattivo sviluppatore.

Tuttavia , potrebbe rendere la tua vita professionale lungo la strada un po 'più difficile. Se hai un lavoro in cui apprendi costantemente nuove tecnologie che ti aiuteranno a migliorare il tuo percorso professionale (che si tratti di promozioni nel tuo lavoro attuale o di nuovi lavori in diverse aziende), allora sei pronto.

Ma se stai attualmente lavorando in un'azienda in cui la tecnologia utilizzata cambia di rado, allora tra 2 o 5 o 10 anni potresti trovare difficile ottenere quel lavoro successivo. Se stai programmando a casa con le nuove tecnologie e hai qualcosa da mostrare (app, sito Web, progetto open source, ecc.), Troverai molto più facile ottenere quel lavoro successivo.

Certo, potresti essere completamente felice di fare esattamente la stessa cosa per i prossimi 40 anni e finché la tua azienda e le tecnologie continueranno a esistere, allora sei pronto!


1

Ci sono state volte nella mia vita in cui ho scritto molto codice al di fuori del lavoro e altre volte in cui non ho fatto nulla perché stavo lavorando su altre cose. Dovresti sempre imparare, ma ciò non significa che devi sempre imparare a programmare nel tempo libero. Se vuoi lavorare su qualche altra abilità, che si tratti di carpenteria, ricamo, giardinaggio ecc. Nel tuo tempo libero, ti aiuterà a crescere come persona.

Non cadere nella trappola di pensare di sapere tutto ciò che devi sapere sulla programmazione in modo da poter smettere di imparare.


1

Questo è davvero un post interessante. Sviluppo software da 10 anni e adoro il mio lavoro! Anch'io ho molti hobby e provo a gestirli correttamente. Ma mi viene un calcio provando cose nuove trascorrendo un'ora o due davanti al pc prima di andare a letto. Nel mio caso, sono dipendente dallo studio e dalla scrittura del codice di gioco. Non sempre ho tempo a giocare, ma adoro leggere il codice sui giochi. Ad essere sincero, penso che il miglior codice che abbia mai visto provenga dai giochi e applico queste competenze al mio codice sul lavoro. Imparo costantemente OGNI SINGOLO GIORNO, quindi IMO, se sei uno sviluppatore, non raggiungerai mai il tuo picco, c'è SEMPRE un modo migliore di fare qualcosa ....


1

Questo è un grande post.

Direi di no, non ti rende un cattivo programmatore. Se le tue recensioni sono state buone e hai completato i tuoi compiti bene e in tempo, sei esattamente l'opposto. In tutta onestà, sono invidioso di te che ti riempia il codice mentre sei al lavoro.

Il motivo principale per cui programmo nel mio tempo libero è che non mi interessa davvero quello che faccio sul lavoro e uso il mio tempo libero per fare quello che mi piace. Quello che mi piace fare è la programmazione di videogiochi. Non esiste una società di giochi valida per cui lavoro (dove ho una famiglia qui ora), quindi posso dare una mano con i giochi indie sul lato quando posso. È l'unico modo per curare il prurito. Se facessi ciò che amavo tutto il giorno, sarebbe molto probabile che non lo farei nel tempo libero.


1

Il mio consiglio sarà: usa il tuo tempo libero per imparare cose, per tenerti informato: leggi libri IT, ascolta il podcast Dev, ecc. Riguardo alle tue attività post-lavoro: non cambia nulla. Altrimenti, diventerai una persona noiosa.


1

Non ti rende uno sviluppatore cattivo, potrebbe anche non renderti una sorta di sviluppatore "ok", ti rende solo quello che sei. Penso, tuttavia, che troverai che la maggior parte delle persone che sono hacker davvero eccellenti tende a provare nuove cose. In qualsiasi momento indagherò su diverse lingue, database, framework web, robotica, ecc. Ho due bambini piccoli e una moglie, un mutuo, tutta quella roba - ma non vedo l'ora di poter ottenere 2 o 3 ore per andare in giro con le cose. Certo, C # e .NET vanno benissimo per guadagnare uno stipendio e in realtà mi piace il mio lavoro, ma scherzare con Scala e Lift è stato un vero spasso per me negli ultimi mesi. Ci sono sviluppatori che si classificherebbero come "appassionati" e quelli che stanno semplicemente "cavalcando".


1

Questo significa che non sono uno sviluppatore di software "vero" nel cuore?

Assolutamente no. Significa solo che ti piace fare cose diverse dalla codifica. Non c'è niente di sbagliato in questo, e non ti rende migliore o peggiore di chiunque altro, sviluppatore o no.

È possibile diventare un buon sviluppatore di software senza fare extra al di fuori del proprio lavoro?

Ovviamente. Alcuni di questi dipendono dall'ambiente di lavoro. Se hai un lavoro noioso, che succhia l'anima, che ti succhia tutto il tempo e poi alcuni che fanno lavori di manutenzione noiosi, allora essere in grado di usare il tempo di lavoro per sviluppare le tue abilità sarà molto limitato. Se hai il tipo di ambiente in cui hai un po 'di latitudine per fare ciò che vuoi esplorare e imparare, approfitta di quell'opportunità per sviluppare nuove abilità che aiutano anche il tuo datore di lavoro o i tuoi collaboratori.

Se trovi qualcosa di interessante di cui vuoi saperne di più e non hai il tempo o la possibilità di usarlo sul lavoro, allora devi valutarlo rispetto alle altre esigenze del tuo tempo, siano essi familiari, amici o hobby.


+1. Sì, dipende davvero dall'ambiente di lavoro. In un posto con persone intelligenti ( preferibilmente più intelligenti di loro ) che, come gruppo, si preoccupano di ciò che fanno e si impegnano costantemente per migliorare tutto (prodotto finale, codice sottostante, strumenti, condizioni di lavoro, ecc.) Hai buone possibilità di diventare un grande sviluppatore, anche se preferisci trascorrere il tuo tempo libero altrove rispetto a un computer.
Jonik,

1

Di recente ho partecipato a diverse interviste per assumere programmatori. Ho scoperto che i candidati che mi colpiscono di più, sia come programmatori che come persone con cui non mi dispiacerebbe lavorare, sono quelli che trascorrono una notevole quantità di tempo in attività NON di programmazione (in particolare musica, ma anche matematica pura, filosofia e letteratura). A dire il vero, la maggior parte fa anche un po 'di programmazione per hobby, ma hanno anche interessi di bilanciamento.


Ora, se solo riuscissi a convincere i musicisti di quello ... sembrano pensare che non puoi essere bravo in più di una cosa. La musica e la programmazione sono molto simili.
Michael K,

Hai risposto a una domanda completamente diversa. Il tipo di persone con cui preferiresti lavorare è probabilmente molto diverso da quello che rende un programmatore eccezionale. Se vuoi divertirti con le persone con cui lavori e divertirti socialmente, forse il super programmatore non è la soluzione migliore. Tuttavia, se il tuo carico di lavoro tipico è di 2-3 mesi per completare i progetti di 12 mesi, la personalità non avrà molta importanza quando scoprirai che il super programmatore ti permetterà di avere una vita fuori dal lavoro, anche se quella vita è facendo più programmazione.
Dunk il

Solo una nota a margine: ho scoperto che le persone che più mi colpiscono come persone durante un'intervista sono quelle di cui devo essere più preoccupato. Nella mia prima carriera, le uniche persone che ho raccomandato per l'assunzione che si sono rivelate meno tecnicamente capaci sono anche le più socialmente convincenti e convincenti durante l'intervista.
Dunk il

1

Se hai un lavoro che ti offre un'esperienza intellettuale completamente coinvolgente, è probabile che sarà la tua vita mentale - il lavoro esterno è per sfogarti. Se il tuo lavoro non ti coinvolge, è molto più probabile trovare soddisfazione intellettuale dopo l'orario di lavoro. Questo è vero in qualsiasi attività commerciale, non solo nella programmazione.

La codifica in un ufficio attenua la tua creatività, punto. Almeno 8 ore al giorno, la tua mente sta facendo uno sprint continuo per conto di qualcun altro. È normale uscirne e non voler tornare su un computer. Quando lavoravo da un ufficio, era lo stesso per me: tornavo a casa e volevo solo cucinare, o andare a vedere un film, stare con gli amici o semplicemente una zona davanti alla TV. Poi, dal 2001 al 2004 circa, dopo che la compagnia ha lavorato per il tank e mi sono rotto, sono uscito, ho guidato un taxi e ho aspettato dei tavoli. In quel momento ho iniziato davvero a scrivere codice durante le mie ore libere.

La verità è che non credo che qualcuno abbia più di 8 ore al giorno di tempo di programmazione di alta qualità. Molti programmatori ne hanno solo 2-3, ma potrebbero essere le persone più efficienti là fuori. È solo come lo usi, come lo diffondi.


1
Non sei mai stato molto vicino agli sviluppatori OSS, vero? Quando la codifica diventa una passione, a volte vuoi esserlo per 24 ore di seguito.
Martijn Pieters,

1

È possibile diventare un buon sviluppatore di software senza fare extra al di fuori del proprio lavoro?

Dipende dall'industria in cui lavori. Alcuni sono più competitivi di altri.

Se non ti piace imparare nuove cose da solo, probabilmente rimarrai al tuo attuale livello di abilità. Potrebbe essere abbastanza ... o no.

Non si tratta del tempo dedicato, della curiosità e della sete di conoscenza e padronanza. Ovviamente, non ha nulla a che fare con l'aggiornamento , si tratta di cose fondamentali, spesso difficili: compilatori, monadi, architetture di memoria, ecc. Cose che si estendono ed espandono il tuo cervello.

Volere programmare a casa è solo un importante effetto collaterale. Ma non sottovalutarlo, senza farlo, l'apprendimento è spesso superficiale.

Tutti i migliori sviluppatori che conosco hanno queste caratteristiche.


1

No, non ti rende meno programmatore di chiunque altro. Sei solo più social. Sono invidioso ad essere sincero.

Non devi usare tutto il tuo tempo libero per scrivere il codice. Il mio lavoro è piuttosto semplice: la gestione dei server. Scrivo molto codice perché non devo fare molto al lavoro. Questo non mi rende migliore o peggiore di chiunque altro. Se sei appassionato di programmazione, perché non lavorare come freelance? Spesso inserisco annunci Craigslist per i miei servizi e ne guadagno una buona quantità. È anche un'ottima esperienza di apprendimento poiché lavorerai con startup e talvolta anche con siti Web di grandi dimensioni. Spero che sia di aiuto. :)


La programmazione per hobby ti rende "più social" intrinsecamente. Puoi programmare da solo in isolamento perfettamente bene.
Mufasa,

0

Ho fatto una domanda simile un paio di giorni alla volta. Sembra che le persone sembrino più appassionate del nostro lavoro se dedichiamo non solo tutto il nostro giorno ad esso, ma anche tutto il tempo che abbiamo a disposizione per le nostre vite personali.

Di tanto in tanto scrivo un po 'di codice sul mio tempo libero, ma lo faccio per divertimento, non perché ho intenzione di ottenere una crescita o un riconoscimento professionale. Mi congratulo con le persone che hanno l'energia per farlo, ma ti piace di più esaurirti lavorando più ore e progetti extra che diventare davvero più esperto in qualsiasi cosa.

Alla fine della giornata, tutto ciò che conta sono la tua capacità di apprendere nuove cose (soprattutto sul lavoro), la tua capacità di comunicare bene e avere buone capacità di gestione del tempo. Che ti trasformi in un buon professionista.


1
Penso che tu abbia centrato il punto chiave. Se programmare in casa è come fare un lavoro extra, non sarà di grande aiuto ed è probabilmente anche dannoso. Tuttavia, la maggior parte (se non tutte) le persone che conosco quel programma a casa lo fanno perché è divertente per loro. Accade così che quelle sono le stesse persone che desidero nei miei progetti perché sono molto più abili di quelle che non lo fanno. La programmazione in casa è il motivo per cui sono più abili, forse, forse no, ma tenderei a pensarlo perché stanno facendo quello che vogliono. Inoltre, è abbastanza difficile rimanere aggiornati sulle tue abilità se non ti impegni.
Dunk,

0

È possibile diventare un buon sviluppatore di software senza fare extra al di fuori del proprio lavoro?

Per me si tratta di equilibrio.

Anche se amo programmare è solo una parte di me, ho altri interessi. Come vedo questo se sono felice (facendo altre cose che mi piace fare) e trovo il mio lavoro interessante e appagante (cosa che faccio) che, a lungo termine, sto per diventare uno sviluppatore di software migliore.

PS Ammetto di non aver letto tutti i post precedenti in questa pagina.


Perché il -1? È una risposta perfettamente ragionevole. + 1
zzzzz,
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.