Aconselhe um Desenvolvedor a Voltar ao Caminho

Resumo

Com as novas ferramentas disponíveis no mercado de tecnologia, o desenvolvimento se tornou mais abstrato e simplificado. Aliado a correnteza da oportunidade, acabei sendo arrastado a alguns subterfúgios(IA). Gostaria de alguns conselhos para retornar ao caminho, ou melhora-lo. Há uma possibilidade de que eu esteja usando as ferramentas certas com maneiras erradas.

Contexto

Quem sou eu

  • Nome: Moisés
  • Idade: 21
  • Classificação: dev junior
  • Linguagem Preferida: Python
  • Linguagens Utlizadas: Python, C#(unity), GdScript(Godot)

Dezembro de 2021, parei de programar em Python ao finalizar um curso técnico que eu fazia.
Em 2022, voltei foquei em programação C# para Unity e em 2023 fiquei sem programar. Já em Maio de 2024, retornei gracas a uma vaga de emprego em uma pequena empresa que me trouxe de volta a linguagem (ainda bem que arrependimento não mata).

Recomeço

Essa pequena empresa me contratou para criar dashboards e análise gráfica, algumas coisas aconteceram entre essa empresa e uma outra empresa que prestava serviços a ela, e basicamente não tinham dados para eu analisar. Acabei fazendo uns projetos para mostrar capacidade, acabou q o dono dessa empresa me convidou para uma parceria, para eu desenvolver produtos, eu desenvolveria a parte técnica e ela faria revenda para empresas parceiras, com o pretexto que a gente iria dividir o lucro.

Problema

Uma das coisas mais desafiadoras para concretizar os projetos era simplesmente um método base de desenvolvimento, por isso eu fui testando algumas formas. E no meio disso tudo passei receber responsabilidades de um Sênior(e salario de junior junior) mesmo sendo Júnior. Falo de receber responsabilidades de Sênior, por desenvolver produtos sozinhos, sem a orientação de pessoas mais experientes ou um guia mínimo do que precisaria ser feito, apenas com o destino final em mente.

gambiarra Solução

Por conta disso, para minimizar o desnível entre o que me era pedido, e o conhecimento que eu tinha, principalmente, por que na época eu estava sem programar a um tempo, e nem conhecia o no-code. Acabei recorrendo a subterfúgios como o ChatGPT e o Copilot, para acelerar o desenvolvimento dos projetos da empresa. Inicialmente, eu os utilizava para estruturar as etapas, mas com o tempo comecei a utilizar eles para criar funções inteiras, restando apenas ajustes pequenos para conectar as funcionalidades. Um dos problemas é que isso está gerando uma dependência a IA, apesar de que realmente estava desenvolvendo com velocidade e aprendendo rápido, eu tinha(tenho) receio que lá na frente isso possa me prejudicar ou tornar o meu natural servo do artificial "deles".

Como estou

Hoje para desenvolver eu crio funções em Python, API's quando necessário, além de interligar com automações no N8N(para chamar algumas API's externas ou funcionalidades específicas). A uma semana comecei a estudar Bubble para fazer a parte gráfica das minhas soluções :) Ainda me bato no N8N mas sempre consigo chegar a uma solução(exceto no limite de memória dos nodes kkkk)

Resolução (Conselhos)

Acabei não especificando mais cedo, mas assim como no meu reinício na programação eu ainda estou trabalhando sozinho no desenvolvimento tanto nos projetos da empresa como no meu pessoal. Por isso, não tive aconselhamentos ainda utilizo as IAs para acelerar o desenvolvimento com menos dependência que antes, mas ainda há uma certa dependência...

Quais conselhos vocês dariam para mim? Como pessoa e como desenvolvedor elhamentos ainda utilizo as IAs para acelerar o desenvolvimento com menos dependência que antes, mas ainda há uma certa dependência...

Quais conselhos vocês dariam para mim? Como pessoa e como desenvolvedor

Opa mano, eu como dev junior estou na mesma, trabalho numa empresa de ramo industrial (que é bem grande aqui na minha cidade), porém, sou o único desenvolvedor (estagiário ainda). A empresa usa uma outra empresa de desenvolvimento terceirizado mas só para alguns projetos, na maior parte do tempo eu quem fico solo aqui fazendo uns projetos. É certo que eu sou estagiário ainda e os conselhos de alguém mais experiente possa ser melhor aqui no post, mas, nesse caso quando eu tento recorrer a IA, eu faço uma filtragem do que eu quero fazer com ela, se for pra corrigir algum bug muito chato que eu não esteja vendo, é ok, se for pra construir uma estrutura eu recorro a fórums como o stack overflow, pois assim, além de eu ter que ler um código inteiro e talvez mudar muita coisa dele caso eu decida utiliza-lo, eu não vou precisar pegar um código feito pela IA e só mudar 1 ou 2 linhas e colar no projeto. Espero que de alguma forma tenha ajudado, trabalhar sozinho tem de fato seus desafios, também gostaria de ter um senior aqui puxando minha orelha falando que algo ta errado, meu senior é o stack overflow pra me mostrar se algo que tento fazer tem boa eficiência e se é algo limpo de se ler.

