Language: en | es

Premature Abstraction

Abstractions are a powerful way of hiding complexity. They can make code easier to test, extend, understand, and reason about. However, improper use of abstraction has precisely the opposite effect. To illustrate, check out this FizzBuzz Enterprise Edition repo which provides a comical example of over abstraction. It shows just how complex we can make an inherently simple problem by over engineering it. While that codebase is meant in satire, I’ve seen codebases that are almost on a par with it. Read more...

Quality, Speed and Cost

I was chatting with my barber today about a job he worked in a few years ago. The owner of the barber shop - who had never cut hair - demanded a 20 minute turn around on each appointment. In that time the barber had to welcome the customer, offer (and make) them a beverage, cut their hair, and take payment. He explained to his boss that those timescales were infeasible; he needed at least 30 minutes to get the job done or quality would be compromised. Read more...