Executando verificação de segurança...
-5

O Teste do Avião: Você Realmente Sabe Programar?

Uma janela de avião com nuvens do lado de fora, e o reflexo sutil de uma tela de laptop na janela. Bem-vindo ao "Teste do Avião".

Imagine a cena: você, espremido na poltrona econômica. À sua frente, apenas o seu laptop corporativo padrão. Nada daquele seu setup ergonômico com monitores e teclado mecânico. A tela é pequena, o trackpad ruim e a mesinha mal acomoda a máquina. E o mais importante: zero Internet. Nada de Stack Overflow, nada de Google, nada de Copilot ou ChatGPT sussurrando soluções no seu ouvido.

Só você, o código, e talvez um fone de ouvido para abafar o ruído da turbina.

O Desconforto que Revela

É desconfortável? Sim. Limitado? Com certeza. Mas aqui reside a beleza brutal, zero interrupções. Nenhuma notificação do Slack, nenhum e-mail, nenhuma aba aberta "só para pesquisar rapidinho". É o ambiente perfeito para a concetração profunda. O flow puro que tanto buscamos em meio ao caos do dia a dia.

Mas... você consegue ser produtivo assim?

Aqui entra a verdadeira questão. Sem as muletas digitais, você precisa confiar nos seus fundamentos. Precisa lembrar da sintaxe, da lógica, das estruturas de dados. Precisa ter o reflexo de abrir a documentação offline – sim, aquela que quase todo software decente tem, mas que raramente usamos.

A Era do "Vibecoding" vs. a Base Sólida

Vivemos tempos de "vibecoding", onde a resposta parece estar sempre a um Ctrl+C, Ctrl+V de distância. Onde a IA pode gerar blocos de código antes mesmo de entendermos completamente o problema. É fácil? Sim. Eficiente? Às vezes. Mas forma programadores resilientes e com conhecimento profundo? De forma alguma.

Formular uma boa pergunta é difícil. Pesquisar de verdade, entender as nuances, conectar os pontos... isso exige esforço cognitivo. E terceirizar esse esforço constantemente para ferramentas externas - mesmo antes da IAs, copiar o erro e colar a resposta stackoverflow, era a mesma coisa mas menos eficiente - sem construir a base interna cria um problema enorme.

Pense nos atletas olímpicos. Eles passam horas treinando os movimentos mais básicos, repetindo os fundamentos à exaustão. Por quê?

Porque se você não domina o básico, você não executa o avançado.

É uma verdade quase universal, e na computação não é diferente. Existem estudos que mostram que a capicidade de resolver problemas complexos depende da facilidade com os princípios básicos. Confiar apenas em ferramentas externas sem essa base é como tentar construir um arranha-céu sobre a areia.

O Veredito no Ar

O Teste do Avião não é sobre gostar de programar em condições precárias. Ninguém prefere a poltrona apertada ao seu escritório confortável. O teste é sobre capacidade.

Você consegue resolver um problema real, escrever código funcional, depurar um erro, apenas com seu cérebro, as ferramentas básicas e a documentação offline? Consegue encontrar aquele estado de fluxo mesmo quando o ambiente físico é hostil?

Se a resposta for sim, parabéns. Você provavelmente tem uma base sólida, uma compreensão real das ferramentas e da lógica por trás do que faz.

Se a resposta for não... talvez seja hora de refletir. Talvez a dependência das ferramentas online e da ajuda instantânea seja maior do que você imagina.

Então, no seu próximo voo, encare o desafio e tente construir algo, resolver um bug, refatorar uma função. Veja até onde você chega sozinho.

Porque a provocação final, um pouco dura, mas necessária, é: se você não consegue programar num avião, você não sabe programar de verdade. Simples assim.

Um abraço e bons estudos

Carregando publicação patrocinada...
2

Sem as muletas digitais

Quer dizer que qualquer pessoa que use ChatGPT e Google não sabe programar?

Se eu souber o conceito do que estou fazendo mas precisar pesquisar o algoritmo certo pra fazer então sou uma fraude?

1

Oxi mas é claro, se não tiver o primeiro volume do the art of computer programming na mala de mão para consultar com certeza se trata de impostor.

Agora sério...

Ser capaz de garimpar recursos como um pseudo codigo em alto nivel ou uma explicação informal do algoritmo e ser capaz de transformar em codigo funcional é o minímo que se espera de um programador. A internet ajuda.

O teste do avião não é sobre fazer um projeto inteiro sem usar a internet, mas conseguir entregar codigo funcional sem precisar dela.

4

Tenho um projeto do .NET identity recém configurado. Meu projet suporta multiplas Organizações e cada Role do sistema tem um ID de organização. Cada role deve definir permissões específicas para o usuário. Ex: Usuário tem a role Gerente em uma organização e pode ver os pedidos de toda a organização e tem a role vendedor em outra organização, podendo ver apenas os pedidos que ele iniciou. Como configuro o identity para autorizar controllers baseados nessa lógica? e como configuro as permissões nas roles?

1- Gere pelo menos 3 diverentes abordagens e descreva os pontos fortes e fracos de cada abordagem.
2- Escolha a melhor estratégia considerando esses pontos.
3- Verifique a solução desenvolvida, avalie casos adversos e potenciais melhorias
4- Descreva passo a passo o que deve ser feito e todos os arquivos que devem ser criados ou alterados com código limpo e bem documentado

Esse foi só um exemplo de prompt que precisei fazer recentemente, Uma forma de autenticação multi-tenant. Já fiz diversas dessas na minha vida porém é tão exporádico que não lembro exatamente quais arquivos alterar.

A IA me deu o caminho, exatamente quais arquivos alterar. 80% estava certo, os outros 20% tive que corrigir (ele tentou implementar uma solição própria para gerenciar as Roles, e o entity tem uma solução pronta).

