Qual é o problema das linguagens de programação como requisitos estritos de trabalho? [fechadas]

22

Eu fui recentemente a uma "feira de empregos" e fiquei surpreso ao ver quanta ênfase os locais de trabalho parecem colocar nas linguagens de programação com as quais os candidatos estão familiarizados.

Da minha experiência (reconhecidamente limitada), embora dominar verdadeiramente uma linguagem de programação possa levar anos, aprendê-la a um nível razoável é um assunto bastante simples para alguém que já possui experiência com outras linguagens e pode definitivamente se encaixar no prazo que os empregadores costumam alocar para o aumento inicial.

Eu acho que um empregador se importaria mais com quantas linguagens / paradigmas eu estou familiarizado, ou qual é a minha experiência em design de algoritmos / software, em oposição à tecnologia específica com a qual estou qualificado no momento.

Digamos que eu já conheça Java, C ++, Smalltalk e Prolog ... um local de trabalho que se baseia no Objective-C realmente me considera desqualificado porque não tenho experiência nessa linguagem? Isso é uma falha no recrutamento de metodologias e, se for, o que posso fazer para convencer esse local de trabalho de que minha falta de experiência com o Objective-C não deve importar? Estou perguntando hipoteticamente, não especificamente sobre as linguagens de programação mencionadas.

Como alternativa, minha experiência é limitada e admito que possa estar faltando alguma coisa. A experiência anterior com uma linguagem de programação é mais crucial do que penso? Faz diferença se é uma posição júnior ou sênior? Deveria fazer a diferença?

Carvalho
fonte
2
Você foi a uma feira de empregos, por isso você deve ser um estudante ...
@ Job correto, eu sou um estudante de graduação. Eu tenho alguns anos de experiência no setor, mas definitivamente estou começando minha carreira agora.
Oak
6
Eu gostaria de fazer uma observação geral sobre todos aqueles que culpam o RH. Em nenhuma empresa em que trabalhei (poucas), o RH teve alguma ajuda na contratação de pessoal técnico, exceto para enviar a oferta final de emprego. particularmente, eles nunca realizaram triagem de CV.
Neil Butterworth
No meu caso, quando eu disse RH na minha resposta, realmente quis dizer mais como "alguém que realmente não entende a tecnologia que está escrevendo a descrição do trabalho". Pode ser uma secretária delegada a digitar uma descrição do trabalho nas anotações, ou pode ser um gerente infeliz que realmente não entende o que quer.
jhocking
Aliás, você poderia explicar o que você quer dizer com "ênfase"? Você quer dizer simplesmente que os idiomas estão listados na descrição do trabalho ou que as pessoas que você conheceu na feira de emprego estavam sendo insistentes? Se é apenas o primeiro, acho que você está sendo um pouco sensível demais.
Jhocking

Respostas:

24

Ao contrário dos comunicados de imprensa, é um mercado para empregadores no momento.

Isso significa que eles podem simplesmente ser exigentes quanto aos seus requisitos. Significa que eles podem exigir experiência no .NET 4.0, e não apenas na experiência 3.5 ... Significa que podem exigir experiência no Django, e não apenas em Pylons, etc ...

Claro, você pode aprender tudo o que precisa saber sobre Ruby em algumas semanas, e o Rails pode levar alguns meses (apenas supondo) para se tornar proficiente em ...

Mas o empregador pode selecionar currículos de pessoas que já são proficientes em Ruby & Rails.

TL; DR: Econ 101 ... Não acredite no hype sobre a escassez de programadores .

