E 'possibile per un dilettante diventare 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 addestrarsi 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 musicista. Ma non è necessario diventare un cantante professionista o cantare per vivere. Questo vale anche per i programmatori? Qualunque programmatore amatoriale famoso?

    
posta Ted Wong 24.10.2011 - 10:33
fonte

15 risposte

84

La chiave per diventare davvero bravi è lavorare in una buona squadra. Molti dilettanti lavorano da soli, quindi arrivano solo così lontano. In una squadra, impari dagli altri e diventi disciplinato perché i tuoi pari ti colpiranno con qualsiasi cosa sia utile altrimenti.

Per questo motivo, ti propongo di unirti a un team, ad es. un progetto open source, o fai un progetto di hobby con alcuni amici.

    
risposta data 24.10.2011 - 10:53
fonte
53

La strada per diventare bravi a programmare è la stessa del canto o della 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 al di fuori dell'orario di lavoro.

Ora, oltre a passare più tempo a esercitarsi, c'è un altro motivo per cui i professionisti di solito diventano migliori degli amatori in un certo senso (sia nella musica che nella programmazione). Se sei un professionista, devi svolgere compiti che non ti piacciono necessariamente, ma che appartengono al più ampio lavoro di sviluppo del software (ad esempio test, discussioni con i clienti, documentazione scritta, impostazione di ambiente di sviluppo / sviluppo, scrittura di script di compilazione ecc. ). E di tanto in tanto ti viene anche chiesto di entrare in aree sconosciute, di imparare nuove lingue o piattaforme. Come dilettante, non sei obbligato a fare qualcosa che non vuoi, il che rende probabile che tu rimanga nella tua zona di comfort per la maggior parte della tua vita. In altre parole, puoi facilmente limitarti a una o alcune aree specifiche a cui sei più affezionato e perdere molte opportunità per imparare e crescere.

OTOH molti sviluppatori professionisti cadono anche in questo, restando presso la stessa azienda facendo lo stesso lavoro di routine difficilmente imparando qualcosa di nuovo per decenni ... Quindi la chiave per diventare migliore è il tuo atteggiamento. Se continui ad apprendere e cerchi consapevolmente opportunità di uscire dalla tua zona di comfort in un territorio nuovo e sconosciuto, alla fine supererai quegli sciami di "professionisti" che lentamente si stanno fossilizzando. Un buon modo per questo potrebbe contribuire ad alcuni progetti open source.

Una lettura consigliata è The Pragmatic Programmer: From Journeyman to Master , con un sacco di consigli grandi e molto pratici su come continuare a migliorare.

    
risposta data 24.10.2011 - 10:37
fonte
18

But for an amateur programmer, how can train to become a good programmer?

Diventi migliore imparando, il che è parte del processo, parte che riflette su ciò che è stato fatto.

Quindi, fondamentalmente, non c'è differenza tra hobbista e professionista, ma le "insidie" sono leggermente diverse.

Le trappole amatoriali sono, imho

  • la necessità di completare il tuo progetto, a prescindere da cosa, non è così strong quando non sei professionista . Questa può essere una buona cosa, perché non si ottiene ciò che è abituato a tagliare gli angoli quando si tratta di qualità, ma la rifinitura (del tutto, in tempo è ancora meglio) è un'abilità molto importante, che è più difficile da addestrare come un dilettante, perché è facile lasciare morire un progetto e avviarne un altro.

  • la necessità di comunicare bene non è così strong. In un progetto professionale, c'è un strong incentivo a capire davvero i clienti, anche se sono completamente incapaci di formare un solo coerente frase di ciò che 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 mancata risoluzione dei loro problemi, ed essere "finito" in modo tecnico.

Le insidie professionali sono

  • spesso ci sono poche motivazioni per migliorare . Sei lì 40 ore / settimana, non importa se trovi la cura per il cancro o semplicemente bevi il caffè in un modo che sembri produttivo. L'apprendimento è qualcosa che fai principalmente per te stesso, e spesso, se cerchi di applicare le cose che hai imparato, ci sono forze che lavorano contro questo (pensiero di gruppo conservatore, gerarchie, persino gli styleguides possono essere usati come armi contro i miglioramenti). Ci vuole un sacco di amore per la professione non solo per smettere, incidere le tue ore e cercare scopi alternativi nella vita.

  • spesso c'è poco da imparare da . Sì, si può 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 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.

