Ser generalista ou especialista?
Essa questão não é binária
Quem tem contato com o mercado de tecnologia sabe como as coisas mudam rapidamente, praticamente todos os dias surgem novas tecnologias propondo resolver um problema de forma mais eficiente e com um custo mais atrativo.
Para os profissionais da área pode ser um verdadeiro desafio manter-se atualizado diante de tanta informação e preparar-se para uma oportunidade frente a um cenário tão generalizado de tecnologias no mercado.
É muito comum encontrar vagas de trabalho solicitando uma lista infinita de tecnologias e técnicas, é quase como necessário criar um setor de pesquisa inteiro só para manter-se atualizado com essas posições.
A questão é, esse ambiente parece completamente desfavorável a especialização, e de fato, se tentarmos abraçar todas as suas nuances vamos nos tornar mais jornalistas/pesquisadores, que pessoas programadoras.
E o que fazer?
Principalmente para quem está começando na profissão, é comum ficar na dúvida, devo estudar algo com devoção ou tentar aprender o máximo possível sobre tudo?
Especializar-se em algo é natural e acontece com o tempo, numa empresa convencional o título de especialista é conquistado após o de sênior, e demonstra que a maior expectativa ao posto é a experiência e não apenas o domínio nas tecnologias que atendem ao negócio.
Outro ponto, mesmo o especialista precisa manter-se atualizado, ou seja, ser um tanto generalista. Manter-se atualizado é manter-se competitivo no mercado de trabalho!
Um bom ponto de partida, é, todas as posições, do mais iniciante ao mais especialista, precisam entregar valor ao negócio!
Entrega de valor
A visão de entrega de valor é diferente de acordo com a sua posição na empresa, mas no geral, para pessoas programadoras, a base é escrever um código de qualidade, bem descrito, documentado, testável, flexível a mudanças e sólido na implementação das regras.
É preciso saber trabalhar em equipe, respeitando o espaço de todos, os ritos, participando pró-ativamente nas discussões, se adequar à cultura da empresa, ter espirito colaborativo e de equipe!
As empresas não esperam, ou não deveriam, contar que um profissional iniciante consiga subir um software do tamanho do Facebook em produção no menor tempo possível, aplicando as melhores práticas de mercado, atendendo com exatidão ao negócio e gerando um custo muito baixo de sustentação.
A expectativa de um profissional iniciante é desenvolver-se dia a dia para aprender a atuar dentro das tecnologias utilizadas pela empresa, mas acima de tudo, criando código de qualidade, testável, dentro do prazo e adequado ao perfil cultural da empresa.
Quanto a um profissional mais experiente, que ele não pense apenas na sua própria carreira, mas desenvolva os demais da empresa, seja colaborativo, provoque discussões técnicas de qualidade e auxilie o time a avançar e evoluir de forma alinhada e assertiva, clara e objetiva, que seja um ponto de referência aos demais, e mitigue os riscos de criar software de má qualidade.
Ainda assim, o que fazer?
O estudo de maior valor para uma pessoa programadora são os fundamentos. Aprender sobre algoritmos, paradigmas de programação, design e arquitetura de software e boas práticas no geral, é o que mais agrega valor à carreira profissional.
No dia a dia de trabalho, estudamos acidentalmente tecnologia devido aos problemas gerados pelo negócio. Acabamos passando por diversos assuntos que não estavam planejados em nosso cronograma de estudos, mas raramente estudamos fundamentos de forma acidental.
Como pessoas programadoras, nossa primeira responsabilidade é escrever um código de qualidade, que seja de fácil leitura, escrito de pessoas para pessoas, que seja flexível e de fácil manutenção e atenda aos requisitos do negócio, isso indiferente da tecnologia, paradigma ou arquitetura.
Aliado a isso, é indispensável estudar ferramentas para trabalhar em time, como conceito de scrum, squads, refinamento de negócio, versionamento de código, testes de qualidade, code review, entre outros.
Por fim, você estará mais próximo a se tornar um especialista, que está atualizado com as tendências de mercado, mas que resolve problemas de forma assertiva, eficiente, sólida em relação à qualidade dos testes e flexível em relação à facilidade em efetuar mudanças.
Não se limite, as tecnologias mudam o tempo todo, mas os fundamentos estão mais sólidos do que nunca, e é o que alavanca os seus conhecimentos, pense que a tecnologia serve para resolver um problema, e os fundamentos para entender o principio de como usar tecnologia para resolver os problemas com qualidade.
E lembre-se tecnologia você estuda de forma acidental, fundamentos provavelmente não!