it-swarm.it

Cosa differenzia i programmatori eccezionali da quelli veramente bravi?

Sai chi sono. Sono le rock star della programmazione:

  • Codificano 10 volte più velocemente.

  • Il loro codice funziona e basta.

  • Non solo conoscono la loro lingua principale dentro e fuori, ma sanno anche come funziona sotto il cofano.

  • Conoscono la risposta a quasi tutte le domande prima di porle.

  • Alcuni di loro hanno inventato i principi di programmazione che tutti usiamo.

  • E tendono anche a essere insolitamente umili.

Di cosa parla questa gente? C'è qualcosa nel loro processo di pensiero che è fondamentalmente diverso dal programmatore sopra la media? O sono semplicemente persone di grande talento che lavorano duramente?

In altre parole: come posso essere come loro? So cosa penso di dover imparare per essere così bravo, ma sembra che ci vorranno i prossimi dieci anni per impararlo, e quindi la mia conoscenza sarà obsoleta.

59
Robert Harvey
  • Humble: Un programmatore eccezionale non pretenderà mai che il loro codice sia il migliore, infatti cercheranno sempre un modo migliore (Ogni possibilità che ottengono.) .

  • Paziente: Un programmatore eccezionale avrà una pazienza sconfinata (Questo non significa che perderanno giorni in un problema. Vedi: Risoluzione dei problemi) .

  • Risoluzione dei problemi: Un programmatore eccezionale sarà in grado di risolvere un problema in pochi minuti che potrebbero richiedere giorni per il programmatore medio.

  • Curioso: Un programmatore eccezionale non sarà in grado di resistere cercando di capire perché succede qualcosa.

  • Ingegnere: Un programmatore eccezionale progetterà i sistemi piuttosto che mettere insieme un miscuglio di framework (Questo non significa che non useranno framework.) .

88
ChaosPandion

Ne hai colpito molto nel tuo ultimo punto elenco:

"E tendono anche ad essere insolitamente umili."

Penso che sia una combinazione di umiltà - non solo esteriore ma anche dentro le loro menti. Accettano di sbagliarsi, fanno un errore e si allontanano molto rapidamente dalla frustrazione. Molti programmatori proveranno qualcosa, falliranno, e poi saranno molto emotivamente elaborati abbastanza rapidamente, uno stato che è un anatema per scrivere un buon codice. Devi accettare che non sei perfetto, e che stai per rovinare (spesso!), E che la cosa migliore che puoi fare è imparare come recuperare rapidamente quando lo fai. È un umile fiducia, come "So che ho intenzione di sbagliare, ma so anche che se continuo a provare, alla fine ci arriverò."

C'è un detto in NLP, "Non c'è fallimento, solo feedback". Per essere un programmatore di rock star, penso che tu debba abbracciarlo. Non c'è niente che non puoi programmare. All'inizio potresti essere lento, ma se continui a provare e ti rifiuti di fermarti quando fallisci o rovini qualcosa, ti consegnerai. E in questo processo imparerai tutti i trucchi mentali necessari per diventare uno dei migliori.

Il consiglio è, ovviamente, buono solo come la sua fonte, quindi ... tutto solo la mia opinione.

28
Pax Noctis

Si preoccupano profondamente del loro codice.

25
JaredPar

Personalmente, i migliori programmatori che conosco/conoscevo capivano le basi e NON erano gli esperti in una determinata lingua. Hanno semplicemente avuto un'esperienza sufficiente su quasi tutto. Il canonico "Jack of All Trades".

È più della scienza di base, c'è un valore significativo nell'esperienza nelle operazioni reali. Esempi, quelli che comprendono la filosofia Unix e quindi potrebbero risolvere problemi sconosciuti con vari strumenti dati (IOW sapevano dove cercare) valorizzano di gran lunga l'esperto Java che ha codificato una soluzione filettata e parallela.

I programmatori eccezionali rispettano anche quelli che li hanno preceduti. Non odiano i modelli di dati relazionali o si arrabbiano quando vedono SQL come un'API formale, né si oppongono a FORTRAN in matematica. Sanno che OO non è la fine, e soprattutto capiscono che la programmazione è un'ARTE, non una scienza.

15
Jé Queue

Quando ho iniziato, stavo lavorando con questo ragazzo che pensavo fosse assolutamente geniale in tutto ciò che faceva in termini di programmazione. Probabilmente lo è ancora, ma ora è diventato direttore di una società nel sud-est asiatico.

Comunque, ha mantenuto le cose semplici e le cose semplici funzionano. Non volendo mai scrivere più righe di codice del necessario, tutto quello che ha fatto ha funzionato. Stavo giocando per un anno solo per avvicinarmi al suo livello. L'altra cosa però è il tempo. Aveva fatto le cose per molto più tempo di me in quel momento, e aveva avuto la possibilità di porre queste domande esatte più e più volte, fino a quando non avesse saputo (apparentemente) tutte le risposte.

