Desenvolvimento Não É Só Código !

Serie Mr.Robot - Fonte: GiphyComo segundo post deste blog, eu gostaria de conversar de uma forma um pouco mais ampla sobre uma percepção que tenho do mercado de tecnologia e, principalmente, sobre a forma como muitas pessoas estão entrando na área atualmente.
Depois da pandemia, a tecnologia acabou se tornando uma das profissões do momento. E esse tipo de movimento não é exatamente uma novidade. Ao longo dos anos, outras áreas também passaram por períodos semelhantes. Tivemos o boom das engenharias, acompanhando principalmente o desenvolvimento econômico do país. Depois vieram períodos de grande valorização de cursos como Direito e Medicina e, em outro momento, de áreas ligadas à Administração, ao mercado financeiro, aos investimentos e à gestão de ativos. Mais recentemente, foi a vez da tecnologia ocupar esse espaço.
O problema não está no crescimento da área. Muito pelo contrário. O problema está na imagem que acabou sendo construída em torno dela.
Muitas pessoas passaram a enxergar tecnologia como uma espécie de caminho quase garantido para bons salários, trabalho remoto, flexibilidade e crescimento profissional acelerado. E todas essas possibilidades realmente existem. Existem excelentes empresas, bons salários, carreiras interessantes e profissionais trabalhando de qualquer lugar do mundo. O problema começa quando essas possibilidades deixam de ser vistas como possibilidades e passam a ser tratadas como regra.
Quando comecei profissionalmente na área, por volta de 2015, a percepção era bastante diferente. Tecnologia não era vendida como uma profissão em que você faria um curso rápido, aprenderia algumas ferramentas e, poucos meses depois, estaria recebendo um salário muito acima da média. Também não existia com tanta força essa ideia de que aprender uma linguagem de programação ou um framework seria suficiente para garantir uma boa vaga.
Durante a pandemia, porém, tivemos um cenário muito específico. A digitalização foi acelerada, empresas passaram a depender ainda mais de tecnologia e surgiu uma demanda enorme por profissionais. Muitas organizações começaram a contratar em uma velocidade muito maior do que normalmente contratariam. Salários aumentaram, benefícios cresceram e o trabalho remoto passou a fazer parte da realidade de muitas empresas.
Foi um período real, interessante e extremamente importante para o mercado.
Mas também foi um período fora da curva.
E acredito que boa parte da confusão atual começa justamente aí.
Muitas pessoas entraram na área durante esse momento e acabaram utilizando aquele cenário excepcional como referência para definir o que seria o mercado normal de tecnologia. Quando posteriormente vieram os layoffs, a redução das contratações, uma concorrência maior por vagas e uma cobrança técnica mais elevada, surgiu naturalmente um choque de realidade.
Aquilo que parecia ser uma profissão em que bastava estudar durante alguns meses para conseguir uma excelente oportunidade voltou a exigir exatamente aquilo que sempre exigiu: conhecimento, prática, experiência, capacidade de adaptação e, principalmente, capacidade de resolver problemas.
Por isso, quando alguém me pergunta se tecnologia ainda é uma boa área, minha resposta continua sendo sim.
Tecnologia continua sendo uma excelente área.
Mas ela não é uma promessa de salário alto, trabalho remoto ou emprego garantido.
Esses benefícios podem fazer parte da carreira, mas não deveriam ser o motivo principal para alguém acreditar que a área será fácil.
O que aconteceu durante alguns anos foi um cenário excepcional sendo tratado como padrão.
E talvez o maior erro de quem está entrando agora seja justamente tentar construir uma carreira utilizando como referência um mercado que provavelmente nunca existiu daquela forma antes e talvez nunca mais exista exatamente daquele jeito.
O mercado mudou novamente.
E, enquanto muitas pessoas ainda estão tentando entender essa mudança, surgiu outro elemento capaz de transformar completamente a forma como enxergamos a profissão: a inteligência artificial.
A IA mudou a forma de desenvolver software

