Qual è la differenza tra gli anni di esperienza di uno sviluppatore con una lingua? [chiuso]

9

Come affermato dal titolo, qual è la differenza in anni di esperienza in un determinato linguaggio in termini di sviluppatori? Ad esempio, se uno sviluppatore ha avuto cinque anni di lavoro con il linguaggio A e l'altro sviluppatore ha lavorato per due anni con il linguaggio B seguito da tre anni lavorando con il linguaggio A, ci sarebbe una differenza percepibile tra loro?

    
posta rjzii 06.11.2010 - 16:00
fonte

10 risposte

26

"dipende"

Esperienza < > conoscenza o comprensione.

Il programmatore 1 potrebbe essere molto buono, persino un guru, oppure potrebbe essere qualcuno che sta armeggiando con la lingua negli ultimi 5 anni.

Il programmatore 2 potrebbe essere qualcuno che comprende i concetti indipendentemente dal linguaggio che stanno utilizzando. O qualcuno che ha trovato la lingua B troppo difficile e spera che A sia più facile.

Coding Horror's "The Years of Experience Myth" vale la pena leggere

    
risposta data 06.11.2010 - 16:26
fonte
4

Dipende.

Ho un amico che tende ad attenersi a una lingua, quindi se lo consideri un "programmatore A" ha cinque anni di esperienza con quella lingua.

Diverse lingue ti permettono di fare cose diverse. Un saggio che mi piace particolarmente è chiamato " Battere le medie " di Paul Graham. In questo sta cercando di convincere le persone a imparare la chiarezza, ma fa anche alcuni punti molto utili:

Programmers get very attached to their favorite languages, and I don't want to hurt anyone's feelings, so to explain this point I'm going to use a hypothetical language called Blub. Blub falls right in the middle of the abstractness continuum. It is not the most powerful language, but it is more powerful than Cobol or machine language.

And in fact, our hypothetical Blub programmer wouldn't use either of them. Of course he wouldn't program in machine language. That's what compilers are for. And as for Cobol, he doesn't know how anyone can get anything done with it. It doesn't even have x (Blub feature of your choice).

As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.

When we switch to the point of view of a programmer using any of the languages higher up the power continuum, however, we find that he in turn looks down upon Blub. How can you get anything done in Blub? It doesn't even have y.

In generale, il mio consiglio è di imparare più di una lingua e di imparare quali sono i punti di forza e di debolezza delle lingue.

    
risposta data 06.11.2010 - 17:34
fonte
2

Naturalmente, lo sviluppatore che ha più anni di esperienza in una lingua avrà una migliore comprensione delle principali librerie e idiosincrasie di quel linguaggio. Se le lingue abbracciano lo stesso paradigma (imperativo vs funzionale), allora non dovrebbero avere più problemi a prendere quella lingua se non impararla.

La mia maggiore difficoltà è stata quella di provare a passare da C # a Erlang, perché rappresentava non solo una nuova sintassi ma anche un nuovo modo di pensare alla programmazione.

    
risposta data 06.11.2010 - 16:27
fonte
2

Ecco cosa mi aspetterei / spero:

  1. Fluency: dovrebbero essere in grado di scrivere più codice fuori dalla testa e meno tempo a cercare la sintassi.
  2. Conoscere la differenza tra versioni precedenti e attuali e come migrare il codice da uno all'altro.
  3. Avere una comprensione più completa della compilazione, distribuzione, test e creazione di aggiornamenti e patch.
  4. Crea / Aggiungi componenti aggiuntivi all'IDE e ottieni efficienza da essi.
risposta data 07.11.2010 - 19:20
fonte
2

Le lingue non sono il problema. Puoi imparare un'intera lingua in un paio di giorni. Ciò che richiede più tempo per assorbire sono le convenzioni, le API e vari framework di terze parti. Quando le persone chiedono cinque anni di X, non si preoccupano della lingua, vogliono qualcuno che abbia molta esperienza nella risoluzione dei problemi in e con quella lingua in modo che non debbano pagare per nessuna delle curve di apprendimento.

    
risposta data 08.11.2010 - 14:25
fonte
2

Esperienza e pratica deliberata.

Se non ti eserciti deliberatamente, non acquisirai esperienza. (Devi esaminare i tuoi errori e correggerli, esercitarti su ciò che sei debole, e avere un esperto che ti dica cosa stai facendo anche in modo sbagliato aiuta).

Se non provi a migliorare, puoi essere un principiante per sempre!

