Essere uno sviluppatore senior usando una lingua ti qualifica per essere uno sviluppatore senior usando un'altra lingua? [chiuso]


27

Se lavoro come sviluppatore in una lingua (ad es. Java) e mi spingo fino a Senior Developer, ciò mi qualificherebbe come Senior Developer per una posizione che utilizza un'altra lingua (ad esempio Ruby)?


2
@Philip - questa domanda è davvero una domanda limite su un paio di fronti. È borderline "troppo localizzato" perché avrà davvero valore solo per te ed è borderline "non costruttivo" in quanto non indirizza realmente le linee guida per porre domande elencate nelle nostre FAQ. Se è possibile modificare questa domanda e rispondere alle linee guida, potrebbe valere la pena salvarla.
Walter,

8
@Walter - Non sono d'accordo con il tuo primo commento sulla localizzazione. Questa è una domanda / risposta generalmente applicabile riguardante se essere uno sviluppatore senior in una lingua ti dà diritto a una posizione di sviluppatore senior in un'altra.
Craige,

1
@Walter - rimosso i problemi di localizzazione, penso che ora sia probabilmente ragionevole.
Jon Hopkins,

1
@Walker - Siamo spiacenti, la domanda si intende come dice Craige. L'ho scritto in quel modo perché presumo che la maggior parte dei programmatori che sono considerati Junior vogliono un giorno essere sviluppatori senior. La scelta della giusta posizione Junior è quindi cruciale (o no)
Philip

11
Questa domanda sembra presumere che "Senior Developer" abbia una sorta di significato generalmente accettato. Normalmente è una sorta di titolo di lavoro e un titolo di lavoro è ciò su cui tu e il vostro datore di lavoro siete d'accordo.
David Thornley,

Risposte:


33

Il modo migliore per rispondere a questo è guardare quale sia la differenza tra uno sviluppatore e uno sviluppatore senior. Supponendo che non sia solo una cosa utile, in genere mi aspetto che gli sviluppatori e gli sviluppatori senior siano in grado di:

  • Scrivi il codice con competenza nelle lingue richieste dal ruolo
  • Diagnosticare e correggere i bug
  • Scrivi unit test
  • Seguire gli standard e le migliori pratiche ragionevoli (controllo della versione, documentazione)
  • Avere un'ampia competenza tecnica di base
  • Agire in modo professionale

Inoltre, mi aspetto che uno sviluppatore senior:

  • Mentor altri membri del personale nelle migliori pratiche
  • Essere e riconoscere il punto di riferimento per almeno alcune delle lingue utilizzate dal team
  • Ricercare attivamente e promuovere nuove aree di buone pratiche
  • Assumi la proprietà tecnica di questioni / aree di codice più complesse e fornisci soluzioni solide

Quindi, la domanda diventa allora soddisfare i criteri estesi per la tua seconda (o terza o quarta) lingua? Suggerirei che fintanto che sei tecnicamente abbastanza competente nella lingua in cui ti stai trasferendo, sì, poiché la maggior parte delle cose dello sviluppatore senior tende ad essere trasferibile.


1
Questo dipende davvero dall'ambiente, in particolare dal capo. Alcuni "Sr" sentono di aver bisogno di mostrare le loro conoscenze su ogni argomento, specialmente dove un "jr" può avere più conoscenza ed esperienza su un argomento. Qualche grave tensione può accumularsi quando un Sr. con un background C ++ lavora su un progetto C #. Un "jr" può avere una base di conoscenza più ampia per questo particolare framework. Ciò può causare alcune battaglie accese, specialmente quando il boss sta ascoltando.
P.Brian.Mackey,

@ P.Brian.Mackey - Abbastanza giusto, ci sono alcune differenze abbastanza forti tra diversi lavori con lo stesso titolo. Sono andato con quella che pensavo fosse una definizione abbastanza generica (e ragionevole) ma può variare da "ha più di 30 anni" a "sa tutto di tutto".
Jon Hopkins,

