5-Step Software Design Process
This is a short overview of the design process i actively use when designing new features, parts, processes, or products. The process should be followed IN THIS SPECIFIC ORDER. This design process was originally heavily inspired by Elon Musk's engineering process
Generally, design is overrated, and development/manufacturing is underrated so don't put too much time into fine design up front. It's okay to do some designing while you implement.
Okay, so what do we actually do when a new project falls into our responsibility?
1) Question the requirements
Projects or products usually come with some sort of requirement or specification. These are written by people, and are usually based at least partly on assumptions.
Requirements are especially dangerous if a smart person made them, because we tend to assume they're more correct. Question these more!
Requirements that cover "what if" cases are usually unnecessary in the design process and will likely just slow down your progress.
2) Actively seek to remove parts of processes
Remove as many steps from processes as possible. Are users making an unnecessary click? Can we merge two or more actions into a single step? Do we really need that extra screen? Remove all the excess crap.
If you don't occasionally have to reimplement stuff you've taken out. You don't take out enough stuff.
3) Simplify the process
Everything can be made easier, find the ways!
Can we flip the entire process on its head and remove a step? Can we shuffle stuff around so that we can eliminate some parts? Can we just send people directly to the app instead of going via our webpage? Do it!
4) Optimize
Optimize after you've fixed the requirements, removed applicable parts from the process, and simplified the remaining process.
A common error of good engineers is to optimize something that shouldn't exist in the first place.
Imagine spending hours optimizing a step just to realize we can remove it all together at a later point. That's hours wasted on optimizing something that shouldn't exist!
5) Automate
Automate the tasks a human is not needed to perform.
Now your process is as smooth as it can be! But can we automate mundane and repetitive tasks that doesn't really need a human person to do? Good! Let's automate it now.
Repeat?
Optimally, if we did the process right, we won't be repeating this process many times for the same part. But some looping must be expected as requirements change.
Want to learn more? Follow me on twitter!