Simplicity is a developer's best friend
The typical problems associated with software projects, cost overruns and delays are all closely related to the disregard for simplicity.
You need to embrace simplicity if you want to achieve results today and stay successful tomorrow. Long term product quality, performance and development speed all rest on the simplicity of a system.
Run with the minimum that achieves the business goals.
There are two kinds of complexity in any project: the inherent complications of the problem domain and the unnecessary, "incidental" or "accidental" complexity introduced by developers. The domain complexity is more or less fixed and has to be accepted as is. Dealing with it is the primary role of a developer. Accidental complexity, on the other hand, has to be avoided and minimised at all cost.
Be frugal with code, processes and infrastructure. Everything you add today will have to be looked at and understood by you or someone else in the future. The more complicated your system is, the more resources people dedicate to learning it instead of implementing improvements and new features.
Simple might seem boring at first - but it's the opposite: it's liberating.
Continue reading Simplicity is the best ally in the long run on my Best Practices on GitBook