Perché la maggior parte delle offerte di lavoro riguarda uno sviluppatore <lingua qui>, piuttosto che uno sviluppatore in generale? [chiuso]


10

In un mondo ideale:

In un eccellente articolo Non definirti un programmatore e altri consigli sulla carriera , Patrick McKenzie spiega, tra le altre cose, che la lingua non ha importanza:

  • Uno sviluppatore è una persona che risolve i problemi, in generale. Uno sviluppatore non è una persona che scrive codice in una lingua specifica.

  • Alle aziende non interessano le lingue che conosci. Se hanno bisogno di assumere uno sviluppatore per un progetto scritto in una lingua specifica e hanno un candidato che ha molta esperienza ma non ha mai scritto una riga di codice in questa lingua, verrebbe comunque assunto.

Secondo la mia esperienza sia come sviluppatore che come persona che ha dovuto assumere altri sviluppatori, l'osservazione è molto simile:

  • L'esperienza N anni in Java o N anni esperienza in C # non ha importanza. Ciò che conta è che il candidato sappia come risolvere i problemi, sappia la differenza tra codice spaghetti e codice pulito con un'architettura ben ponderata, ecc.

  • Non mi importa delle lingue che hai usato prima. Per un progetto C #, preferirò assumere uno sviluppatore professionista che ha trascorso la sua vita a scrivere codice Java, Python e Ruby on Rails piuttosto che un principiante che conosce solo C # e lo conosce male.

  • Le conoscenze e l'esperienza acquisite utilizzando una lingua sono riutilizzabili principalmente in qualsiasi altra lingua.

    Uno sviluppatore esperto che ha utilizzato Ruby on Rails per lo sviluppo Web e ha trascorso il resto della sua carriera a scrivere applicazioni desktop Java utilizzando Oracle, si adatta perfettamente a un progetto ASP.NET MVC utilizzando Microsoft SQL Server. Perché questa persona conosce già tutto ciò di cui ha bisogno per questo lavoro , a parte alcune cose specifiche e differenze di sintassi.

    D'altra parte, una persona che ha realizzato solo alcuni piccoli siti Web ASP.NET MVC non si adatta affatto, perché potrebbe non comprendere completamente l'architettura MVC, potrebbe sapere cos'è la profilazione SQL e potrebbe mancare qualche altro elemento essenziale conoscenza.

    Non dirmi che non sono in grado di risolvere un piccolo problema con un sito Web PHP che utilizza CodeIgniter solo perché non ho mai usato CodeIgniter prima.

In pratica:

In pratica, quando cerco lavori freelance e quando vedo le offerte di lavoro in generale, sono molto specifiche della lingua.

Alcuni sarebbero alla ricerca di uno sviluppatore PHP con due anni di esperienza in Magento. Altri cercheranno una persona con esperienza VB.NET di almeno tre anni e se invii loro un curriculum che menziona che hai fatto lo sviluppo di C # per sei anni, ma senza menzionare VB.NET, non si preoccuperanno rispondere. Se chiedono una persona con un'esperienza con Firebird, non ascolteranno la tua esperienza decennale con Oracle.

Perché esiste una tale differenza tra la teoria e ciò che Patrick McKenzie e io descriviamo come buonsenso e il mondo reale delle offerte di lavoro?


12
Don't tell me that I'm unable to fix a small problem with a PHP website which uses CodeIgniter just because I never used CodeIgniter before.Mentre sei perfettamente in grado di risolvere il problema, se la causa principale è CodeIgniter (una delle poche stranezze del framework, o uno dei suoi numerosi bug aperti), ci vorrà molto più tempo per risolvere il problema.
yannis,

12
Avete dimenticato alcuni tag: <rant>...</rant>. Seriamente, c'è una vera domanda qui?
Ciclope,

