A Adobe, Xiaomi, Amazon, Apple, Netflix e Google (FAANG) são algumas das maiores empresas de tecnologia do mundo. Eles podem ser ótimos para trabalhar por vários motivos. Se você é funcionário de qualquer uma das empresas FAANG, provavelmente ganhará um ótimo salário e terá acesso a uma rede robusta de desenvolvedores com a qual aprender. Se você não trabalha em uma empresa FAANG, pode se sentir um pouco excluído.
Mas a verdade é que nem todas as funções da engenharia de software são iguais. Os projetos em que você trabalha, as pessoas a quem se reporta e os ambientes em que trabalha variam. Neste post, darei uma análise detalhada de por que essas diferenças existem e compartilharei um pouco de minha experiência pessoal trabalhando em ambos os lados da cerca. Apresentarei as experiências que você pode ter como engenheiro de software em uma empresa FAANG, bem como se você trabalhar para uma grande empresa em um setor não-FAANG.
Quando os engenheiros constroem o produto
A maior diferença para as funções de engenharia de software nas empresas FAANG é o produto. O software é parte integrante do produto ou plataforma de cada empresa. Essa necessidade de software exige que cada empresa tenha engenheiros suficientes. Sua empresa empregará dezenas de milhares de outros engenheiros, e vários milhares podem estar trabalhando em seu produto ou projeto específico.
Você entrará em uma infraestrutura robusta construída para o seu sucesso como desenvolvedor. As expectativas serão claras e o protocolo bem estruturado. Provavelmente haverá um processo simples e eficiente para tudo; se não houver, provavelmente está sendo desenvolvido. Alguém sempre estará disponível para revisar e ajudar a depurar seu código. Haverá wikis internos detalhados que o ajudarão em quaisquer problemas que você possa enfrentar.
O Google é um ótimo exemplo de como as empresas FAANG operam em escala. Lembro-me de quando visitei o Google para uma entrevista no local. Durante a entrevista, alguns Googlers me acompanharam pela infraestrutura de desenvolvimento da empresa. Parte dessa infraestrutura consistia em revisões de código contínuas. Havia uma ferramenta interna onde os desenvolvedores podiam pedir a outros desenvolvedores uma revisão de código. Se precisassem de equipamentos, um engenheiro do Google poderia obter tudo o que precisassem de TI. Na maioria das vezes, o equipamento era gratuito. O equipamento gratuito era fornecer aos funcionários um retorno rápido para que eles pudessem produzir seu melhor trabalho.
Nas empresas FAANG, você estará cercado por pessoas tecnicamente competentes. Você conhecerá muitos engenheiros de software brilhantes que sabem lidar com códigos como a palma da mão. Você também encontrará funcionários não técnicos que sabem lidar com códigos. Para as empresas FAANG, o software é a chave e os funcionários sabem disso. Isso significa que todos precisam entender o software o suficiente para trabalhar com ele. Funcionários não técnicos não precisarão saber programar, mas precisarão entendê-lo em um nível conceitual. A empresa não pode permitir que gerentes não técnicos idolatrem recursos irrealistas. Eles não querem ineficiências de comunicação e produto entre seus engenheiros e todos os demais.
Durante meu tempo no Facebook, conheci muitos funcionários não técnicos que sabiam como codificar. O Facebook exigiu que os gerentes de produto concluíssem um treinamento de programação de seis semanas. O elevado padrão de conhecimento ajudou a empresa de várias maneiras, principalmente porque os gerentes entendiam as especificações técnicas. Eles criaram recursos inovadores e realistas com os quais os engenheiros poderiam embarcar. Os gerentes não técnicos não apressavam os programadores por ignorância. Não houve perda de comunicação entre as partes interessadas. Melhor ainda, os colegas de equipe tinham uma compreensão alinhada do que precisava ser feito.
Como as empresas FAANG precisam contratar muitos engenheiros, elas competem constantemente pelos melhores talentos. Essa competição afeta as funções de engenharia de software de várias maneiras. Cada empresa FAANG tentará oferecer a você o melhor ambiente de trabalho possível. Isso inclui mais do que uma infraestrutura de desenvolvimento robusta. As empresas FAANG também oferecerão várias vantagens de trabalho excelentes – salários elevados, refeições diárias gratuitas, off-sites pagos e eventos de celebridades.
A competição entre as empresas FAANG nem sempre é puramente benéfica para você. A competição trará os melhores dos melhores engenheiros, que farão com que você seja responsável por produzir o melhor trabalho possível. As empresas FAANG irão medir você em relação a seus próprios programas intensos de desempenho interno. Eles projetam esses programas para garantir que todos os engenheiros estejam produzindo um ótimo trabalho. Se você não estiver à altura, eles o deixarão ir.
Quando eu estava no Facebook, muitas vezes encontrei funcionários que trabalharam em outras empresas FAANG. Os recrutadores do Facebook teriam como alvo funcionários de outra empresa FAANG. Ao longo do meu tempo com o Facebook, vi como todos trabalharam duro. Os engenheiros foram persistentes em enviar trabalhos da mais alta qualidade. Eles se certificaram de que executaram todos os aspectos do processo de teste e validação e passaram longas horas após o trabalho remendando o que pareciam ser detalhes minuciosos. Eles encorajaram todos a fazerem o mesmo. Os padrões eram altos, mas todos estavam à altura da tarefa. Do contrário, eles perderiam o emprego.
O que você pode esperar de indústrias não FAANG
Não há dúvida de que o software impulsiona muitos dos produtos e plataformas das empresas FAANG. Como engenheiro de software em uma empresa FAANG, seu código será a força vital da organização. Mas e as funções de engenharia de software em setores que não são orientados por software?
Para um engenheiro de software em um setor não FAANG, você terá mais oportunidades de agregar valor. Essas oportunidades se devem em parte ao fato de não haver tantos desenvolvedores. Isso significa que você será capaz de trazer novas ideias para o seu setor, possivelmente aquelas que podem perturbar o setor. Outra forma de agregar valor é automatizando tarefas para o resto da empresa. Ao conhecer seus colegas de trabalho, você descobrirá as áreas que pode começar a automatizar. Quer se trate de relatórios ou aprendizado de máquina, você terá uma porta aberta para começar. Outros começarão a reconhecê-lo por sua capacidade de agregar valor por meio do software. A gerência pode notar e promovê-lo mais rápido do que se você fosse trabalhar em uma empresa FAANG.
Lembro-me da época em que trabalhei em uma construtora depois de trabalhar no Facebook. Havia muito menos desenvolvedores na construtora – eu era um dos cinco programadores em todo o escritório. De certa forma, essa escassez era desanimadora, mas oferecia uma forma potencial de agregar valor maciço. Quando saí, havia revisto e automatizado seu modelo de estimativas financeiras. O modelo pode prever o custo de um determinado projeto com 95% de precisão. Um dos outros, engenheiros de software mais experientes, criou uma ferramenta interna que poderia produzir um modelo 3D de uma proposta de construção com base em uma maquete de projeto dos gerentes de projeto. A ferramenta interna otimizou o relacionamento com os clientes da empresa. Os clientes podem entrar e saber imediatamente o que a empresa pode oferecer em grande escala. Se você acabar trabalhando em uma indústria que não seja FAANG,
Outra diferença distinta para engenheiros de software é que você é visto como um passivo, enquanto as empresas FAANG o vêem como um ativo. Em uma empresa FAANG, você é valioso porque contribui para os resultados financeiros. Em uma empresa do setor de tecnologia, nem sempre é esse o caso. A empresa o verá como qualquer outra função de negócios. Você é uma despesa que tem que ser comprovada a cada ano, às vezes a cada trimestre.
Por causa disso, uma empresa fora do setor de software provavelmente pagará menos a você. A empresa vai querer pagar primeiro aos contribuintes diretos. Esse grupo pode ser formado por gerentes de projeto, auditores ou mesmo executivos de contas. Mas se o seu software não for o principal impulsionador da receita, não espere ganhar um salário alto.
Com base na minha experiência, fora dos setores de software, é mais provável que você trabalhe com funcionários temporários. As empresas geralmente desejam integrar software a seus negócios, mas não estão dispostas a pagar por um desenvolvedor em tempo integral. Eles então contratam trabalhadores temporários que trabalham de seis a doze meses seguidos. Muitos problemas podem surgir com os trabalhadores temporários. Os empreiteiros podem não compreender sua infraestrutura de desenvolvimento. Você pode gastar tempo desnecessário certificando-se de que ambos estão na mesma página. Quando eles saem, pode ser você que precisa de mais tempo para entender o código que eles deixaram para trás. Qualquer conhecimento que eles possuem frequentemente deixa a empresa quando o fazem.