Por que a maioria das ofertas de emprego é para um desenvolvedor de <language here>, e não para um desenvolvedor em geral? [fechadas]

9

Em um mundo ideal:

Em um excelente artigo Não se chame de programador e outros conselhos de carreira , Patrick McKenzie explica, entre outras coisas, que o idioma não importa:

  • Um desenvolvedor é uma pessoa que resolve problemas, em geral. Um desenvolvedor não é uma pessoa que escreve código em um idioma específico.

  • As empresas não se importam com os idiomas que você conhece. Se eles precisarem contratar um desenvolvedor para um projeto escrito em um idioma específico e tiverem um candidato com muita experiência, mas nunca tiver escrito uma linha de código nesse idioma, ele ainda será contratado.

De acordo com a minha experiência, tanto como desenvolvedor quanto como pessoa que teve que contratar outros desenvolvedores, a observação é muito semelhante:

  • A experiência de N anos em Java ou N anos de experiência em C # não importa. O que importa é que o candidato saiba como resolver problemas, saiba a diferença entre código espaguete e código limpo com arquitetura bem pensada, etc.

  • Eu não ligo para os idiomas que você usou antes. Para um projeto em C #, prefiro contratar um desenvolvedor profissional que passou a vida escrevendo código Java, Python e Ruby on Rails, em vez de um iniciante que conhece apenas C # e o conhece mal.

  • O conhecimento e a experiência que você obtém usando um idioma são geralmente reutilizáveis ​​em qualquer outro idioma.

    Um desenvolvedor experiente que usou o Ruby on Rails para desenvolvimento na Web e passou o resto de sua carreira escrevendo aplicativos de desktop Java usando Oracle se encaixa perfeitamente em um projeto ASP.NET MVC usando o Microsoft SQL Server. Como essa pessoa já sabe tudo o que precisa para esse trabalho , deixe de lado algumas coisas específicas e diferenças de sintaxe.

    Por outro lado, uma pessoa que criou apenas alguns sites pequenos do ASP.NET MVC não se encaixa, porque ela pode não entender completamente a arquitetura do MVC, pode saber o que é o perfil do SQL e pode não ter outras informações essenciais. conhecimento.

    Não me diga que não consigo resolver um pequeno problema em um site PHP que usa o CodeIgniter apenas porque nunca o usei antes.

Na prática:

Na prática, quando procuro empregos freelancers e quando vejo as ofertas de emprego em geral, elas são muito específicas do idioma.

Alguns procurariam por um desenvolvedor PHP com dois anos de experiência no Magento. Outros estarão procurando uma pessoa com experiência em VB.NET de pelo menos três anos e, se você enviar um currículo mencionando que você fez o desenvolvimento de C # por seis anos, mas sem mencionar o VB.NET, eles não se incomodarão. para responder. Se eles solicitarem uma pessoa com experiência no Firebird, eles não ouvirão seus dez anos de experiência com a Oracle.

Por que existe tanta diferença entre a teoria e o que Patrick McKenzie e eu descrevemos como sendo senso comum e o mundo real das ofertas de emprego?

Arseni Mourzenko
fonte
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.Embora você seja perfeitamente capaz de corrigir o problema, se a causa raiz for CodeIgniter (uma das poucas peculiaridades da estrutura ou um dos muitos bugs abertos), você levará um tempo consideravelmente maior para corrigir o problema.
Yannis 27/05
12
Você esqueceu algumas tags: <rant>...</rant>. Sério, existe uma pergunta real aqui?
Ciclope
6
"Não me importo com as linguagens que você usou antes. Para um projeto em C #, prefiro contratar um desenvolvedor profissional que passou a vida escrevendo códigos Java, Python e Ruby on Rails, em vez de um iniciante que conhece apenas C # e conhece mal. " - Pegue aquele palhaço! Esta é uma falsa dicotomia. Seu discurso retórico é correto para iniciantes, mas NÃO para posições que exigem conhecimento profundo de uma plataforma específica.
Jim No Texas
11
Alguém que tem experiência em um idioma fará o trabalho muito mais rapidamente e com muito mais clareza, pensando o contrário é apenas ilusório.
Thomas Bonini
Quando eu sou a pessoa que contrata, chego a ter uma lista realmente longa de "Deve ter usado os Termos X, Y e Z do Technobabble". E se eu conseguir encontrar essa pessoa, posso contratá-la. Quando sou a pessoa que procura emprego, posso me ressentir por não me olhar, porque só tenho um monte de cérebros e não a experiência exata que eles querem, mas se eu tivesse exatamente o que eles querem, esperaria ser contratado, no local. Então, no final, a decisão é deles, e é assim que deve ser.
Warren P

Respostas:

16

Porque muitas empresas têm drones de RH que fazem o recrutamento, que não têm idéia sobre nada disso. Quando o RH diz "De que qualificações o candidato precisa?" é muito mais fácil dizer "Seis anos em C #" do que dizer "Grava bom código". Esse drone não tem idéia de como é "Gravar código bom" ou como filtrar um currículo, quer eles possam ou não escrever um código bom. Eles podem, no entanto, ler rapidamente um currículo e ver "Cinco e três quartos de ano em C #" e jogá-lo fora.