If you play music, or singing, you can play it for interest, you can still become a good singer or music player, but not need to become a professional singer, or do singing for living.

Ovviamente non è necessario, ma quanti musicisti potrebbero rifiutare l'opportunità di lasciare il loro lavoro e guadagnare con la loro musica?

In IT, queste opportunità sono un po 'più probabili che in Musica, quindi penso, non è che sia impossibile diventare famosi dilettanti, 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)

    
risposta data 24.10.2011 - 11:11
fonte
8

Temo che ci siano più possibilità di apprendimento per i dilettanti che per i droni aziendali a tempo pieno. Come dilettante non sei limitato ad alcuna data 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, limitata dalle stesse linee guida aziendali. Per la maggior parte di noi non è altro che una stasi. Un po 'può essere imparato da un ambiente aziendale, una volta che hai familiarità con le basi comuni.

Questa è la ragione per cui molti sviluppatori a tempo pieno sono anche dei dilettanti, continuano a scrivere codice dopo il lavoro, giocano con i loro progetti giocattolo - è un po 'di libertà necessaria per una crescita.

    
risposta data 24.10.2011 - 11:23
fonte
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, sei solo disposto a investire il tuo tempo libero. Inoltre, divertiti a imparare qualcosa di nuovo !

    
risposta data 24.10.2011 - 11:01
fonte
4

Is it possible for an amateur to become a good programmer?

Sì, è possibile , tuttavia richiede molto tempo:

it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, telegraph operation, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again.

How can an amateur programmer train to become a good programmer?

Sempre dalla stessa fonte :

  • Interessati alla programmazione
  • Programma
  • Parla con altri programmatori
  • Se vuoi, aggiungi quattro anni al college
  • Lavora su progetti con altri programmatori
  • Lavora sui progetti dopo altri programmatori
  • Impara almeno una mezza dozzina di linguaggi di programmazione
risposta data 24.10.2011 - 21:38
fonte
3

Come dilettante hai più opzioni per cercare le migliori pratiche di molti professionisti. I professionisti sono spesso sotto pressione per "averlo fatto".

Non ho visto nessun corso come ho imparato da programmazione, ma ho imparato da alcuni brevi corsi gratuiti (1-3 ore) presentati dall'università che frequentavo. Dovevano consentire agli uomini d'affari di comprendere il codice scritto per loro. I corsi hanno presentato un codice molto ben scritto (commenti inclusi) che ha risolto un problema comune nella vita reale. Il codice è stato quindi esaminato con una spiegazione delle caratteristiche linguistiche e del motivo per cui sono stati utilizzati nel modo in cui erano. Nessuno dei corsi di lingua completi che ho visto risulta in codice in qualche modo vicino alla qualità di ciò che ho imparato da quel corso. Passarono un paio d'anni prima che passassi allo studio di Informatica.

Internet e la biblioteca forniscono molte risorse ed esempi. Trovo che molti degli esempi non sono molto buoni per qualsiasi cosa, ma per averlo fatto. Quando guardi degli esempi, guarda prima il codice. Riesci a capire lo scopo e la struttura senza la spiegazione? Se è così, potresti aver trovato un buon esempio.

Alcune pratiche chiave che dovresti imparare e applicare:

  • DRY (non ripeti te stesso).
  • DRO (Do not Repeat Other); Usa le librerie di lingue standard, usa altre librerie.
  • Mantieni il codice semplice. Il codice elegante tende ad essere più difficile da mantenere. Ancora peggio, gli ottimizzatori spesso producono codice macchina più lento, rispetto al codice più semplice.
  • I moduli dovrebbero avere un solo scopo. (È meglio se lo scopo è quello di lavorare o prendere decisioni.)
  • Usa i buoni 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. Attendi fino a quando non puoi misurare le sue prestazioni e sappi che l'ottimizzazione avrà un effetto notevole.
  • Continua ad imparare. Impara a identificare le risorse che forniranno informazioni utili che puoi utilizzare ora.
