it-swarm.it

Quando dovresti definirti uno sviluppatore senior?

Possibile duplicato:
Qual è la differenza tra gli sviluppatori entry level/Jr/Sr?

Sono curioso di sapere cosa significhi lo sviluppatore senior perché apparentemente la definizione non significa ciò che pensavo avrebbe fatto. Continuo a vedere questi ragazzi di 22-23 anni che si definiscono sviluppatore X senior o sviluppatore Y senior. Per me, un anziano deve avere circa 10 anni di esperienza nella programmazione per definirsi "anziano". Ho visto molti di questi ragazzi qui (da qui la domanda). Ho sbagliato? Perché?

298
Kev

Puoi definirti Senior quando:

  • È possibile gestire l'intero ciclo di vita dello sviluppo del software, end-to-end
  • Tu conduci gli altri, o gli altri ti guardano come guida.
  • Puoi autogestire i tuoi progetti

Lo sviluppo del software è una creatura curiosa a differenza di altri campi.

A volte, un punk appena uscito dal college può fare il giro dei veterani che hanno più di 20 anni di "esperienza". La programmazione è un mondo bizzarro in cui il codice è re.

Alcuni raggiungono quanto sopra in 2 anni o meno, altri impiegano 10 anni.

433
Darknight

Quando sento "Senior Developer" penso a qualcuno che ha imparato la programmazione. Penso a una persona in grado di progettare, programmare e testare un sistema. Possono parlare con l'architettura di sistema o la progettazione dei componenti. Comprendono e utilizzano i modelli di progettazione. Questa persona può anticipare i colli di bottiglia delle prestazioni, ma non sa pre-ottimizzare. Questa persona farà leva su programmazione asincrona, accodamento, memorizzazione nella cache, registrazione, sicurezza e persistenza, se del caso. Quando viene loro chiesto, possono fornire una spiegazione dettagliata della loro scelta e dei pro e contro. Nella maggior parte dei casi hanno imparato la programmazione e la progettazione orientate agli oggetti, questo non è assolutamente un altro linguaggio come Javascript, F #, Scheme sono potenti e non sono orientati agli oggetti. Sono esperti nella gestione del rischio e, soprattutto, possono comunicare ai loro colleghi le informazioni sopra menzionate.

Che cos'è la padronanza? C'è un'idea generalmente accettata, secondo cui per padroneggiare QUALSIASI abilità sono necessarie 10.000 ore di ripetizione affinché il corpo umano e la mente afferrino e interiorizzino un'abilità. Questo è scritto dettagliatamente nel libro di Malcolm GladWell Valori anomali . Quando l'autore originale ha parlato della padronanza di un campo, si riferiva che per raggiungere la cima di un campo altamente competitivo ci sarebbero volute 10.000 ore.

Alcuni esempi di Valori erratici di Malcolm GladWell sono:

Mozart il suo primo concerto alla giovane età di 21. Che all'inizio sembra giovane, ma ha scritto musica da quando aveva 11 anni.

I Beatles furono inizialmente evitati. Gli fu detto che non avevano la senape e avrebbero dovuto prendere in considerazione una diversa linea di lavoro. Trascorrono 3 anni in Germania suonando circa 1200 volte in luoghi diversi, ogni volta dalle 5 alle 8 ore di durata. Sono riemersi come i Beatles che conosciamo e amiamo oggi.

Infine, Bill Gates all'età di 20 anni è uscito da Harvard per fondare Microsoft. Per alcuni potrebbe sembrare sciocco, ma considerato che a 20 anni aveva trascorso quasi la metà della sua giovane vita a programmare. Nel 1975, solo forse 50 persone al mondo hanno avuto l'esperienza che ha fatto. La sua esperienza gli ha dato la lungimiranza di vedere il futuro in Microsoft.

Peter Norvig discute anche della regola delle 10.000 ore nel suo saggio " Teach Yourself Programming in Ten Years ".

Nel libro Maestria di George Leonard, vengono forniti grandi dettagli su come padroneggiare un'abilità. Bisogna esercitarsi ripetutamente ancora e ancora. Più la ripetizione è, più si diventa consapevoli delle differenze in ogni ripetizione. Solo con questa intuizione puoi migliorare.

