🤯 Bug mental: lidando com a sobrecarga cognitiva
Arquiteto traz rol de dicas para lidar com problema. Mais: TypeScript 5.7 Beta, recursos OpenAI para devs, jogo da velha em TS e acordes de guitarra em SVG, e o mistério de Satoshi Nakamoto continua.

Nada de notícias, pesquisas ou IA na abertura desta edição. Embalados no trabalho do arquiteto de software Artem Zakirullin, em seu GitHub, vamos abordar um "bug" que ronda qualquer desenvolvedora ou desenvolvedor no dia a dia: a sobrecarga cognitiva.
Você conhece a história. Começa o dia cheio de energia, pronto para implementar aquela feature ou debugar um problema. Mas conforme as horas passam, mais variáveis entram em jogo, mais condicionais se empilham e…. como o computador, seu cérebro tem “freezes”, engasgos, quando não "telas azuis".
É a sobrecarga cognitiva. Para entender melhor, carga cognitiva é a quantidade de informação que nosso cérebro precisa processar para realizar uma tarefa. A questão é que ele tem um limite bastante baixo, conseguindo manter 4 pedaços ("chunks") de contexto na memória de trabalho ao mesmo tempo.
Em desenvolvimento, é fácil extrapolar esse limite. Códigos complexos, arquiteturas intrincadas e "gambiarras" (nossas e de outros) são ótimos em drenar essa energia e levar à sobrecarga. O que Zakirullin traz é um rol de conselhos para lidar com isso:
Crie módulos "profundos": construa componentes com interfaces simples, mas funcionalidades poderosas, de modo que você não precise entender toda a complexidade interna para usá-los. Por exemplo, pense na interface de E/S do UNIX: apenas cinco chamadas básicas (open, read, write, lseek, close) escondem centenas de milhares de linhas de código complexo.
Evite dar uma de "bonzão": sabe aquele código super otimizado que só você entende? Na verdade, pode ser um pesadelo para manutenção futura. Código bom é código que outros (e você mesmo, daqui a 6 meses) conseguem entender facilmente. Priorize clareza sobre engenhosidade.
Simplifique condicionais complexas: condicionais aninhadas ou muito longas são como emaranhados de fios. É fácil perder a meada. Tente usar variáveis intermediárias com nomes significativos para quebrar condicionais complexas. Por exemplo, em vez de:
if (user.age > 18 && (user.type === 'premium' || user.credit > 100)) { ... }
use algo como:const isAdult = user.age > 18;
const hasPremiumAccess = user.type === 'premium' || user.credits > 100;
if (isAdult && hasPremiumAccess) { ... }
Prefira retornos antecipados: em vez de aninhar vários blocos de
if
, considere retornos antecipados. Isso pode tornar o fluxo do código muito mais fácil de seguir. Por exemplo:function processOrder(order) {
if (!order.isValid()) {
return 'Invalid order';
}
if (!order.hasStock()) {
return 'Out of stock';
}
// Process the order...
return 'Order processed successfully';
}
Cuidado com a herança excessiva: hierarquias de classes muito profundas podem ser outro pesadelo. Cada nível de herança adiciona mais contexto que precisa ser mantido em mente. Prefira composição sobre herança sempre que possível.
Mantenha funções e classes focadas: embora seja tentador criar funções que fazem "tudo", tente manter suas funções e classes focadas em uma única responsabilidade. O princípio SOLID é uma ótima diretriz aqui.
Use nomes descritivos: atitudes simples como nomes de variáveis, funções e classes bem escolhidos podem reduzir muito a carga cognitiva. Um nome bom deve explicar o que algo faz ou representa sem necessidade de explicações. Por exemplo,
calculateTotalTax()
é muito mais claro quecalcTT()
.Documente, mas com moderação: comentários e documentação são úteis, mas código auto-explicativo é melhor. Use comentários para explicar o "porquê" por trás de decisões não óbvias, não para descrever o que o código está fazendo.
Refatore regularmente: à medida que seu entendimento do problema evolui, refatore sem dó. Código que fazia sentido ontem pode ser uma porcaria hoje. Testes automatizados ajudam no processo.
Cuidado com abstrações prematuras: embora abstrações possam reduzir a carga cognitiva, abstrações mal projetadas ou prematuras podem ter o efeito oposto. Só crie uma abstração quando tiver um bom entendimento do problema e constatar um padrão claro emergindo.
Vale lembrar que familiaridade com código também não é atestado de simplicidade. Código que parece simples a você pode ser críptico a novos colegas, além de ser inimigo da produtividade.
Além disso, gerenciar a carga cognitiva não é só sobre codar. Pausas, práticas como mindfulness (nome bonito para algo simples como sair da tela e olhar ao longe, brincar com seu gato ou prestar atenção no sabor do café que está tomando) e cuidados com a saúde corporal e mental são aliados na gestão da carga cognitiva.
Para ir mais fundo, leia o texto original de Artem Zakirullin. É longo, mas interessante. Ao menos confira os quadrinhos no final: talvez você se veja no personagem da história.
❓ Você sabe o que é e, além disso, pratica DRY?
Calma, não é nada constrangedor nem pegadinha. Pelo contrário, é uma boa prática em programação. Resposta no fim da edição.
🚀 TypeScript 5.7 Beta chega com suporte a ES2024
A Microsoft acabou de lançar o TypeScript 5.7 Beta, com destaque para a detecção de variáveis não inicializadas, facilitando a identificação de erros comuns, e suporte a ES2024, para uso de recursos modernos de JavaScript. A versão também introduz a reescrita de caminhos relativos, melhorando a compatibilidade com ferramentas que executam TypeScript diretamente, e otimizações de desempenho para projetos maiores. Interessados podem testar via npm install -D
. Mais no blog do TypeScript.
🛠️ OpenAI lança API para lidar com fala, cache de prompt e mais recursos a devs
OpenAI, dona do ChatGPT, anunciou novidades a devs em sua conferência DevDay, agora em outubro. Destaque para a Realtime API, que permite criar experiências de fala, com suporte a seis vozes. Outros lançamentos são o cache de prompts, que reduz custos e acelera o processamento, e o fine-tuning de visão para GPT-4o, permitindo melhor compreensão de imagens. A empresa também introduziu "Destilação", possibilitando usar saídas de modelos mais avançados para aprimorar modelos menores e mais econômicos. Mais na página do evento.
🎸 De jogo da velha em TS a acordes de guitarra em SVG
Coisa de maluco ou obstinado, dá quase no mesmo. Um vídeo curto, de 16 minutos, mostra como criar um jogo da velha usando apenas TypeScript, talvez um exercício interessante com o superset de JS. No frontend, o Governo do Reino Unido, boa referência de governo digital, compartilhou insights sobre interfaces robustas usando melhoramento progressivo. Para devs que curtem música, SVGuitar 2.4 gera gráficos de acordes de guitarra baseados em SVG diretamente no navegador — interessante! Por fim, TutorialKit 1.0 é um framework para criação de tutoriais de codificação interativos, ótimo para quem dá aulas ou até planeja lançar um curso.
🥸 HBO desaponta fãs cripto ao tentar desvendar mistério de Satoshi Nakamoto
O novo documentário da HBO Money Electric: The Bitcoin Mystery tentou resolver o enigma da identidade de Satoshi Nakamoto, criador do Bitcoin. O diretor Cullen Hoback, conhecido por desmascarar a pessoa por trás da teoria da conspiração QAnon, surpreendeu ao apontar Pete Todd como provável Nakamoto, contrariando apostas em Len Sassaman e Nick Szabo. A escolha gerou ceticismo entre especialistas, e o mistério permanece — o que, convenhamos, talvez seja a parte mais empolgante da história e da blockchain, tecnologia que sustenta o bitcoin.
🤖 IA "promovida" a sysadmin destroi boot de laptop
Um experimento mostrou o que pode acontecer quando se dá muita liberdade a uma IA. Buck Shlegeris, CEO da Redwood Research (empresa focada em IA), pediu a seu agente de IA para estabelecer uma conexão SSH de seu laptop para o desktop. O agente não só cumpriu a tarefa, como decidiu atualizar o Linux. No processo, mexeu nas configurações do Grub e deixou o computador incapaz de inicializar. Shlegeris, que usa o agente para tarefas básicas de administração, admite ter sido "imprudente". Mesmo assim, planeja deixar a IA consertar o erro que cometeu. The Register traz uma matéria que conta o caso em detalhes.
✅ Resposta: Você sabe o que é, mais do que isso, pratica DRY?
DRY significa "Don't Repeat Yourself" (Não Se Repita), princípio fundamental no desenvolvimento de software. Seu objetivo é evitar a duplicação de código, criando uma única fonte de verdade para cada funcionalidade. Na prática, em vez de copiar e colar blocos similares, devs criam funções, classes ou módulos reutilizáveis. Isso resulta em código mais limpo, fácil de manter e menos propenso a erros. Por exemplo, uma função de validação de e-mail pode ser criada uma vez e usada em todo o projeto. Embora exija mais planejamento inicial, DRY economiza tempo a longo prazo e torna o código mais profissional. Para aprofundar, vale conferir o livro "The Pragmatic Programmer", que popularizou o termo.
Obrigado por ler!
Voltaremos com mais fatos, tendências e dicas na próxima semana. Curta, compartilhe, comente e vote na enquete. Obrigado por ler e por estar com a BeTalent!