AVOIDING PERFECTION

Adz
2 min readDec 5, 2015

--

The deeper I dive and the further I swim in software development the more I realise the need to avoid perfection.

Sounds strange right?

It’s kind of natural to imagine a software designer as striving in their work towards something perfect; why would you want to make software (or anything) that wasn’t going to be the best it could be, or the best you could possibly make it? Indeed, if you are being paid to create software (or are hoping to be) you had better make goddamn sure it is.

Logically it would seem the best way to achieve this is to plan against the failure of it. This is a model that has been followed for ever. It’s why we have laws and how we could afford to go to the moon.

Laws are made to provide an incentive to avoid the repetition of certain mistakes or misbehaviour — murder for example, or theft. So making a law is a way to plan against a failing society.

Similarly the landing of space ships on the moon relies on meticulous planning for any and every eventually. It’s not really cricket to just send people to the moon see what goes wrong and then fix it for the next lot. So planning to not have dead astronauts is a big part of NASA’s whole deal.

But making software isn’t like landing a rocket on the moon.

It has taken me a while to realise this.

Every time you don’t have a law against murder, someone dies. And every time you don’t plan correctly for a space mission, astronauts die. But every time you have to go back and delete a line of code, or extract a class that you didn’t plan to be a class to begin with, or refactor some code during its creation, well….. no one dies.

So while perfection in a certain sense might be an ultimate, fuzzy goal, the quickest way to get there is by failing. And the quicker you fail the quicker you can fix it. Fail fast, fail often as they say.When it isn’t costly, failure is fast and fast is perfect.

“Design is more the art of preserving changeability than it is the act of achieving perfection.”

Practical Object Oriented Design in Ruby by Sandi Metz

Like this:

Like Loading…

Originally published at 36bcab.wordpress.com on December 5, 2015.

--

--

No responses yet