I titoli dell'industria del software (Junior, Mid-Level e Seniors) sono fuorvianti e incoerenti da un'organizzazione all'altra. Ho lavorato con aziende che hanno definito uno sviluppatore senior come qualcuno con almeno 5 anni di esperienza. Non si fa menzione della qualità dell'esperienza, solo che si sono seduti davanti a un computer per 5 anni. Nel lavorare con queste persone, molti di loro non avevano ancora compreso la programmazione orientata agli oggetti, ma erano considerati sviluppatori senior.

Ci deve essere un modo migliore e più obiettivo di misurare l'insieme di abilità di un ingegnere del software. John Haugeland ha pubblicato una matrice di competenze per programmatore di computer. È un modo oggettivo per misurare un livello di abilità del programmatore , che altrimenti rimarrebbe intatto.

Quando guardo gli ingegneri del software vedo 4 livelli di abilità: Luminary, Senior, Mid-Level e Junior.

Luminary (10+ anni) è uno che ha acquisito padronanza di un'abilità e ha deciso di migliorare la propria disciplina. Alcuni esempi includono: Ted Neward , Zio Bob Martin , Donald Knuth, Oren Eini , Peter Norvig , Linus Torvalds . I luminari cambiano in base al tuo set di abilità.

Senior (da 7 a 10+ anni, Livello 3) è uno che ha trascorso le ultime 10.000 ore a programmare in un genere specifico. Vi è una forte comprensione dei modelli di progettazione, che sfruttano la programmazione asincrona, la messa in coda, la memorizzazione nella cache, la registrazione, la sicurezza e la persistenza quando appropriato.

È molto probabile che un anziano non raggiungerà mai il luminare. I luminari si trovano spesso parlando e scrivendo. Stanno attivamente cercando di influenzare la loro disciplina.

Livello intermedio (da 4 a 6 anni, Livello 2) è uno che capisce la programmazione quotidiana. Lavorano in modo indipendente e creano soluzioni robuste. Tuttavia devono ancora sperimentare la creazione o la manutenzione di sistemi di grandi dimensioni o complessi. In generale, gli sviluppatori di livello intermedio sono fantastici con lo sviluppo a livello di componenti.

Junior (da 1 a 3 anni, Livello 1) è colui che comprende le basi della programmazione. Hanno una laurea in ingegneria del software o informatica o sono autodidatti. Il loro codice viene continuamente rivisto. Viene fornita una guida per quanto riguarda algoritmi, manutenibilità e struttura.

243
Chuck Conway

"Quando dovresti definirti uno sviluppatore senior?" - Quando ho iniziato a fare da mentore agli sviluppatori junior.

111
duros

Ho notato la stessa tendenza. Una delle domande dell'altro giorno riguardava uno sviluppatore senior con 2-3 anni di esperienza nel passaggio all'architetto.

Puoi chiamare una ghianda un albero, ma ciò non cambia ciò che è.

L'unica conclusione logica è che "senior" significa qualcos'altro:

  • rango relativo, come in "senior al ragazzo appena uscito dal college"
  • poveri spagnoli, cioè intendevano mettere señor
  • ortografia meridionale, come in "senior crack, tirali su i pantaloni"

In questi giorni, è solo un titolo di lavoro, e può dire o meno qualcosa sulla relativa esperienza del settore.

23
Steven A. Lowe

ti manca il punto.

Senior non significa niente. Junior non significa niente. I titoli non significano niente. Il mio titolo - Direttore associato dei sistemi aziendali. Le mie responsabilità: gestire tutto l'IT dallo sviluppo del software interno alle infrastrutture, alla sicurezza, ai siti Web dei clienti. La mia esperienza di sviluppo software - autodidatta. La mia esperienza di rete - autodidatta. Le mie capacità generali nel campo IT - peggio delle tue.

La mia capacità di gestire e dirigere - discutibile, ma il mio personaggio e la mia personalità mi hanno procurato il lavoro e mi hanno permesso di riuscirci.

I titoli non significano nulla capacità e sforzo significa tutto. Non sono il migliore - e crederlo sarebbe arrogante.

Dimentica i tuoi problemi con i titoli e dimostra il tuo valore!

21
Steve

Penso la migliore risposta è stata data da Darknight .

Sento la necessità di sottolineare quanto segue.

