È possibile che un dilettante diventi un buon programmatore? [chiuso]


46

Un programmatore professionista a tempo pieno può fare un ottimo lavoro imparando continuamente dal proprio lavoro. Come può un programmatore dilettante allenarsi per diventare un buon programmatore?

** Se ti piace suonare o cantare, puoi farlo perché è il tuo hobby e sei interessato, e puoi diventare un buon cantante o lettore musicale. Ma non devi diventare un cantante professionista o cantare per vivere. Questo vale anche per i programmatori? Qualche programmatore amatoriale famoso?


3
Giusto. Quindi Wozniak non era un buon programmatore fino a quando non fu venduta la prima Apple (e divenne così un "professionista").
KeithS

Definisci "buono" ..

2
Ogni programmatore "bravo" una volta era un dilettante.
spudwaffle,

Risposte:


84

La chiave per diventare davvero bravi sta lavorando in una buona squadra. Molti dilettanti lavorano da soli, quindi vanno così lontano. In una squadra, impari dagli altri e diventi disciplinato perché i tuoi colleghi ti colpiranno con tutto ciò che ti sarà utile in caso contrario.

Per questo motivo, ti propongo di far parte di un team, ad esempio un progetto open source, o realizzare un progetto hobby con alcuni amici.


9
+1 Per lavorare in una buona squadra. Avere persone ugualmente o più qualificate nella tua squadra è estremamente motivante.
BenR

Ho dimenticato la parte della squadra nella mia lista di "insidie", +1
keppla

2
+1 Penso che sia la chiave: imparare da brave persone che hanno più esperienza di te. Entrare in una buona squadra è molto più facile a dirsi che a farsi.

1
+1 per la buona squadra. Se la squadra non è brava o migliore di te, non imparerai.
Spencer Rathbun,

4
Non è necessario far parte di una squadra per imparare dalle altre persone.
Emanuil Rusev,

53

La strada per diventare bravi a programmare è la stessa di cantare o suonare musica: pratica, pratica, pratica. Se passi abbastanza tempo a sviluppare software regolarmente per diversi anni, è probabile che diventerai bravo a farlo, sia all'interno che all'esterno dell'orario di lavoro.

Ora, oltre a dedicare più tempo alla pratica, c'è un altro motivo per cui i professionisti di solito diventano migliori dei dilettanti in un certo senso (sia nella musica che nella programmazione). Se sei un professionista, devi svolgere attività che non ti piacciono necessariamente, ma appartengono al più ampio lavoro di sviluppo di software (ad esempio test, discussioni con i clienti, scrittura di documentazione, impostazione di ambiente di sviluppo / creazione, scrittura di script di creazione, ecc. ). E ogni tanto ti viene anche chiesto di entrare in aree sconosciute, di imparare nuove lingue o piattaforme. Come dilettante, non sei obbligato a fare tutto ciò che non vuoi, il che rende probabile che rimani nella tua zona di comfort per la maggior parte della tua vita. In altre parole, puoi facilmente limitarti a una o poche aree specifiche a cui sei più affezionato,

OTOH anche molti sviluppatori professionisti si cimentano in questo, rimanendo nella stessa azienda facendo lo stesso lavoro di routine a malapena imparando qualcosa di nuovo per decenni ... Quindi la chiave per migliorare è il tuo atteggiamento. Se continui a studiare e cerchi consapevolmente opportunità di spostarti dalla tua zona di comfort in un territorio nuovo e sconosciuto, alla fine supererai gli sciami di "professionisti" che si stanno lentamente fossilizzando. Un buon modo per farlo potrebbe essere quello di contribuire ad alcuni progetti open source.

Una lettura consigliata è The Pragmatic Programmer: da Journeyman a Master , con molti consigli grandiosi e molto pratici su come continuare a migliorare.


3
+1 regola di 10.000 ore di Malcolm Gladwell da en.wikipedia.org/wiki/Outliers_(book)
StuperUser

Anche se un professionista deve svolgere lavori spiacevoli, c'è un altro aspetto: i lavori spiacevoli sono spesso noiosi e noiosi che insegnano poco. IOW l'amatore può spesso imparare di più allo stesso tempo scegliendo di sviluppare progetti interessanti. Ma una lezione importante è, ovviamente, che devi essere preparato a fare il lavoro noioso e noioso. Mi piace soprattutto il tuo "contributo a progetti open source" perché ciò significa lavorare con il codice di qualcun altro - imparare dall'esempio, come leggere codice non familiare ecc.
Steve314