6
"Non mi interessano le lingue che hai usato prima. Per un progetto C #, preferirò assumere uno sviluppatore professionista che ha trascorso la sua vita a scrivere codice Java, Python e Ruby on Rails piuttosto che un principiante che conosce solo C # e sa male ". - Prendi quel pagliaccio! Questa è una falsa dicotomia. Il tuo rant è corretto per i principianti, ma NON per le posizioni che richiedono una profonda conoscenza di una particolare piattaforma.
Jim In Texas,

1
Qualcuno che ha esperienza in una lingua farà il lavoro molto più rapidamente e in modo molto più pulito, pensando altrimenti è solo delirante.
Thomas Bonini,

Quando sono la persona che assume, divento quello con un lungo elenco di "Termini X, Y e Z di Technobabble obbligatori". E se riesco a trovare quella persona, posso assumerli. Quando sono la persona in cerca di lavoro, potrei risentirmi per non avermi guardato perché ho solo una gran quantità di cervelli e non l'esperienza esatta che vogliono, ma se avessi la cosa esatta che vogliono, mi aspetto per essere assunto, sul posto. Quindi, alla fine, è la loro chiamata, ed è come dovrebbe essere.
Warren P,

Risposte:


16

Perché molte aziende dispongono di droni delle risorse umane per il reclutamento che non ne hanno idea. Quando le risorse umane dicono "Di quali qualifiche ha bisogno il candidato?" è molto più facile dire "Sei anni in C #" piuttosto che dire "Scrive un buon codice". Quel drone non ha idea di come sia "Scrive un buon codice" o di come filtrare un curriculum in base al fatto che possano o meno scrivere un buon codice. Possono, tuttavia, leggere rapidamente un curriculum e vedere "C # cinque e tre quarti" e buttarlo via.


3
Esattamente. i non sviluppatori e i dirigenti potrebbero guardarti di traverso se dici che stai cercando qualcuno con competenze simili ma che prima di tutto avrebbe bisogno di imparare un bel po '(ad es. sintassi specifica, non concetti) a meno che non siano d'accordo.
Michael Durrant,

Pensavo fossero chiamate scimmie delle risorse umane ... Sono assolutamente d'accordo, ma è una buona idea avere un guru <lingua qui> nella squadra.
Lukasz Madon,

3
Inserire "scrive un buon codice" nell'annuncio non ha senso. Tutti pensano di scrivere un buon codice. E quelli più condannati per le loro superiori capacità di scrittura del codice sono generalmente quelli che scrivono il codice peggiore.
Nikie,

1
@nikie: è una semplificazione. Naturalmente, non inseriresti esattamente questo nella pubblicità.
DeadMG,

3
Non penso che questo sia il motivo principale, dato che le piccole startup senza un reparto risorse umane fanno esattamente lo stesso.
J. Maes,

22

Penso che sia tempo di mettere a posto questo mito che uno sviluppatore con X anni di esperienza nella lingua Y può trasferire senza problemi alla lingua Y2. Non funziona così.

Se trattate il linguaggio solo come sintassi e schemi comuni, sapendo, per esempio, Java vi darà un enorme vantaggio quando passerete a C #. Tuttavia non ti preparerà per WCF, WPF, Click Once, le varie librerie di threading, Linq, e sicuramente non ti preparerà per le cose che l'opuscolo dice che funzionano, ma in pratica non lo fanno.

Vedi che non stai parlando di una lingua, di solito stai parlando di una piattaforma. E dove la piattaforma, .NET è un buon esempio, supporta molte lingue, le persone tendono a convergere su una scelta preferita.

Quindi, quando chiedo uno sviluppatore C #, sto effettivamente pubblicizzando uno sviluppatore della piattaforma .NET la cui esperienza risiede nei progetti C #. Questi tendono ad essere progetti server .net, progetti winforms / wpf.


Sono d'accordo. Ovviamente è possibile, ma difficile. La sintassi della famiglia C si trasferisce facilmente, ma la comprensione reale dell'intera piattaforma e del set di strumenti richiede molto tempo per grok. Il mio consiglio agli sviluppatori / programmatori / analisti / programmatori più giovani è quello di saltare sulle nuove tecnologie nel tuo tempo mentre tutti sono ancora principianti. Le persone che si sono tuffate nello sviluppo di HTML5, iOS e Android due o tre anni fa sono in buona forma ora. Certo, è possibile indovinare (chiedimi di Flex), ma non è la fine del mondo.
Jim In Texas,