2-3 anni di esperienza di programmazione (lavoro + personale insieme) non sono sufficienti per aver visto un numero sufficiente di progetti e aver affrontato una quantità sufficiente di problemi. Semplicemente non funzionerà. Hai bisogno di tempo per lasciarti passare le cose in testa, per riflettere sulla tua esperienza e per passare mentalmente a un livello superiore di pensiero. Non succede dall'oggi al domani.

Direi che sotto 5-7 anni di pratica (di nuovo lavorando + personale insieme) un miracolo non è aspettarsi. Si potrebbe fare molta esperienza con determinati linguaggi e quadri, ma non ancora passare a un nuovo livello di pensiero.

L'altra cosa è la maturità complessiva di un individuo. Secondo me si avvicina per la prima volta a 30 anni. Prima di questo il nostro cervello potrebbe funzionare a una frequenza di clock più elevata, ma elaborerebbe la spazzatura, perché manca di dati sufficienti nella memoria per vedere un'immagine più grande. La nostra esperienza di vita generale aggiunge qualcosa di sottile ma reale al modo in cui pensiamo e lavoriamo, quindi anche alla programmazione come un altro tipo di lavoro.

La mia accettazione personale di un anziano: qualcuno almeno 27 anni con almeno 7 anni di pratica . Prima di questo sarei personalmente scettico (ma ancora di mentalità aperta, mi serviranno solo altre prove).

19
user8685

Di recente c'è stato un buon post sul blog di Martin Fowler. Le cose che mi sono tolto sono:

  • Non ha nulla a che fare con il tempo in cui lavori per qualcuno. Lavori per tre anni e diventi uno sviluppatore senior. Cosa succede dopo sei anni? Diventi uno sviluppatore senior senior?

  • Gli sviluppatori senior non ti guardano dall'alto in basso o pensano che siano migliori di te. Questo è molto importante. Quando lasci che il tuo ego si frapponga, sei nei guai.

  • Gli sviluppatori senior non passano la colpa. Anticipano i problemi e li affrontano in modo positivo.

  • Le persone vogliono lavorare con sviluppatori senior. Questa è una chiave per me. Voglio che le persone lavorino con me e voglio che si divertano a lavorare con me.

  • Gli sviluppatori senior non sono gli ingegneri più intelligenti. Non funzionano sui problemi più complessi. Le loro competenze non riguardano solo la programmazione. Le loro capacità comunicative svolgono un ruolo altrettanto importante.

  • Gli sviluppatori senior sono bravi a stimare.

  • Gli sviluppatori senior hanno sempre a cuore ciò che fanno. Capiscono che le attività noiose devono essere completate con la stessa qualità di qualsiasi altra attività potenzialmente più interessante.

Solo per chiarire

Le competenze che ho elencato sopra sono ciò che credo che un bravo ingegnere del software senior dovrebbe avere in aggiunta alle abilità e alle pratiche fondamentali di ingegneria del software.

14
CodeART

Dopo aver fatto da mentore a molti, e la maggior parte ti ho ringraziato per anni, dopo essere stato inizialmente in disaccordo con te, sentiti libero di aggiungere "Senior" a qualsiasi titolo tu possa comandare.

Fino ad allora, "piombo" è probabilmente un termine più descrittivo.

Per me, il termine "senior" indica il culmine dell'esperienza pratica e della saggezza quando si tratta delle persone e delle loro aspettative arbitrarie. Prendi in considerazione questo scenario:

16 programmatori in una squadra, ognuno con esattamente 1 anno di esperienza in più rispetto agli altri. Ciò significa che il 16 ° programmatore ha più di 16 anni di esperienza. Otto dei membri più esperti vengono tragicamente uccisi quando un autobus sbatte contro un negozio. Il ragazzo con metà esperienza ora sarebbe considerato uno sviluppatore senior? Spero di no, spero che la società sostituisca rapidamente i vuoti con persone di uguale o più calibro di quanto abbiano appena perso.

Odio portare il termine ' journeyman ' nella programmazione, ma alcuni di questi si applicano. Il termine "senior" non è qualcosa che darei a chiunque abbia meno di 15 anni di esperienza, perché va ben oltre le conoscenze tecniche.

13
Tim Post