@StuperUser il tuo collegamento è interrotto (seconda parentesi non inclusa nel collegamento ipertestuale).
Paperjam,

Alcuni dei migliori consigli che io abbia mai letto, "Se vuoi diventare un artista decente, disegna. Ogni mattina, fai uno schizzo, non puoi fare a meno di migliorare" .. trova un progetto ... ci sono molti il profitto è là fuori che ha bisogno di aiuto .. chiedi consiglio ("Sto costruendo un sistema di fatturazione, da dove comincio?", "Come gestisco la sicurezza contestuale?", ecc.) Il costo del fallimento è basso, e potresti semplicemente ottenere un concerto a pagamento ..
Bobby D

@ Steve314, i migliori professionisti scriveranno strumenti per automatizzare attività noiose banali. Utilizzando gli strumenti giusti per il lavoro giusto, ho ridotto il tempo per alcune attività di centinaia di fattori. (Strumenti ancora migliori potrebbero essere stati in grado di automatizzare completamente questo compito, ma ho raggiunto quello che sembrava un buon equilibrio tra sforzo di scrittura degli strumenti e risparmio di tempo.)
sarnold

18

Ma per un programmatore dilettante, come può allenarsi per diventare un buon programmatore?

Migliorate imparando, che in parte sta facendo, in parte riflettendo su ciò che è stato fatto.

Quindi, fondamentalmente, non c'è differenza tra hobbista e professionista, ma le "insidie" sono organizzate in modo leggermente diverso.

Le insidie ​​amatoriali sono, imho

  • la necessità di completare il tuo progetto, non importa quale sia, non è così forte quando non sei professionale . Questa può essere una buona cosa, perché non ti abituerai a tagliare gli angoli quando si tratta di qualità, ma la finitura (affatto! In tempo è ancora meglio) è un'abilità molto importante, che è più difficile allenarsi come dilettante, perché è facile lasciare morire un progetto e avviarne un altro.

  • la necessità di comunicare bene non è così forte. Su un progetto professionale, c'è un forte incentivo a comprendere veramente i clienti, anche se non sono in grado di formulare una frase coerente di quale sia il problema che vogliono che tu risolva. Se li fraintendi, o (il solito caso) non ti accorgi che non parlano di qualcosa che devi capire, prima o poi diventerà il tuo problema. Un progetto amatoriale può facilmente perdere tutti i potenziali utenti, a causa della non risoluzione dei loro problemi, ed essere "finito" in modo tecnico.

Le insidie ​​professionali sono

  • c'è spesso poca motivazione per migliorare . Sei lì 40 ore alla settimana, non importa se trovi la cura per il cancro o semplicemente bevi il caffè in un modo che sembra produttivo. L'apprendimento è qualcosa che fai principalmente per te stesso e spesso, se provi ad applicare le cose che hai imparato, ci sono forze che agiscono contro questo (il pensiero conservatore di gruppo, le gerarchie, persino gli styleguides possono essere usati come armi contro i miglioramenti). Ci vuole molto amore per la professione non solo rinunciare, ridurre le ore e cercare scopi alternativi nella vita.

  • c'è spesso poco da cui imparare . Sì, si PU try provare a prendere tutto come una sfida, ma dobbiamo essere onesti: dopo 1 anno del codice Spaghetti non ti è permesso di refactoring ("lo stai complicando!") In una lingua che hai più anni di esperienza in quanto probabilmente durerà, l'unica cosa che si impara è costruire una tolleranza contro la frustrazione e la politica aziendale.

Se suoni musica o canti, puoi ascoltarla per interesse, puoi ancora diventare un buon cantante o musicista, ma non è necessario diventare un cantante professionista o cantare per vivere.

Ovviamente non è necessario, ma quanti musicisti rifiuterebbero l'opportunità di abbandonare il lavoro e fare soldi con la loro musica?

Nell'IT, queste opportunità sono un po 'più probabili che nella musica, quindi penso che non sia impossibile diventare un famoso dilettante, ma spesso i dilettanti fanno della loro passione il loro lavoro (con problemi simili che i musicisti hanno quando devono capire la loro linea tra commercio e arte)