Non aveva nemmeno paura di fare domande. Penso che sia la cosa più grande.

11
user2358

Programmer Competency Matrix

Molti argomenti per aiutarti a identificare qual è il tuo livello sugli argomenti di programmazione.

10
Maniero

Ho imparato la risposta a questa domanda in un libro sul poker Texas Hold'em, ma si applica a tutti gli sforzi frustranti. I migliori programmatori non vanno mai in tilt. Andare su Tilt è il momento in cui qualcosa non funziona come previsto, e tu rispondi in un modo che crea errori esponenziali nell'applicazione complessiva. Nel torneo di poker ti fa piazzare scommesse sbagliate e viene eliminato.

Durante la programmazione, l'inclinazione ti fa strappare i capelli e scrivere ridicole patch di codice che funzionano solo in alcuni casi dell'applicazione. Tilt fa sì che i programmatori ignorino le esigenze del progetto nel suo insieme, cercando una gratificazione immediata per risolvere il problema immediato ora. Spesso il problema viene risolto oggi, ma l'applicazione soffre domani.

I migliori programmatori prendono il concetto di inclinazione e lo gestiscono in un modo che consenta loro di guardare i problemi da una prospettiva esterna, sempre. In caso contrario, bere un po 'di caffeina.

7
JMC

Programmatori eccezionali:

  • Cura del loro codice
  • Cura gli utenti che usano il loro codice
  • Cura le persone che manterranno il loro codice
  • Cura della produttività
  • Cura del processo, non solo del prodotto

Due cose sul fattore "10x":

  1. Deve essere applicato end-to-end. Non è un buon codice di scrittura 10 volte più veloce se impiega 10 volte più a test, rilavorazioni e manutenzione.
  2. Credo che il fattore "10x" sia un riflesso di quanto sia scarso un numero elevato di programmatori rispetto a quanto sia buono un piccolo numero di programmatori.
6
darreljnz

la maggior parte sembra riservata e nulla di speciale .. alcuni sembrano super intelligenti .. preferiscono controllare/eseguire il debug delle cose due volte da tutti i possibili punti di vista, il loro software è senza errori nel mondo: p IMO alcuni programmatori potrebbero essere più lenti, ma la qualità è migliore, anche le persone comuni possono capire come funziona il loro software!

ho un amico che ha scritto il suo primo programma ASM all'età di 10 anni, ora ha 24 anni, non ha finito l'università, ma questo non gli ha impedito di creare la propria compagnia, guadagnando milioni :) ma da quello che vedo lui è abile in tutto :)

programmatori eccezionali direbbero molto probabilmente che questo codice può essere codificato in un altro modo migliore piuttosto che dire che è totalmente sbagliato e che ha una reputazione di altri programmatori inferiore :)

"Cos'è questa gente? C'è qualcosa nel loro processo di pensiero che è fondamentalmente diverso dal programmatore sopra la media? O sono semplicemente persone di grande talento che lavorano duramente?"

penso che siano nati in quel modo, è nel loro DNA: p non so del loro processo di pensiero, ma il miglior programmatore che abbia mai conosciuto aveva l'epilessia

3
shegy

Poche cose differenziano un eccezionale con un tipico.

eccezionale:

  1. Molto appassionato del suo lavoro e si impegna a fornire un capolavoro.

  2. Prestazioni e qualità sono il quadro generale nella loro mente anche prima dell'inizio della programmazione.

  3. Pensano al miglioramento continuo dopo ogni uscita.

  4. Vigilano rigorosamente sulle alternative e sono i primi ad adottare.

  5. Il loro tema nella vita professionale è: "Scrivi meno, trasmetti di più".

  6. Continuano a pensare a prospettive logiche anche quando non si codifica.

tipica

  1. A volte un po 'appassionato ma si sforzano di offrire perché dopo tutto è un lavoro. Se non è un capolavoro, va bene. Almeno consegnato in tempo.

  2. Penserò alle prestazioni in seguito, comunque i PC sono abbastanza veloci in questi giorni.

  3. Migliora solo quando non è disponibile alcuna opzione per salvare un lavoro.

  4. Non c'è tempo per scavare in altre tecnologie. Attenersi a ciò che il tuo lavoro richiede ora. Imparerà altre cose quando se ne presenterà la necessità.

  5. Il loro tema è: "Fai ciò che ti viene chiesto e raggiungi la casa in tempo".

3
RPK

Si applicano programmatori eccezionali Principi spartani .

Immagine che attira l'attenzione:

enter image description here

Questo articolo: http://willcode4beer.com/design.jsp?set=codeReduction

E questa citazione:

Ogni pazzo può rendere le cose più grandi, più complesse e più violente. Ci vuole un pizzico di genio - e tanto coraggio - per muoversi nella direzione opposta. - Albert Einstein

