Again I started reading this book “The Effective Engineer” by Edmond Lau. I noted down these points while reading so that it can be kind of cheat-sheet for myself and others too. I strongly recommend buying the book and reading it at-least once.
For Part-III, I am going to do a little different. The third part of this book is considerably a lengthy part especially the second chapter of this part. So I felt to break the final part into 3 sections each for a chapter in the book. Here’s is the first gist first chapter of Part-III.
PART III – Build long term values
Balance quality pragmatism
Establish a Sustainable Code Review Process
– Catching bugs or design shortcomings early
– Increasing accountability for code changes
– Positive modelling of how to write good code
– Sharing working knowledge of the codebase
– Increasing long-term agility
Code reviews: Over-the-shoulder, pair programming, tricky part only review, non-UI review,
Manage complexity through abstraction
How the right abstraction increases engineering productivity:
– It reduces the complexity of the original problem into easier-to-understand primitives.
– It reduces future application maintenance and makes it easier to apply future improvements.
– It solves the hard problems once and enables the solutions to be used multiple times.
Good abstractions should be:
– easy to learn
– easy to use even without documentation
– hard to misuse
– sufficiently powerful to satisfy requirements
– easy to extend
– appropriate to the audience
– Unit test coverage
– Integration test coverage
Unit test coverage and some degree of integration test coverage provide a scalable way of managing a growing codebase with a large team without constantly breaking the build or the product.
Establish a culture of reviewing code.
Invest in good software abstractions to simplify difficult problems
Scale code quality with automated testing.
Manage your technical debt