Questo fa male alla mia anima, è così vero per me atm, lol. 1 anno del codice Spaghetti che non ti è consentito refactoring ("lo stai complicando!")
Terrance

1
"c'è spesso poca motivazione per migliorare". se mai avessi un dipendente che trattasse lo sviluppo del software in quel modo, preferirei licenziarlo piuttosto che una persona che cerca di fare meglio anche se inavvertitamente rompono le cose dal loro tentativo.

@ Chris Marisic: allora sarei felice di lavorare con te. purtroppo, saresti l'eccezione nella fila dei miei datori di lavoro
keppla,

8

Temo che ci siano più possibilità di apprendimento per i dilettanti che per i droni aziendali a tempo pieno. Come amatore non sei limitato a nessuna tecnologia, ambiente, design e metodologia di sviluppo. Puoi fare tutto ciò che ritieni utile per il tuo sviluppo personale. Come sviluppatore a tempo pieno probabilmente lavoreresti su uno stesso prodotto per anni, seguendo la stessa routine, limitato dalle stesse linee guida aziendali. Per la maggior parte di noi non è altro che una stagnazione. Un po 'può essere appreso da un ambiente aziendale, una volta che hai familiarità con le basi comuni.

Questo è il motivo per cui molti sviluppatori a tempo pieno sono anche dilettanti, continuano a scrivere codice dopo il lavoro, stanno giocando con i loro progetti di giocattoli - è un po 'di libertà necessaria per una crescita.


6

Come programmatore amatoriale hai oggi molte possibilità per migliorare le tue abilità. Ho fatto quanto segue per migliorare le mie capacità mentre studiavo ingegneria del software.

Naturalmente devi anche applicare le tue conoscenze. Fallo attraverso uno stage, un progetto con amici o un corso di studio. Ci sono molti modi per migliorare te stesso, devi solo essere disposto a investire il tuo tempo libero. Inoltre, divertiti a imparare qualcosa di nuovo !


4

È possibile che un dilettante diventi un buon programmatore?

Sì, è possibile , tuttavia richiede molto tempo:

ci vogliono circa dieci anni per sviluppare le competenze in una vasta gamma di settori, tra cui il gioco degli scacchi, la composizione musicale, il funzionamento del telegrafo, la pittura, il piano, il nuoto, il tennis e la ricerca in neuropsicologia e topologia. La chiave è la pratica deliberativa: non solo farlo più e più volte, ma sfidare te stesso con un compito che è appena al di là delle tue attuali capacità, provarlo, analizzare le tue prestazioni mentre e dopo averlo fatto, e correggere eventuali errori. Quindi ripeti. E ripeti ancora.


Come può un programmatore dilettante allenarsi per diventare un buon programmatore?

Ancora dalla stessa fonte :

  • Interessati alla programmazione
  • Programma
  • Parla con altri programmatori
  • Se vuoi, metti quattro anni in un college
  • Lavora su progetti con altri programmatori
  • Lavora su progetti dopo altri programmatori
  • Impara almeno una mezza dozzina di linguaggi di programmazione

Non faccio spesso +1 risposte costituiti unicamente da collegamenti, ma questo articolo è la pena di leggere. Grazie.
sarnold,

ti dispiacerebbe spiegarlo in modo più dettagliato - come e perché risponde alla domanda posta? Le "risposte solo link" non sono del tutto benvenute allo Stack Exchange
moscerino

1
@gnat Il link dice tutto - speriamo che sia meglio dopo la modifica.
BЈовић

3

Come dilettante hai più opzioni per cercare pratiche migliori rispetto a molti professionisti. I professionisti sono spesso sotto pressione per "appena fatto".

Non ho visto corsi come quelli da cui ho imparato la programmazione, ma ho imparato da alcuni brevi corsi gratuiti (1-3 ore) presentati dall'Università a cui stavo frequentando. Avevano lo scopo di consentire agli uomini d'affari di comprendere il codice scritto per loro. I corsi hanno presentato un codice scritto molto bene (commenti inclusi) che ha risolto un problema comune nella vita reale. Il codice è stato quindi rivisto con una spiegazione delle funzionalità del linguaggio e del perché sono stati utilizzati nel modo in cui si trovavano. Nessuno dei corsi di lingua completi che ho visto risulta in codice ovunque vicino alla qualità di ciò che ho imparato da quel corso. Passarono un paio d'anni prima di studiare informatica.