DeadMG
fonte
3
Exatamente. os não-desenvolvedores e a gerência podem olhar para você torto se você disser que está procurando alguém com habilidades semelhantes, mas precisaria aprender um pouco (por exemplo, sintaxe específica, não conceitos) inicialmente no trabalho, a menos que esteja bem com isso.
Michael Durrant
Eu pensei que eles eram chamados de macacos de RH ... Eu concordo totalmente, mas é uma boa idéia ter um guru da <língua aqui> na equipe.
Lukasz Madon
3
Colocar "escreve código bom" no anúncio é um absurdo completo. Todo mundo pensa que escreve um bom código. E os mais condenados por suas habilidades superiores de escrita de código são geralmente os que escrevem o pior código.
Nikie 27/05
11
@nikie: É uma simplificação. Obviamente, você não colocaria exatamente isso no anúncio.
DeadMG 27/05
3
Eu não acho que esse seja o principal motivo, pois pequenas startups sem um departamento de RH fazem exatamente o mesmo.
J. Maes
22

Acho que é hora de colocar de lado esse mito de que um desenvolvedor com X anos de experiência no idioma Y pode transferir facilmente para o idioma Y2. Não é assim que funciona.

Se você tratar a linguagem apenas como sintaxe e padrões comuns, sabendo, por exemplo, que o Java dará uma grande vantagem ao mudar para C #. No entanto, ele não irá prepará-lo para o WCF, WPF, Click Once, as várias bibliotecas de encadeamento, Linq, e certamente não o preparará para as coisas que o folheto diz que funcionam, mas na prática não.

Você vê que não está falando sobre um idioma, geralmente está falando sobre uma plataforma. E onde a plataforma, .NET é um bom exemplo, suporta muitos idiomas, as pessoas tendem a convergir para uma escolha preferida.

Portanto, quando solicito um desenvolvedor de C #, na verdade, estou anunciando um desenvolvedor de plataforma .NET com experiência em projetos de C #. Esses tendem a ser projetos de servidor .net, winforms / wpf.

Ian
fonte
Concordo. É claro que é possível, mas difícil. A sintaxe da família C é facilmente transferida, mas o entendimento real de toda a plataforma e conjunto de ferramentas leva muito tempo para ser analisado. Meu conselho aos desenvolvedores / programadores / analistas / codificadores mais jovens é aproveitar as novas tecnologias em seu próprio tempo, enquanto todos ainda são iniciantes. As pessoas que mergulharam no desenvolvimento de HTML5, iOS e Android há dois ou três anos estão em boa forma agora. Claro, é possível adivinhar errado (pergunte-me sobre o Flex), mas não é o fim do mundo.
Jim In Texas
Isso ocorre principalmente porque Java -> C # é semelhante a C -> C ++ - eles podem ser construídos nas mesmas bases, tecnicamente, mas o C # inclui muito mais recursos que você realmente gostaria de usar. A transformação inversa seria muito mais fácil, passando de C # para Java.
DeadMG
11

Eu posso pensar em alguns motivos:

  1. Funcionário x consultor - Se eu estiver contratando um consultor, quero que ele já esteja atualizado na pilha de tecnologia que estamos usando. Espera-se que os consultores sejam eficientes muito rapidamente, pois não demoram tanto tempo para amortizar o aprendizado.
  2. Oferta / demanda - como Doc disse, se vou escolher o candidato mais experiente possível para o trabalho. E a pilha de tecnologia é importante para as tecnologias estabelecidas. Se estou procurando uma pessoa para desenvolver no Go (escolhendo um idioma que poucas pessoas conhecem), quase ninguém tem experiência com isso e estou de volta ao conjunto de habilidades como desenvolvedor em geral.
Jeanne Boyarsky
fonte
4

Nem todos os trabalhos de programação são iguais. Meu trabalho atual certamente se encaixa no seu modelo. Envolve muita análise de dados ad hoc e selecionamos e descartamos as ferramentas conforme necessário. Fui contratado em parte porque tinha um histórico de poder me tornar rapidamente produtivo com novas ferramentas.

Por outro lado, existem postos de trabalho onde você está à procura de conhecimentos técnicos específicos. Nos anos 90, eu trabalhava em uma pequena loja de software e precisávamos desenvolver rapidamente conhecimentos em C ++. Apesar de pedir explicitamente experiência em C ++ em nossos anúncios, a maioria dos candidatos sabia menos C ++ do que eu. "Mas eu posso aprender C ++ rapidamente!" todos eles disseram. Bem, sim, eu tenho certeza que você poderia, mas eu também, e as outras pessoas já lá. Estávamos procurando alguém que realmente conhecesse C ++, para que tivéssemos uma fonte interna de conhecimento à medida que o resto de nós chegasse à velocidade. Ter outro iniciante na equipe realmente não teria ajudado.

Charles E. Grant
fonte
11
+1: uma EQUIPE pode ter alguns ou mesmo a maioria dos desenvolvedores novos no idioma, mas ajuda muito ter especialistas em idiomas que possam ensinar a todos os outros.
TREE
3