1
buona fortuna con quest'ultimo in qualsiasi lingua più complicata di BF ... anche C ha angoli più scuri di quanto ti aspetteresti!
SamB,

'Alcuni "Sr" sentono di aver bisogno di mostrare le loro conoscenze su ogni argomento'. A queste persone dovrebbe essere detto di rilassarsi. Non puoi imparare nulla se non riconosci che ci sono cose che non conosci. La capacità di ammettere liberamente l'ignoranza di qualcosa è un segno di forza, non di debolezza.
Peter Allen Webb

1
+1 Per aver sottolineato che alcune ma non tutte le abilità sono trasferibili. Ottimo modo per dirlo.
Nicole,

5

Puoi candidarti per qualsiasi posizione presso qualsiasi azienda che ti piace, indipendentemente dal tuo stato attuale.

Spetterà a te dimostrare nel tuo CV / lettera di presentazione / colloquio che sei l'uomo giusto per il lavoro.


5

Cerco le seguenti qualità quando ho intervistato Sr. Developers.

  • Ha funzionato in più lingue
  • Esperto in almeno uno, competente in almeno un altro, preferibilmente in un paradigma diverso
  • Consapevole delle tecnologie attuali, dello stato dell'arte, ecc. Nell'area prescelta
  • Buona base CS cioè (algoritmi, costi algoritmici, strutture dati, ecc.)
  • La possibilità di alternare i dettagli di un problema specifico e il quadro generale
  • Esprimi quando le cose si muovono nella direzione sbagliata e perché; e poi essere in grado di continuare in quella direzione sbagliata (aka professionalità)
  • Capacità di mentore
  • Capacità di lavorare all'interno e con una squadra

Ci sono una miriade di altre cose che cerco, ma questi sono i punti principali.

Mentre ho raccomandato di assumere Sr. Developers che non erano esperti nella lingua usata al lavoro, erano esperti in lingue simili.


3

Potresti candidarti, ma almeno se stavo facendo l'assunzione, potrei o meno assumerti.

L'anzianità riguarda (almeno) due aree. Competenza di sviluppo generale e competenza linguistica / quadro. (Al momento lascio intenzionalmente fuori la conoscenza dello spazio commerciale). Essere uno sviluppatore senior nei miei libri includerebbe anche un livello di competenza in progettazione / architettura. Come costruire un sistema buono / testabile, ecc.

Arrivare a questo livello in Java dovrebbe metterti in condizione di conoscere altre lingue (simili / procedurali).

Ma in questa era di prevista produttività immediata, è improbabile che tu sappia quasi tanto su Ruby quanto Java. Come suddividere il sistema in costrutti compatibili con Ruby anziché in costrutti compatibili con Java. Probabilmente conosci alcuni framework Java e non Rails o altre cose specifiche di Ruby.

Se dovessi chiederti di scrivere la lavagna in codice in Ruby durante l'intervista, potresti farlo?

Tutto ciò andrebbe nella mia decisione di assumerti o meno, a qualsiasi livello; ma in particolare per un ruolo senior .

In bocca al lupo


Grazie per la tua risposta, sì, potrei fare il codice della lavagna in Ruby (lo stesso per C ++, Java). In realtà, al momento, mi considero ancora più competente in Ruby che in Java perché da un anno lavoro su un progetto privato basato su Ruby.
Filippo

3

No.

Questa è una delle grandi differenze tra la nostra professione e altre professioni più "formali". Se hai lavorato come avvocato facendo testamenti e proprietà per 20 anni, allora avrai un alto grado di controllo perché hai 20 anni di conoscenza accumulata in quel dominio .

Se fai C ++ / Win32 / MFC da 15 anni, questo non ti qualifica davvero per un posto senior come sviluppatore di Rails, anche se stai ancora risolvendo gli stessi problemi nello stesso dominio ... fatturazione, ad esempio.

