Too often we focus just on the science when we build things. Solutions need to more than just work, they need to be elegant. With elegance comes the collection of ‘bilities (consumability, reliability, extensibility, securability, etc.)

Cooking is as much science as art. Yet we may think about it mostly as an art. But the behavior and interaction of food elements definitely has a science to it, a set of discoverable and consistent properties and rules. But the end product of cooking is appreciated mostly in an artistic context, how it pleases the palette, eyes, nose, and texture. But to get there, the cook had to understand and apply the science of food.

I think software development ought to follow the same model: the developer needs to understand and apply the science, but the science is a tool to build something elegant and pleasing, and which can be appreciated by the user. The end result should be measured in terms of value to the user, not the developer’s ego. In many places it seems that software has lost the art aspect, it can be added back relatively easily if you put a little effort into it. Don’t forget the art in development. Make it elegant for the user.