Estou pensando em lançar um serviço justamente porque vejo que há a demanda que está flando. Seria uma espécie de "sênior de aluguel", assim a empresa paga um valor e tem um sênior à disposição para acompanhar o júnior que trabalha sozinho ou até alguém não tão júnior assim, mas que não tem alguém com experiência na área para supervisionar oque faz, e não compensa para a empresa contratar alguém *full time*. O que acha da ideia? Poderia ser meu prineiro cliente quando lançar isso (ainda estou envolvido em projetos que não posso parar). Mantenha contato. --- Farei algo que muitos pedem para aprender a programar corretamente, **gratuitamente** (não vendo nada, é retribuição na minha aposentadoria) ([links aqui](https://github.com/maniero/SOpt) no perfil também).
Acho sua ideia excelente! Algo assim teria me ajudado e ainda pode me ajudar muito! Gostaria de saber mais detalhes sobre esse projeto, por onde é melhor para eu entrar em contato com o senhor? Desde já eu agradeço pela oportunidade.
Entendo, gostei da sua metodologia, agora penso que posso ter escorrido muitos conhecimentos nesse processo :( Agr fazem 6 meses que comecei a desenvolver esses projetos tanto para a empresa quanto em alguns projetos pessoais. Sobre o a engenharia, acho vc já deve ter visto, mas eu vi uns vídeos do deschamps q realmente abriram minha mente para algumas coisas. Esse aqui é sobre SOLID, realmente meus códigos mudaram com ele []https://www.youtube.com/watch?v=6SfrO3D4dHM&pp=ygUUY2xlYW4gY29kZSBkZXNjaGFtcHM%3D E esse aqui criou um vício novo para mim, espero que seja um vício bom, pelo menos []https://www.youtube.com/watch?v=Lf3ZV0UsnEo&pp=ygUUY2xlYW4gY29kZSBkZXNjaGFtcHM%3D Espero ter ajudado : )

Um conselho que dou é sempre entender o seu código, mesmo que tenha sido gerado por AI. Entender o código é saber dizer o que cada linha faz, o por quê da função ter esses argumentos, como o seu input está sendo transformado em cada linha da função e como ele irá sair dela. Se não sabe o que a linha faz, pergunte para o chatGPT que ele irá te explicar em detalhes.

O que não pode é acontecer pedaços de código que você não sabe o que está acontecendo ou que só entende parcialmente. Acumular códigos que você não entende no projeto é receita para se sentir perdido e realmente se perder, caso você tenha que mudar algo ou tiver que descrobrir um erro.

Outro ponto é perder a visão do todo. Você pode construir uma casa sem ter nenhum projeto, só empilhando um tijolo atrás do outro. Mas não vai dar certo e sua casa vai parecer aquelas gambiarras que não param em pé.

casa precária

Em software, é possível ir escrevendo código sem ter visão do todo. Você pode até ter a sensação de que está produtivo, pois está escrevendo bastante código. Mas você pode estar escrevendo código spaguetti

Então estude sobre arquitetura de software, modularidade, código limpo, boas práticas para seu código não desabar ou você não ter que passar noites em claro limpando a sujeira acumulada de anos de más práticas.

A imagem ficou perfeita!(rs) Geralmente eu tinha conhecimento de cada função como um todo, mas agora vou aplicar essa dica, entender linha a linha do código e depois avaliar os meus resultados. Acredito que minha qualidade de aprendizado vai crescer muito, eu agradeço! Tambem reconheci parte do meu código como spaguetti, acredito que a empolgação de testar formas diferentes de resolver os problemas nem sempre devem ser aplicados, texto conseguiu abrir meus olhos com palavras tão simples. Mas agora eu tomei jeito e vou simplificar as coisas. Sintetizando o defeito, pouca classe para muita class. Agradeço de verdade pelo conteúdo, o que digo nem é da parte da IA, mas o que eu faço na mão mesmo.

Uso Copilot e ChatGPT todos os dias no trabalho como ferramenta para acelerar alguns processos, tirar dúvidas e refatorar pequenas funções, posso dizer com 100% de certeza que a IA só tem me ajudado, mas não consegue pensar por si só e fazer tudo que é dito para fazer numa Issue.

Um sistema complexo e grande vai muito além do que uma IA pode fazer, ela não consegue pensar de ponta a ponta e em todos detalhes que uma nova feature vai trazer no seu sistema, por exemplo. Se tudo que você programa vem de uma IA, então seu sistema é falho ou simples até para uma IA entender.

No meu caso eu utilizo para criar microserviços, até então os sistemas que eu criei não poderiam serem criados 100% por IA com as tecnologias atuais. Inclusive em alguns casos tanto o GPT, quanto o Copilot, mais atrapalham do que ajudam. Mas não era exatamente esse o ponto que me trazia dúvidas, o ponto era, se usar a IA é uma boa prática na programação... a questão que vai ao longo prazo, é se esse hábito pode gerar uma dependência irreversível. Hoje mesmo, eu solicitei um código a IA, e o melhorei em seguida, estruturei as funções em classes, e tornei o algorítmo mais flexível a implementações. Além disso eu uso para corrigir erros, quando eu não entendo, ou então para usar o framework novo que eu nunca utilizei, ou para resolver um problema que eu pensei em como resolver, mas não sei qual ferramenta eu deveria utilizar para resolver. Nesses casos eu passo a lógica da resolução, e como o contexto parte do código que eu desenvolvi anteriormente. Através de sua resposta, minha mente se abriu, agora acredito que o que procuro está no equilíbrio entre um desenvolvimento e aprendizagem veloz com IA, e a gestão humana que deve buscar sempre uma aprendizagem profunda aos princípios da tecnologia, enquanto utiliza modernidades para melhorar sua própria eficiência. Um equilíbrio como naquela história do Rio e a Montanha. Onde o rio, flexível e ágil personifica as novas tecnologias que vêm surgindo se modifica o tempo todo. E a montanha, forte e inabalável, personifica o programador que dominou os princípios da tecnologia e permanece desenvolvendo soluções e se solidificando cada vez mais nos fundamentos do conhecimento. Eles não são inimigos mas se complementam. Agradeço pelo seu comentário, acredito que as coisas ficaram mais claras agora!