sujeira vermelha
fonte
3
Devo salientar que o mercado para programadores depende muito da localização. Onde estou (coincidentemente em uma grande cidade universitária), os lugares que entrevistei disseram que é difícil encontrar candidatos no momento.
Tesserex
15
Tesserex - que deve ser traduzido como "Não podemos encontrar programadores que sabem tudo da nossa sopa de letrinhas de tecnologias, em um preço que estão dispostos a pagar.
vermelho-terra
21
Há muitos programadores; o que é difícil de encontrar agora (como sempre foi o caso) são bons programadores.
tdammers
10
Pelo contrário, como empregador, posso lhe dizer que é definitivamente o mercado de um funcionário, pelo menos para indivíduos talentosos . Para grandes programadores, como sempre, a oferta é excedida em grande parte pela demanda. Por outro lado, não considero alguém que tenha "alguns meses" de experiência um programador (ou um carpinteiro, um médico ou qualquer outra profissão especializada), portanto é provável que seus números sejam muito diferentes dos meus.
precisa
2
@ Rein - você pode dizer que tudo o que quiser, mas a economia simples não suporta. Se isso acontecesse, você veria o salário dos principais programadores muito mais alto. Um médico ou advogado de ponta liberará US $ 500.000 por ano ... Um engenheiro de software sênior do google tem um salário médio de US $ 130.000 (glassdoor). Eu acho que o que você queria dizer era que não era possível encontrar alguém com uma produtividade três vezes maior pelo preço de um engenheiro comum.
Vermelho-sujidade
14

A questão principal é que ninguém realmente sabe como contratar bons programadores. A questão secundária é que os trabalhos de programação atraem muitos candidatos.

Dada uma grande pilha de currículos, seria muito bom poder examiná-los e escolher os bons programadores, mas ninguém sabe como fazer isso. Do jeito que a maioria das empresas trabalha, a classificação inicial geralmente é feita pelo RH. A pessoa de RH não conhece nada de Smalltalk ou C ++, exceto conforme listado na lista de requisitos, ao contrário de uma pessoa de software que pode pensar em "C ++ AND Smalltalk - esse cara não terá problemas com o Objective-C".

Mesmo quando a pilha vai para o gerente de contratação, é provável que seja muito grossa para entrevistar todo mundo; portanto, o gerente de contratação precisa jogar currículos por algum motivo ou outro. Se for um trabalho em C ++, e houver mais pessoas com mais de 5 anos de C ++ do que o gerente acha prático entrevistar, o gerente pode lançar todos os currículos que não possuem C ++. Não é o caminho para obter as melhores pessoas absolutas, mas ninguém sabe como contratar as melhores pessoas absolutas, e se você está limitado na tomada de decisões pelo que está no currículo, as pessoas com experiência em C ++ são pelo menos um pouco melhores apostas.

David Thornley
fonte
1
Ótima resposta. Pequenas coisinhas: não sei se ninguém sabe realmente como contratar bons programadores, ou se os departamentos e recrutadores de RH não sabem, e a maioria das empresas possui processos de contratação conduzidos por RH. Eu concordo que ninguém sabe realmente como contratar bons programadores sem gastar muito tempo com isso.
Tom Anderson
@ Tom Anderson: O melhor que já ouvi falar é sobre técnicas para evitar a contratação de programadores ruins. Dado um excedente de candidatos e razões para bons programadores aplicarem-se em números, isso funciona bem o suficiente. Todas as sugestões de Joel que eu li, por exemplo, funcionam dessa maneira.
precisa
4
@ Tom Anderson, eu diria que ninguém sabe diferenciar um bom programador de um mau olhando um currículo, e ninguém sabe como entrevistar mais pessoas do que elas têm tempo para conversar. Não importa se o RH lidera, ou um recrutador técnico ou o gerente de contratação.
Jeremy
8

Vamos mudar de idéia - se você conhecesse o objetivo C, seria útil como programador em C ++? Eu diria que não, os idiomas são muito diferentes. Mesmo em linguagens simples como C, eu gostaria de ter 6 meses de experiência antes de contratar alguém, por C ++ vários anos.

Alguns anos atrás, eu me ensinei PHP. Eu diria que levou vários meses até que eu conseguisse algo bom, conseguisse encontrar o caminho pela biblioteca, entendesse expressões comuns etc. E eu já conhecia muitas línguas.

