Qual è l'accordo con i linguaggi di programmazione come requisiti di lavoro rigorosi? [chiuso]

22

Recentemente sono andato a una "fiera del lavoro" e sono stato sorpreso di vedere quanta enfasi i posti di lavoro sembrano mettere nei linguaggi di programmazione che i candidati conoscono.

Dalla mia esperienza (certamente limitata), mentre la padronanza di un linguaggio di programmazione può richiedere anni, impararla a un livello ragionevole è una cosa abbastanza semplice per qualcuno che ha già esperienza con altre lingue e può sicuramente adattarsi ai tempi dei datori di lavoro di solito allocare per l'accelerazione iniziale.

Penso che un datore di lavoro si preoccuperà di più di quanti linguaggi / paradigmi conosco, o quale sia la mia esperienza di progettazione algoritmica / software, al contrario della tecnologia specifica di cui sono abile al momento.

Dire che conosco già Java, C ++, Smalltalk e Prolog ... se un posto di lavoro che si basa su Objective-C mi considera davvero incompetente perché non ho esperienza in quel linguaggio? È un difetto nelle metodologie di reclutamento, e se lo è, cosa posso fare per convincere quel posto di lavoro che la mia mancanza di esperienza con Objective-C non dovrebbe avere importanza? Sto chiedendo ipoteticamente, non specificamente sui menzionati linguaggi di programmazione.

In alternativa, la mia esperienza è limitata e ammetto che potrebbe mancare qualcosa. L'esperienza precedente con un linguaggio di programmazione è più cruciale di quello che penso sia? Fa la differenza se si tratta di una posizione junior o senior? Dovrebbe fare la differenza?

    
posta Oak 14.06.2011 - 16:44
fonte

13 risposte

24

Contrariamente ai comunicati stampa, al momento è un mercato del datore di lavoro .

Ciò significa che possono essere semplicemente schizzinosi riguardo alle loro esigenze. Significa che possono richiedere esperienza .NET 4.0 e non solo 3.5 esperienza ... Significa che possono richiedere esperienza con Django, e non solo con piloni, ecc ...

Certo, potresti imparare tutto ciò che devi sapere su Ruby in un paio di settimane e Rails potrebbe richiedere un paio di mesi (solo a indovinare) per diventare abile con ...

Ma il datore di lavoro può scegliere tra curriculum di persone già abili con Ruby & Rails.

TL; DR: Econ 101 ... Non credere all'hype sulla carenza di programmatori .

    
risposta data 14.06.2011 - 16:54
fonte
14

Il problema principale è che nessuno sa davvero come assumere dei bravi programmatori. Il problema secondario è che i lavori di programmazione attraggono molti candidati.

Dato un gran numero di curriculum, sarebbe molto bello poterli pettinare e scegliere i bravi programmatori, ma nessuno sa come farlo. Il modo in cui la maggior parte delle aziende lavora, il tipo iniziale è in genere da risorse umane. La persona delle risorse umane non sa nulla di Smalltalk o C ++, ad eccezione di quanto elencato nell'elenco dei requisiti, a differenza di una persona del software che potrebbe pensare "C ++ AND Smalltalk - questo ragazzo non avrà problemi con Objective-C".

Anche quando lo stack va al manager assumente, è molto probabile che sia troppo spesso per intervistare tutti, quindi il gestore delle assunzioni deve respingere i curriculum per una ragione o per l'altra. Se si tratta di un lavoro in C ++ e ci sono più persone con più di 5 anni di C ++ di quelle che il manager trova pratico nell'intervista, il manager potrebbe lanciare tutti i CV che non hanno C ++ su di essi. Non è il modo di ottenere le persone migliori in assoluto, ma nessuno sa come assumere le persone migliori in assoluto, e se sei limitato nel prendere decisioni da ciò che è nel curriculum, le persone con esperienza C ++ sono almeno leggermente migliori scommesse.

    
risposta data 14.06.2011 - 17:09
fonte
8

Facciamo un giro - se conoscessi l'obiettivo C, saresti usato come programmatore C ++? Direi, no, non lo faresti, le lingue sono troppo diverse. Anche per linguaggi semplici come C, vorrei vedere 6 mesi di esperienza prima di assumere qualcuno, per C ++ diversi anni.

Alcuni anni fa, mi sono insegnato PHP. Direi che sono passati diversi mesi prima che diventassi bravo in questo, potessi orientarmi nella biblioteca, capire idiomi comuni, ecc. E sapevo già molte di lingue.

    
risposta data 14.06.2011 - 16:53
fonte
8

Dipende da vari aspetti del contesto. Non solo il livello del ruolo, ma anche lo stato del progetto e dell'azienda.

Al livello più semplice, qualsiasi linguaggio imperativo di parentesi graffa è praticamente uguale a qualsiasi altro.