Ancora peggio, la maggior parte delle aziende non ti considererà nemmeno per una posizione approssimativamente simile ... Ad esempio, se hai fatto C ++ / MFC per 5-7 anni, dovresti essere in grado di accelerare su C # /.NET molto rapidamente, almeno per il desktop. Sfortunatamente la maggior parte delle aziende non la vede così.


4
Non so che la maggior parte delle aziende la veda così. Il problema in questo momento, in un'economia in crisi, è che ci sono così tante altre persone disponibili che già conoscono (dal tuo esempio) C #, quindi potrebbero restringere la ricerca solo in base ai numeri.
Wonko the Sane,

Penso che la maggior parte delle competenze e delle esperienze siano trasferibili. Imparare una nuova sintassi è facile. Sfortunatamente, hai ragione: non è quello che pensi, ma quello che pensa la persona che ti sta assumendo.
Nessuno il

3

Dipende

Elimina la "programmazione". Fingi invece di essere un traduttore professionista.

Supponiamo che l'inglese sia la tua prima lingua e che tu sia anche in francese. Probabilmente imparerai lo spagnolo abbastanza facilmente.

Tuttavia, non è altrettanto probabile padroneggiare rapidamente i molti dialetti del cinese. Mentre la tua esperienza di linguista ti aiuterà a imparare la (e) lingua (e), dandoti un vantaggio su qualcuno che non ha mai studiato una lingua straniera, ti richiederà comunque molto più tempo per diventare un "esperto" (cioè "senior" ) traduttore in quella lingua.


2

Sì e no.

Se le lingue sono simili , diciamo C ++, Java o Ruby, che dovresti prendere in considerazione. A seconda di quanto siano flessibili le persone sedute in quegli uffici, hai una possibilità di combattere.

Tuttavia, se le lingue sono molto diverse , e con questo intendo dire che sei un ragazzo COBOL che ha preso a calci su Haskell, nonostante i tuoi oltre 10 anni di probabilità COBOL sono convinti che potresti non essere in grado di ottenere un'intervista.

COPPIA DI COSE CHE VERRANNO A FAVORE IN TALI SITUAZIONI:

  1. Se conosci già più lingue e hai una comprovata esperienza sulle stesse. Di 'che sei bravo in C ++, ma conosci anche Perl, Tcl e alcuni Ruby che sarei disposto a prendere in considerazione per Java. In effetti conosco persone che hanno ottenuto lavori Java con C ++ nel loro curriculum.
  2. Se la tua esperienza è in un dominio correlato, allora hai buone possibilità di farcela. Ad esempio, se sei un programmatore di giochi C ++, non vedo alcun motivo per cui non puoi essere assunto per un lavoro C # che necessita di un bel po 'di multi-threading.

1
Okay, devo chiederti: com'è Ruby come C ++ o Java? C ++ e Java sono entrambi linguaggi in stile C, mentre Ruby deriva da Perl, Python e Smalltalk.
Craige,

Mi riferivo a OOP come tema guida.
Fanatic23,

2

Raramente ho visto un titolo "senior" basato sul linguaggio. Conosco alcuni programmatori senior di sistemi , un paio di programmatori web senior e un programmatore COBOL senior.

La programmazione è multiforme e ha parecchie discipline da offrire. Mi aspetto che uno sviluppatore web senior (in titoli, programmatore e sviluppatore sembri essere intercambiabile) sia esperto in diversi linguaggi tradizionali usati nello sviluppo web. Questo rende un guru Python e PHP un esperto istantaneo in C #? No. D'altra parte, non tutti i guru di C # hanno imparato l'arte della gestione e della leadership del progetto.

Ho ricoperto il ruolo di CTO in un'azienda, oltre a essere il programmatore di sistemi senior. Tuttavia, sarei felicemente rinviato a uno schema oa un esperto LISP se incontrassimo un progetto che lo rendesse necessario. Parte di essere un buon leader è capire i propri limiti e le carenze prima .