Internet e la biblioteca forniscono molte risorse ed esempi. Trovo che molti degli esempi non siano molto utili a tutto tranne che a farlo. Quando guardi esempi, guarda prima il codice. Riesci a capirlo scopo e struttura senza la spiegazione? In tal caso, potresti aver trovato un buon esempio.

Alcune pratiche chiave che dovresti imparare e applicare:

  • ASCIUTTO (non ripetere te stesso).
  • DRO (non ripetere altri); Utilizzare le librerie di lingue standard, utilizzare altre librerie.
  • Mantieni il codice semplice. Il codice elegante tende ad essere più difficile da mantenere. Ancora peggio, gli ottimizzatori producono spesso un codice macchina più lento rispetto al codice più semplice.
  • I moduli dovrebbero avere un solo scopo. (È meglio se quello scopo è quello di fare un lavoro o prendere decisioni.)
  • Usa dei bei nomi. Non utilizzare nomi brevi per evitare di digitare, utilizzare invece un IDE con completamento automatico. Comprendi le convenzioni di denominazione della tua lingua.
  • Non ottimizzare il tuo codice. Attendere fino a quando non è possibile misurare le sue prestazioni e sapere che l'ottimizzazione avrà un effetto evidente.
  • Continua a imparare. Impara a identificare le risorse che forniranno informazioni utili che puoi utilizzare ora.

2

Se ti piace suonare o cantare, puoi farlo perché è il tuo hobby e sei interessato, e puoi diventare un buon cantante o lettore musicale. Ma non devi diventare un cantante professionista o cantare per vivere. Questo vale anche per i programmatori? Qualche programmatore amatoriale famoso?

Affatto. È ingegneria del software . Non si basa sul "talento naturale". Essere un grande programmatore si basa su anni di istruzione e anni di esperienza . Lo fai solo lavorando su progetti reali .


2
In realtà è, in misura significativa, un talento naturale. Non puoi addestrare un povero ingegnere del software ad essere bravo, ma puoi in generale addestrare chiunque ad essere bravo. È molto simile al talento musicale o artistico, puoi addestrare quasi tutti a essere abbastanza bravi ma non puoi addestrare nessuno a essere bravo, si allenano da soli e probabilmente sono migliori di QUALUNQUE dei loro allenatori. Anche come atleti di livello mondiale pochi hanno mai incontrato un talento di programmazione di livello mondiale che potrebbe spiegare perché la maggior parte dei programmatori non sanno che esistono :)
Bill K

2

Nelle interviste di lavoro a cui sono stato (dalla parte del datore di lavoro), ho sempre chiesto cose che l'intervistato ha programmato come dilettante (tranne gli incarichi scolastici) - aver fatto questo è un segno sicuro di genuino interesse nel campo e avere passione per imparare da soli. Non è solo possibile, è quasi un requisito per diventare buoni.


2

È possibile? Sì. Tuttavia, più tempo impieghi a programmare, più tempo devi migliorare. È stato detto che occorrono 10 anni / 10.000 ore di pratica deliberativa per sviluppare competenze in un'abilità tecnica. Non sono 10 000 ore a fare lo stesso tipo di codifica nella tua zona di comfort (ad esempio, scrivere codice jQuery semplice per diversi siti Web), ma 10.000 ore di apprendimento / lettura sulla programmazione / lettura del codice sorgente / scrittura del codice sorgente / apprendimento di altre lingue / lavorare con altri, ecc.

Se hai intenzione di dedicare quel livello di tempo ad esso; potresti anche ottenere un lavoro come programmatore e abbandonare lo stato amatoriale. (A meno che tu non sia indipendente in modo indipendente).


1

Tutti sono dilettanti in ogni cosa ad un certo punto. Se vuoi diventare un buon programmatore ed è qualcosa che ti piace fare, lo farai. La chiave sta programmando da solo. La scuola non ti insegnerà quasi nulla. Gran parte del tuo apprendimento sarà fatto da solo e al lavoro. Se vuoi essere buono, vai bene.


1

dato il vero significato originale della parola (in francese amatoriale "amante di", dal francese antico e, infine, dal latino amatorem nom. amator , "amante" - Wikipedia), si vorrebbe credere che un gran numero di professionisti sono anche i dilettanti. Se non ami il tuo mestiere, lo praticheresti?