Coragem o Cão Covarde - Fonte: GiphyHoje acredito que estamos vivendo outro momento extremamente importante dentro da tecnologia.
A inteligência artificial já mudou a maneira como desenvolvemos software e, sendo bem sincero, não acredito que esse movimento tenha volta.
Hoje um desenvolvedor consegue produzir muito mais do que conseguia alguns anos atrás. Atividades que antes exigiam uma equipe maior podem, em determinados projetos, ser executadas por equipes menores utilizando IA para acelerar desenvolvimento, documentação, testes, análise de código e diversas outras tarefas.
Um MVP que anteriormente poderia exigir cinco desenvolvedores trabalhando durante várias semanas pode, dependendo da complexidade, ser desenvolvido hoje por uma equipe muito menor em um espaço de tempo reduzido.
Isso é uma mudança real.
A escrita de código deixou de ser uma atividade exclusivamente humana.
E acredito que precisamos aceitar isso.
O problema é que essa mudança também criou dois extremos dentro da nossa área.
De um lado existe o desenvolvedor que se recusa a utilizar inteligência artificial e acredita que todo código precisa necessariamente ser escrito por ele. É como se utilizar uma ferramenta de IA diminuísse a capacidade técnica ou o valor profissional daquele desenvolvedor.
Do outro lado existe o profissional que praticamente abandonou completamente a programação. Toda implementação é enviada para agentes, toda decisão técnica é delegada à IA e o profissional passa a atuar apenas como alguém que escreve prompts, executa o código gerado e coloca aquilo em produção.
Não acredito que nenhum dos dois extremos seja saudável.
Existe, para mim, um terceiro caminho, que considero muito mais interessante: é o desenvolvedor pragmático.
É o profissional que entende que a IA é uma ferramenta extremamente poderosa, utiliza essa ferramenta para aumentar sua produtividade, mas continua tendo capacidade técnica para avaliar aquilo que está sendo produzido.
É quase uma espécie de pair programming.
Em alguns momentos eu escrevo o código.
Em outros, a IA escreve.
Eu posso pedir uma implementação, revisar o resultado, alterar alguma decisão, pedir uma refatoração e continuar o desenvolvimento a partir dali.
Esse é, inclusive, o modelo que mais utilizo atualmente.
Não tenho nenhum problema em deixar uma IA escrever código para mim.
O problema seria eu não saber o que aquele código está fazendo.
E essa diferença é fundamental.
Mesmo utilizando agentes, MCPs, skills e ferramentas cada vez mais sofisticadas, ainda existem erros, interpretações equivocadas e decisões ruins sendo geradas. A IA ainda pode alucinar, ainda pode entender incorretamente uma regra de negócio e ainda pode sugerir uma arquitetura completamente desnecessária para o problema que está tentando resolver.
Talvez daqui a dois anos esse cenário seja completamente diferente.
Mas hoje ainda existe uma necessidade muito grande de supervisão.
E para supervisionar alguma coisa, você precisa conhecê-la.
Por isso me preocupa quando vejo desenvolvedores abandonando o estudo de linguagens, frameworks, banco de dados, arquitetura, redes e outros fundamentos simplesmente porque a IA consegue produzir código.
Se você não entende aquilo que está sendo gerado, você não está utilizando a inteligência artificial como ferramenta.
Você está dependendo dela.
E existe uma diferença enorme entre essas duas coisas.
Sem conhecimento técnico, o desenvolvedor corre o risco de virar apenas um braço biológico da inteligência artificial: alguém responsável por copiar o código, executar, compilar e enviar aquilo para produção.
Esse não deveria ser o nosso papel.
Curiosamente, comigo aconteceu exatamente o contrário.
Quanto mais comecei a utilizar inteligência artificial, mais comecei a estudar.
A IA ampliou muito o meu repertório. Muitas vezes ela apresenta abordagens, tecnologias ou possibilidades que anteriormente eu talvez demorasse muito mais tempo para encontrar sozinho. A partir dali eu consigo pesquisar, testar, questionar e entender aquele assunto de forma mais profunda.
Hoje estudo arquitetura, faço code review, experimento agentes, construo skills, testo modelos e utilizo essas ferramentas constantemente no meu trabalho e nos meus estudos.
E quanto mais faço isso, mais percebo o tamanho daquilo que ainda não conheço.
Por isso acredito que a inteligência artificial não deveria ser utilizada para substituir conhecimento.
Ela deveria ser utilizada para potencializá-lo.
Então, o que alguém que está começando deveria fazer?