Neil Butterworth
fonte
2
Em geral, boas empresas investem em funcionários e levar alguns meses para acelerar é bastante comum na maioria dos setores. Infelizmente, apenas algumas empresas de software seguem essa prática. Ele também (por coincidência ???) parece que eles estão entre as melhores empresas: Google, Facebook, Microsoft, etc ...
vermelho-terra
3
"" "Você deve conhecer pelo menos uma linguagem de programação muito bem e, de preferência, deve ser C ++ ou Java. C # também é bom, já que é bastante semelhante ao Java. Espera-se que você escreva algum código em pelo menos algumas de suas entrevistas Espera-se que você conheça bastante detalhes sobre sua linguagem de programação favorita . "" Steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html
red-dirt
2
Um programador experiente pode aprender C ++ em cerca de oito horas ... apenas leia "C ++ eficaz" e entenda. Isso coloca você acima de 90% dos programadores de C ++ no mercado. Entender o STL coloca você entre os 3% melhores.
kevin Cline
3
@kevin Irony? Sarcasmo? O que?
Neil Butterworth
2
@ Kevin: é claro que você não sabe do que está falando. C ++ é uma das linguagens mais complexas com mais peculiaridades do que você pode imaginar. Não há como alguém aprender em 8 horas (um dia de trabalho !!!). Você nem pode aprender linguagens como PHP nesse período.
Thomas Bonini
8

Depende de vários aspectos do contexto. Não apenas o nível da função, mas também o estado do projeto e da empresa.

No nível mais simples, qualquer linguagem imperativa entre chaves é praticamente a mesma que qualquer outra.

Se você pode codificar no imperativo, pode codificar no imperativo. Seja Java, C #, C, C ++ ou até javascript. Dado um livro de referência decente (e possivelmente um pouco de clichê), você deve poder executar um pequeno programa em qualquer um dos outros em uma tarde.

Seja qual for o seu histórico, você conhece ramificações e funções de loops, e a sintaxe é praticamente a mesma para todos eles. Se seu histórico é OO, você também conhece objetos, classes e interfaces.

No entanto, já vi muitos programadores imperativos lutando para escrever programas simples em linguagens declarativas ou funcionais. Se eu dirigisse uma loja de Erlang, preferiria fortemente alguém com experiência com Erlang, ou pelo menos Prolog,, em vez de alguém com C ++.


Como isso depende do nível do papel:

Recrutamento para uma função júnior:

Se eu estivesse escolhendo um programador para um trabalho em C ++, há certas armadilhas que eu gostaria de ter certeza de que o candidato é capaz de evitar, como a necessidade de prestar atenção à memória ou ao comprimento das matrizes, simplesmente para que elas não ocorram. atiram em si mesmos (e eu) no pé. Se eles nunca fizeram C ou C ++, então eu teria que resolver isso na entrevista.

E para um cargo sênior:

Uma das chaves para programar com eficiência é saber o que você não deve escrever. A chave para isso, são as bibliotecas padrão (e padrão de fato). A chave para isso é a experiência. Você não pode simplesmente sentar-se com "Teach yourself Java" por uma semana e transformar-se instantaneamente de um programador C ++ de 10 anos em um programa Java de 10 anos.


Como isso depende do estado do projeto / empresa

Dado um projeto Java que é praticamente uma lista limpa. Eu gostaria que um novo contratado sênior tivesse muito conhecimento sobre o ecossistema Java e pudesse aconselhar sobre as diferentes tecnologias disponíveis.

Dado um projeto Java maduro, eu consideraria feliz um desenvolvedor C ++ experiente, com pouca ou nenhuma experiência em Java para uma função Java sênior. A maioria das decisões do ecossistema já foi resolvida e o novo contratado poderá ganhar experiência com as bibliotecas Java enquanto a empresa aproveita a experiência do programador no desenvolvimento de software OO.

Paul Butcher
fonte
Eu acho que você levanta um ponto muito importante mencionando o ecossistema. Isso é algo que pode desempenhar um grande papel, e acho que geralmente é necessário um desenvolvedor experiente na plataforma X para se familiarizar com o ecossistema do X; apenas aprender a nova sintaxe e alguns novos paradigmas provavelmente não será suficiente.
Oak
Eu estou com Oak - você faz um excelente ponto de que ser um bom X programador requer muito conhecimento ecossistema em cima de apenas pegar linguagem X .
Carson63000
4

Depende do local de trabalho. Se estiverem muito ocupados, talvez não tenham tempo para esperar que você atinja um ponto em que você possa funcionar no Objective-C - eles podem querer alguém que possa bater no chão correndo.

