The 10 Principles of Good Software Development
Dieter Rams, possibly the most influential industrial designers of the last 50 years, has had a truly remarkable impact on the design industry. His minimalistic approach to design, summarized by his motto “Less, but better,” and his focus on user-centricity has influenced countless innovative products.
To elaborate on this seemingly simple concept, Dieter Rams spent years honing his design approach, eventually formulating them into what is now known as “The 10 Principle of Good Design.”
Rams holds the belief that good design only comes from understanding people. He urged everyone — not just designers — to take active responsibility for the world around them.
These principles do not only apply to product design. Rams’ influence extends beyond the development of physical products, and the genius of his simple “Less, but better” ideology applies to any industry.
This exploration will focus on the field of software development — an industry plagued by excessive complexity and bloated solutions would greatly benefit from Rams’ following 10 Principles.
1. Good design is innovative
“The possibilities for innovation are not, by any means, exhausted. Technological development is always offering new opportunities for innovative design. But innovative design always develops in tandem with innovative technology, and can never be an end in itself.”
Building software for the sake of building software 9/10 times will fall short of delivering any meaningful results. It takes time to analyze and comprehend trends in the world to adapt your offerings accordingly.
Finding ways to do the same work better and faster has its value, but delivering genuinely innovative products will require developing a clear vision and understanding of what you or your customers need. Creating a precise roadmap of your organization’s future will give you the insight needed to develop impactful solutions. Check back on the roadmap to ensure you are heading in the right direction.
Creating a roadmap will require a deep dive into current technologies and their benefits and disadvantages. These decisions will take careful analysis of current trends and a broad understanding of where the world is moving.
2. Good design makes a product useful
“A product is bought to be used. It has to satisfy certain criteria, not only functional but also psychological and aesthetic. Good design emphasizes the usefulness of a product whilst disregarding anything that could possibly detract from it.”
Every product should have a specific function, and identifying the need is critical. Taking a user-centric approach to software development means delivering meaningful solutions can only happen while keeping the user’s needs as the focus. Every decision made throughout the process will need to start with the question, “Is this necessary for the user to complete _______?”
If the answer is no, do not immediately discard the idea, but determine why it is not a viable solution. Eliminate anything that does not directly or indirectly aid a user in completing their goal; however, there are potential insights hidden in the process of discarding seemingly unhelpful functionality.
If the answer is yes, identify how the solution could be simplified even more. To determine pain points, break the user’s path down into seven steps — layout exactly how a user goes through the system to accomplish their goal. Then, break those steps down again into 14 steps, then 28. The purpose of the activity is to identify places where hidden complexities were overlooked. The system will only improve by precisely defining each step a user takes, .
3. Good design is aesthetic
“The aesthetic quality of a product is integral to its usefulness because products we use every day affect our person and our well-being. But only well-executed objects can be beautiful.”
The form should always follow function but should not fall by the wayside. Aesthetics play a significant role in how a user perceives a solution and can keep them focused on completing tasks.
Things like color schemes, shapes, fonts, images, animations, buttons, forms, etc. will play an essential role in the solution’s perception. Having a modern interface with a clear hierarchy is crucial, both for usability and functionality.
4. Good design makes a product understandable
“It clarifies the product’s structure. Better still, it can make the product talk. At best, it is self-explanatory.”
When handing the application off to a user, ask them to complete a specific task without help. Were they able to complete it with little to no direction? Every process taken should have clear steps to ease adoption and training times.
Clarity is paramount in software design. Some products will require documentation or essential explanatory content to use due to complexity. Still, if a product needs hands-on training to be usable, something went wrong in the design process.
The objective is to eliminate instructions by making every task self-explanatory, or as close to it as possible.
5. Good design is unobtrusive
“Products fulfilling a purpose are like tools. They are neither decorative objects nor works of art. Their design should therefore be both neutral and restrained, to leave room for the user’s self-expression.”
Applications should feel lightweight and intuitive. The user is using your application for a specific task, and the goal should make them think as little as possible.
Steve Kurg wrote in his book Don’t Make Me Think that “It doesn’t matter how many times I have to click, as long as each click is a mindless, unambiguous choice.” The system should guide the user through the process while minimizing missteps. If missteps do happen, there should be an obvious way to go back.
Maintain a simple interface that only calls out essential details to reduce clutter. Help the user focus on the task and keep them from getting distracted by over the top designs.
6. Good design is honest
“It does not make a product more innovative, powerful or valuable than it really is. It does not attempt to manipulate the consumer with promises that cannot be kept.”
Good design communicates precisely what the software does and does not imply features, quality, or longevity it cannot deliver on. Offer users honest descriptions of your software, do not promise functionality that is not there.
Selling a product should not involve describing the product as more innovative, powerful, or valuable. Some will call this marketing, but the truth is that this is misleading. Avoid making impossible promises.
Present the application honestly with a visual affordance and iconography. Be straightforward with what each action a user takes does.
7. Good design is long-lasting
“It avoids being fashionable and therefore never appears antiquated. Unlike fashionable design, it lasts many years — even in today’s throwaway society.”
Software development is often at the developer’s mercy, a developer who is usually trying to leverage the newest technologies. Utilizing new technologies, however, does not always bode well for the project.
New technologies come and go, but developers often incorporate these languages, frameworks, and libraries because they stay on top of development trends. Understanding where technologies are moving is important, but adopting new technologies can leave the product compromised.
Publishers of new technologies are not always verified, and when a developer uses these new technologies, they can open the application up to unforeseen security risks. The best solution to this is to investigate offerings before utilizing them thoroughly.
Determine what tools are critical for operations, but steer clear of technology that will quickly become obsolete.
It will also be essential to build adaptable and scalable solutions to accommodate new features. Make applications flexible enough to respond to future changes to maintain relevancy in rapidly changing markets. Use technologies that allow you to develop solutions fast while keeping investment low.
8. Good design is thorough down to the last detail
“Nothing must be arbitrary or left to chance. Care and accuracy in the design process show respect towards the user.”
Adopt a software development lifecycle (SDLC) and be meticulous at following it. An SDLC will provide a well-structured flow of phases that help your organization quickly produce high-quality, well-tested, and production-ready software.
Thoroughly test any software before launching it. Run through every scenario, make a point to get lost. Do everything you can to break things.
It is impossible to anticipate every pain point, but do your best to simulate situations that users might find themselves.
9. Good design is environmentally friendly
“Design makes an important contribution to the preservation of the environment. It conserves resources and minimizes physical and visual pollution throughout the lifecycle of the product.”
Data centers consume about 2% of the world’s electricity and put out as much C02 as the airline industry. Data usage is only increasing, and data center electricity consumption is expected to reach 8% of the total energy used worldwide by 2030.
Developers can make choices to reduce the amount of energy consumed by a deployed solution. These choices include configuring your site to transfer the majority of the processing client-side. Reduce the burden of processing put on servers to reduce their operating energy consumption.
10. Good design is as little design as possible
“Less, but better — because it concentrates on the essential aspects, and the products are not burdened with non-essentials.
This last principle sums up many of the others: choices should always be intentional. Eliminate anything that does not serve the user and create applications that do precisely what they are supposed to do. Do not needlessly add features. Keep solutions simple and straightforward. Empower the user to do what they set out to do.
Applying the 10 Principles of Good Design to software development will help create more effective, resource-efficient, and beautiful solutions. These rules provide an excellent foundation to build any application. By following these principles, you will be well equipped to produce user-centric solutions that enable people to get more done.