Se è possibile eseguire il codice in modo imperativo, è possibile eseguire il codice in modo imperativo. Che si tratti di Java, C #, C, C ++ o anche javascript. Dato un libro di riferimento decente (e possibilmente un po 'di placca), dovresti essere in grado di mettere fuori uso un piccolo programma in uno degli altri in un pomeriggio.

Qualunque sia la tua storia, conosci i rami e le funzioni di loop, e la sintassi è praticamente la stessa per tutti loro. Se la tua cronologia è OO, conosci anche oggetti, classi e interfacce.

Tuttavia, ho visto troppi programmatori solo imperativi faticare a scrivere programmi semplici in linguaggi dichiarativi o funzionali. Se gestissi un negozio Erlang, preferirei strongmente a qualcuno con Erlang, o almeno a Prolog, esperienza su qualcuno con C ++.

Quanto dipende dal livello del ruolo:

Reclutamento per ruolo junior:

Se stavo scegliendo un programmatore per un lavoro in C ++, ci sono alcune insidie che vorrei essere abbastanza certo che il candidato sia in grado di evitare, come la necessità di prestare attenzione alla memoria o alla lunghezza degli array, semplicemente così che non sparano a se stessi (e me) ai piedi. Se non hanno mai fatto C o C ++, allora dovrei farlo nell'intervista.

E per un ruolo senior:

Una delle chiavi per programmare in modo efficiente è sapere cosa non dovresti scrivere da solo. La chiave di tutto è le librerie standard (e di fatto standard). La chiave di tutto è l'esperienza. Non puoi semplicemente sederti con "Insegna te stesso Java" per una settimana e trasformarti istantaneamente da un programmatore C ++ di 10 anni in un programmatore Java di 10 anni.

Come dipende dallo stato del progetto / azienda

Dato un progetto Java che è praticamente una lavagna pulita. Vorrei una nuova assunzione senior per avere una grande conoscenza dell'ecosistema Java e poterti consigliare sulle diverse tecnologie disponibili.

Dato un progetto Java maturo, considererei felicemente uno sviluppatore C ++ con esperienza, con poca o nessuna esperienza Java per un ruolo di Java senior. La maggior parte delle decisioni sull'ecosistema saranno già state risolte e il nuovo noleggio sarà in grado di acquisire esperienza con le librerie Java, mentre la società sfrutta l'esperienza del programmatore nello sviluppo di software OO.

    
risposta data 14.06.2011 - 17:52
fonte
4

Dipende dal luogo di lavoro. Se sono molto occupati, potrebbero non avere il tempo di aspettare che tu raggiunga un punto in cui puoi operare in Objective-C - potrebbero volere qualcuno che possa iniziare a fondo.

Alcuni ambienti di lavoro potrebbero essere disposti a rischiare per te se vedono che hai familiarità con altre lingue, oltre ad avere solidi fondamentali e conoscenza del dominio aziendale. Ciò dipenderà davvero dalla loro apertura e dalla tua capacità di convincere il reclutatore a correre questo rischio.

    
risposta data 14.06.2011 - 16:49
fonte
4

Assumere è difficile; assumere persone buone è ancora più difficile. Ho assunto assunzioni in cui mi trovavo di fronte a una pila di oltre 500 curriculum. Del cugino abbiamo filtrato le persone con la minima esperienza in quello che volevamo ottenere lo stack di dimensioni ragionevoli. È giusto per l'eccellente candidato che non capisce quella lingua, probabilmente no. Ma se riesco a trovare 100 persone che hanno le qualifiche che sto cercando, non ho intenzione di passare molto tempo sui 400 che non l'hanno fatto - non importa quanto siano bravi.

Ora in fase di assunzione, potrei avere una lunga lista di requisiti, ma di solito solo uno o due sono interruttori. E se non trovi nessuno con l'elenco iniziale delle qualifiche che vuoi intervistare (o più tardi se tutti falliscono l'intervista che ho visto accadere), di solito torneranno indietro e guarderanno le persone che mancano delle qualifiche meno critiche o persone che hanno qualcosa di simile ma non uguale. In questi casi, stai spesso cercando qualcosa sull'esperienza della persona che li renderà migliori per il tuo lavoro rispetto a qualcuno con tutte le qualifiche tecniche. Per esempio, considererei un analista di dati con esperienza in un diverso database aziendale se avesse esperienza nel mio dominio aziendale (infatti quella persona probabilmente farebbe il mio primo taglio se vedessi tutti i curriculum). Stessa cosa con qualcosa come C # e Java. Se la persona sta facendo un lavoro con un livello simile di complessità e specialmente in un dominio aziendale simile, potrebbe essere un ottimo candidato anche se ha l'altra lingua.

