Wednesday, August 15, 2018

All Software Work is Really Design Work

I think that finding abstractions is one of the most important parts of software development. Not only does it make your code work better. It makes it easier for you to work with your code.

If you accept this as true, there is a conclusion you can easily draw: all software development is actually a form of design.

This is actually a very natural fit for how things really work. When the code runs, you don't do any of the work. You only create sets of instructions and organize those instructions so you can find them and maintain them, later.

That's design.

This means that you should always be thinking about design. Even if you think you are just writing an algorithm, approach it as a design problem.

How can you make it easier to change, later? How can you make it more resilient to changes that shouldn't affect it? How can you make it more expressive?