Ciò è dovuto principalmente al fatto che Java -> C # è simile a C -> C ++ - possono essere costruiti sulle stesse basi, tecnicamente, ma C # include molte più funzionalità che vorresti effettivamente utilizzare. La trasformazione inversa sarebbe molto più semplice, passando da C # a Java.
DeadMG,

11

Mi vengono in mente alcuni motivi:

  1. Dipendente vs consulente - Se sto assumendo un consulente, voglio che sia già al passo con lo stack tecnologico che stiamo utilizzando. Ci si aspetta che i consulenti siano efficienti molto rapidamente poiché non sono in grado di ammortizzare l'apprendimento.
  2. Offerta / domanda - Come ha detto Doc, se ho intenzione di scegliere il candidato più esperto che posso per il lavoro. E lo stack tecnologico è importante per le tecnologie consolidate. Se sto cercando una persona da sviluppare in Go (scegliendo una lingua che pochi conoscono), quasi nessuno ha esperienza con esso e torno alle competenze come sviluppatore in generale.

4

Non tutti i lavori di programmazione sono uguali. Il mio attuale lavoro si adatta sicuramente al tuo modello. Implica molte analisi dei dati ad hoc e raccogliamo e posiamo gli strumenti secondo necessità. Sono stato assunto in parte perché avevo una comprovata esperienza nel riuscire a diventare rapidamente produttivo con nuovi strumenti.

D'altra parte ci sono posti di lavoro in cui si sta cercando specifiche competenze tecniche. Negli anni '90 lavoravo per un piccolo negozio di software e dovevamo sviluppare rapidamente le competenze in C ++. Nonostante la richiesta esplicita di esperienza in C ++ nei nostri annunci, la maggior parte dei candidati conosceva meno C ++ di me. "Ma posso imparare rapidamente C ++!" dissero tutti. Beh sì, sono sicuro che potresti, ma anche io, e anche le altre persone già presenti. Stavamo cercando qualcuno che conoscesse già davvero il C ++, quindi avremmo avuto una fonte interna di esperienza mentre il resto di noi si mettesse alla prova. Avere un altro principiante nella squadra non avrebbe davvero aiutato.


1
+1: Un TEAM può avere alcuni o addirittura la maggior parte degli sviluppatori nuovi nella lingua, ma aiuta molto avere esperti di lingue che possono insegnare a tutti gli altri.
ALBERO,

3

Alle aziende non interessano le lingue che conosci. Se hanno bisogno di assumere uno sviluppatore per un> progetto scritto in una lingua specifica, e hanno un candidato che ha molta esperienza> ma non ha mai scritto una riga di codice in questa lingua, verrebbe comunque assunto.

Supponiamo che tu stia cercando un candidato per un lavoro .NET / C #. Se hai due candidati per il lavoro, entrambi sembrano avere la stessa esperienza, ma il primo ha avuto la sua esperienza nell'ecosistema Java, il secondo nell'ecosistema .NET - qual è il tuo preferito?

Altri cercheranno una persona con esperienza VB.NET di almeno tre anni e se invii loro un curriculum che menziona che hai fatto lo sviluppo di C # per sei anni, ma senza menzionare VB.NET, non si preoccuperanno rispondere.

Chi può dire perché non ottieni una risposta? Forse c'erano abbastanza sviluppatori VB.NET esperti che si candidavano per il lavoro? Forse il dipartimento delle risorse umane utilizza l'esperienza del linguaggio di programmazione come filtro per ridurre il numero di domande di lavoro da 100 a 10. Forse hai appena parlato con aziende sbagliate (suppongo che nella mia azienda invieremo una risposta nel caso di esempio hai descritto sopra).


2

Nella maggior parte dei progetti, i risultati del lavoro sono necessari rapidamente e le persone devono generare profitti il ​​prima possibile.

