Ottima produttività dei programmatori - Conta una differenza di 10.000 volte? [chiuso]

19

A great lathe operator commands several times the wage of an average lathe operator, but a great writer of software code is worth 10,000 times the price of an average software writer. - Bill Gates

Diciamo che c'è un "grande" ingegnere del software e un ingegnere software "medio" nella stessa squadra. Come puoi rendere conto che un ingegnere è 10.000 volte più produttivo? Non riesco a capire a fondo questo dato che entrambi stanno prendendo in considerazione la loro parte di funzionalità, bug e indagini e forniscono costantemente qualità. La mia descrizione potrebbe forse giustificarli al di sopra della "media"? "Grande"?

    
posta TheImpact 25.09.2011 - 23:14
fonte

7 risposte

56

Il punto della citazione non è che uno è 10K volte più produttivo, è che uno è 10K volte il valore dell'altro. Il software ha la condizione unica in cui una progettazione o implementazione difettosa può rimanere dormiente per anni (una parte che viene erroneamente lavorata di solito semplicemente "non funziona" e non lo fa nel campo), fino al ciclo di vita del prodotto fino a quando uno giorno alza la testa in una situazione intrattabile.

Ognuno dovrebbe avere familiarità con il costo esponenziale della riparazione di un difetto mentre passa dalla progettazione, all'implementazione, alla verifica, alla produzione, alla manutenzione.

Quando si tiene conto di possibili responsabilità così come della reputazione aziendale, è facile concludere che lo sviluppatore che sapeva abbastanza per evitare il problema vale 10.000 volte colui che ha ignorato o ingenuamente implementato una soluzione scadente.

Modifica (primavera 2014): "Heartbleed"

    
risposta data 25.09.2011 - 23:35
fonte
43

Il nuotatore olimpico medio può nuotare a circa 2,5 miglia all'ora a distanza.

La persona media (che sa nuotare) può nuotare a circa 1,5 miglia all'ora a una distanza.

Questo significa che il nuotatore olimpico medio può nuotare nella Manica inglese in circa 8 ore.

Sarebbe logico quindi che il nuotatore olimpico sia il 60% più veloce della media e che il nuotatore medio impiegherebbe circa 13 ore per completare la gara ...

Tranne che, se io, un nuotatore medio, dovessi tentare di nuotare nel Canale della Manica, l'unico modo in cui riuscirò a passare è lavato sulla riva una settimana dopo.

Molti aspetti della programmazione sono come il nuoto nel Canale della Manica. Affondare o nuotare. Non so nemmeno se 10.000 X meglio sia davvero un modo preciso per descrivere la distinzione tra software completo che funziona e software incompleto che non funziona.

    
risposta data 26.09.2011 - 17:57
fonte
31

Say there's a "great" software engineer and an "average" software engineer on the same team. How can you account for one engineer being 10,000 times more productive? I can't quite fathom this, given they're both taking on their share of features, bugs and investigations, and consistently deliver with quality. Would my description possibly justify them to be above "average"? "great"?

Questo è un sacco di "dati" per un ingegnere del software "medio". In realtà, il grande ingegnere del software risolve i problemi in ore che l'ingegnere medio risolverà mai correttamente. Il grande ingegnere del software risolve i problemi ordinari in un terzo del tempo con un quinto di codice e un decimo di bug. Il codice del grande ingegnere del software gira in O (n) mentre il codice del tecnico del software medio viene eseguito in tempo O (n ^ 3). Il grande ingegnere del software può adattare la sua soluzione mentre aspetti, mentre il tecnico del software medio si lamenta dei cambiamenti tardivi delle specifiche e dice che ci vorranno settimane per soddisfare i nuovi requisiti ora. Queste sono tutte differenze reali che ho visto quando un grande ingegnere ha rifatto il lavoro dell'ingegnere medio.

    
risposta data 26.09.2011 - 04:33
fonte
9

Cercherò di affrontare questo in termini di differenze:

