Code Complete
Why did I read this book?
Many good reviews saying that experienced programmers benefit from the knowledge in this book.
After reading the first 7 chapters I realized that this book has a lot of "progammer's wisdom". I'm very sure that my time spent reading this book really worth it.
Most valuable learnings
- Top Priority: Manage Complexity - what should I always keep in mind while working with software?
- Algorithm vs. Heuristic - what should I keep in mind when I'm studying other people's work?
- Determine the Kind of Software You're Working On - what should I expect if I join this project?
My notes
- Code Complete - 0. Preface
- Code Complete - 1. Welcome to Software Construction
- Code Complete - 2. Metaphors for a Richer Understanding of Software Development
- Code Complete - 3.2. Determine the Kind of Software You're Working On
- Code Complete - 5. Design in Construction
Principais Aprendizados
Heurísticas > Algoritmos
Ou falando com minhas palavras: Perguntas são mais valiosas que respostas.
Algoritmos nos fornecem soluções para um determinado problema. Heurísticas nos fornecem dicas de como criar algoritmos.
Eu prefiro falar da seguinte forma: algoritmos nos fornecem respostas, heurísticas nos mostram quais são as perguntas. Eu acredito que as perguntas são mais valiosas pois elas mudam com menos frequência. As respostas podem variar muito dependendo do contexto, mas as perguntas permanecem as mesmas.
Controlar a complexidade
O principal objetivo de um profissional de software é controlar a complexidade.
Isso foi bem 🤯 mindblowing pra mim. Me deixou alerta no meu trabalho, sempre atento a situações onde a complexidade das soluções está saindo de controle. Se uma determinada estratégia aumenta a complexidade, muito provavelmente este não é o melhor caminho.
Observação: não esquecer da Lei de conservação da complexidade (aka Tesler's Law):
Toda aplicação tem uma quantidade inerente e irredutível de complexidade. A única questão é: quem vai lidar com isso - o usuário, o desenvolvedor da aplicação, ou o desenvolvedor da plataforma?