Alguns locais de trabalho podem estar dispostos a arriscar você se perceberem que você está familiarizado com outros idiomas, além de ter fundamentos sólidos e conhecimento do domínio comercial. Isso realmente dependerá de como eles são abertos e de quão bom você é em convencer o recrutador a assumir esse risco.

FrustratedWithFormsDesigner
fonte
4

Contratar é difícil; contratar pessoas boas é ainda mais difícil. Fiz a contratação onde me deparei com uma pilha de mais de 500 currículos. É claro que filtramos as pessoas com menos experiência no que queríamos reduzir a pilha a um tamanho razoável. Isso é justo com o excelente candidato que não conhece esse idioma, provavelmente não? Mas se eu encontrar 100 pessoas que possuem as qualificações que estou procurando, realmente não vou gastar muito tempo com as 400 que não tiveram - não importa quão boas elas sejam.

Agora, na contratação, posso ter uma longa lista de requisitos, mas geralmente apenas um ou dois são quebra de negócio. E se você não encontrar alguém com a lista inicial de qualificações que deseja entrevistar (ou mais tarde, se todos falharem na entrevista que eu vi acontecer), geralmente eles voltarão e olharão para as pessoas que estão perdendo das qualificações menos críticas ou pessoas que têm algo semelhante, mas não são as mesmas. Nesses casos, você geralmente procura algo sobre a experiência da pessoa que a torne melhor para o seu trabalho do que alguém com todas as qualificações técnicas. Por exemplo, eu consideraria um analista de dados com experiência em um banco de dados corporativo diferente se ela tivesse experiência no meu domínio comercial (na verdade, essa pessoa provavelmente faria meu primeiro corte se eu visse todos os currículos). A mesma coisa com algo como C # e Java. Se a pessoa estiver realizando um trabalho com um nível semelhante de complexidade e especialmente em um domínio comercial semelhante, ela poderá ser uma candidata muito boa, mesmo que tenha o outro idioma.

No entanto, a menos que eu tivesse um programa de treinamento bastante formal para pessoas iniciantes, seria menos provável que eu contratasse pessoas que não encontrassem meu conjunto mínimo de idiomas. E quase nunca de um grupo que não tinha nada do que eu estava procurando. Pessoas sem experiência têm menos para levar à mesa em termos de alguma qualificação compensatória e menos histórico para provar que podem fazer um trabalho de nível profissional em qualquer idioma. Eles têm o suficiente para aprender com seu primeiro show profissional, sem entender o idioma mais importante que usamos. Contratá-los é mais um risco de levar meses para que você possa obter um trabalho útil deles.

Um outro ponto entra em jogo se o oficial contratante estiver movendo a equipe para uma nova tecnologia. Se ninguém na equipe é realmente especialista em tecnologia e eu tenho que contratar alguém novo também, procurarei contratar alguém com o máximo de experiência possível nessa tecnologia, porque eles têm uma idéia de onde as "minas terrestres" "evitar são.

Por fim, inscreva-se nos empregos nos quais está interessado, mesmo que não atenda a todos os requisitos estabelecidos (mas tente atender a alguns, contratar funcionários não gosta de perder tempo com pessoas que nunca seriam contratadas). Você nunca sabe qual é a concorrência que terá por um emprego ou o que mais impressionará as pessoas que examinam os currículos ou fazem as entrevistas. O que pode lhe proporcionar uma entrevista na empresa A pode ser exatamente o que impede você de obter a entrevista na empresa B, mesmo que eles tenham requisitos semelhantes no papel. Além disso, eles podem ter um emprego que melhor atenda às suas qualificações que ainda não foram anunciadas. Mas você nunca será considerado para o trabalho se eles não souberem sobre você.

HLGEM
fonte
3