Trovo questo titolo di "Junior/Senior Developer" sbagliato e fuorviante perché non esiste una vera unità di misura per questo. Siamo tutti sviluppatori di software con meno o più esperienza pratica. Non cercare di creare una gerarchia per gli sviluppatori di software, non ha senso e può danneggiare il punto focale principale: un ottimo team di sviluppo software.

7

Quando guardi indietro al tuo lavoro precedente e ti rendi conto di che schifo fosse. E capisci che sei migliorato ma ci sono miglia da percorrere e che l'apprendimento è per sempre.

5
Bernard Dy

A volte guardo altre professioni e mi chiedo perché la programmazione software non si standardizzi. Non sarebbe utile per questa domanda perché ci sarebbe uno standard accettato per ottenere determinati livelli. Poi arrivo alla realizzazione, "Chi è morto e li ha lasciati re?"

Sappiamo tutti che l'esperienza, la formazione, le certificazioni e i titoli sono per tutti gli altri per avere un'idea di base delle capacità dei programmatori. O sai cosa stai facendo o non lo sai. Puoi sentire l'odore del tuo tipo o non puoi.

3
JeffO

"WHAAAT .... UNIT TEST !!!! Sono un programmatore senior ... Non ho più bisogno di testare il mio codice"

Ho sentito prima ... Quindi lascia che i "Juniors" risolvano i suoi bug e li testino.

"Assumeremo un architetto ... no, non il signor X, vogliamo qualcuno che sia molto più anziano, qualcuno che non sta più scrivendo"

più avanti nell'intervista:

  • quindi con quali linguaggi di programmazione hai familiarità?

  • ahem ... Ho usato COBOL e FORTRAN ma ora sono principalmente MS Word, Excel e PowerPoint.

  • Eccellente ... quando puoi iniziare?

Davvero senior è solo una questione di prospettiva, un titolo come direbbe Steven. Tuttavia, vorrei poter dire che alla fine è il codice che scrivi che conta, ma sfortunatamente in molti casi la giacca e la cravatta hanno un impatto maggiore, soprattutto quando non sei più misurato da risultati concreti (codice) ma come bene convinci le gerarchie della tua essenzialità.

3
Newtopian

Quando altri ti chiamano sviluppatore senior. Non esiste una definizione. I suoi cambiamenti da società a società. In un'azienda ben consolidata, alle matricole viene dato meno lavoro e la loro curva di apprendimento è lenta. Nella startup una persona più fresca può assumere molte responsabilità e apprendere molte cose in meno tempo. Ho sperimentato questa prima mano. Purtroppo sono solo le altre persone esperte che possono calcolare la profondità delle tue conoscenze, osservando la qualità del tuo codice o lavoro. E sono sicuro che tutti ottengono il loro titolo quando il loro tempo è scaduto.
E se non lo fai cambi la compagnia. :-)

2
Manoj R

È un titolo come molti altri titoli. Questi "ragazzi" qui potrebbero anche avere un dottorato di ricerca, il che non significa necessariamente nulla. Ma otterrà chiaramente uno stipendio più elevato. Lo stesso vale per lo sviluppatore senior o l'architetto senior. O il senior project manager, ecc.

Considerato questo fatto, è meglio essere chiamato "Il nostro sviluppatore senior" dai tuoi compagni di lavoro, piuttosto che aggiungere quel titolo alla tua carta dopo qualunque esperienza pluriennale - cosa che ho fatto quando ne ho avuto l'opportunità. :-)

A parte questo, direi che 10 anni sono un minimo (incluso college o altra istruzione).

2
Lukas Eder

Di recente ho visto alcune offerte di lavoro in cerca di un laureato in CS con meno di un anno di esperienza. Mi sembra una follia, anche se è solo un titolo. Per uno, suggerisce un annacquamento del titolo. Sono sicuro che le coppie che ho visto con quei post abbiano qualche altro titolo di "super senior" per indicare i veri senior. Non è una cattiva strategia di assunzione, suppongo. Il titolo non è tutto, ma essendo tutto uguale tra due lavori, probabilmente prenderei quello con il titolo "Master Chief Developer".

