Simplest, But No Simpler

There’s the idea that one should shy away from complexity. I think instead that one should shy away from Incidential Complexity. There’s always a certain amount of complexity in any particular solution, and that’s going to be the essential complexity. Embrace it, make it as easy as possible to handle, and it will serve you well. Trying to fight it by over simplifying will end up with a solution worse than embracing the necessary.

In particular, solutions that can’t be extended easily often don’t survive, particularly in areas that you know will need extensive expansion later on. It’s good adivce to expect to rewrite an exploraory piece of software, but certain things aren’t exploratory despite being implemented for the first time in a project.

Secrets, for example, are something that deserves a bare-minimum solution that can be easily extended. Why? Because you’ll have to, I guarantee it.