Le persone che sono in grado di soddisfare queste esigenze e non sono legate a una o più lingue specifiche sono scarse e di conseguenza troppo costose. Queste persone vengono assunte solo dalle grandi aziende che richiedono competenze incredibili.

Le persone che sono in grado di risolvere il problema ma non possono imparare velocemente una lingua specifica sono meno scarse. Costano ancora un sacco di soldi e hanno un costo aggiuntivo di tempo necessario per imparare la lingua specifica.

Questo costo aggiuntivo viene ridotto chiedendo un programmatore specifico per la lingua. Ha già imparato le competenze richieste e può fornire risultati rapidamente.

In breve, un progetto che deve essere realizzato in JAVA non ha bisogno di un costoso sviluppatore di software incredibile, né ha bisogno di uno sviluppatore .net medio che avrà bisogno di tempo per imparare la lingua / il framework. Ha bisogno di risultati immediati per la minima quantità di denaro, che viene consegnato dal ragazzo che ha già esperienza con JAVA e ha capacità relativamente buone di risoluzione dei problemi.

Come sempre, si tratta di soldi e ottenere il massimo ritorno sugli investimenti


2

Penso che tu stia semplicemente interpretando male la frase standard "<lingua qui> sviluppatore". Le aziende non inseriscono quella frase nell'annuncio per scoraggiare gli sviluppatori che hanno esperienza in un'altra lingua. Perché dovrebbero scoraggiare gli sviluppatori capaci? Dal punto di vista del datore di lavoro, più candidati sono, meglio è. Possono sempre non invitare le persone che non sono interessati a.

Il vero punto della frase è di dire a te, lettore, cosa comporterebbe l'offerta di lavoro. E questo ha molto senso, IMHO. Faresti domanda per un lavoro in cui sviluppi in linguaggio assembly Z80? O COBOL? O Fortran?

E, ovviamente, se la società ha due candidati che sembrano ugualmente intelligenti in caso contrario, vince quello con esperienza in <lingua qui>. Niente di più, niente di meno. (Ci sono casi speciali in cui le persone vengono assunte per un solo progetto o per un progetto che è già in ritardo o per il primo progetto che la società sviluppa in <lingua qui>, dove hai davvero bisogno di esperienza in quella lingua dall'inizio, ma non penso che siano la regola.

Per inciso, la mia azienda una volta ha scritto annunci come hai suggerito ( sembra che abbia senso, dopo tutto). I risultati furono devastanti. Le persone a cui interessa davvero il proprio lavoro hanno semplicemente saltato l'annuncio. Solo il disperato, che si applica a qualsiasi posizione aperta applicata. Non l'abbiamo mai più provato.


1

Fai un passo indietro e pensa alla premessa. Vuoi che una persona faccia un po 'di lavoro .net. Lo metti nella descrizione del tuo lavoro e cerchi candidati con quella competenza! È solo buonsenso.

Sono certamente d'accordo con le tue filosofie più dettagliate sul perché questa potrebbe non essere una buona idea, ma la maggior parte delle persone pubblicizzerà, richiederà e cercherà un candidato con le competenze di cui ha bisogno ora. È così semplice, quindi penso che questo risponda al titolo della tua domanda sul perché.

Se non riescono a ottenere alcun candidato o se ne superano diversi, potrebbero studiare un po 'ed essere più sensibili agli elementi che dettaglia. In effetti nell'area in cui mi trovo (Ruby on Rails) ci sono un sacco di annunci in questo momento che dicono "nessuna esperienza richiesta, ti addestreremo", ecc. E in effetti alcune delle principali organizzazioni di Ruby on Rails sono molto aperti ai candidati "senza cattive abitudini" che possono addestrare. Quindi l'approccio giusto è là fuori da alcune organizzazioni.

Ricorda anche che la maggior parte degli annunci sono di reclutatori esterni o di reclutatori interni non tecnici che semplicemente non hanno le conoscenze per "andare lateralmente" come descrivi.

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.