As empresas não se importam com os idiomas que você conhece. Se eles precisarem contratar um desenvolvedor para um projeto escrito em um idioma específico e tiverem um candidato com muita experiência, mas que nunca escreveram uma linha de código nesse idioma, ele ainda seria contratado.

Digamos, você está procurando um candidato para um trabalho .NET / C #. Se você tem dois candidatos ao cargo, ambos parecem ter a mesma experiência, mas o primeiro obteve sua experiência no ecossistema Java, o segundo no ecossistema .NET - qual é o seu favorito?

Outros estarão procurando uma pessoa com experiência em VB.NET de pelo menos três anos e, se você enviar um currículo mencionando que você fez o desenvolvimento de C # por seis anos, mas sem mencionar o VB.NET, eles não se incomodarão. para responder.

Quem pode dizer por que você não recebe uma resposta? Talvez houvesse desenvolvedores VB.NET experientes suficientes se candidatando ao trabalho? Talvez o departamento de recursos humanos use a experiência da linguagem de programação como um filtro para reduzir o número de solicitações de emprego de 100 para 10. Talvez você tenha acabado de falar com as empresas erradas (acho que na minha empresa enviaríamos uma resposta no caso de exemplo) você descreveu acima).

Doc Brown
fonte
2

Na maioria dos projetos, os resultados do trabalho são necessários rapidamente e as pessoas precisam gerar lucros o mais rápido possível.

As pessoas capazes de atender a essas necessidades e não estão vinculadas a um idioma específico são escassas e, consequentemente, muito caras. Essas pessoas são contratadas apenas pelas grandes empresas que exigem habilidades incríveis.

As pessoas que são capazes de resolver o problema, mas não conseguem aprender rapidamente um idioma específico, são menos escassas. Eles ainda custam muito dinheiro e têm um custo extra de tempo necessário para aprender o idioma específico.

Esse custo extra de tempo é reduzido solicitando um programador específico de idioma. Ele já aprendeu as habilidades necessárias e pode fornecer resultados rapidamente.

Em resumo, um projeto que precisa ser realizado em JAVA não precisa de um desenvolvedor de software incrível e caro, nem de um desenvolvedor .net médio que precise de tempo para aprender a linguagem / estrutura. Ele precisa de resultados imediatos com a menor quantia de dinheiro, entregue pelo cara que já possui experiência com JAVA e possui habilidades relativamente boas para resolver problemas.

Como sempre, trata-se de dinheiro e de obter o máximo retorno do investimento

J. Maes
fonte
2

Eu acho que você está simplesmente interpretando mal a frase padrão "<language here> developer". As empresas não colocam essa frase no anúncio para impedir desenvolvedores com experiência em outro idioma. Por que eles querem deter os desenvolvedores capazes? Do ponto de vista do empregador, quanto mais candidatos, melhor. Eles sempre não podem convidar pessoas nas quais não estão interessados.

O verdadeiro ponto da frase é dizer ao leitor o que a oferta de emprego implicaria. E isso faz muito sentido, IMHO. Você se candidataria a um emprego no qual desenvolva na linguagem assembly Z80? Ou COBOL? Ou Fortran?

E, obviamente, se a empresa tiver dois candidatos que parecem igualmente inteligentes, o vencedor com experiência em <language here> vence. Nada mais nada menos. (Existem casos especiais em que as pessoas são contratadas apenas para um único projeto, ou para um projeto que já está atrasado, ou para o primeiro projeto que a empresa desenvolve em <idioma aqui>, onde você realmente precisa de experiência nesse idioma desde o início, mas não acho que sejam a regra.

Aliás, minha empresa escreveu anúncios como você sugeriu ( parece que faz sentido, afinal). Os resultados foram devastadores. As pessoas que realmente se preocupam com o trabalho simplesmente ignoraram o anúncio. Apenas os desesperados, que se aplicam a qualquer posição aberta aplicada. Nós nunca tentamos novamente.

nikie
fonte
1

Recue e pense na premissa. Você quer que uma pessoa faça algum trabalho .net. Você coloca isso na descrição do seu trabalho e procura candidatos com essa habilidade! Isso é apenas senso comum.

Eu certamente concordo com suas filosofias mais detalhadas sobre por que isso pode não ser uma boa idéia, mas a maioria das pessoas apenas anuncia, exige e procura um candidato com as habilidades necessárias agora. É simples assim, então eu acho que isso responde ao título da sua pergunta sobre o porquê.

Se eles não conseguirem nenhum candidato ou passarem por vários candidatos ruins, poderão estudar um pouco e ser mais receptivos aos itens detalhados. De fato, na área em que estou (Ruby on Rails), existem MUITOS anúncios no momento dizendo "não é necessária experiência, vamos treiná-lo" etc. etc., e de fato algumas das principais organizações muito aberto a candidatos "sem maus hábitos" que eles possam treinar. Portanto, a abordagem correta está disponível em algumas organizações.

Lembre-se também de que a maioria dos anúncios é de recrutadores externos ou internos não técnicos que simplesmente não têm o conhecimento de "ir para o lado", como você descreve.

Michael Durrant
fonte