Vou dar meu pitaco em cima da minha experiência.
O mercado paga de tudo, inclusive pro cara que só sabe fazer CRUD bobo que há tempos ninguém deveria estar fazendo porque é trabalho repetitivo e não deveria ter tanta gente fazendo as mesmas coisas sempre. Bem, com a IA esse cenário deve mudar, não do jeito certo porque deveria ter algumas formas canônicas, e a IA vai entregar milhões de CRUDs diferentes, é péssimo, mas mais uma vez dará a impressão de um ganho extraordinário de produtividade, quando no longo prazo será um ganho muito bom, mas nada tão grande porque haverá o custo.
Uma das bobagens que se fala sobre IA dominar a programação é que desenvolver software sempre foi mais fazer manutenção do que fazer algo novo e aa IA terá mais dificuldade com isso.
Eu sei bem o que é uma árvore, implementei algumas, até mesmo para uso pesado, e se me pedir para fazer uma sem consultar nada eu conseguirei porque já tenho experiência, mas será uma implementação bem ingênua. Todas as vezes que eu fiz eu peguei papers e implementações de referência para fazer um trabalho melhor. E não tive 100% de sucesso fazendo o melhor possível, por falta de tempo, fazer 90% é fácil, fazer os outros 90% é que complica.
Obviamente que eu não vou pegar códigos no Stack Overflow, porque eu sei que muitas vezes o código foi feito mais para ilustrar, sem muito compromisso, a maioria das pessoas não sabem disso, e aí que começa ter um perigo enorme. A maioria dos programadores não sabe usar o Stack Overflow, nem mesmo para leitura. Isso é uma tragédia.
Algumas pessoas não sabem usar o Google corretamente, e IA então nem se fala. Na verdade, só o fato de a pessoa confiar tanto na IA já mostra um despreparo bastante importante e que revela um problema estrutural nela, não é uma falha pontual, não é a crença na IA o problema, é amaneira de pensar e agir que gera o problema real.
Grande parte das pessoas não conseguem ter uma posição crítica, então ou só sabem elogiar o que amam ou quando precisam criticar o que odeiam não possuem argumentos. Quase todas as vezes que fiz críticas, argumentei, recebi negativos dos lovers daquela tecnologia ou o que o valha.
Muitas vezes a pessoa aprende errado e aí ela só tem olhos para aquilo. É oque sempre falo de treinar o erro. Quantas vezes recebi negativos porque a pessoa aprendeu de uma forma errada.
Eu sempre estudei muito, procurando sempre que possível me calçar da ciência, do conhecimento real, não da crença popular. Não quer dizer que faço isso perfeitamente, até porque não sou acadêmico, mas boa parte das minhas respostas no Stack Overflow foram em cima de conceitos, de algo que ensinasse algo para as pessoas programarem melhor.
Só uma dica: boa parte das respostas do Stack Overflow em Português são mais completas e cheia de referências, muito mais que o SO em inglês onde tem muita resposta fabulosa, que ensina coisas que só encontra lá, mas também muita coisa feita nas coxas, e nem estou falando das respostas ruins, erradas, estou falando das boas que não tiveram muito capricho. Claro que no SOen tem muito mais respostas. Isso é algo que a maioria das pessoas não sabem, ou seja, não usam direito uma das ferramentas mais sensacionais que um programador já teve acesso. A maioria sequer dá o devido valor, dá um valor que não importa.
Não é questão da pessoa não saber o que é uma árvore, porque ela é importante, se a classe pronta que está usando usa uma delas e qual para saber o que vale a pena usar, a pessoa não sabe que não pode usar float
ou double
para valores que precisam de exatidão. Até programador de banco famoso não sabe e passa vergonha nacional (na verdade a empresa toda porque todo mundo descobriu que o discurso não bate com a prática).
As pessoas não sabem as definições corretas de quase nada. Xingam goto
e adoram exception
e isso não faz o menor sentido.
A maioria das pessoas não sabe como um banco de dados funciona, então compram ideias fuleiras de influencers, adotam NoSQL onde não faz sentido, tomam decisões equivocadas.
Eu poderia começar uma lista de assuntos fundamentais, que não tem nada de avançado, que só serve para alguns trabalhos específicos e que as pessoas erram.
Mais uma vez, é um problema de como a pessoa pensa e age, ela não tem a prática de procurar o certo, ela só quer o que funciona, até que para de funcionar. Quem não é assim, nem precisa ler nada disso, mas são poucos.
Eu uso uma frase nas minhas palestras: "você só sabe programar se souber o que caractere do código faz, até o espaço em branco". Mas é saber mesmo, em todos os detalhes.
è verdade que a IA até vai ajudar um pouco nisso, tem IDEs que já vão alertando para mexer no código a fim de evitar determinado problema. Mas é muito falho, e fará as pessoas ficarem amis burras ainda, e vão entregar coisas com problemas porque acham que IA é algo determinístico e vai fazer sempre certo.
Eu já pedi várias vezes para a mesma IA me dar um código de embaralhamento sem repetições. Tem hora que ele me dá usando Fisher-Yates, tem hora que vai na força bruto. Se a pessoa não sabe nada disso ela compra o que a IA informou naquele momento, não sabe porque foi de outro jeito em outro momento. Não sabe pedir para a IA gerar o código usando Fisher-Yates, porque se a pessoa nem sabe isso como ela fará um bom prompt. A IA vai ajudar os medíocres e os abaixo disso, mas vai ajudar muito os bons programares não precisarem mais dos ruins. Tudo no seu devido tempo.
Não é questão de aprender só a abstração ou não, é questão de pensar como um todo. Em medicina você pode ser especialista em algo mas sabe toda a medicina básica, caso contrário você será um péssimo médico (me parece que as faculdades agora regurgitam "profissionais assim), mas em programação grande parte dos programadores são especialistas em algo mas não entendem o todo, muitas vezes não entendem a matemática, algo que é a base da programação, muitos nem conseguem enxergar isso. Existe uma razão para aprender além das sintaxes, bibliotecas e frameworks, de só consumir APIs. Quando o nível educacional é muito baixo é até difícil entender isso, e o Brasil é "campeão" em ter baixa educação, não a toa que temos 92% de analfabetos funcionais, incluindo vários programadores, o que é um feito incrível.
O mercado que faz melhor paga para os melhores. Mas tem espaço para tudo. Um dos aplicativos que as pessoas mais usam hoje em dia é uma das coisas mais malfeitas que já vi na vida, as equipes estufam o peito com orgulho do que fizeram, e não passa no crivo até mesmo de alguém esperto que não estudou a área. Claro que funciona, que escala, mas a que custo? Com sofrimento de quem? E você pode se perguntar se ele é tão popular, como pode ser tão ruim? Simples, o mercado é que manda, a empresa conseguiu quase um monopólio, as pessoas não tem a chance de usar algo melhor. E o pouco de concorrência que possuem também não ajuda.
O que tem de big tech jogando dinheiro fora em projetos fracassados, e muitos que obtém sucesso, raramente é por boa engenharia. Então você tem alguns dos programadores mais bem pagos tomando decisões erradas. Você tem empresa que é referência em microsserviços pagando os juros da dívida técnica que criaram porque adotaram microsserviços que propagaram para todo o mundo, e um monte de gente adotando a mesma coisa sem saber nem porque estão fazendo aquilo. E aí de quem falar que estão errados. Isso é falta de base também. A pessoa até aprendeu certo, mas se perde no caminho. E muitos da equipe sabe que está errado, mas não vai jogar o emprego fora sendo do contra.
Se quisermos algo de qualidade real precisamos parar de aceitar o que funciona e só procurar solução quando para de funcionar e passar a nos preocuparmos com o certo.
Claro que estou falando de programação séria. Existem maneiras de programar só para resolver uns probleminhas bobos, aí é claro que não precisa de um desenvolvedor, de um engenheiro. Mas o assunto que está sendo levantando, até onde eu entendi, é de programação profissional, com P maiúsculo, não apenas que paga as contas.
Espero que isso ajude algumas pessoas a pensar diferente, começar procurar mais do que só entregar códigos, pelo menos para quem quer ter uma carreira mais forte e não ser apenas um codificador. Obviamente que cada faz o que achar melhor, espero que não prejudique a ele, ouras pessoas, incluindo usuários do software que ele fez, que pode ser eu, essa é aparte egoísta da resposta, estou cansado dse udar softwares que fazem passar raiva, até mesmo quando não os uso diretamente mas é no balcão de uma loja ou alguma outra forma indireta.
S2
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).