Deveria ? Não faz isso? Sim, infelizmente. Essa é a síndrome do "esquilo roxo": a empresa também quer comer o bolo e conseguir um candidato que possa fazer tudo sob o sol de que precisa ou pode precisar. Freqüentemente, mas nem sempre, isso ocorre porque eles A) Não têm idéia do que realmente envolve o desenvolvimento e apenas supõem que alguém que atenda a todos os seus critérios possa fazer o trabalho, B) Eles estão sendo exigentes porque conseguem se safar, ou C) Eles planejam apresentar um H-1B / Green Card / Promover a partir de dentro, mas precisam fazer parecer que estão anunciando um emprego real.

Wayne Molina
fonte
3

"Digamos que eu já conheça Java, C ++, Smalltalk e Prolog ... um local de trabalho que confie no Objective-C realmente me considere não qualificado, porque não tenho experiência nessa linguagem?"

Se você tem mais de 20 anos de experiência em 3 ou 4 idiomas com recursos semelhantes ao Objective-C, provavelmente contrataria você para fazer o Objective-C e esperaria que você fosse produtivo em 6 a 8 semanas. (isso se baseia na minha experiência pessoal com a aprendizagem do Objective-C há alguns anos).

Se você é verde logo após a escola e não tem nenhuma experiência prática real tangível, provavelmente não será contratado para fazer algo com o qual não está familiarizado.

Objective-C é um homem de palha interessante aqui. Requer que você conheça C muito bem, exige que você conheça muito bem a Análise e o Projeto Orientados a Objetos; na maioria dos casos, exige que você conheça C ++ em uma extensão não trivial, porque existem bibliotecas C ++ com as quais você provavelmente desejará interagir.

Exige que você entenda o gerenciamento manual de memória, como funciona o gerenciamento automático de memória / coleta de lixo e quando usar cada técnica no mesmo programa.

Não é apenas o Objective-C que você precisa conhecer também o Cocoa e o POSIX, porque, para isso, o Objective-C é inútil para todos os fins práticos fora dos ambientes da Apple e você também deve conhecer o Cocoa.

E quando o Cocoa falhar, você precisará saber quais APIs do POSIX usar quando não puder fazer o que deseja com os invólucros do Cocoa.

Isso também implica que você também deve conhecer o Unix em uma extensão não trivial.


fonte
2

Depende do idioma / indivíduo.

Se eu sou um local C # e se alguém com experiência em JAVA / J2EE se aplica, darei uma chance. A sintaxe entre C # e JAVA não é tão diferente. Codificação é codificação e eu acho que, uma vez que eles se acostumem a algumas das diferenças, ficarão bem.

O mesmo vale para JAVA -> C #.

Agora, se você era uma pessoa em C # e se candidatava a um emprego em C ++, quero ter experiência. Existem muitas diferenças.

Então sim, depende da situação

PSU_Kardi
fonte
3
Sintaxe é uma parte tão pequena de aprender uma língua ..
Boris Yankov
@Boris que é verdade, mas o que ele diz ainda se aplica em algum nível, se é estilo ou bibliotecas ou qualquer outra coisa ...
tylermac
2

Embora eu ache que o OP está morto sobre como um programador experiente em muitos paradigmas pode facilmente adicionar mais um, tudo se resume à aversão do empregador ao risco. Um contratado em potencial que não esteja familiarizado com suas ferramentas é um curinga; elas podem ser realmente ótimas, mas também podem ser um fracasso, e será mais difícil do que o normal para o entrevistador diferenciar se não puderem fazer perguntas detalhadas sobre as tecnologias que usam.

Definitivamente, não estou dizendo que essa é a maneira correta de encarar isso, mas é o que alguns empregadores fazem. Os inteligentes exploram isso e juntam os incríveis programadores com 30 anos de experiência em C ++, enquanto os estúpidos os rejeitam porque não têm os 15 anos necessários de experiência em Ruby on Rails. Os programadores também podem explorar isso, evitando o emprego com empregadores que são tão mal informados. Afinal, quem quer trabalhar para um lugar que sistematicamente toma más decisões de contratação?

Morgan Herlocker
fonte
1
+1 para "será mais difícil do que o normal para o entrevistador diferenciar se não puderem fazer perguntas detalhadas sobre as tecnologias que usam", isso parece uma boa razão.
Oak
1

