The effective engineer (Part-IIIa)

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.

The book is divided into 3 parts and my idea here is to write 3 blog posts one for each. So here is the second part of the series. You can read the Part-I here and Part-II here.

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

Automated Testing:
– 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


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s