risposta data 24.10.2011 - 16:03
fonte
2

If you like to play music or sing, you can do it because it is your hobby and you are interested, and you can become a good singer or music player. But you do not need to become a professional singer or do singing for a living. Is this also true for programmers ? Any amateur programmer who is famous?

Assolutamente no. È un software engineering . Non si basa sul "talento naturale". Essere un grande programmatore si basa su anni di istruzione e anni di esperienza . Puoi farlo funzionare solo su progetti reali .

    
risposta data 24.10.2011 - 13:20
fonte
2

Nelle interviste di lavoro a cui sono stato (dal lato del datore di lavoro), ho sempre chiesto cose che l'intervistato ha programmato come un dilettante (eccetto gli incarichi scolastici) - averlo fatto è un sicuro segno di genuino interesse per il campo e avere la passione di imparare da soli. Non è solo possibile, è quasi un requisito per diventare bravo.

    
risposta data 24.10.2011 - 13:59
fonte
2

È possibile? Sì. Tuttavia, più tempo passi a programmare più tempo devi migliorare. È stato detto che occorrono 10 anni / 10.000 ore di pratica deliberativa per sviluppare competenze tecniche. Non sono 10.000 ore di fare lo stesso tipo di codice nella tua zona di comfort (ad esempio, scrivere un 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 gli altri, ecc.

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

    
risposta data 24.10.2011 - 16:54
fonte
1

Ognuno è un amatore di tutto a un certo punto. Se vuoi diventare un buon programmatore ed è qualcosa che ti piace fare, lo farai. La chiave è la programmazione da solo. La scuola ti insegnerà quasi nulla. La maggior parte del tuo apprendimento sarà fatto da solo e al lavoro. Se vuoi essere buono, va bene.

    
risposta data 24.10.2011 - 17:55
fonte
1

dato il significato originale della parola real (francese amatore "amante di", dal vecchio francese e infine dal latino amatorem nom. amator , "amante" - Wikipedia), ci piacerebbe credere che un gran numero di professionisti siano anche dilettanti. Se non ami il tuo mestiere, lo praticheresti?

Naturalmente è possibile - se ami programmare, lo pratichi e, col tempo, diventerai bravo a farlo. (Forse mai grandioso, dati i talenti personali o la loro mancanza), ma almeno buono

    
risposta data 24.10.2011 - 19:49
fonte
0

Non sono 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 imparano davvero cose nuove e hacking. C'erano loro che trovavano le cose più interessanti. Ma lavorare con un gruppo di persone è un atto un po 'disciplinato in cui collabori, comunichi, condividi / ottieni informazioni dagli esperti di quell'area.

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

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

    
risposta data 24.10.2011 - 11:30
fonte
0

Alla domanda, "alcuni programmatori dilettanti diventano famosi?" La risposta è "Sì, ma la maggior parte non è rimasta in quel modo". L'esempio più famoso che mi viene in mente è Roy Fielding che ha fatto alcuni dei suoi lavori più importanti mentre (credo) non pagato all'Università (amatoriale 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 dedicazione del tempo all'argomento. Come musicista ex 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 come novizio.

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 un musicista vedere i tuoi errori pedagogici piuttosto che vederli codice che non funziona. D'altra parte, richiede anche un investimento di tempo sostanzialmente maggiore per essere un buon sviluppatore.

    
risposta data 24.10.2011 - 17:33
fonte
0

Come ogni altra cosa, il modo migliore per migliorare in qualcosa è immergerti nell'ambiente in cui desideri diventare buono e circondarti 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 davvero dotato, devi essere proprio questo, dotato. Se non sei un violinista di talento naturale, non sarai mai bravo come i maestri, non importa quanto tu provi o quale strumento acquisti. Allo stesso modo, se non hai quel dono che rende i programmatori davvero geniali non sarai mai neanche loro.

    
risposta data 24.10.2011 - 22:52
fonte

Leggi altre domande sui tag