Perchè la maggior parte delle offerte di lavoro sono per uno sviluppatore della lingua qui, piuttosto che uno sviluppatore in generale? [chiuso]

9

In un mondo ideale:

In un eccellente articolo Non chiamarti un programmatore, e altro Consigli per la carriera , Patrick McKenzie spiega, tra le altre cose, che il linguaggio non ha importanza:

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

  • Le aziende non si preoccupano delle lingue che conosci. Se hanno bisogno di assumere uno sviluppatore per un progetto scritto in una lingua specifica e hanno un candidato con esperienza elevata, ma non hanno mai scritto una riga di codice in questa lingua, sarà comunque assunto.

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

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

  • Non mi interessa le lingue che hai usato prima. Per un progetto C #, preferisco assumere uno sviluppatore professionista che ha speso la sua vita scrivendo codice Java, Python e Ruby on Rails piuttosto che un principiante che conosce solo C # e lo conosce male.

  • La conoscenza e l'esperienza acquisite utilizzando una lingua sono per lo più riutilizzabili 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 scrivendo applicazioni desktop Java utilizzando Oracle si adatta perfettamente a un progetto ASP.NET MVC utilizzando Microsoft SQL Server. Perché questa persona sa già tutto ciò di cui ha bisogno per questo lavoro , a parte alcune cose specifiche e le differenze di sintassi.

    D'altra parte, una persona che ha fatto solo pochi siti Web ASP.NET MVC non si adatta affatto, perché potrebbe non comprendere completamente l'architettura MVC, potrebbe sapere cosa è il profilo SQL e potrebbe non avere qualche altra conoscenza essenziale.

    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 in precedenza.

In pratica:

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

Alcuni potrebbero cercare uno sviluppatore PHP con due anni di esperienza in Magento. Gli altri cercheranno una persona con esperienza VB.NET di almeno tre anni e se invii loro un curriculum che menzioni che hai sviluppato C # per sei anni, ma senza menzione di VB.NET, non si preoccuperanno rispondere. Se chiedono una persona con esperienza con Firebird, non ascolteranno i tuoi dieci anni di esperienza con Oracle.

Perché c'è una tale differenza tra la teoria e ciò che Patrick McKenzie e io descriviamo come un buon senso e il mondo reale delle offerte di lavoro?

    
posta Arseni Mourzenko 27.05.2012 - 16:07
fonte

8 risposte

16

Poiché molte aziende hanno droni HR fanno il reclutamento che non ne ha idea. Quando l'HR dice "Di quali qualifiche ha bisogno il candidato?" è molto più facile dire "Sei anni C #" piuttosto che dire "Scrive buon codice". Quel drone non ha idea di come sia scritto "Scrive codice buono" o di come filtrare un curriculum indipendentemente dal fatto che possano scrivere o meno un buon codice. Tuttavia, possono velocemente leggere un curriculum e vedere "Cinque e tre quarti di anni C #" e buttarlo via.

    
risposta data 27.05.2012 - 16:16
fonte
22

Penso che sia ora di mettere a letto questo mito che uno sviluppatore con X anni di esperienza nel linguaggio Y possa trasferirsi senza problemi al linguaggio Y2. Non è così che funziona.

Se tratti la lingua solo come sintassi e schemi comuni, allora sapendo, per esempio, Java ti darà un enorme vantaggio quando passerai a C #. Tuttavia non ti preparerà per WCF, WPF, Click Once, le varie librerie di threading, Linq, e certamente non ti preparerà per le cose che la brochure dice funzionano, ma in pratica no.

Vedi che non stai parlando di una lingua, in generale parli 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 #, in realtà sto facendo pubblicità per uno sviluppatore della piattaforma .NET la cui esperienza risiede nei progetti C #. Quelli tendono ad essere progetti server .net, progetti winforms / wpf.

    
risposta data 27.05.2012 - 17:44
fonte
11

Posso pensare ad alcuni motivi:

  1. Dipendente vs consulente - Se assumo un consulente, voglio che lui / lei sia già al passo con lo stack tecnologico che stiamo utilizzando. Ci si aspetta che i consulenti siano efficienti molto rapidamente dal momento che non sono in giro da tanto tempo per ammortizzare l'apprendimento.
  2. Domanda / offerta - Come ha detto il dottore, se sceglierò il candidato più esperto che posso per il lavoro. E lo stack tecnologico è importante per le tecnologie consolidate. Se sto cercando una persona che si sviluppi in Go (scegliendo una lingua che pochi conoscono), quasi nessuno ha esperienza con esso e sono tornato allo skillset come sviluppatore in generale.
risposta data 27.05.2012 - 16:19
fonte
4

Non tutti i lavori di programmazione sono uguali. Il mio attuale lavoro si inserisce sicuramente nel tuo modello. Comporta molte analisi ad hoc dei dati e raccogliamo e sistemiamo gli strumenti secondo necessità. Sono stato assunto in parte perché avevo un track record di essere in grado di diventare rapidamente produttivo con nuovi strumenti.

