Deixe-me contar uma história sobre uma empresa de muito sucesso que cometeu um grande e estúpido erro:
Não contratamos programadores juniores e estagiários ... Se você não tem um filhote, não precisa limpar as poças.
- netflix
Fiquei completamente surpreso com o fato de alguma coisa corporativa conseguir apresentar os filhotes de maneira negativa, e até alguém o convenceu. Os filhotes são as criaturas mais limpas da Terra, vivendo uma alegria fofa! Raios de luz em um mundo solitário. Mas vamos direto ao ponto.
Muitas empresas seguiram essa estratégia de "contratar apenas idosos". Eles justificam assim:
- Não temos tempo nem recursos para contratar programadores juniores; estamos desenvolvendo muito rápido.
- Nossa empresa pode pagar idosos, por isso não há necessidade de joons.
- No estágio atual, não podemos permitir erros. As apostas são muito altas.
- Nosso processo fornece aos funcionários maior autonomia. Não estamos prontos para segurar os jones pela alça, pois eles precisam.
- Queremos estabelecer as bases para o produto antes de começarmos a contratar funcionários inexperientes.
A mensagem é que os programadores juniores representam um risco, um passo que a empresa adota por um senso de dívida pública ou por falta de orçamento. Acontece que outras empresas devem poder pagar caridade corporativa e resultados de segunda classe, mas certamente não nós.
A propósito, nos EUA, existem
mais de 100.000 empresas de TI , e eu não ouvi algo para pelo menos um CEO dizer: "pense, erros!" ou "seria necessário baixar o orçamento extra em algum lugar". Então atenção, organizações, onde "a entrada é proibida para junho"! Não importa como você veja seus benefícios, não importa como você justifique sua vida, a realidade é que você inventou tudo isso para si mesmo. Não há vantagem competitiva em se livrar do junho. E você acabou de mostrar ao mundo seu gerenciamento de problemas.
A hostilidade para desenvolvedores juniores é uma maneira fácil de identificar uma cultura tóxica da empresa.
- April Wensel (@aprilwensel) 1 de agosto de 2017
A hostilidade para com os programadores mais jovens é um sinal claro de uma cultura corporativa tóxica.
Como você contrata e lida com programadores juniores é um importante indicador indireto da saúde da sua organização, sua linha de produtos e sua cultura interna. Os idosos prestam atenção a isso. E se isso por si só não parecer suficientemente convincente, a contratação de um número equilibrado de programadores juniores também traz benefícios financeiros.
Prevenção de problemas
Se você recusar programadores juniores porque eles “criam problemas”, também envia automaticamente uma mensagem importante aos seus funcionários sobre a cultura corporativa: erros não são permitidos. Você cria uma imagem de uma empresa que despede alguém sempre que o servidor fica inoperante. Não importa quanto você paga, ninguém quer trabalhar em um ambiente que não dê confiança no futuro. E as tentativas de intimidar os programadores para que eles não cometam erros, multiplica uma cultura de medo e ameaças, que afeta catastroficamente a saúde e a produtividade psicológicas.
Você pode argumentar que essa atitude incentiva os programadores a serem cautelosos e a criar processos que protegem contra erros: por exemplo, teste automático, controle de qualidade, failover, proteção de acesso e alterações de código reversíveis. Mas essa teoria coloca a carroça diante do cavalo. Se a política da empresa incentivar a criação desse seguro e a própria empresa fornecer aos programadores tempo e recursos suficientes para isso, uma cultura de inadmissibilidade de erros não será necessária e inútil; a maioria dos problemas será detectada muito antes da produção. E todo programador, seja júnior ou sênior, prefere um ambiente em que processos confiáveis protegem contra erros catastróficos.
E os erros que rompem todas as coberturas estabelecidas? Pense nelas como oportunidades valiosas para fortalecer sua defesa. Os programadores mais jovens, deve-se reconhecer, geralmente abrem essas oportunidades mais rapidamente do que os idosos. Portanto, a pergunta é: você prefere depurar seus processos mais cedo ou mais tarde? "Nunca" é bom, como qualquer programador experiente confirmará. Se algo pode dar errado, mais cedo ou mais tarde ele vai dar. Nenhum estoque de experiência evitará erros humanos.
Obviamente, você precisará de alguns programadores seniores e leads de operações para estabelecer as bases e criar precedentes para o ciclo de desenvolvimento de failover. Ninguém oferece contratar apenas programadores juniores. Mas se o seu escritório é realmente sério sobre erros - em outras palavras, os erros são detectados cedo e frequentemente -, os programadores mais jovens serão úteis. E todos os níveis de programadores ficarão mais satisfeitos com seu trabalho, pois a tolerância a falhas os libera para criar um bom software (em vez de extinguir constantemente incêndios) e protege suas noites e fins de semana.
Economizando dinheiro
De acordo com o fato, o
engenheiro de software júnior médio recebe US $ 55.394 por ano, enquanto o
engenheiro de software sênior recebe US $ 117.374 por ano. Os idosos são mais que o dobro do preço de junho.
Esses custos geralmente são justificados. Espera-se maior produtividade dos programadores mais antigos do que dos mais jovens. Mas esse não é o fim da imagem, e você receberá um centavo pela justificativa preguiçosa e impensada do aumento de custos como os custos de fazer negócios.
Nem todo código de aplicativo requer muitos anos de experiência para escrever ou mesmo para um trabalho bem feito. Cada programa possui uma "cola de software" que conecta as várias entradas e saídas de uma maneira completamente comum. De fato, não importa quem o escreve. Você pode pagar US $ 28 por hora para escrever este código - ou pode pagar US $ 59 por hora para escrever o mesmo código. De uma forma ou de outra, o resultado não será muito diferente. Se você contratar apenas idosos, pagará exorbitantemente por uma quantidade substancial de trabalho simples.
Além disso, a base de código varia muito entre aplicativos, e a familiaridade com ela é um fator chave na produtividade. Na maioria dos casos, um programador júnior que trabalha em equipe por seis meses será mais eficiente no gerenciamento de tarefas do que um programador sênior recém-contratado - simplesmente por causa do grau de familiaridade com a lógica do projeto.
A cola de software mencionada anteriormente e o código específico do domínio compreendem pelo menos metade de todo o desenvolvimento. O restante é o código que realmente precisa da atenção de um especialista sênior com benefícios para o resultado. Mas mesmo com esse código, um programador júnior pode fazer um trabalho incrível com acesso suficiente aos recursos educacionais e conselhos de um mentor experiente.
Em vista disso, um par de programadores juniores e seniores geralmente trabalha com a eficácia de dois programadores seniores e por menos de 75% do custo. Se sua meta é a produtividade máxima a um custo mínimo, esse par de junho + sênior deve se tornar a molécula fundamental da sua organização.
Vale a pena notar outro fator imensurável: a tendência dos programadores seniores de debater constantemente sobre tópicos que são insignificantes - sobre algoritmos, microoptimizações e estilo de código. Se a empresa contratar apenas idosos e não tiver um processo rigoroso de tomada de decisão, centenas de horas de trabalho poderão ser disputadas. Os desenvolvedores juniores geralmente são privados desse problema.
Desenvolvimento de carreira
Se você não contratar programadores juniores, envie outra mensagem para a equipe - que você não sabe como funciona o desenvolvimento da carreira.
Às vezes, quando as empresas dizem que não estão contratando desenvolvedores juniores, quero sacudi-los com seus capuzes e gritar: de onde você acha que os desenvolvedores seniores vêm ?!
- Kate Heddleston (@ heddle317) 13 de setembro de 2018
Às vezes, quando as empresas dizem que não contratam programadores juniores, quero agarrá-los pelos seios e gritar: de onde você acha que os programadores seniores vêm ?!
Novamente, não se trata de cumprir a dívida cívica corporativa e não de "participar do desenvolvimento" da comunidade de TI. Trata-se de transformar sua empresa em um local de trabalho decente, onde os programadores desejam se estabelecer e permanecer tempo o suficiente para fazer uma contribuição tangível.
Por acaso ouvi de programadores: “Cansado de mudar de cargo. Eu só quero ficar para sempre um programador sênior. ” No entanto, ninguém ainda me disse: "Espero nunca receber um aumento salarial, não aprenderei nada de novo e não serei reconhecido pelos meus serviços". E, curiosamente, os recursos necessários para apoiar carreiristas ambiciosos e assíduos, mas programadores seniores entusiasmados são praticamente os mesmos. Precisamos de maneiras de mudar e reconhecer um trabalho bem-feito, uma quantidade suficiente de recursos educacionais e uma variedade de projetos de diferentes idades no processo de desenvolvimento. Você precisa criar um senso de desenvolvimento, mesmo para aqueles que não estão interessados em promoção.
Mas não prenda esses caras. A minoria deles. A maioria dos funcionários de TI não serão programadores seniores por 40 anos. Eles sonham em se tornar arquitetos de software, líderes de equipe, diretores técnicos e fundadores de estúdios. E uma empresa que se orgulha de sua indiferença ao crescimento na carreira estará no final da lista de empregadores promissores.
Recruto apenas desenvolvedores seniores.
O truque é recrutar alguns deles no início de sua carreira.
- Reginald Braithwaite (@raganwald) 17 de setembro de 2018
Contrato apenas programadores seniores.
O truque é contratar alguns deles no início da minha carreira.
Uma das frases mais impressionantes que um programador pode ouvir na entrevista é "Olá, sou líder de equipe, trabalhei aqui por oito anos, começando pelo estagiário". Muito impressionante e muito raro. Essa pessoa é extremamente importante para a empresa - ele sabe tudo sobre a linha de produtos, viu o código para todos os projetos em um raio de cem metros e trabalhou com todos os funcionários da empresa. Ele é capaz de oferecer inovações dentro da empresa como nenhuma outra. E a empresa recebe dividendos incontáveis do trabalho dessa pessoa, porque foi capaz de entender como manter seu interesse por oito anos - cerca de 1/10 da expectativa média de vida. Este é um testemunho do sucesso da cultura corporativa. Este é um sinal de um cargo no qual reina o espírito de luta, no qual o reconhecimento encontra qualquer trabalho bem-feito, e projetos interessantes estão esperando a cada esquina.
Afirmar que "não contratamos junho" é, pelo contrário, uma admissão aberta de que a empresa não está pronta para desempenhar um papel na carreira de ninguém. Na verdade, isso é uma demonstração de estagnação: a empresa quer atrair programadores experientes e talentosos que farão sua contribuição em prol de apenas um salário. Alguns concordam com essas condições, mas você não verá o melhor trabalho deles.
No entanto, se sua empresa é realmente séria sobre o crescimento da carreira, uma restrição artificial para programadores juniores restringe apenas a linha de pagamento da contratação e diminui o tempo dos funcionários em sua empresa.
Escrevendo um ótimo software
Os programadores juniores têm uma série de características únicas que seus colegas mais experientes geralmente perdem. Um deles é o otimismo claro. Outra é a vontade de seguir o líder. Mas talvez a característica mais importante que os programadores juniores ofereçam seja a falta de bagagem. Programadores seniores viram a ascensão e o declínio da tecnologia, falhas de projeto, equipes divididas por conflitos internos e outras formas de vida do setor de TI. Eles acumularam crenças fortes e geralmente tiram conclusões de longo alcance, sugerindo que um cenário de sucesso (ou fracasso) se desenrolará da mesma maneira para outro projeto ou equipe. O que pode levar à falta de vontade de entender as nuances de um novo campo de problemas.
As empresas tão ansiosas por contratar apenas pessoas mais velhas costumam esquecer que desaprender o que não se aplica pode demorar mais do que aprender o que se aplica.
- DHH ( dhh ) 31 de julho de 2017
As empresas ansiosas por contratar apenas profissionais seniores geralmente ignoram que esquecer demais é muitas vezes mais difícil do que aprender a coisa certa.
Às vezes, a tarefa do gerente de projeto é dizer "eu sei que não funcionou lá, mas talvez funcione para nós". Um programador júnior é geralmente o melhor candidato para testar tal teoria: ele pode coletar uma amostra de uma idéia ou protótipo sem incluir nela os preconceitos acumulados por um programador sênior ao longo dos anos. Como programador júnior, eu frequentemente fazia esse trabalho, testando novas ferramentas e tecnologias, reescrevendo fragmentos de código de uma maneira alternativa, tentando idéias que outros funcionários rapidamente dispensavam. Muitas vezes descobri melhorias arquiteturais e as empresas de software tornaram-se tangivelmente melhores. Em alguns casos, foi possível acelerar o carregamento da página por uma ordem de magnitude; ou combine várias páginas em uma, evitando semanas de suporte no futuro; ou se livrar de tecnologias ineficientes que levariam a uma perda de tempo. Os benefícios de uma aparência nova e fresca não devem ser perdidos.
Muitas empresas podem se permitir extravagâncias como resolver um problema ou escrever código, bloqueando alguns programadores seniores em uma sala de reuniões para chegar a alguma coisa. Mas se você adicionar alguns jones lá - ou seja, desenvolvedores cujo tempo é aceitável para gastar em experiências únicas e idéias incomuns -, poderá ver quais melhorias isso dará a seus produtos.
Quanto à qualidade do software, os programadores mais jovens costumam fazer um trabalho importante que poucas pessoas percebem: retêm o código obscuro e exagerado que seus colegas mais velhos costumam escrever.
Um atributo subestimado do programador é a capacidade de escrever código que engenheiros medianos ou medíocres podem ler, modificar e estender com facilidade.
- Jamon Holmgren (@jamonholmgren) 17 de setembro de 2018
Uma das habilidades subestimadas de um programador é a capacidade de escrever código que um programador médio ou medíocre pode ler, modificar e expandir facilmente.
Se você substituir "médio ou medíocre" por "junior", verá o sistema imediatamente. A base de código é uma impressão abstrata do pensamento crítico de seus autores. Uma combinação robusta de programadores juniores e seniores oferece uma oportunidade de simplificar o código, o que acelera os recursos de gravação ao longo do tempo.
Resumindo: o princípio "apenas idosos", difundido em TI, subestima os programadores juniores. Isso afeta muito a todos, especialmente quando a organização acredita que sem especialistas iniciantes tudo será mais fácil. Embora algumas dessas empresas sejam bem-sucedidas financeiramente, pode-se imaginar as enormes quantias desperdiçadas que devem ser divididas em seu orçamento por causa dessa abordagem.
Se sua empresa supera os concorrentes nessa questão - ou seja, sabe como contratar, treinar e reter programadores juniores -, você também sente todas as vantagens que descrevi apenas superficialmente neste artigo. Você tem menor rotatividade, maior diversidade de especialistas e menos custos indiretos do que os concorrentes. Seu software possui menos erros e mais alegria. Existem, é claro, outros fatores. Mas uma abordagem positiva para programadores juniores é um sinal importante da qualidade do escritório em todos os níveis.