![](/posts/design_during_development/design_during_development.png)
Design during Development - is that always a bad approach?
typically that is the case
The best practice is to Design before starting the Development.
This approach provides multiple benefits:
- it is easier to update the design (for example, a UML diagram) than modify the software/hardware prototype;
- good design helps to manage the complexity (for example, by creating abstraction layers) and hide the logic of internal modules;
- during the design stage, we can identify future issues (for example, inadequate data structures) and fix them without modifying the already developed solution.
Generally speaking - you should know what you want to build before starting the actual development.
but not always
There is one case when I believe that the Design during Development makes sense.
That is when you know what you want to build but have no idea how to build it.
Let me explain.
Maybe you have a crazy/brilliant idea for an application/hardware solution. You think that this product will address the particular need of particular customers.
(starting from the business need and working backward is always a good idea)
Let’s say that you do not want to hire someone to build that solution for you (which is a valid option as well).
In that case, your only option is to start the actual Development to learn the required tools in the process. There is little value in creating a detailed Design without knowing the technology constraints.
Think about the high-level idea of what you want to build and start the Development.
Risks of doing the Design during Development:
- you might pick the wrong tools to build the product -> you have to start the Development from scratch, but your Design is improved;
- the complexity of your application is not manageable anymore -> you learned tools (gain), improved Design (gain), have to rewrite your application (cost of gained knowledge);
- finished product does not realize your initial vision -> you have a working prototype that you can adjust to your needs or maybe the initial vision was not so brilliant and you just verified it.
Conclusion
I do not claim that the Design during Development is the proper approach and you should skip the initial Design phase every time.
I do believe that investing time in the detailed Design without knowing the technical constraints is not the optimal approach.
Start Development (learning), be aware of risks and manage your resources (mainly time) accordingly, and you will learn a lot (in the worst case).
![All the best, LMtx](https://thingrex-pub.s3.eu-west-1.amazonaws.com/design_during_development.png)