Em parte, trata-se de RH jogando palavras-chave em uma descrição do trabalho, pois elas realmente não entendem o papel. É por isso que você ocasionalmente encontrará a situação cômica de uma descrição de cargo especificando 3 anos de experiência em uma tecnologia que só existe por 6 meses.

Quanto a saber se é ou não deve fazer a diferença, que realmente depende do papel e os indivíduos envolvidos. Quase todos os gerentes que contratam (certamente todos os mais inteligentes) instruirão o RH a passar para eles candidatos que têm muita força na maioria das áreas, mesmo se eles não tiverem um ou dois pontos na descrição do cargo. No entanto, isso geralmente não se aplica a um recém-formado; Estou falando de pessoas com muita experiência profissional interagindo com clientes ou liderando equipes ou algo assim.

jhocking
fonte
0

Eu acho que um empregador se importaria mais com quantas linguagens / paradigmas eu estou familiarizado, ou qual é a minha experiência em design de algoritmos / software, em oposição à tecnologia específica com a qual estou qualificado no momento.

Você já olhou para todos os elementos que compõem sua pilha de desenvolvimento? Por exemplo, qual IDE, estrutura de teste, integração contínua, controle de versão, metodologia de desenvolvimento e paradigmas de código que compõem um ambiente que alguém usa para criar software. Pode ser uma série de ferramentas que algumas empresas podem querer que alguém já conheça, em vez de precisar pegar do zero. O argumento da ironcode sobre o mercado de um empregador é outro fator aqui, pois pode haver alguns casos em que há muita concorrência por uma posição e, portanto, as empresas podem mirar no céu e possivelmente obtê-lo.

Apenas para dar um exemplo mais concreto sobre esse ambiente, aqui está o que tenho onde trabalho: Visual Studio 2008 usando o ASP.Net usando C # principalmente, nUnit, Cruise Control.Net, Subversion, Agile / Scrum, com uma mistura de procedimentos, OO e funcional, dependendo da localização. Se eu quisesse migrar para Java, isso pode significar me acostumar com novas ferramentas para muitas dessas funções que podem não ser o que um empregador deseja absorver como custo de contratar-me para essa função. Também pode haver alguns pontos complicados que aqueles com experiência nessa versão podem conhecer melhor que outros e evitar algumas armadilhas que, de outra forma, levariam alguém a dizer: "Por que eles construíram dessa maneira?"

JB King
fonte
Mas, curiosamente, a experiência em uma solução de controle de origem / estrutura IDE / Testing será secundária à experiência em linguagens de programação (embora certamente possa ajudá-lo a conseguir o emprego).
Oak
-2

Não, olhe. Esses requisitos não são reunidos pelos profissionais de TI. Eles são reunidos pelo pessoal de RH. E a maneira como o pessoal de RH obtém os requisitos é gritando perguntas para o pessoal de TI, enquanto cambaleiam para a máquina de café.

Então eles dizem "Do que você precisa?" e o idiota aleatório que acaba respondendo diz: "Um programador. Precisa de alguns anos de experiência. Tipo, eu não sei, 4? E seria bom se ele soubesse .Net". Uma resposta razoável.

Mas ele é traduzido para "4 anos de experiência em .Net 4" e é .Net 4 porque, quando você pesquisa no Google .Net, o primeiro link o leva a uma página que fala sobre .Net 4.

Há também a possibilidade, e já deparei com isso algumas vezes, de que eles tenham um requisito específico de linguagem porque desejam seguir nessa direção e acham que será mais suave se houver uma pessoa experiente na equipe.

Satanicpuppy
fonte
1
Esta é uma resposta bastante amarga. Provavelmente, existem algumas empresas em que a cena que você descreveu é verdadeira, mas a maioria não é tão disfuncional.
jhocking
Discordo. As últimas empresas em que trabalhei nem tinham pessoal de RH. E quando anunciamos novos funcionários, exigimos experiência comercial com o idioma e a plataforma em que desenvolvemos. Por quê? Porque, a menos que não haja candidatos com essa experiência (e houve), por que dedicar um tempo extra para conversar com pessoas que não têm a experiência, na esperança de encontrar alguém tão bom que esteja disposto a esperar um pouco? eles aprendem?
Carson63000