Any software development will require thousands and thousands of line of codes to create a tool that will automate some kind of process. It can be as simple as keeping your notes into a database, to implementing a full accounting solution. There is no easy way out on this, like it or not.
In a team, everybody has to comply by the design put in place by the software engineer. It's not about a power trip or some kind of magic dream. A good software design is the foundation of any software solution.
Some of you may have had the experience of having to comply with proper naming of variables and functions. A design is more than using the same coding style. It's a philosophy that all team members need to understand and praise. This design will ensure many thing when properly defined:
- diminishing the risk of creating bugs by mistake
- ensuring the clarity of the API so that any developper can easily use the framework
- establishing the limitations of what can be done without having to tweak the code
- avoiding to duplicate code and routines throughout the solution
- making sure that there is only one way to do a process
- keeping the exceptions to a minimum level to ensure homogeneous coding
I could go on and on with the reasons a design is a good thing. There are many ways to implement a routine such as saving some data into a database. Some are better than others but in the end, the best way is the one that all team members are using without exception.
What is a good design? It's the one that makes coding easier by removing the hassle of figuring out what to do. There is nothing worse than confusion in a team.
As Othello said: A bad design is the worst poison... No? I you having doubts about your design?