Il punto in cui il "Master Chief Developer" (o qualunque sia quella posizione elevata, "senior" o altro) è in realtà giustificato, sebbene sia difficile da definire. Non credo che possiamo ottenere troppo obiettivi per quantificarlo. Come formula approssimativa, direi che dovrebbero essere chiamati senior se di solito sono i migliori nella stanza e la stanza contiene almeno 8 sviluppatori professionisti. Ciò suggerirebbe che un anziano è almeno nell'87 ° percentile. Anche se direi che questi sviluppatori probabilmente saranno quelli con più esperienza, non direi che esperienza == "senior", o anche vicino. Allo stesso tempo, anche se sono scettico sul fatto che il numero di anziani con meno di 7 o 8 anni debba essere eccessivamente piccolo, non è impossibile per una persona con meno di questo essere un maestro.

Avendo 22 anni, cado sicuramente nella "improbabile essere una categoria principale". Anche se sono in giro per alcuni di quei "10 (o 30) anni di esperienza di 1 anno", e sono sinceramente tentato di pensare che sto meglio, provo a ricordare che quelle persone, anche se hanno fatto sforzi zero in decenni di apprendimento, probabilmente hanno ancora acquisito più conoscenza di me su una vasta gamma di argomenti attraverso l'osmosi pura. Semplicemente, non potrei sapere quanto loro circa l'intero ciclo di vita del progetto. Lavoro con una persona che ha un progetto più vecchio di me! Sarebbe piuttosto presuntuoso da parte mia pensare davvero di sapere di più sul mantenimento di un progetto di tale portata di lui.

L'altra cosa da tenere a mente è che se inizi a chiamarti senior a 22 anni, cosa sarai a 32 anni? È un po 'disservizio per il tuo futuro presumere che tu sia già in cima. Molte persone osservano la regola delle 10.000 ore per determinare quando qualcuno è un esperto. Nel libro di Malcom Gladwell in cui viene proposta l'idea, è abbastanza chiaro che gli esperti non sono semplicemente i migliori, ma svolgono un certo ruolo. I principianti non sono in alcun modo i peggiori, ma sono una descrizione del metodo ancor più dell'abilità. I principianti possono imparare rapidamente le cose stravaganti, ma spesso hanno difficoltà a fare alcune delle cose più comuni con la stessa velocità di qualcuno che è un esperto. Gli esperti possono fare le cose di routine con estrema precisione e velocità e sapere quali cose cercare che potrebbero denotare problemi, ma spesso hanno difficoltà a reagire ai cambiamenti o ad apprendere cose che si trovano al di fuori della loro zona di comfort. Con questo in mente, non voglio nemmeno essere un esperto ancora. Vorrei assorbire quante più nuove informazioni possibile, il più a lungo possibile prima di stabilirmi in un dominio stabile.

2
Morgan Herlocker

Potrebbe avere qualcosa a che fare con i soldi.

Alcune aziende seguono un piano salariale prestabilito. Non possono metterti nel mezzo della scala "Developer", a causa di alcune regole date. Ma possono metterti in fondo alla scala "Senior Developer".

Personalmente, trovo strano se a una persona viene assegnato un titolo senior appena uscito dal college, ma dall'altra parte: chi se ne frega? Sono uno "sviluppatore" da una decina d'anni ormai, e anche se ottengo un titolo "senior" quando cambio lavoro adesso, non significa nulla. Sarò ancora una matricola nel nuovo dominio - almeno per un po '...

2
Vegar

La prima volta che ottieni un lavoro basato su almeno una sessione di intervista che non è un "classico colloquio tecnico" in natura (ad esempio, parlare di architettura, concetti, design, visione dell'azienda, esperienza, ecc.)

La mia (limitata) esperienza è che gli sviluppatori junior di solito vengono assunti basandosi esclusivamente sulle prestazioni della batteria standard delle domande di intervista e quelli senior basati su una varietà di altre interazioni.

1
Uri

10 anni ?? Stai scherzando. Ok, come definisci 10 anni? Diciamo che qualcuno ha iniziato a programmare all'età di 15 anni ma è diventato professionista a 25 anni?

L'industria non funziona in questo modo. Penso che diverse aziende permettano alle persone di chiamarle Senior Dev X o Y in qualsiasi momento tra 5-8 anni. Molta anzianità nell'Organizzazione non deriva solo dalle capacità, ha molto a che fare con l'iniziativa che un individuo sta prendendo e il tipo di responsabilità che è disposto a condividere. Il più delle volte le persone con ragionevole capacità e forte motivazione diventano professionisti senior.

A proposito 22 anni non è adolescente ;-)

1
Geek