Quantas horas eu perderia lendo a documentação nada objetiva da microsoft para fazer isso? Quantas horas de tentativa e erro?

E sobretudo, Você sabe customizar um sistema de autorização sem recorrer à documentação?

Hoje os softwares são tão grandes, contam com tantas funcionalidades diferentes, que é impossível "lembrar de tudo no avião"

Trabalhei numa Universidade. Estava alterando códigos de 1998. O Autor original do arquivo estava na minha frente. Um programador excelente que sabia todas as regras de negócio dos últimos 40 anos dessa universidade.

  • Ele não sabia o que é CQRS
  • Ele não sabia fazer uma replicação
  • Ele não sabia mecher com message brokers
  • Ele não sabia react, vue, angular ou sequer javascript avançado
  • Ele não sabia usar microserviços

Eu uso todas essas tecnologias, não consigo lembrar tudo de cabeça.

Ele é menos programador por não saber?

Ou eu sou menos programador por saber e ter que recorrer à documentação?

1

Sim. Quando esse codigo que ia gerou explodir em produção vc vai falar para seu chefe ou cliente.

A IA não sabe resolver esse problema. Amanhã tento com novos prompts..

De novo cologa, o teste não é sobre lembrar tudo fazer um projeto inteiro num avião, é coseguir ser produtivo durante algumas horas mesmo sem se lembrar tudo!!!!

1

é coseguir ser produtivo durante algumas horas mesmo sem se lembrar tudo!!!!

Bom, você quer que eu seja produtivo sem poder usar as ferramentas que são disponibilizadas à mim para aumentar a minha produtividade.

Se com a IA eu consigo fazer uma tarefas em uma fração do tempo porque eu sou menos programador por usar isso?

Já vi gente nesse fórum falando que se você não implementar uma BTree na mão você não sabe programar!

Temos que parar de demonizar as ferramentas que estão disponíveis e usá-las da forma certa

Quando esse codigo que ia gerou explodir em produção vc vai falar para seu chefe ou cliente.

Até porque você está presumindo que eu estou usando esse código sem nenhum teste e que tudo que a IA gerar vai causar bugs em produção?

Você está presumindo que eu sequer vou testar a feature que eu mesmo desenvolvi!

Pela sua lógica ou você é "vibe coder" que nunca encosta no código ou você é uma enciclopédia ambulante que sabe a documentação completa de todas as tecnologias de cabeça.

Não existe meio termo

1

Claro que existe meio termo, por mim pode ser vibecoder e conseguir programar num avião ao mesmo tempo, e no fim esse deve ser o objetivo. Não estou demonizando ferramentas, mas sim depedender delas!

Já vi gente nesse fórum falando que se você não implementar uma BTree na mão você não sabe programar!

Assino em baixo, de fato foi o que eu escrevi na minha primeira resposta, isso é o minímo!!!

Até porque você está presumindo que eu estou usando esse código sem nenhum teste e que tudo que a IA gerar vai causar bugs em produção?

Não, eu não estou presumindo que você não testa o código ou que tudo que a IA gera vai explodir em produção. Também não estou dizendo que você não vai testar a feature que desenvolveu. O ponto que eu quero deixar claro é outro: depender demais de ferramentas como a IA pode te deixar com menos domínio sobre a base de código do que se você tivesse construído tudo manualmente. E não é só sobre o código gerado em si, mas sobre o básico, os fundamentos.

Por exemplo, no caso que você mencionou, customizar um sistema de autenticação com o .NET Identity: se você já passou pelo sofrimento de ler a documentação, debugar problemas e lutar com os bugs durante o desenvolvimento, quando algo der errado em produção, vai ser muito mais fácil identificar e corrigir o problema. Esse processo de "colocar a mão na massa" te dá uma compreensão mais profunda, que a IA sozinha não entrega.

Eu estou afirmando que praticar os fundamentos, como ler documentação e debugar código, te torna um resolvedor de problemas melhor, em situações onde nenhuma ferramenta pode ajudar. Não estou dizendo que você precisa abolir as ferramentas do seu fluxo de trabalho. Elas são ótimas para produtividade! Mas é preciso ter cuidado e nunca esquecer de praticar o básico, só isso..

2

Meus 2 cents,

Ja escrevi codigo COBOL em papel de folha de codificacao, codigo C em terminais VT100, codigo CLIPPER S87 em XT com NECv20-botao turbo-monitor CGA/Hercules-fosforo verde/ambar.

Nada disso me fez melhor DEV - so me fez camelar mais.

Ate concordo que o prazer de descobrir o C via K&R foi legal, mas ficar consultando a MS C Bible procurando referencias nao era nada divertido.

Vasculhar bibliotecas ou esperar meses pela importacao de livros tambem nao ajudava nada.

Se sofrer gerasse codigo bom, bastava codar usando um cilicio.

O grande problema do Vibe Coding nao eh usar a IA - eh que o codigo da IA eh uma bosta, so isso.

Um DEV que fica deslumbrado com uma IA que gera um front-end bonitinho em 1 hora de atividade, mas cujo codigo ta cheio de falhas de seguranca, redundancias e coisas do genero - isso tem de ser alertado.

1

Penso que essa habilidade de camelar é fundamental... Isso tudo ai cria careter. Saber se virar é importante demais. O problema não é o codigo ser uma bosta mas sim tirar da pessoas pensantes a habilidade de reconhecer
que o codigo é uma bosta. Vc passou por tudo isso entao é facil recomhecer qualquer porcaria mas para quem ta começando agora?

1

Se tiver o IntelliSense pelo menos vai de boa, agora sem isso eu esqueço algumas sintaxe, vou ter que ler bastente os logs de erro por não buildar kkkkkkkk