I've been coding for 40 years. Here are the top 5 things I wish I knew when I started.
1. 90% of the job is debugging and fixing, not creating new code. Which is still fun if you're good at it.
I used to think programming was mostly writing fresh, clever stuff. In reality, most of your time is spent in other people's (or your own past self's) messy code, chasing down why something that "should" work doesn't. Get really good at debugging early. Learn assembly reading, call stacks, and kernel debuggers. It pays off hugely. The best engineers I saw were absolute magicians at this.
2. Manage complexity from day one (ie: don't write slop and "fix it later" if it goes somewhere).
Very early on, I'd hammer out code and refactor afterward. Big mistake. Now I start with clean, skeletal structure (minimalism first) and flesh it out carefully, with AI or not.
Messy code compounds and becomes unfixable. Upfront discipline on architecture, naming, and simplicity saves enormous pain later, especially in large systems like Windows.
3. Tools and processes matter more than you think
We suffered with basic diff/manual deltas instead of modern source control like Git. Branching, testing, and good tooling would have made porting and collaboration way smoother. Invest in your environment, automation, and reproducible builds early. Good tools amplify your output; bad ones (or none) drag everything down.
4. Understand the problem and existing code deeply before writing
Don't jump straight to coding. Map out the problem, study what's already there (you'll inherit a lot), and plan. Low-level knowledge (hardware quirks, alignment issues on different architectures like MIPS/Alpha) was crucial. Also: assert early and often. It forces clarity.
5. People, politics, and "the right tool for the job" beat pure tech arguments.
Brilliant engineers still argue endlessly. Sometimes it's about ego, not merit. Learn to spot the difference and "steer" the conversation rather than "winning" it.
Bonus from experience: Side projects like Task Manager (started at home because I wanted the tool) can become your biggest hits. Ship small, useful things often. If you're just starting, focus on fundamentals, patterns over syntax, and building resilience for the long haul. It's going to be a wild ride, but the fundamentals still matter.
"TCP is a byte stream, not a message protocol. If you do not know the bytes on the wire, you do not understand the system."
Track 17, The Networker, is live.
You will build TCP servers from raw syscalls, implement length-prefixed and line-delimited message framing, build a binary serialization format, and create gRPC streaming from first principles.
Stop guessing and start reading the wire yourself: https://t.co/eJaQvEg9wI
Database connections are expensive.
Opening and closing them on every request?
Even worse.
I wrote a simple breakdown on how connection pooling actually works and why it matters
Link: https://t.co/4f2d87UduQ
#Database#SytemDesign
Firmware Essentials (For anyone interested)
Collection of courses focused on Firmware Development. A structured path to go from zero-to-hero firmware engineering.
Based on Cortex-M3 and RISC-V board/emulation target.
>> Collection of ~17 Courses
>> 200+ in-depth, segmented lectures.
>> 150+ hours of recordings.
>> 5 hands on project(s).
>> Certificate on completing 95% of course work.
>> 3000++ enrolled.
https://t.co/NhBkp56gRO
Entidades que começam com 4 atributos e terminam com 40.
Já vi esse filme muitas vezes. A classe de Aula ganha um autor. Depois uma categoria. Depois um período de visibilidade. Depois um slug. Depois um responsável que pode ser nulo. Quando você olha, ela não cabe mais na tela.
No design da nova plataforma do Dev + Eficiente, resolvi experimentar um caminho diferente.
A inspiração veio de três lugares que já lidaram com esse problema há muito tempo:
-- CMS como WordPress e Drupal, onde a entidade base tem quase nada e tudo é plugado por fora.
-- Tabelas de relacionamento em bancos relacionais, que muitas vezes ganham semântica própria além de só vincular A a B.
-- Programação orientada a aspectos, que há mais de 20 anos ensinou a tratar comportamento ortogonal como algo configurável.
A diferença é que aqui, em vez de comportamento ortogonal, tratei estado como ortogonal.
Trilha, curso e aula ficaram com o que é essencial para cada um. A ordenação virou um contexto separado. Os comentários viraram um contexto separado. O período de expiração virou uma peça que se aplica a qualquer entidade. As categorias também.
Os ganhos: entidades coesas, flexibilidade de composição, evolução mais saudável.
As perdas: menos apoio do banco de dados, mais queries, mais jogo de cintura na aplicação.
Foi um trade-off consciente. Pode ser que eu me arrependa daqui um tempo. Até agora, estou satisfeito com o que está rodando em produção.
Gravei um vídeo detalhando a decisão e mostrando o código implementado na plataforma.
https://t.co/6YT9EIV3Hv
Dois engenheiros da Anthropic acabaram de mudar a forma como devs pensam sobre IA.
Barry Zhang e Mahesh Murag subiram no palco do AI Engineer Code Summit e disseram uma frase que incomodou muita gente:
"Parem de construir agentes. Construam Skills."
Em 16 minutos eles provam que a indústria inteira está resolvendo o problema errado.
Aqui está o que a maioria não entendeu:
→ Skills são pastas. Literalmente pastas com arquivos markdown.
→ Elas ensinam ao Claude o SEU fluxo de trabalho, a SUA expertise, o SEU domínio.
→ Um único agente genérico + biblioteca de Skills específicas supera dezenas de agentes especializados.
→ Fortune 100s já estão deployando Skills em escala pra ensinar agentes sobre processos internos.
→ Times de produtividade com 10.000+ devs usam Skills pra padronizar como código é escrito.
A analogia que eles usaram é perfeita:
Quem você quer fazendo seu imposto de renda? O gênio com QI 300 que nunca viu legislação tributária, ou o contador experiente que faz isso há 20 anos?
Inteligência sem expertise é entretenimento.
Expertise empacotada é produtividade.
O que mudou: a Anthropic parou de tentar criar agentes diferentes pra cada domínio.
Perceberam que com Claude Code, o padrão é sempre o mesmo. Um modelo acoplado a um runtime com filesystem.
A diferença entre um agente medíocre e um extraordinário não é o modelo. É o conhecimento de domínio que você alimenta.
Skills resolvem isso com progressive disclosure. O agente só carrega o nome e descrição da skill. Quando relevante, puxa o SKILL.md. Quando precisa de mais, navega os arquivos de referência. Zero desperdício de contexto.
Isso não é uma feature. É uma mudança de paradigma.
Quem entender isso agora vai operar em outro nível daqui a 90 dias.
Quem ignorar vai continuar escrevendo prompts de mil palavras toda vez que abrir o chat. E ainda explicar de novo e de novo o que “realmente” quer.
If you plan to learn Kotlin in 2026, you can help yourself with this app:
https://t.co/PbuSWsIebd
I made it during Christmas using AI. It is a Compose multiplatform project (web, Android, iOS, desktop) with a Ktor server. It includes quite a few non-basic features, including:
- Progress local storage in SQLDelight (the same code is used on the server when synchronizing progress).
- Login using Firebase and progress synchronization (setting login on all platforms took me most of the time).
- Different lesson and challenge type (text lesson, single-answer question, multiple-answer question, question for text).
- URLs on the web (as you navigate, URLs change, and copy-paste leads you to that page)
- Automatic spaced repetition review of the most critical questions.
You can find the source code here:
https://t.co/vkWktxqb5d
I am still not sure what to do with this project, but for now, I have had lots of fun creating it.
Excelente pergunta técnica então bora de Quote:
1) O código assícrono ex: fetch/db call nunca vai bloquear I/O.
Mas uma função async com codigo sync pesado dentro alguma hora irá porque algum momento esse código sync vai pra call stack e será executado pelo V8.
Ou pode estar consumindo Heap Memory dmais.
Detectar gargalos no geral é avaliar BigO/Parsings de dados e processamento nos endpoints que tem APM mais baixo ou de pior experiencia de usuário.
Também é valido checar memória do servidor.
Várias tools ajudam a avaliar esse tipo de experiência ex: Sentry. Pra avaliação estática de código Sonar.
Gargalos de memória a gente resolve usando Generators/Iterators maior parte das vezes. E também há comandos nativos do Node pra ativar o Garbage collector manualmente.
Gargalos de performance em casos de heavy cpu usage/demand tem várias soluções, de otimizações à threading ou um servidor processor.
2) Código async await mal feito geralmente ta relacionado a serialização desnecessaria, ou return sem await. Ou código assync sem await/catch.
No meu guia How To Promises (https://t.co/O78X3YQQEf) ensino com detalhes como evitar esses problemas.
Se for problema de serialização excessiva recomendo Promise.AllSettled().
Se for function assincrona sem await quase sempre é melhor adicionar await.. A não ser que você não se importe de esperar codigo sincrono que vem logo abaixo da promise.
Mas se fizer isso(nao usr await) SEMPRE coloque um .catch logo depois. Isso vai evitar uma unhandled promise rejection fora do ciclo de vida do script.
ex: runAsync().catch(doSomething)
Aqui vão 17 PERGUNTAS DE ENTREVISTA se você estiver concorrendo a uma vaga de FrontEnd.
Todas elas tem o link, e tem respostas muito boas nos comentários que você pode usar de insumo junto com o seu estudo!
1. Como otimizar o desempenho de uma aplicação React?https://t.co/qNQIuI00D4
2. Você tem uma lista com mais de 1000 items sem paginação no react, cite pelo menos 3 forma de otimizar isso sem alterar o backend.
https://t.co/AJVLUzFj2n
3. Como funciona o fluxo de dados unidirecional no React?
https://t.co/7V9n35VUJa
4. H1 randômico pode afetar o SEO?
https://t.co/qUiaOzUlib
5. O que é Optimistic update e quando usar?
https://t.co/CLKNVD3c6K
6. Como você lida com segurança no FE?
https://t.co/hryL3pGZfT
7. Como você evita prop drilling no React?
https://t.co/TYuuVY6CKh
8. Quando usar Nextjs? Sempre? Caso específico?
https://t.co/Vm1EX0Efk0
9. Index do array tá valendo como key em uma lista no React?
https://t.co/iqZN9fkiia
10. O que é o algoritmo Fiber no React?
https://t.co/EV8OHhFfA1
11. Quais erros comuns temos com useEffect? Como evitá-los?
https://t.co/BgRHOdM1vn
12. O que é uma NodeList no JavaScript e por que o método map() não funciona diretamente com ela?
https://t.co/DpTv6j7iDo
13. Como funciona o event loop do javascript (no browser 👀)
https://t.co/vrqjSYxPUY
14. O que é lifting state up e quando aplicá-lo?
https://t.co/Q3MIO5uZBx
15. O que é hidratação (hydration) no React e quando ela acontece?
https://t.co/gJV4Xq4f4y
16. O que são Web Workers e para que servem?
https://t.co/ajzSYxjuQf
17. O que causa stale closures em hooks? Como evitá-las?
https://t.co/fvZjisy01v
Salva aí. Qual você quer que eu responda?