Programmare meglio programmando meglio? [chiuso]

4

Non sono convinto dall'idea che gli sviluppatori siano nati o no. Dov'è la prova empirica per supportare questo tipo di affermazioni? Un programmatore può passare dal 50 ° al 90 ° percentile?

Tuttavia, la maggior parte degli sviluppatori non si trova al 99 ° o al 90 ° percentile (per definizione), e quindi ha ancora margini di miglioramento nella capacità di programmazione, insieme alle competenze importanti. La credenza nel talento innato è "priva di prove concrete per sostanziarlo". Quindi, come posso riconciliare queste affermazioni apparentemente contraddittorie?

Penso che la lezione per gli sviluppatori di software che desiderano continuare a giocare e diventare esperti sia continuare a esercitare la mente attraverso uno studio impegnativo. Leggo molti libri tecnici, ma molti di loro non mi stanno migliorando come sviluppatore.

    
posta ahmed 06.02.2011 - 12:20
fonte

5 risposte

8

In Dieci consigli su come migliorare le tue abilità di programmazione , "Praticare" è enfatizzato. Passare attraverso il codice sorgente in una libreria open source può essere molto utile. Scrivere commenti per quel codice e, soprattutto, apportare modifiche a quel codice può aiutarti a capire meglio le tecniche potenti.

Sono davvero favorevole all'idea di passare attraverso le librerie. Dopo 6 mesi di utilizzo di Struts 1.3, mi sono seduto e ho esaminato il codice sorgente di Struts e persino scaricato una copia del codice sorgente di Tomcat. L'esame di questo framework e del contenitore Java Servlet mi ha aiutato a capire cosa stava succedendo sotto il cofano. Mi ha aiutato a utilizzare meglio i framework che dovevo utilizzare e mi ha aiutato a trovare e correggere quei fastidiosi bug che si sono verificati nel software.

In questo post di Overflow dello stack, link , alcuni degli intervistati suggerisce di imparare una nuova lingua ogni anno. Sono un fan di questo. Quando ho imparato un po 'di Python e Django, mi sono sentito come alcuni dei concetti del ciclo richiesta / risposta da Java Servlet era simile a quello che stava accadendo in Python. Comprendendo che molti dei framework che usiamo in diverse lingue sono solo astrazioni che condividono concetti simili, ho rinforzato ciò che già sapevo sul Web e ho aiutato a rendere più facile visualizzare ancora una volta ciò che accade sotto il cofano.

In questo articolo , suggeriscono di analizzare ciò che hai fatto in passato. Il codice che ho scritto un anno fa non è buono come il codice che scrivo oggi. Sono tornato indietro e ho esaminato il codice che ho scritto in precedenza e sono stato in grado di migliorarlo grazie a entrambe le nuove esperienze e di vedere il codice da una prospettiva diversa dopo non averlo pensato per un po '.

In sintesi, gli unici limiti su di noi sono quelli che ci affidiamo. Puoi fare tutto ciò che pensi. Se hai raggiunto un plateau, è molto probabile perché sei bruciato. Se non sei bruciato, allora forse le tue tecniche di apprendimento sono imperfette e le informazioni nelle risorse di cui sopra possono aiutarti a scoprire tecniche che ti tirano fuori dal tuo funk.

    
risposta data 06.02.2011 - 12:48
fonte
5

Come sottolineato nelle risposte precedenti, l'abilità di programmazione è parte del talento con cui siamo nati, e parte un sacco di pratica e duro lavoro.

Un paio di note e link a questo:

  • Malcolm Gladwell nel suo libro Valori anomali sostiene che hai bisogno di dieci mille ore di pratica per diventare un maestro in qualsiasi campo.
  • un articolo di Joel indica che una grande percentuale di (potenziali) programmatori sembra non comprendere mai completamente puntatori e / o ricorsione .
  • il "talento" di cui sopra è in realtà un sacco di talenti diversi . Anche se uno non ne ha uno (per esempio, capisce la ricorsione), (s) può ancora avere altri (come la memoria dell'elefante, eccellenti capacità di comunicazione o essere un "catalizzatore di squadra") che lo rende prezioso in un progetto specifico /squadra. E nota che queste tre abilità di esempio possono renderne uno utile in diversi tipi di progetti software e ruoli di sviluppo.
risposta data 06.02.2011 - 16:33
fonte
1

Alcuni hanno solo un'affinità naturale per la programmazione, altri no. Ma fintanto che uno è dedicato e appassionato a questo (e non solo "lo fa" perché viene detto o qualche altro motivo come questo), si andrà sempre meglio nel tempo (e migliorando NON SI FERMA MAI, perché la tecnologia va sempre up)

    
risposta data 06.02.2011 - 12:41
fonte
1

Dato che nessuno è nato come programmatore eccellente eppure abbiamo eccellenti programmatori tra noi, la programmazione chiaramente non è un'abilità innata e deve essere appresa.

La mia opinione è che quel "talento innato" è più di amare / amare davvero tanto qualcosa, che non puoi fare a meno di farlo e continui a farlo per migliaia di ore (o qualcosa del genere), che ci vuole per padroneggiare qualcosa (come giocare a tennis o al violino).

E in questo scenario l'apprendimento è più un "gioco gioioso" che uno "studio impegnativo" (cioè l'apprendimento è un processo esotermico e non endotermico).

Modifica: informazioni sulla lettura di libri. È molto più nutriente leggere libri incentrati su Why than How.

    
risposta data 06.02.2011 - 13:08
fonte
1

Sai cosa, ognuno continua a pensarlo, Uno è un programmatore nato e qualcuno non lo è.

Se ti piace assolutamente programmare e divertirti ... a chi importa se sei un programmatore nato o meno. Continua a scrivere il codice.

Come Maglob ha detto "suonare gioiosamente" che "studiare con impegno" ... ha assolutamente senso. Perché pensare ogni volta se diventeremo Linus o Bill o Stallman ...

Fallo per il gusto di farlo come dice Feynman ...

Maglob: il tuo commento aiuta qualcuno che è entusiasta di diventare un programmatore migliore ...

    
risposta data 24.03.2011 - 05:14
fonte

Leggi altre domande sui tag