The Office - Fonte: GiphyEssa talvez seja a principal mensagem que eu gostaria de deixar neste texto.
Se você está começando agora em tecnologia, aprenda a resolver problemas.
Pode parecer uma resposta extremamente genérica, mas acredito que isso seja muito mais importante do que simplesmente aprender uma determinada linguagem ou framework.
Programação é uma ferramenta.
Tecnologia é sobre resolver problemas.
E resolver problemas exige muito mais do que escrever código.
Você precisa entender o problema, entender o contexto, entender as limitações e somente depois decidir qual tecnologia faz sentido utilizar.
Um erro que observo bastante é o desenvolvedor começar pela solução.
A pessoa aprende determinada ferramenta e, a partir daquele momento, tenta resolver todos os problemas utilizando aquilo.
É como alguém que aprende a utilizar um martelo e começa a enxergar todos os problemas como pregos.
Já acompanhei situações em que existia uma solução pronta para um determinado problema, mas o desenvolvedor decidiu reconstruir tudo utilizando outra linguagem simplesmente porque era a tecnologia com a qual ele queria trabalhar.
Em um dos casos que me marcaram, era necessário fazer a comunicação entre um equipamento e um computador através de uma porta serial. O fabricante disponibilizava SDKs prontos em C++ e Pascal.
A solução já existia.
Mesmo assim, surgiu a ideia de reescrever toda aquela comunicação em Java.
E a pergunta deveria ser simples:
Qual problema estamos tentando resolver?
Se já existe uma solução funcional, por que estamos reconstruindo tudo?
Claro que podem existir motivos técnicos para isso.
Talvez a biblioteca tenha sido abandonada.
Talvez exista algum problema de segurança.
Talvez seja necessário melhorar a manutenção futura.
Mas precisa existir um motivo.
Tecnologia não deveria ser utilizada apenas pela tecnologia.
E é justamente aí que entra algo que acredito que muitos estudantes deveriam praticar mais: resolver problemas reais.
Não precisa ser o problema de uma grande empresa.
Não precisa ser uma startup.
Não precisa ser um SaaS.
Pode ser um problema seu.
Você esquece de beber água durante o dia?
Crie alguma coisa para lembrar você.
Você quer acompanhar seus treinos da academia?
Construa um sistema simples para registrar seus exercícios e acompanhar sua evolução.
Você tem dificuldade para organizar seus gastos?
Crie uma aplicação para controlar suas despesas.
Você precisa organizar seus estudos?
Faça uma ferramenta para acompanhar aquilo que está estudando.
O tamanho do problema não importa tanto.
O que importa é passar pelo processo de entendê-lo e transformá-lo em uma solução.
É nesse processo que você começa a descobrir as perguntas que um exercício acadêmico nem sempre consegue apresentar.
Onde vou armazenar os dados?
Como vou identificar o usuário?
Preciso realmente de autenticação?
O que acontece se não houver internet?
Como essa informação será atualizada?
Preciso de um banco de dados?
Qual banco faz sentido?
Como vou validar os dados?
O que acontece quando alguma coisa dá errado?
Essas perguntas fazem parte do desenvolvimento de software.
E elas surgem naturalmente quando você tenta resolver um problema real.
Não vejo nenhum problema nos exercícios tradicionais da faculdade. Criar uma aplicação para calcular médias, trabalhar com vetores, desenvolver algoritmos ou resolver desafios de plataformas como LeetCode são atividades importantes.
Elas ajudam bastante no desenvolvimento da lógica.
Mas não deveriam ser a única forma de aprender.
Uma experiência que considero muito importante na minha formação foi justamente ter contato, durante o curso técnico no SENAI CIMATEC, com essa ideia de resolução de problemas.
Existiam atividades relacionadas à lógica, claro.
Mas também existia uma preocupação em transformar aquilo em alguma coisa prática.
Você recebia um problema e precisava pensar sobre ele.
E hoje percebo o quanto isso foi importante para a minha forma de trabalhar.
Porque uma das maiores dificuldades que encontro atualmente não está necessariamente em escrever código.
Está em encontrar pessoas capazes de compreender um problema antes de começar a implementar uma solução.
Não estude para ser iniciante