Certo che è possibile - se ami la programmazione, la praticherai e, col tempo, diventerai bravo. (Forse mai eccezionale, dati i talenti personali o la mancanza di essi), ma almeno buono


Il vero significato di dilettante è il significato che trovi nell'OED o nel NOAD. L'etimologia di una parola non ne determina il significato. "Uno che si dedica alla ricerca, allo studio, alla scienza o allo sport come passatempo piuttosto che come professione".
Django Reinhardt,

vero. forse avrei dovuto scrivere "significato originale" piuttosto che "significato reale". È un peccato che la nostra lingua attuale non abbia una parola comune per "persone che fanno qualcosa perché amano davvero farlo". Penso che aiuterebbe a rispondere alla domanda del PO: "È possibile che un dilettante diventi un buon programmatore?" Certo che è possibile - se ami la programmazione, la praticherai e, col tempo, diventerai bravo. (Forse mai eccezionale, dati i talenti personali o la mancanza di essi), ma almeno buono.
StevenV,

0

Non faccio quello che definisce un buon programmatore. Ma imparare qualcosa di proprio e lavorare con un gruppo di persone è qualcosa di diverso. Gli appassionati programmatori dilettanti hanno davvero imparato nuove cose e hacking. Lì trovavano le cose più interessanti. Ma lavorare con un gruppo di persone è leggermente un atto disciplinato in cui collaborate, comunicate, condividete / ottenete informazioni dagli esperti di quella zona.

Ma acquisire conoscenza è solo questione di passione. Ci sono persone che hanno passato le notti a imparare cose da sole e alla fine hanno portato qualcosa di nuovo nel mondo come Bill G Mark Zuck ecc. Non è possibile confrontarlo facilmente. ma se vuoi essere un ingegnere del software migliore (non chiamerò programmatore), entra in un'azienda o lavora per alcuni buoni prodotti che vengono utilizzati da altri.

Finalmente leggi molto per migliorare le tue abilità, attitudine, aggiornamenti del settore, sviluppare un gusto e andare con passione. Le cose ti seguiranno facilmente!


Sia Bill Gates che Mark Zuckerberg hanno studiato informatica a Hardvard fino a quando non hanno iniziato la propria attività e abbandonato. Non è un buon esempio di dilettanti .
vartec,

Dubito che Harvard abbia svolto un ruolo importante nello sviluppo delle proprie capacità di programmazione, tranne l'ambiente geek!
Sarat,

0

Alla domanda "qualche programmatore amatoriale è diventato famoso?" La risposta è "Sì, ma la maggior parte non è rimasta così". L'esempio più famoso che mi viene in mente è Roy Fielding che ha svolto alcuni dei suoi lavori più importanti mentre (credo) non retribuito all'Università (dilettante significa non pagato per definizione).

Il trucco per essere di qualità professionale è avere un mentore o una serie di mentori (come una squadra in un progetto open source) e una seria dedica all'argomento. Come ex musicista professionista, la mia esperienza è che entrambi sono necessari per essere bravi sia come professionisti che come dilettanti. Alcuni possono essere appresi dai libri, ma senza una coerente critica esterna diventa molto difficile superare le cattive abitudini acquisite da principiante.

Detto questo, nel caso del programmatore, è sostanzialmente più facile da imparare rispetto a quello del musicista - è stata la mia esperienza che come musicista è molto più difficile come musicista vedere i tuoi errori pedagogici che vedere un codice che non funziona D'altra parte, richiede anche un investimento di tempo sostanzialmente maggiore per essere un buon sviluppatore.


0

Come qualsiasi altra cosa, il modo migliore per migliorare qualcosa è immergersi nell'ambiente in cui si desidera diventare buoni e circondarsi di persone di gran lunga superiori a te che sono disposte a tollerarti e insegnarti. Non è facile da fare, ma è quello che ho trovato è il modo migliore per imparare ad essere bravo in qualcosa di più veloce.

Ma quando si tratta di essere un programmatore veramente dotato, devi essere proprio questo, dotato. Se non sei un violinista di talento naturale, non sarai mai bravo come i maestri, non importa quanto ci provi o quale strumento acquisti. Allo stesso modo, se non hai quel dono che rende i programmatori veramente geniali, non sarai nemmeno loro.

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.