Un grande ingegnere farà quanto segue meglio di uno medio:

  • Design - produce progetti che richiedono meno modifiche ed essere più flessibili. Ciò si traduce in risparmi per tutta la durata del software.
  • Caratteristiche: queste saranno implementate a digiuno e saranno implementazioni più pulite.
  • Bug - si troveranno più velocemente, saranno corretti e non introdurranno meno bug futuri.
  • Le indagini - si concluderanno più velocemente con risoluzioni e risultati migliori.

Nel loro insieme, questi risparmi l'azienda un sacco di soldi in termini di sviluppo e fanno l'azienda un sacco di soldi in opportunità extra.

    
risposta data 25.09.2011 - 23:40
fonte
4

Un grande programmatore molto spesso non si limita a "prendere la propria parte di funzionalità, bug e investigazioni" per guadagnare un salario. A volte smettono e iniziano la loro compagnia, o si iscrivono a una startup, o iniziano un nuovo progetto skunkworks, o, forse nei tempi antichi, si uniscono a un laboratorio R & D D a cielo blu di fama nazionale, e innovano alcuni prodotti che nessuno pensa di loro persino necessario, o si pensava che fosse possibile fare con il software, prima dell'intuito, dell'abilità e del sudore di quel grande programmatore.

Gran parte di questo programmatore "vale" è una ricompensa proporzionata per il rischio. Il programmatore potrebbe persino essere stato licenziato per aver pensato a prodotti software così folli, piuttosto che essere pagato 2 volte più o meno.

Che cosa succede con una startup occasionale del software: pubblica per milioni / miliardi, o acquisita da Google o Facebook, et.al. per importi simili, raramente accade agli operatori del tornio (anche se almeno un fondatore della società tecnologica della Silicon Valley ha avuto un tornio nel suo laboratorio).

    
risposta data 26.09.2011 - 06:07
fonte
3

Ci sono alcune soluzioni che solo i migliori programmatori saranno in grado di risolvere. Lanciare migliaia di mediocri non funzionerà. È anche più difficile coordinare i loro sforzi, anche se potrebbero combinare collettivamente i pezzi delle loro conoscenze.

Rispondere alle domande su SO non è diverso. Ci sono molti problemi in cui da un gruppo di sviluppatori medi, uno è in grado di fornire la risposta. Questi siti Web probabilmente svolgono un lavoro molto migliore di coordinamento degli sforzi rispetto alla maggior parte dei team di sviluppo che è triste.

    
risposta data 26.09.2011 - 17:00
fonte
3

Penso che ci sia qualche prova empirica che supporti la citazione di Gates. Ricordo di aver letto (anche se non ricordo la fonte) che nel battere a macchina la differenza di output (facilmente misurabile per un pool di battitura) tra quelli del 5 ° percentile e quelli del percentile del 95% era qualcosa come 3 a 1. Ma dopo che il software di elaborazione di testi è diventato disponibile, il rapporto è salito a qualcosa come 10 o 20 a 1, perché chi poteva utilizzare le funzionalità avanzate del software ha ottenuto un vantaggio ancora più relativo.

Presumibilmente per lo sviluppo del software il rapporto sarebbe ancora più alto, dal momento che c'è ancora più libertà di sfruttare tutti i tipi di strumenti, tecniche, ecc. È più difficile misurare le differenze, ma la maggior parte dei tentativi ha almeno 10 1, e presumibilmente sottostimiamo la differenza perché misura solo ciò che è facile da misurare.

In qualcosa di simile alla digitazione o al funzionamento di un tornio, le persone nell'1% superiore sono probabilmente abbastanza vicine a raggiungere i limiti fisiologici di ciò che è possibile. Nel caso della programmazione chiaramente non lo sono (il rapporto tra quanto tempo ci vuole per scrivere il codice e quanto tempo ci vuole per digitare il codice è enorme) quindi ci dovrebbe essere spazio per molte più variazioni.

    
risposta data 26.09.2011 - 19:52
fonte

Leggi altre domande sui tag