Desenvolvimento de software não é fácil
Neste post irei expor algumas das dificuldades relacionadas ao desenvolvimento de software que esta diretamente ou indiretamente relacionado.
Não pretendo dar soluções para os problemas, mas apenas expor eles como forma de reflexão.
Código é o de menos, a decisão é o que impacta
Escrever código é importante. O ato de escrever código é algo que estará entre os devs por muitos anos (senão para sempre...). No entanto, esta longe de se resumir apenas isto.
Escrever código implica em tomar decisões. O que estamos escrevendo precisa ter um sentido e proposito. Precisamos tomar duras decisões sobre o que remover, sobre o que deixar, sobre o que modificar... Parece fácil, certo? Mas não é!
Imagine que você esta resolvendo uma issue em um projeto grande. Tomar decisões nesses projeto implica em decisões difíceis. Se estamos adicionando algo novo é preciso validar a ideia, que por sua vez irá falhar inúmeras vezes até que você encontre o erro. A implementação talvez não seja possível porque um pedaço de código legado muito importante depende de outra função que estabelece um contrato que impede a implementação da sua ideia. E agora? Mas calma, pode ficar muito pior!
- Uma simples alteração pode quebrar sistemas no mundo inteiro;
- Uma simples alteração pode custar mesmo uma vida dependendo do cenário;
- Uma simples alteração pode quebrar todo o fluxo de trabalho de outras pessoas;
- Uma simples alteração pode abrir uma brecha de segurança no software, abrindo espaço para sua empresa ser destruída judicialmente;
- Uma simples alteração pode deixar o sistema indisponível por horas (custando milhares-milhões de reais)
- Uma simples alteração pode exigir a refatoração massiva da codebase (que causa outros problemas)
- Uma simples alteração pode tornar sua aplicação muito mais lenta;
- Uma simples alteração pode te custar um emprego;
Desenvolvedores tomam decisões muito importantes. É uma função inofensiva até tudo quebrar... Quando vejo pessoas delegando a decisão para IA, logo penso que é loucura.
Hoje temos diversas técnicas e ferramentas que previnem problemas comuns, mas graves como os que citei acima. Adivinha? Estes problemas ainda acontecem com frequência.
No final do dia, a simples decisão de um dev pode construir ou destruir. A importância de projetos pessoais é justamente para entender o impacto de suas decisões num ambiente onde se quebrar, ninguém se prejudica.
Exige firmeza
Você estudou por mais de 20 anos em uma das maiores faculdades do mundo, já construiu diversos sistemas de sucesso que estão valorizados em milhões, mas frequentemente um simples ; dispara um erro "anulando" tudo isso.
Bem, programar é uma habilidade que exige firmeza. Estamos sempre nos deparando com errors independentemente das circustâncias. O que muda é o tipo de erro, mas eles ainda acontecem. Algumas pessoas não tem a firmeza necessária e se sentem estúpidas, o ego é ferido, ou desistem. Enquanto isso, os devs de sucesso são aqueles que engole o choro, e resolve o problema. Detalhe, quando um erro acontece, quase sempre temos certeza que não deveria acontecer. Não entendemos o que poderia estar causando quando tudo aparentemente esta nos trilhos, até você descobrir que na verdade...
A pressão é enorme
Além de devs terem que suportar pessoas que não entende o que é let, uma reference e coisas básicas sobre computação, precisamos suportar uma pressão absurda no dia a dia.
É segunda feira e você tem que fazer uma alteração no sistema legado da empresa. A alteração é simples, mas o projeto não tem documentação, contém padrões e decisões de design antigos. O histórico do git esta mais bagunçado que inventário de jogo open-world. Você esta num oceano e não enxerga nada no horizonte quando olha para os lados. O limite é de 2 dias, pois é uma alteração simples, mas já estão te ligando um dia antes do prazo para verificar se tudo esta indo "bem". Apesar de tudo você tem que suspirar, ter o nervo de aço e fazer o que precisa ser feito.
Lidar com pressão não é brincadeira. O cérebro humano não gosta de operar sobrecarregado, e cada minuto sob pressão aumenta as chances de tomada de decisões erradas levando ao primeiro problema citado. É um loop destrutivo.
Somos mais nada do que alguma coisa
Cada feature, cada projeto, cada linha de código, cada conquista ganha, tudo isso é sempre questionado pelo o próximo aprendizado. Ser dev é estudar para sempre. Se atualizar não é apenas aprender framework. Estudar dói pois é o mesmo que admitir que você não sabe, se você não sabe inúmeras coisas surgem em teu cérebro. Inúmeros processos químicos acontençam resultando em diversas reações dependendo de cada universo (indivíduo). No final do dia percebmos que não somos nada. O conhecimento que temos é tão infímo. Somos nada, apesar de tudo que passamos.
Felizmente, esta é uma fase que passa e logo faz parte do processo, porém é neste processo que muito desistem.
Conclusão
Eu poderia citar mais, porém eu ficaria horas e horas aqui... Espero que tenha gostado!