2
Ates Goral

1 ° - Sanno cosa si interrompe quando affrontano il limite.

0
Gedean Dias

Autopromozione, e intendo che nel miglior modo possibile. Avere un lavoro come la programmazione, specialmente in una squadra, significa che non è immediatamente ovvio dove il tuo contributo personale si adatta alla visione d'insieme, o chi è stato responsabile di quale parte. Le persone di cui sentiamo parlare e che apprendiamo come "grandi programmatori" sono IMO quelle che hanno imparato l'arte di far conoscere i loro contributi senza sembrare egocentrici o egocentrici al riguardo. In molti casi, ciò avviene creando gli strumenti, le librerie e il software su cui tutti noi facciamo affidamento per guadagnare il nostro pane quotidiano.

0
Gaurav

Ottimo articolo correlato: The Free Electron (from randsinrepose.com)

Mi scuso per non aver riassunto l'articolo qui, ma i punti non sono facilmente separabili dalla prosa.

0
Nicole

Avere la qualità di automotivazione e autodeterminazione, nonché la volontà di entrare nell'abisso dell'ignoto e sentirsi a proprio agio nell'essere assolutamente confusi come parte del processo è enorme. Non si tratta di intelligenze iniziali come si potrebbe pensare perché il cervello diventa molto meglio nelle cose che fa e pensa sempre. Venivo dal nulla al college e poi sono diventato molto benestante solo per pura perseveranza, senza mai arrendermi, essendo quel ragazzo che ha tenuto un problema quando tutti gli altri si sono stancati di provare a capirlo. Dopo quel tipo di persistenza, i problemi sono diventati sempre più facili e provengono dall'essere il noob del college a mettere la maggior parte di loro a questo punto vergogna. Il puro talento non è abbastanza e a volte può portare a riposare sugli allori.

Inoltre, per Robert Harvey, continui a fare un pisolino ai miei post quando menziono qualcosa a che fare con il mio CMS che ho scritto da zero. Vedi molti altri elenchi di link che potrebbero o non potrebbero aver scritto. Stai spingendo verso il basso le persone che sono auto-motivate ed è ironico che tu abbia pubblicato questo. Sei "l'uomo" in questo piccolo universo e non stai leggendo le cose nel loro merito, ma stai semplicemente facendo l'occhiolino e cancellando il tuo capriccio. Ami anche Star Wars troppo e probabilmente agiti la mano verso le porte ad apertura automatica della drogheria, credendo di avere la forza.

0
Joonha

Programmano puramente sull'intuizione. Non c'è bisogno di pensarlo solo flussi.

0
John Shaft

ma sembra che ci vorranno i prossimi dieci anni per impararlo, e quindi la mia conoscenza sarà obsoleta.

Lo farà. Hai già stabilito che questi ragazzi sono 10 volte più veloci, motivo per cui lo imparano in 1 anno e ti ci vogliono 10. Per la parte seria della risposta penso che siano già super intelligenti (potrebbero avere molto successo in qualsiasi cosa), amano la programmazione e per qualche motivo hanno (o trovano) un'abbondanza di tempo libero per esercitarsi nella programmazione o per lavorare su progetti personali.

Se stai facendo questa domanda qui probabilmente non hai quello che serve (non preoccuparti, sto rispondendo qui, quindi probabilmente neanche io). Non preoccuparti, anche se puoi ancora diventare pazzo se ami scrivere codice.

0
Kevin

Ci sono molti post ben intenzionati qui su Humility, Engineering, Passion, Patient, Troubleshooter. IMO questi sono tutti richiesti. Tuttavia, descrivono il primo 30% di programmatori.

Penso che tu stia chiedendo dei programmatori davvero eccezionali, il primo 1%.

Una delle cose che invidio del talento occasionale molto raro con cui lavoro è la loro capacità di mantenere un importo molto grande di dettagli su un sistema complesso nella sua testa in una volta, e di essere in grado di richiamarlo rapidamente. Penso di poterlo fare occasionalmente, forse una volta al mese, quando sono veramente nella zona. Questa sensazione è meravigliosa. Lo sviluppatore a cui sto pensando sembra essere in grado di trovarsi in quella zona il più delle volte .

È questa caratteristica, l'IMO, oltre alle capacità di umiltà, curiosità, ingegneria, passione, pazienza e risoluzione dei problemi che li rendono davvero eccezionali.

0
Kyle Hodgson

I programmatori eccezionali hanno influenza su un progetto oltre lo scopo del proprio codice e individuano i problemi prima che si verifichino a causa della loro esperienza. Rendono migliori tutti i membri del team e salvano i loro progetti da cattiva progettazione e gestione.

In realtà hanno creato qualcosa di eccezionale.

0
JeffO