Estava escrevendo sobre .NET Aspire, porém, no meio do texto fui tomado por um acesso de raiva ao retratar o caminho que nós, como comunidade técnica e como sociedade, estamos tomando.
Quero compartilhar essa reflexão, pois a forma fragmentada como desenvolvedores querem ser responsáveis por cada vez menos e como empresas usam isso para tirar proveito da situação, já se tornou insustentável.
O papel do desenvolvedor: Um olhar crítico
Hoje em dia, na área de tecnologia, há um problema comum: tanto os desenvolvedores quanto o mercado estão buscando maneiras de simplificar e abstrair o trabalho de desenvolvimento de software, o que acaba transformando desenvolvedores em apenas escritores de código que não precisam pensar muito.
Essa inclinação para a simplificação acaba limitando o papel criativo e estratégico dos desenvolvedores, fazendo com que eles apenas executem tarefas sem entender o contexto completo.
Isso afeta a qualidade dos produtos e desmotiva os profissionais, que começam a sentir que o trabalho é repetitivo e sem grandes desafios.
Como se já não fosse suficiente, inibe bons talentos de furarem as bolhas, criando clusters de profissionais que parecem trabalhar em profissões diferentes, tamanha é a distância em competências e habilidades entre esses dois.
Dois pontos de vista
Podemos olhar para esse problema de duas maneiras: do ponto de vista dos desenvolvedores e do ponto de vista das empresas que os contratam.
Desenvolvedores
Muitos desenvolvedores preferem evitar a complexidade das novas tecnologias, como web servers, proxy reverso, containers, orquestradores, observabilidade, mensageria e outras demandas comuns. Eles preferem deixar essas tarefas para a equipe de DevOps e se concentrar apenas em programar. No entanto, essa falta de envolvimento cria insegurança, porque sem entender como essas tecnologias funcionam, o desenvolvedor não consegue garantir que o produto seja entregue com qualidade. Além disso, quando surgem problemas, o desenvolvedor tende a não saber como resolver, o que torna o trabalho mais estressante e menos satisfatório para todos.
Empresas
Por outro lado, muitas empresas, principalmente as que querem economizar, dividem as funções de maneira muito rígida, criando papéis muito especializados, de fácil substituição/reposição.
Essa estratégia ajuda a reduzir os custos de contratação e turnover e facilita a gestão, mas também gera um grande problema: os desenvolvedores perdem autonomia, e se tornam pequenas peças de uma grande engrenagem.
A curto prazo, isso pode até funcionar, mas a longo prazo prejudica a inovação, a qualidade dos produtos mas também sabota a própria empresa que precisará de novos profissionais, pois aqueles que ela formou dentro de casa são incapazes de pensar, de decidir, exatamente porque nunca lhes foram dadas oportunidades para tal.
Muitas empresas hoje estão tomadas de profissionais medíocres e ruins exatamente por esse fenômeno.
É exatamente assim que profissionais recém-contratados possuem mais chances de ganharem promoções do que aqueles que estão há muito mais tempo.
Todos já vimos relatos desse outro fenômeno: só não passou por isso quem não ficou tempo suficiente em lugar algum.
Nossa comunidade não é diferente
Aqui na Comunidade .NET essa situação é bem clara. Muitos acreditam que infraestrutura não faz parte de suas responsabilidades e preferem se concentrar apenas no código. Eles buscam abstrações e simplificações que eliminem qualquer coisa relacionada à infraestrutura, arquitetura ou operação, como o deployment, mensageria, containers, observabilidade e afins.
O problema é que isso cria uma lacuna de conhecimento: sem saber como essas partes funcionam, eles dependem de outras equipes para garantir que o software funcione bem em produção, o que é uma fórmula para conflitos que geram desgaste e reduzem a capacidade de entregar features e produto em produção, gerando atrasos e problemas de qualidade.
Algumas empresas veem isso como uma forma de economizar, usando desenvolvedores menos experientes e mais baratos para trabalhar em projetos complexos. Essa abordagem compromete a qualidade do produto, pois a falta de entendimento sobre o que há além do código deixa o desenvolvimento mais vulnerável, especialmente quando surgem problemas que exigem uma visão mais ampla do sistema.
O paradoxo das bolhas
Empresas mais visionárias têm expectativas diferentes. Elas querem que os desenvolvedores sejam capazes de trabalhar com atenção às principais cadeiras da engenharia de software. Isso cria um paradoxo: enquanto muitos desenvolvedores tentam evitar DevOps, modelagem, arquitetura, essas empresas esperam que desenvolvedores tenham esse conhecimento e usem no seu dia-a-dia.
E mora aqui o grande problema na contratação de juniores: As vagas que pagam muito bem, e ficam disponíveis por meses sem conseguirem ser preenchidas, não são para eles.
Essa falta de alinhamento cria uma geração de desenvolvedores “sêniores” que, apesar dos anos de experiência, não têm as habilidades necessárias para liderar projetos complexos nessas empresas, eles estão limitados à sua própria bolha.
Desenvolvedores que se limitam ao escopo de escrita de código acabam criando soluções que parecem funcionar bem localmente, mas não se sustentam quando analisadas em um contexto mais amplo, gerando custos maiores de infraestrutura, cloud, banco, manutenção e em muitos casos, também apresentando impossibilidade de acompanhar o crescimento do negócio.
Quando o assunto é escala, não estamos falando apenas em aplicações que conseguem escalar, mas produtos que não são capazes de dobrar seu número de clientes, sem precisar crescer proporcionalmente seu quadro de profissionais, sua infraestrutura, seus custos em geral.
Somente sendo estratégico se consegue lidar com esse fator.
Impactos na carreira
Esse escopo restrito tem grandes impactos na carreira dos desenvolvedores e no mercado de tecnologia como um todo.
- Quanto menor a necessidade de conhecimento,
- Quanto menor a barreira de entrada,
- Quanto maior a abundância de profissionais com aquele mesmo skill,
mais substituível ele se torna!
mais barato é seu trabalho!
Isso também afeta a motivação do profissional, já que o trabalho fica menos interessante e não há muitos desafios para enfrentar. Essa ausência de desafios, quando perdura por muito tempo (anos), compromete e limita a visão do desenvolvedor sobre o mercado, o que alimenta e retroalimenta a própria bolha dos projetos e clientes ruins.
Sem desafios e oportunidades de crescimento, muitos desenvolvedores perdem o interesse em melhorar suas habilidades ou buscar inovação, afetando seu desenvolvimento profissional.
À medida que os desenvolvedores avançam na carreira e atingem níveis de senioridade, essas limitações ficam ainda mais evidentes. Espera-se que um desenvolvedor sênior tenha uma visão mais ampla e seja capaz de tomar decisões estratégicas. No entanto, aqueles que passaram anos apenas executando tarefas pequenas e fragmentadas muitas vezes não estão preparados para papéis mais estratégicos.
O mercado espera que esses desenvolvedores sejam líderes técnicos, arquitetos e orientem equipes, mas a falta de entendimento completo sobre sistemas impede que eles assumam essas responsabilidades.
Além disso, a falta de envolvimento com a arquitetura, infraestrutura e modelagem limita as opções dos desenvolvedores na hora de resolver problemas. Quem evita lidar com essas questões acaba ficando preso em funções menos interessantes, enquanto as melhores oportunidades – como design de sistemas, arquitetura e liderança técnica – ficam fora de alcance. Isso não só prejudica o crescimento do desenvolvedor, mas também reduz o valor que ele pode trazer para os projetos e para a empresa.
É preguiça? Desinteresse?
Esse problema não ocorre por preguiça ou desinteresse dos desenvolvedores, mas sim pelo contexto em que eles foram inseridos. Uma parte do mercado de tecnologia valoriza a entrega rápida e não incentiva o pensamento crítico e a compreensão profunda, muito menos qualidade.
Essa cultura está mais disseminada nas empresas que pagam menos e, em geral, contratam desenvolvedores inexperientes aos montes. Aqueles devs que passarem tempo demais nessas empresas absorverão essa cultura, o que dificulta a quebra do ciclo, já que os incentivos estão alinhados com a entrega de resultados rápidos e superficiais.
Contudo, essa abordagem focada apenas na entrega de código, sem considerar o todo ao redor do produto, é sustentável para essas empresas, que conseguem com que profissionais seniores custem vezes menos, já que estão obsoletos e defasados, em um mercado com relativa abundância desse perfil, composto por ficou quem desistiu da carreira pelo caminho.
Quanto mais o tempo passa, mais esse desenvolvedor se distancia das oportunidades que representariam saltos em sua carreira, e cada vez se aproxima mais do conformismo que o mata em vida. Esse jogo não é sustentável a longo prazo.
Desenvolvedores que não são incentivados a pensar acabam perdendo habilidades importantes e não só se afastam das melhores oportunidades, mas se afastam do prazer, do sentimento de conquista e do sentimento de realização, possíveis de também serem encontrados no trabalho.
Afinal, passamos 1/3 da nossa vida trabalhando,
1/2 do nosso tempo útil!
Tem de valer a pena!
Resgatando o papel do desenvolvedor como Artesão de Software
Para podermos evoluir de maneira saudável e sustentável, é fundamental resgatar o papel do desenvolvedor como alguém que:
- pensa
- cria
- erra
- corrige
- lapida.
O desenvolvedor precisa entender vários aspectos do produto que está criando, e conectar todas as partes. Ele deve ser capaz de compreender a arquitetura, infraestrutura, modelagem, conhecer o negócio e entender como tudo se integra para entregar um produto de qualidade.
Ter essa visão ampla permite ao desenvolvedor resolver problemas complexos, inovar e se adaptar às mudanças, tornando-o um profissional essencial para o sucesso da empresa.
Um desenvolvedor completo é capaz de entregar várias vezes mais resultado do que profissionais aprisionados em caixinhas limitadas e limitantes.
Conclusão
Por isso, precisamos reavaliar como vemos o desenvolvimento de software. Abstrações são ferramentas poderosas, mas não podem servir como barreiras que isolam o desenvolvedor do conhecimento sobre seu trabalho.
Para crescer e deixar de ser apenas um executor, o desenvolvedor precisa pensar como um artesão – e as empresas precisam reconhecer e valorizar essa atitude.
Investir no desenvolvimento integral dos profissionais melhora não só a qualidade dos produtos, mas também cria um ambiente de trabalho mais motivador, onde cada pessoa se sente parte importante do processo e vê propósito no que faz.
Ao não revisitarmos esse assunto, aprisionamos mentes incríveis em bolhas que não aproveitam o máximo de suas capacidades. Enquanto isso, na bolha dos artesãos, o conhecimento envelhece e se perde como uma civilização que envelhece e deixa de existir por falta de renovação.
Se não dermos a devida atenção:
nem todos ganhamos no curto prazo,
porém, todos perderemos no longo prazo.
Excelentes exposições! Acredito que também existem as empresas que querem concentrar toda a responsabilidade em uma única pessoa também e isso acaba tornando o trabalho maçante e desmotivante para quem está com todo o gás e toda a empolgação de trabalhar com tecnologia. Acredito que a solução para os problemas relatados passa por todas as partes interessadas e que é realmente necessário ter envolvimento de todos para que todos se beneficiem de uma solução.