O Predator - Fonte: GiphyExiste uma recomendação que costumo dar para quem está começando em praticamente qualquer área:
Não estude para ser iniciante.
Na tecnologia, eu diria:
Não estude apenas para conseguir uma vaga de júnior.
Estude pensando em construir o conhecimento que você espera de um profissional pleno.
Isso não significa que você vai começar sua carreira como pleno.
Experiência profissional não pode ser substituída apenas por estudo.
Mas sua régua de conhecimento pode ser maior.
Hoje qualquer pessoa consegue abrir uma ferramenta de inteligência artificial e pedir:
“Crie uma API em Laravel para cadastrar produtos.”
E ela provavelmente receberá alguma coisa funcional.
Qual é então o seu diferencial?
Não pode ser apenas saber escrever aquele código.
Seu diferencial precisa estar na capacidade de olhar para aquilo e entender se faz sentido.
Por que utilizar Laravel?
Por que essa arquitetura?
Por que esse banco?
Por que essa autenticação?
Por que essa tabela possui esses campos?
Essa consulta escala?
Existe algum problema de segurança?
Existe uma solução mais simples?
Essas são perguntas que exigem conhecimento.
E esse conhecimento não perde valor com a inteligência artificial.
Na verdade, quanto mais poderosa a IA se torna, mais importante passa a ser a qualidade de quem está direcionando e avaliando aquilo que ela produz.
Tecnologia não é só código

Looney Tunes - Fonte (Próprio Autor)Talvez essa seja a conclusão de tudo aquilo que estou tentando dizer.
Tecnologia nunca foi apenas código.
Código é uma ferramenta.
Framework é uma ferramenta.
Cloud é uma ferramenta.
Inteligência artificial também é uma ferramenta.
No final, estamos utilizando todas essas coisas para resolver algum tipo de problema.
E acredito que quem entender isso terá muito mais facilidade para atravessar as mudanças que inevitavelmente ainda acontecerão na nossa área.
As linguagens vão mudar.
Os frameworks vão mudar.
A forma como escrevemos software vai mudar.
Talvez daqui a alguns anos realmente escrevamos muito pouco código manualmente.
Mas problemas continuarão existindo.
Empresas continuarão precisando melhorar processos.
Pessoas continuarão precisando de ferramentas.
Sistemas continuarão precisando ser projetados, avaliados e mantidos.
Por isso, se você está começando agora, meu conselho não é ignorar a inteligência artificial.
Muito pelo contrário.
Aprenda a utilizá-la.
Mas também aprenda programação.
Entenda os fundamentos.
Construa coisas.
Quebre coisas.
Leia código.
Faça code review.
Questione aquilo que a IA produz.
E, principalmente, tente resolver problemas reais.
Mesmo que sejam apenas os seus próprios problemas.
Porque no final das contas, talvez o melhor desenvolvedor não seja aquele que escreve mais código.
Talvez seja aquele que consegue resolver um problema utilizando somente a quantidade de tecnologia que realmente precisa.
visitante@contadorhack:~/poststail -f comentarios.log
0 comentários
Ninguém comentou ainda. Seja o primeiro.