Designing is problem solving. You either begin with a problem and find a solution for it or take an existing solution and make it better. While this is simple, it is not easy.
The largest obstacle with any design comes from within. Our brains aren’t perfect, they are jammed full of emotions and bias. If you haven’t yet, then study psychology and cognitive bias. The counter to this is critical thinking. Unfortunately not many people are critical thinkers, because to think critically means admitting that most of our ideas are stupid.
Begin each design with a single sentence. State the problem you want to solve or what you want to achieve. Next, break that problem up into two to four smaller parts and write those down. Ensure it’s both simple and complete. Then take each of those and break them down further. This is known as a top-down design. Continue this process until each part is small enough to complete.
Often the key to a good design is simplicity. Don’t jam in all sorts of options and features because that overcomplicates it. People would rather use a simple but effective product than an overcomplicated one. So determine which features are mandatory and which optional features can be added without overcomplicating it.
Next comes the hard part. Criticize your design and find all flaws that you can. Look at it from others’ perspective. How would other people use it? How would a malicious person misuse it? How would a complete newbie use it? Most people struggle when criticizing their own design but it’s crucial. Imagine it used in various scenarios. It’s far easier to rewrite a design than to rebuild a product, so it’s better to fix potential problems now. If no flaws are found then it’s on to the next step.
Now comes research. Are the assumptions you initially made valid? Are there libraries to accomplish what you want to do? Can a computer even do what you envision? What computer is it made for? Are there physical components? How will you manufacture those components? Every manufacturing method comes with its own set of limitations that will affect the design. Every programming language has its own benefits and drawbacks that must be paired with the design.
Failure is something we rarely consider. What happens when one part fails? Is it detected and properly dealt with? Can it be quickly fixed? If it’s a physical product, can one part be easily replaced? Designing for failure is complex and often ignored.
Optimization is next, and it’s the fun part. Well, fun if you are technically minded and enjoy challenges. Redo the design over and over, each time making it a little better. Find new approaches. Your product will have to compete with other products, so if it’s cheaper to manufacture or build then that’s an advantage. Is the product generalized so many can use it, or is it specialized?
A design must cover not only the product but the manufacturing process. Can a design have automated tests? With programming, can it easily implement unit tests? If you make a circuit, does it have test pads? You’ll have to design and make another circuit with pogo pins to test the original circuit with. QA is an important part of any manufacturing process, whether it is digital or physical.
There are always tradeoffs. You can make something easier to use but it will be more expensive to manufacture. Sometimes you need to make a product more complex so it can be cheaply manufactured. Improve one aspect and it will often reduce another. Keep this in mind as you work. Tradeoffs exist everywhere.
Despite doing everything you can in the design phase, you’ll still miss things. This is the joy of learning. Study these failures carefully then adjust your methods so the next time you don’t make the same mistake. Make checklists so you don’t forget steps.
On occasion, you’ll find a product that’s elegant. An elegant product does a lot with very little. An elegant design intrinsically solves issues. Elegance should be the goal and the metric by how you measure success. Anyone can create a mediocre solution but an expert creates elegant designs with ease. Design elegance comes from conceptual organization. A concept is a fundamental pattern or idea. An elegant design uses the fewest concepts to solve the problem. It’s a different way of thinking that is hard to master.
Many people have ideas. Most ideas stink, but some are pretty good. Designing weeds out bad ideas and helps polish good ideas. Most people will find the process of design difficult at first. It’s a skill and skills require time and effort to train.