Cosa può fare un programmatore anziano che un junior non può? [duplicare]

23

Spesso vedo offerte per programmatori senior e la regola empirica sembra essere che devi aver lavorato per tre anni per diventare uno. La durata non significa molto quindi cosa si aspetta esattamente da un programmatore esperto? Cosa dovrebbe essere in grado di fare? Come domanda aggiuntiva, quando uno sviluppatore smette di essere considerato junior?

    
posta James P. 09.07.2011 - 14:10
fonte

9 risposte

25

C'è molto di più nello sviluppo del software rispetto al lancio del codice.

  • Sviluppatori mentori
  • Progetti principali
  • Progettazione del software

Questo porta a: Responsabilità

Un Junior Developer sta ancora imparando la lingua e le strutture quotidianamente, e quindi dovrebbe concentrarsi su questo. Ci si aspetta che un mentore (o almeno colleghi esperti) lo guidi, specialmente le decisioni progettuali, e lo controlli regolarmente (e non solo il suo lavoro), spingendo nella giusta direzione e talvolta aiutando a spianare la strada (ad esempio fare il difficile lavoro o gestire la configurazione / implementazione).

Dall'altro, uno sviluppatore senior dovrebbe essere autonomo. Vale a dire che il capo gli consegnerà una caratteristica da implementare e lascerà perdere tutto, sapendo che lo Sviluppatore Senior saprà quando chiedere aiuto o revisione. Lo Sviluppatore Senior dovrebbe anche essere in grado di dire al suo capo quando avrà terminato il compito, e in realtà assumersi la responsabilità di farlo.

La differenza quindi non è tanto nelle competenze linguistiche, quanto nell'esperienza (in generale) e nell'affidabilità.

    
risposta data 09.07.2011 - 14:38
fonte
13

Domanda difficile e difficile. Non aiutato dal fatto che conosco molte persone con il titolo Senior Developer di cui mi fiderei meno di un Junior entusiasta. In effetti, ho mantenuto quel titolo molto più a lungo di quanto lo meritassi.

Tuttavia, ecco la linea come penso che dovrebbe essere:

Ci si aspetta che un Junior Developer abbia bisogno di un tutoraggio. Questo non vuol dire che un Senior non abbia bisogno della peer-review; questo è un atteggiamento pericoloso. Ma nessuna domanda dovrebbe essere considerata stupida, provenendo da un Junior, a meno che non abbiano fatto la stessa domanda ieri.

Un Junior Developer dovrebbe concentrarsi sullo sviluppo, non sul processo di sviluppo o sulle esigenze aziendali dietro lo sviluppo, anche se dovrebbero essere consapevoli che un Senior dovrà essere coinvolto in queste cose e imparare a conoscerle.

Un Junior Developer non dovrebbe essere responsabile del suo lavoro come Senior. Di nuovo, immagino che questo ritorni al mentoring. Dovrebbe esserci sempre qualcuno sopra di lui, controllare il suo lavoro e assumersi la responsabilità di tutto ciò che non va.

Uno sviluppatore minore non è stato lì e ha commesso tutti questi errori. Ciò significa che non può essere altrettanto informato sui trucchi e sui casi limite che si verificano di volta in volta. Non dovresti inviare un Junior Developer da solo in un incontro con l'azienda su un requisito, in cui si suppone che l'input tecnico sia "hai pensato a questa situazione?"

    
risposta data 09.07.2011 - 14:31
fonte
5

I ruoli chiave di uno sviluppatore senior sono il mentoring e l'orientamento.

Non si tratta tanto di quanto sia bravo un programmatore, quanto di come sia possibile comunicare idee e guidare i membri del team attraverso il proprio lavoro. La conoscenza e l'esperienza da sole non ti rendono necessariamente un buon mentore o guida. Ma ovviamente hai bisogno sia di dare impulsi preziosi.

Uno sviluppatore minore è una persona che richiede assistenza e guida per contribuire a una squadra. La differenza fondamentale tra tutoraggio e scambio tra pari è la simmetria.

    
risposta data 09.07.2011 - 14:22
fonte
4

Duration doesn't mean much so what exactly is expected of a senior programmer?

Tra le altre cose, buon giudizio.

  • Il buon senso viene dall'esperienza.
  • L'esperienza viene dal cattivo giudizio.

Quando assumi uno sviluppatore senior dall'esterno, qualche altra azienda ha pagato il costo per acquisire un buon giudizio.

    
risposta data 09.07.2011 - 17:04
fonte
3

Lo sviluppatore senior DOVREBBE sapere cosa funziona e non funziona. Ci sono venti diversi modi per risolvere ogni problema, ma lui / lei dovrebbe conoscere il percorso migliore. E anche l'ovvia competenza tecnica con la tecnologia data. Ma anche il senior developer dovrebbe essere correlato come senior problem solver.

La programmazione non è diversa da qualsiasi altra professione.

    
risposta data 09.07.2011 - 14:53
fonte
3

In primo luogo, penso che 3 anni siano una buona quantità di tempo per non essere più considerati "junior". Ma non c'è modo che considererei qualcuno con 3 anni di esperienza in uno sviluppatore "senior". C'è così tanto da imparare oltre la sintassi che non puoi coprire in profondità in 3 anni. Direi che ci vogliono 3 anni solo per avere abbastanza esposizione a diversi problemi per familiarizzare con un singolo framework. Quindi, ad esempio, se lavori con WPF per 3 anni, è possibile diventare uno sviluppatore senior di WPF (a patto di non svolgere la stessa serie di attività per quei 3 anni). Ma uno sviluppatore "generale" senior