Tuttavia, a meno che non avessi un programma di formazione abbastanza formale per le persone di livello base, sarei meno propenso ad assumere persone che non rispettavano le mie competenze linguistiche minime. E quasi mai da un gruppo che non aveva nessuna delle cose che stavo cercando. Le persone senza esperienza hanno meno da portare in tavola in termini di qualifiche compensative e meno di un track record per dimostrare di poter fare un lavoro a livello professionale in qualsiasi lingua. Hanno abbastanza da imparare con il loro primo concerto professionale senza una certa comprensione del linguaggio più importante che usiamo. E assumerli è più un rischio che potrebbero passare mesi prima che tu possa ottenere un lavoro utile da loro.

Un altro punto entra in gioco se il funzionario dell'assunzione sta spostando la squadra in una nuova tecnologia. Se nessuno nel team è veramente esperto nella tecnologia e devo assumere qualcuno di nuovo, vedrò di assumere qualcuno con la stessa esperienza che posso trovare in quella tecnologia perché hanno un'idea di dove "le mine terrestri" "per evitare sono.

Infine, fai domanda per i posti di lavoro che ti interessano anche se non rispetti tutti i requisiti indicati (ma provi ad incontrarne qualcuno, ai funzionari non piace perdere tempo con persone che non sarebbero mai state assunte) . Non si sa mai quale concorrenza si avrà per un lavoro o cosa più impressionerà le persone che selezionano i curriculum o che fanno le interviste. Quello che potrebbe farti un colloquio con l'azienda A potrebbe essere esattamente ciò che ti impedisce di ottenere l'intervista alla società B anche se hanno requisiti similari su carta. Inoltre, potrebbero avere un lavoro che soddisfa meglio le tue qualifiche che non hanno ancora pubblicizzato. Ma non sarai mai preso in considerazione per il lavoro se non sanno di te.

    
risposta data 14.06.2011 - 20:52
fonte
3

"Say I already know Java, C++, Smalltalk and Prolog... should a workplace that relies on Objective-C really consider me unqualified because I lack experience in that language?"

