Skip to main content

Command Palette

Search for a command to run...

O Engenheiro T-Shaped

A escolha entre ser especialista ou generalista é debatida por muitos engenheiros. Hoje em dia, o mercado pode precisar de algo intermediário.

Updated
7 min read

Tradução livre do post “The T-Shaped Engineer” originalmente publicado por Alexander Kondov em 12 de Março de 2020.

~

Generalista

Como diz o ditado, “Um pau para toda obra, mas um mestre de nenhuma”. Se você decidir seguir o caminho do generalista, suas habilidades crescerão horizontalmente. Você gostará de aprender novos conceitos e poderá satisfazer sua curiosidade trabalhando com diferentes ferramentas e linguagens.

No entanto, dominar qualquer coisa será difícil. Para se tornar proficiente com uma tecnologia, você precisa dedicar muito tempo a ela. Um generalista se concentra em várias coisas ao mesmo tempo, então sua atenção é dividida.

Nos últimos anos, ser chamado de "pau para toda obra" teve uma leve conotação negativa. Os generalistas cobrem uma grande área em suas habilidades, mas muitos permanecem na superfície. Muitas vezes, quando um trabalho desafiador precisa ser feito, engenheiros com conhecimento mais profundo são necessários.

$$ ㅤ $$

Especialista

Os especialistas dedicam seu tempo e trabalho a um conjunto restrito de tecnologias e ferramentas. Eles sacrificam a alegria de explorar várias disciplinas, dedicando seu tempo e esforços a uma área. Dessa forma, eles podem não ter conhecimento além dos fundamentos nas áreas correlacionadas, mas se tornam mestres no que fazem.

Muitos desenvolvedores estão neste campo por causa do desafio. Eles gostam de resolver quebra-cabeças e desvendar problemas complexos. Muitas vezes, os especialistas são encarregados das soluções mais difíceis e gratificantes.

Seu domínio lhes dá uma visão que outros desenvolvedores não têm.

No entanto, dedicar todo o seu tempo em uma linguagem, stack ou tecnologia pode ser limitante. Se você decidir seguir o caminho do especialista, precisa considerar qual investimento será o melhor a longo prazo.

$$ ㅤ $$

Empresas, Mercado e Talentos

O mercado de software está experimentando e procurando maneiras de desenvolver de forma mais eficaz. Nos últimos anos, percebemos que os engenheiros de software estão sobrecarregados com os desafios de outros setores. Não desenvolvemos produtos da mesma forma que os físicos.

Podemos entregar mais rápido, alterar com frequência e, o mais importante, reverter se for necessário. Hoje em dia, os projetos raramente saem como planejado do início ao fim. As modificações são feitas ao longo do caminho. Às vezes, recursos inteiros são abandonados e novos são priorizados.

Essas especificidades levam as empresas a buscar formas mais inteligentes de trabalhar. Mas, para isso, o mercado precisa de talentos diferentes.

$$ ㅤ $$

Como costumávamos trabalhar

No passado, o desenvolvimento de um produto era priorizado com base nos recursos disponíveis. Se um recurso exigisse mais engenheiros back-end, mas os desenvolvedores Java estivessem ocupados, o desenvolvimento deste seria postergado.

Isso pode causar problemas de contratação. Quando a empresa espera mais trabalho de back-end ou front-end, ela contrata especialistas na área correspondente. Mas se as prioridades mudam, acabam com um poder de engenharia não utilizado.

Eu testemunhei isso mais de uma vez — gerentes de produtos tentando descobrir como manter a equipe de front-end ocupada. Nos próximos meses, a equipe de back-end se concentraria em refatoração e melhorias. Portanto, não há ninguém para implementar os novos endpoints necessários.

Nesse cenário, os engenheiros podem ser solicitados a realizar tarefas que normalmente não fariam. Isso pode ser frustrante para pessoas que passaram seu tempo dominando uma stack diferente.

Embora isso possa ser um sinal de mau planejamento, não concordo totalmente. As pessoas são contratadas por causa de seu conjunto de habilidades, mas em algum momento a direção muda. Talvez um novo concorrente tenha entrado no mercado, talvez as preferências dos usuários tenham mudado, talvez tenha sido outra coisa.

$$ ㅤ $$

O melhor dos dois mundos

O negócio precisa de engenheiros que possam se adaptar à dinâmica do mundo moderno. Profissionais que são autossuficientes e não ficam paralisados ​​quando o DevOps está de férias. Idealmente, qualquer pessoa da equipe deve preencher qualquer outra função, se necessário — desde pequenos ajustes na UI até o debugging da pipeline de CI.

No entanto, isso é mais fácil falar do que fazer. Adquirir as habilidades para ser produtivo em várias áreas requer anos. Você também precisa ser exposto a diferentes partes do produto. Uma empresa com fortes grupos entre as equipes não lhe dará essa oportunidade.