Per me uno sviluppatore senior è qualcuno che può adottare una funzionalità dal requisito alla consegna. Lui o lei dovrebbe essere in grado di fornire anche una guida agli sviluppatori junior. Cosa ci vuole per fare qualcosa di simile? Per un'applicazione standard, Line-of-Business, multilivello, basata su database, ciò implica la conoscenza dell'interfaccia utente, della comunicazione tra server, dell'accesso ai dati e di SQL (o di un O / RM se si sta seguendo questa rotta). / p>

L'apprendimento può essere simultaneo quindi se lavori con WPF e WCF estensivamente per gli stessi 3 anni, puoi diventare abbastanza abile in entrambi. Ma c'è anche solo così tanto che puoi imparare subito. Tutto dipende anche dal tipo di formazione / tutoraggio che stai ricevendo mentre stai imparando.

Non sembrare un disco rotto, ma lo riporterò al Modello di acquisizione delle abilità Dreyfus (vedrai che mi riferisco molto a questo qui). La ripetizione non è sufficiente per passare dal principiante alla maestria. Devi fare pratica applicata che include gradualmente capacità di prova che sono in aumento nella sfida. Ad esempio in WPF inizierai con la creazione di controlli utente di base e alla fine passerai alla scrittura di controlli completamente personalizzati, senza look.

Ci sono una serie di fattori che determinano il livello di abilità degli sviluppatori. Il solo tempo è l'indicatore meno importante.

    
risposta data 09.07.2011 - 18:34
fonte
1

Esempio:

Quando ho iniziato a programmare con Ruby on Rails, dopo tre settimane ho avuto il mio primo piccolo sito Web, dopo altre tre settimane un prototipo per un cliente, dopo altre sei settimane un sito Web completamente funzionante online. Durante questo periodo gli sviluppatori di Rails con esperienza presso la società che ho lavorato sono stati di grande aiuto per sistemare le cose. Sebbene l'apprendimento della lingua e del framework fosse la parte più piccola.

Dopo alcuni mesi di esperienza con Rails e contatti permanenti con la community di Rails (mailing list, forum ...) conoscevo Rails al suo interno. Conoscevo tutte le "migliori pratiche", sapevo qual è il modo migliore di fare le cose, non solo come farlo funzionare. Conoscevo tutti gli strumenti che sono importanti e sono stato in grado di confrontare vantaggi e svantaggi di tali strumenti in determinate circostanze. Ciò includeva esperienze con varie aree della programmazione web, come ricerca full text in database, sicurezza, sistemi di pagamento online, REST, CRUD, controllo della versione e tutte le altre parole d'ordine del business web.

Quindi, quando un cliente ha chiesto, se potessimo implementare una determinata funzionalità, sono stato in grado di dirgli cosa potevamo fare al riguardo, dicendogli invece che devo vedere se è possibile. Sapevo quali strumenti potevo usare e quanto mi sarei dovuto permettere di scrivere il mio codice.

Se un nuovo programmatore implementasse qualcosa, avrei potuto segnalare rischi per la sicurezza come le iniezioni di SQL. Se volesse implementare una funzione, avrei potuto dirgli quali strumenti utilizzare e se altri sviluppatori nella community di Rails li consideravano attendibili o se avrebbe dovuto aspettarsi dei problemi.

    
risposta data 09.07.2011 - 14:29
fonte
1

È difficile da dire. Da un lato Senior Developer è solo qualcuno che ha lavorato x anni in una società abbastanza a lungo da ottenere il titolo di Senior. Alcune persone con il titolo di sviluppatore "Senior" erano impressionate dalle cose che facevo il mio primo anno di lavoro e il loro codice era un cumulo di spazzatura fumante. Ma poiché avevano x anni di esperienza, la società li ha assunti da uno sviluppatore senior. Tuttavia non si sono preoccupati di progettare software, basta lanciare tonnellate di istruzioni if in uno o due metodi giganti, nomi di variabili imbarazzanti e farlo. Quindi è così complesso che è stato un incubo da eseguire il debug ... Anche nella mia attuale azienda ci sono sviluppatori senior con cui lavoro, basta lanciare tutto il codice in un codice per una pagina ASP.NET e duplicare lo stesso codice per ogni pagina separata.

In altre aziende si prevede che gli sviluppatori senior conoscano la progettazione dell'interfaccia utente, la progettazione orientata agli oggetti, le buone pratiche di codifica, come stimare il tempo, ecc ... C'era una società in cui non riuscivo nemmeno a ottenere un ruolo di livello intermedio sviluppatore perché le mie capacità orientate agli oggetti erano troppo deboli. In entrambi i miei precedenti ruoli di sviluppo nessuno sviluppatore senior stava facendo veramente progetti orientati agli oggetti. L'unica cosa che so di stratificazione del software / stratificazione del dominio / design orientato agli oggetti che ho letto dai libri. Nel complesso, lo sviluppatore senior che ha dovuto esercitarlo sempre ed è diventato abile in questo modo è meglio di uno senza esperienza.

In generale, la lezione della storia è che il tuo chilometraggio varia. Alcune persone hanno il ruolo solo per avere x anni di esperienza, anche se è 1 anno di esperienza x volte. Aziende diverse hanno standard diversi. Voglio trovarne uno in cui si prevede che uno sviluppatore senior scriva un software eccellente, pulito, ben progettato e manutenibile e quindi lavorerà fino a un ruolo di sviluppatore senior in modo che io sia un vero sviluppatore senior e non solo qualcuno con x anni di esperienza chi ha ottenuto il titolo Senior. Purtroppo ci sono molti posti che Senior = x anni di esperienza indipendentemente dall'abilità ........

    
risposta data 09.07.2011 - 18:06
fonte
0

Sapere cosa non dedicare a fare del tempo.

    
risposta data 09.07.2011 - 19:05
fonte

Leggi altre domande sui tag