Se hai più di 20 anni di esperienza in 3 o 4 lingue che hanno caratteristiche simili a Objective-C, probabilmente ti assumerò per fare Objective-C e ti aspetteresti di essere produttivo in 6-8 settimane. (questo è basato sulla mia esperienza personale con l'apprendimento di Objective-C alcuni anni fa).

Se sei verde appena uscito da scuola senza alcuna reale esperienza pratica tangibile in nessuna cosa, allora probabilmente non verrai ingaggiato per fare qualcosa di cui non hai completamente familiarità.

L'Objective-C è un interessante uomo di paglia qui. Richiede di conoscere C molto bene, richiede molto sapere l'analisi e il design orientato agli oggetti, nella maggior parte dei casi richiede di conoscere il C ++ per una dimensione non banale perché ci sono librerie C ++ che probabilmente vorrai interfacciare con.

È necessario comprendere la gestione manuale della memoria, nonché il funzionamento della gestione automatica della memoria / della garbage collection e quando utilizzare ciascuna tecnica nello stesso programma.

Non è solo Objective-C che devi conoscere anche Cocoa e POSIX, perché affrontarlo Objective-C è per tutti gli scopi pratici fuori dagli ambienti Apple e quindi devi conoscere anche Cocoa.

E quando Cocoa ti manca, devi essere in grado di sapere quali API POSIX usare quando non puoi fare ciò che vuoi con i wrapper Cocoa.

Implica anche che dovresti conoscere Unix in qualche misura non banale.

    
risposta data 14.06.2011 - 19:54
fonte
2

Dipende dalla lingua / dall'individuo.

Se sono un C # e si applica una persona con esperienza JAVA / J2EE, ti darò una possibilità. La sintassi tra C # e amp; JAVA non è così diverso. La codifica è la codifica e immagino che una volta abituati ad alcune delle differenze andranno bene.

Lo stesso vale per JAVA - > C #.

Ora, se tu fossi una persona C # e fai domanda per un lavoro C ++, voglio vedere l'esperienza. Ci sono troppe differenze.

Quindi sì, dipende dalla situazione

    
risposta data 14.06.2011 - 16:58
fonte
2

Mentre penso che il PO sia morto su come un programmatore che ha esperienza con molti paradigmi possa facilmente aggiungerne uno, tutto si riduce all'avversione del rischio da parte del datore di lavoro. Un potenziale noleggiatore che non ha familiarità con i propri strumenti è un jolly; potrebbero essere davvero grandiosi, ma potrebbero anche essere un flop, e sarà più difficile del normale per l'intervistatore dire la differenza se non possono fare domande approfondite sulle tecnologie che usano.

Di sicuro non sto dicendo che questo è il modo corretto di guardare a questo, ma è come alcuni datori di lavoro fanno. Quelli intelligenti sfruttano questo e raccolgono i fantastici programmatori con 30 anni di esperienza in C ++, mentre quelli stupidi li rifiutano perché mancano i 15 anni necessari dell'esperienza di Ruby on Rails. I programmatori possono sfruttare anche questo, evitando il lavoro con i datori di lavoro che sono così male informati. Dopo tutto, chi vuole lavorare per un posto che fa sistematicamente decisioni di assunzione sbagliate?

    
risposta data 14.06.2011 - 17:01
fonte
2

Dovrebbe farlo? No. Lo fa ? Sì, purtroppo. Questa è la sindrome dello "scoiattolo viola": l'azienda vuole avere la torta e mangiarla, e ottenere un candidato che possa fare tutto sotto il sole di cui ha bisogno o potrebbe aver bisogno. Spesso, ma non sempre è perché non hanno A) Non hanno idea di cosa lo sviluppo comporta veramente e assumono semplicemente che qualcuno che soddisfa tutti i loro criteri possa fare il lavoro, B) Sono schizzinosi perché possono farla franca, o C) Hanno in programma di presentare una H-1B / Green Card / Promote dall'interno, ma devono far sembrare che stiano pubblicizzando un vero lavoro.

    
risposta data 14.06.2011 - 17:25
fonte
1

In parte, si tratta di risorse umane che generano parole d'ordine in una descrizione del lavoro poiché non capiscono il ruolo. Ecco perché occasionalmente incontri la situazione comica di una descrizione del lavoro che specifica 3 anni di esperienza in una tecnologia che esiste solo da 6 mesi.

Per quanto riguarda se dovrebbe fare la differenza, ciò dipende in realtà dal ruolo e dalle persone coinvolte. Quasi tutti i manager che fanno assunzioni (certamente tutti quelli intelligenti) istruiranno le risorse umane per passare loro candidati che hanno molta forza nella maggior parte delle aree, anche se mancano di uno o due punti elenco nella descrizione del lavoro. Tuttavia, ciò generalmente non si applica a un neolaureato; Sto parlando di persone con una grande esperienza lavorativa che interagiscono con i clienti o con team leader o qualcosa del genere.

    
risposta data 14.06.2011 - 17:17
fonte
0

I'd think an employer would care more about how many languages / paradigms I am familiar with, or what's my algorithmic / software design experience, as opposed to the specific technology I'm skilled with at the moment.

Hai mai guardato tutti gli elementi che costituiscono il tuo stack di sviluppo? Ad esempio, quali IDE, framework di test, integrazione continua, controllo della versione, metodologia di sviluppo e paradigmi di codice che costituiscono un ambiente che qualcuno utilizza per creare software. Questo può essere un numero di strumenti che alcune aziende potrebbero voler che qualcuno sappia già piuttosto che dover recuperare da zero. Il punto di ironcode sul mercato di un datore di lavoro è un altro fattore, in quanto potrebbero esserci alcuni casi in cui c'è molta competizione per una posizione e quindi le aziende possono mirare al cielo e possibilmente ottenerlo.

Solo per dare un esempio più concreto di questo ambiente, ecco cosa ho dove lavoro: Visual Studio 2008 fa ASP.Net usando C # principalmente, nUnit, Cruise Control.Net, Subversion, Agile / Scrum, con una miscela di procedurale, OO e funzionale a seconda di dove si sta guardando. Se volessi passare a Java, questo potrebbe voler dire abituarmi a nuovi strumenti per molte di queste funzioni che potrebbero non essere ciò che un datore di lavoro vuole assorbire come costo per assumermi in quel ruolo. Possono anche esserci alcuni punti delicati che chi ha esperienza in quella versione potrebbe conoscere meglio di altri ed evitare alcune insidie che altrimenti potrebbero far andare qualcuno, "Perché l'hanno costruito in quel modo?"

    
risposta data 14.06.2011 - 17:10
fonte
-2

No, guarda. Questi requisiti non sono messi insieme dai ragazzi IT. Sono messi insieme dalle persone delle risorse umane. E il modo in cui le risorse umane ottengono i requisiti è di gridare domande alle persone IT mentre barcollano avanti e indietro verso la macchina del caffè.

Quindi dicono "Di cosa hai bisogno?" e lo shmuck casuale che finisce per rispondere dice "Un programmatore, ha bisogno di qualche anno di esperienza, come, non lo so, 4? E sarebbe bello se lo sapesse .Net". Una risposta ragionevole.

Ma viene tradotto in "4 anni di esperienza in .Net 4" ed è .Net 4 perché, quando si utilizza Google .Net, il primo collegamento porta a una pagina che parla di .Net 4.

C'è anche la possibilità, e mi sono imbattuto in questo poche volte, che hanno un requisito linguistico specifico perché vogliono muoversi in quella direzione, e pensano che andrà più liscio se hanno una persona esperta sul personale.

    
risposta data 14.06.2011 - 17:22
fonte

Leggi altre domande sui tag