D'altra parte ci sono lavori in cui stai cerchi competenze tecniche specifiche. Negli anni '90 stavo lavorando per un piccolo negozio di software, e avevamo bisogno di sviluppare rapidamente le competenze in C ++. Nonostante chiedessimo esplicitamente esperienza in C ++ nei nostri annunci, la maggior parte dei candidati conosceva meno C ++ di me. "Ma posso imparare rapidamente il C ++!" dissero tutti. Beh, sì, sono sicuro che potresti, ma anch'io potrei, e anche gli altri potrebbero esserci già. Stavamo cercando qualcuno che conoscesse davvero il C ++, quindi avremmo una fonte di esperienza interna mentre il resto di noi si stava avvicinando alla velocità. Avere un altro principiante nel team non sarebbe stato di grande aiuto.

    
risposta data 27.05.2012 - 19:54
fonte
3

Businesses don't care about the languages you know. If they need to hire a developer for a > project written in a specific language, and they have a candidate who is highly experienced > but never wrote a line of code in this language, he would still be hired.

Dire, stai cercando un candidato per un lavoro .NET / C #. Se hai due candidati per il lavoro, entrambi sembrano essere ugualmente di grande esperienza, ma il primo ha acquisito la sua esperienza nell'ecosistema Java, il secondo nell'ecosistema .NET - qual è il tuo preferito?

Others will be searching for a person with VB.NET experience of at least three years, and if you send them a resumé mentioning that you've done C# development for six years, but with no mention of VB.NET, they will not bother to answer.

Chi può dire perché non hai una risposta? Forse c'erano abbastanza sviluppatori VB.NET esperti che hanno fatto domanda per il lavoro? Forse il reparto 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 le aziende sbagliate (credo che nella mia azienda avremmo inviato una risposta nel caso di esempio hai descritto sopra.

    
risposta data 27.05.2012 - 16:16
fonte
2

Nella maggior parte dei risultati di lavoro basati su progetti sono necessari rapidamente e le persone hanno bisogno di 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 compagnie che richiedono incredibili capacità.

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

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

In breve, un progetto che deve essere fatto in JAVA non ha bisogno di costosi sviluppatori di software incredibili, né ha bisogno di uno sviluppatore .net medio che abbia bisogno di tempo per imparare la lingua / il framework. Ha bisogno di risultati immediati per la minor quantità di denaro, che viene consegnato dal ragazzo che ha già esperienza con JAVA e ha relativamente buone capacità di problem solving.

Come sempre, si tratta di soldi e di ottenere il massimo ritorno sull'investimento

    
risposta data 27.05.2012 - 20:09
fonte
2

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

Il vero punto della frase è di dirti, il lettore, che cosa comporterebbe l'offerta di lavoro. E questo ha molto senso, IMHO. Vuoi candidarti per un lavoro in cui sviluppi in Z80-assembly language? O COBOL? O Fortran?

E, ovviamente, se l'azienda ha due candidati che sembrano ugualmente intelligenti altrimenti, quello con esperienza in < lingua qui > vince. Niente di più, niente di meno. (Ci sono casi speciali, in cui le persone vengono assunte per un singolo progetto, o per un progetto che è già in ritardo, o per il primo progetto che l'azienda sviluppa in < lingua qui & gt ;, dove hai bisogno esperienza in quel linguaggio fin dall'inizio, ma non credo che sia la regola.

Per inciso, la mia azienda una volta ha scritto annunci come suggerivi tu ( sembra come se avesse senso, dopo tutto). I risultati sono stati devastanti. Le persone che si preoccupano davvero del loro lavoro hanno semplicemente saltato la pubblicità. Solo i disperati, che si applicano a qualsiasi posizione aperta applicata. Non l'abbiamo mai provato di nuovo.

    
risposta data 27.05.2012 - 20:57
fonte
1

Fai un passo indietro e pensa alla premessa. Vuoi una persona fare un po 'di lavoro .net. Lo metti nella descrizione del tuo lavoro e cerchi candidati con quell'abilità! Questo è solo buon senso.

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 si limiterà a pubblicizzare, richiedere e cercare 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 ne subiscono di cattivi, potrebbero studiare un po 'e essere più sensibili agli elementi che descrivi. Infatti nell'area in cui mi trovo (Ruby on Rails) ci sono molti annunci in questo momento che dicono "nessuna esperienza richiesta, ti addestreremo", ecc. E infatti alcune delle migliori organizzazioni di Ruby on Rails sono molto aperto ai candidati "senza cattive abitudini" che possono allenare. Quindi l'approccio giusto è là fuori da alcune organizzazioni.

Tieni presente che la maggior parte degli annunci proviene da reclutatori esterni o reclutatori interni non tecnici che semplicemente non hanno le conoscenze per "andare di lato" come descrivi.

    
risposta data 27.05.2012 - 17:10
fonte

Leggi altre domande sui tag