Ao mesmo tempo, quando um trabalho complexo precisa ser feito, uma equipe de generalistas pode não ter experiência para tomar decisões adequadas. Quando o desempenho do banco de dados precisa de melhorias ou decisões de arquitetura precisam ser tomadas, você precisa de uma pessoa que esteja profundamente focada nesse tópico.

$$ ㅤ $$

O engenheiro T-Shaped

A evolução das metodologias de desenvolvimento de software exigiu um novo tipo de engenheiro — o generalista especializado.

Assim, o termo “T-Shaped Specialist” foi cunhado. É usado para descrever uma pessoa cuja distribuição de conhecimento se parece com a letra T. A linha horizontal descreve um amplo conhecimento de trabalho em várias áreas. A vertical é para especialização em uma área.

Um engenheiro back-end que pode criar sua própria interface, estilizá-la razoavelmente e fazer o deploy, pode se enquadrar nesta categoria. Um engenheiro UI que pode subir uma aplicação Express quando necessário e pode depurar um endpoint de API também pode ser considerado um T-Shaped.

Ter uma equipe de generalistas especializados significa que o trabalho pode ser priorizado sem se preocupar com os desenvolvedores disponíveis. Isso quebra os grupos em torno das equipes e ajuda todos a se envolverem mais no projeto.

$$ ㅤ $$

Problemas com este modelo

Ter especialistas T-Shaped não é uma bala de prata. Isso não significa que qualquer um pode fazer qualquer trabalho e fazê-lo bem. Embora tenham amplo conhecimento, isso não significa que possam ter um desempenho excepcional em todas as áreas.

Às vezes, a empresa pode esperar falsamente que esses engenheiros sejam especialistas em tudo. Engenheiros T-Shaped podem se adaptar e se atualizar com diferentes tecnologias. Mas eles ainda têm uma área como principal foco.

Esperar que um generalista especializado seja um especialista em nuvem, arquitetura de microsserviços e interfaces de usuário não é realista. Os desenvolvedores podem ter muitas funções e apoiar uns aos outros, mas conhecer os pontos fortes de cada membro da equipe é crucial.

Caso contrário, estamos novamente na situação em que esperamos que os generalistas tomem decisões que exijam conhecimentos profundos.

$$ ㅤ $$

É uma escolha?

Recentemente, iniciei algumas discussões no LinkedIn sobre especialistas e generalistas. Qual opção um profissional deve escolher hoje em dia? Algumas das respostas vieram de pessoas não técnicas, o que mostra que este não é apenas um problema da indústria de software, mas como um todo.

O resumo que posso dar de todas as respostas é que as pessoas estão mais inclinadas a serem generalistas ou especialistas T-Shaped.

Não acho que isso seja uma tendência. É uma necessidade real que as empresas tem e ser generalista pode não ser mais uma opção e sim uma exigência.

Mesmo que você dedique seu tempo a uma área, isso exige que você tenha conhecimento em várias áreas multidisciplinares. As ferramentas modernas tornaram-se tão boas que nos permitem estar mais envolvidos no processo de desenvolvimento por completo.

Mas com isso vem a responsabilidade de aprender mais. Quando você está desenvolvendo algo, precisa escrever testes para isso. Em seguida, vem a pergunta sobre como você irá deployar. Para fazer isso, você precisa decidir qual infraestrutura será ideal.

Uma vez concluído o deploy, abre-se a porta para mais desafios. Você precisa monitorar e manter o produto que entregou, o que não é tarefa fácil.

Para fazer tudo isso corretamente, você precisa de mais do que apenas conhecimento de trabalho com um amplo conjunto de ferramentas. À medida que a cultura muda para uma mentalidade de “você constrói, você executa” — especializar-se em uma área não é mais suficiente.

$$ ㅤ $$

Resumo

  • Os desenvolvedores de software precisam fazer a escolha entre ser um generalista ou um especialista.
  • Os generalistas têm acesso a uma variedade maior de trabalhos. Os especialistas estão focados em uma única área, mas os problemas que enfrentam geralmente são mais desafiadores
  • As empresas precisam ser flexíveis e se adaptar às condições do mercado. Para fazer isso, eles precisam de talentos que também possam mudar facilmente as prioridades.
  • Os especialistas estão muito focados. Os generalistas são flexíveis, mas podem não ter a experiência necessária para tarefas complexas.
  • Um especialista T-Shaped é alguém que tem amplo conhecimento em várias disciplinas, mas se concentra especificamente em uma. Desenvolvedores com esse perfil são altamente valorizados em todas as organizações. Eles são adaptáveis, mas podem fornecer uma visão profunda sobre os tópicos em que se concentram.
  • Escolher entre ser um generalista ou um especialista pode não ser mais uma escolha. As ferramentas modernas reduzem a barreira de entrada em outras disciplinas. Espera-se que os engenheiros façam mais além do design e implementação.