Non sono sicuro che mi piacerebbe lavorare in un'azienda o addirittura in un dipartimento incentrato su una sola lingua. Sembra che farebbe quello che dicevano sempre che fumare sigarette avrebbe fatto: arrestare la crescita quando la realtà è in realtà molto peggio.

Non inseguire i titoli, inseguire la conoscenza. Ma, per essere onesti, il tuo ruolo in una precedente posizione di leadership probabilmente ti darebbe un vantaggio in più, a condizione che tu abbia dimostrato competenza nella lingua a portata di mano.


0

Penso che dipenda da cosa percepisci come sviluppatore senior? Se è più un ruolo di architetto, molti dei principi e dei modelli di progettazione saranno a tua disposizione dalla tua esperienza di sviluppatore, indipendentemente dalla lingua. Quindi questo è un vantaggio ;-)

Tuttavia, quando si cerca di creare un'applicazione o un codice nel modo più produttivo e gestibile possibile (il roll up dei bit sleaves), non penso che si possa accedere allo stesso livello di esperienza quando si cambia lingua, IDE e / o framework.

Ma come diceva Runrun, questo non ti impedisce di fare domanda per nulla


0

Ciò dipenderà in larga misura dalla società in cui intervisti, in quanto in genere sono le procedure interne relative alle risorse umane a guidare il modo in cui i nuovi dipendenti vengono coinvolti. Le aziende più grandi tendono ad essere molto rigide e se dicono che devi avere n anni di esperienza in una determinata lingua per essere considerato di livello senior, potresti scoprire che ti porteranno solo in uno sviluppatore di medio livello.

Detto questo, ciò non dovrebbe impedirti di candidarti per la posizione e se ti coinvolgono per un colloquio è qualcosa di cui dovresti discutere.


0

Direi che più il linguaggio è basso o intuitivo, più sei esperto.

Le competenze Java / C # sono meno pagate delle competenze ASM / C / C ++.

Questi ultimi linguaggi gestiscono la memoria e altre cose che in realtà sono rilevanti durante la programmazione.

Ma per altre lingue "facili", dovresti fare un rapido confronto sulle funzionalità che le rendono "più facili", ma lo trovo inutile. Le esperienze con linguaggi semplici sono meglio misurate con CMS / altri codici creati che hai usato per svolgere il tuo lavoro, come accenditore di codice o django o Apache o RoR.

Per me, gli sviluppatori senior sono persone che programmano kernel, sistemi, hardware incorporato, ecc. I programmatori che usano lingue che non sono amichevoli per la macchina non sono anziani per me. Fanno solo il lavoro, ma questo è tutto.


Opinione interessante. Sono d'accordo, C ++ è molto più dolore. D'altra parte, c'è molta sofferenza del C ++ perché alcune parti del linguaggio (attuale) sono in qualche modo obsolete. Le lingue più recenti hanno molte più funzioni di libreria, Lambdas, loop per ciascuno e una sintassi meno criptica per molte cose. Questi problemi possono distrarre dal concentrarsi sulle cose di basso livello.
Filippo

Questa è un'opinione interessante Nella mia esperienza, una persona anziana si occupa di più della gestione, non necessariamente perché non codifica, ma perché ha più esperienza nel tradurre le cose di basso livello in non-tecnici. Puoi certamente rispettare quell'abilità o no. Il tuo punto di vista solleva una domanda, su un team di 30 sviluppatori web, nessuno di loro è senior perché non può scrivere un kernel? Non fa differenza se hanno lavorato a Mosaic o hanno appena finito il liceo?
Steve Jackson,

30 sviluppatori web? SVILUPPATORI? Bene, "senior" significa per me che la persona ha programmato per molto tempo o è più anziana. Ma se penso "senior" in termini di esperienza e conoscenza che contano, non penso che potresti chiamarla esperienza di programmazione se usi un linguaggio garbage collection.
jokoon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.