Dopo diecimila ore di pratica deliberata, otterrai esperienza. (Questa scoperta dall'istruzione / formazione è dappertutto.)

Se il tuo programmatore A non ha praticato deliberatamente, non migliorerà mai.

Se il tuo programmatore B non ha praticato deliberatamente, non migliorerà mai.

Un altro risultato della stessa ricerca: che se ho 15000 ore e hai 10000, e continuo a praticare e così fai tu, non sarai mai migliore di me.

Conoscere due lingue probabilmente renderà B un programmatore migliore (soggetto alle regole di allenamento).

    
risposta data 16.11.2010 - 22:39
fonte
1

E li stai usando per il linguaggio A, presumo? (Chiaramente, ci sarebbe una differenza nella lingua B).

In parte dipende dalle differenze tra A e B (in particolare se abbreviamo l'esperienza del secondo sviluppatore con A). Se sono abbastanza simili, non ci sarà essenzialmente alcuna differenza nell'esperienza. Se A ha concetti notevolmente diversi, tre anni è ancora abbastanza probabile per impararli. Data una libreria molto grande e strumenti complicati, ci può essere una differenza tra tre e cinque anni.

Ovviamente, ciò che conta di più qui è l'individuo. Un buon sviluppatore può imparare a fondo una nuova piattaforma in tre anni, quindi questo non dovrebbe essere un problema.

    
risposta data 16.11.2010 - 21:33
fonte
1

Sono d'accordo sul fatto che la lingua è lingua e i concetti sono concetti.

Il mio problema è che oggigiorno c'è un gran numero di programmatori che senza un IDE sofisticato non potrebbero affatto programmare. Non sono davvero programmatori ma sono molto più simili ai designer.

So per esperienza personale che ci sono un sacco di persone che sono state sedotte dall'ambiente di sviluppo Microsoft draggy - droppy. Non è sbagliato che lasciano una casella di testo sullo schermo, quindi impostano le proprietà con la procedura guidata e trascinano i dati da un'immagine del database, ma sono veramente codificatori in qualsiasi lingua se tutto ciò che fanno è impostato sui test di uguaglianza di base? / p>

Queste persone non saranno mai in grado di prendere i Concetti che hanno appreso e di applicarli in un'altra lingua.

Quando intervengo le persone, sono più interessato a come hanno fatto il loro sviluppo e quali strutture hanno usato. Mi piace fare domande come "Come si scrive un gestore di eventi?", "Come si inseriscono esattamente i dati nel DB?" O anche "Come si attiva questo particolare pulsante viola quando clicco su di esso?" questo eliminerà rapidamente i progettisti e lascerà i programmatori. Ho scoperto che 3 o 4 anni di programmazione con un anno nella mia lingua di scelta sono sufficienti per ciò di cui ho bisogno.

Solo un'altra opinione,

Tal

    
risposta data 16.11.2010 - 22:29
fonte
1

"Anni di esperienza in linguaggio / piattaforma X" è in gran parte una patologia di reclutamento ...

È aperto all'interpretazione e non è affatto utile come sembra a prima vista. Come è stato detto, il anni di esperienza mito è un buona lettura.

Inoltre, in modo cruciale, la misurazione di "anni di esperienza" può essere molto imprecisa. Ecco un esempio del mio attuale concerto: il mio compito principale è lo sviluppo e il mantenimento di un'app Web Java. Tuttavia, questo esegue un back-end che è MFC / C ++ / SQL Server. Di conseguenza ho a che fare con il codice C ++ anche su base giornaliera. MA - questa esperienza in C ++ è relativamente superficiale e orientata alla manutenzione, e non scrivo più interi componenti o programmi di grandi dimensioni da zero in MFC / C ++ (ero abituato ai ruoli precedenti).

Posso comunque contare questi ultimi 5 anni come "5 anni di esperienza C ++"? Può essere. Forse no. A seconda di come voglio venderlo per garantire un ruolo particolare, posso facilmente esagerare senza mentire completamente, o posso ammettere che non si trattava in realtà di 5 "anni di esperienza C ++". :) Sono sicuro che molti casi là fuori sono altrettanto aperti a questo tipo di problema di "inesattezza della misurazione". La profondità di esperienza può offuscare gravemente la qualità dell'esperienza. Quindi una "X quantità di tempo trascorso con C ++" non significa molto di per sé.

    
risposta data 16.11.2010 - 21:59
fonte
-1

Sì, il programmatore 1 non ha la sintassi conoscenza del linguaggio B.

I concetti di programmazione sono concetti di programmazione. La lingua è semplicemente sintassi.

    
risposta data 06.11.2010 - 16:17
fonte

Leggi altre domande sui tag