Ever since the start of the Atomic Design Series, I’ve been looking for innovative ways that design thinking might be applied to software development at the level of writing code. Already, our software development process is imbued with design principles, but what about when the text editors are open and individual functions and objects are being named and composed? What makes for good code design?
Not long ago, I had what (at first) seemed like a breakthrough. I thought something like this: “If design is about serving the needs of people, then at the level of code, we have requirements that need to be fulfilled for end users, but also requirements that must be fulfilled to satisfy interfaces for other components of the system. We can consider the components of a software system as similar stakeholders at the local level, with their own requirements to account for in our design process. In this microcosm then, maybe the interfaces of these other components stand in for the people.”