A lot has been written and talked about design principles, yet, today a lot more people can code then people who can design. This is the most avoided topic in college curriculum with only a small chapter discussing the principles hidden somewhere in a large text book.
The programs developed during college, are tested for accuracy, never on the design of the code. This leads to a large gap when this habit gets transferred during enterprise development. The same could be said for any other developer who has learned development, and because code works predictably, its accuracy can be measured and improved. Not so much for design.
If you look around you would find a lot of enterprise code which works, yet understanding or making changes in it seems a humongous task. Many a times leaving unknown bugs elsewhere.
While everyone does understand the importance of a good design, and most of the people even understand the design principles, why does the translation not happen?
Few reasons :-
- We do not have birds, car etc when writing code. Most of our understanding comes from examples that take real life objects, yet these objects never manifest in their original form at the time of development.
- Using frameworks. The frameworks when interact with the code, skew the development towards a defined pattern.
- Translation while development. You need to be aware of when you are in violation. Not only is it important to understand when you are designing properly, its equally important to know when you are not.
How do I intend to tackle this
My take is to provide examples which model regular development with tips to identify when going wrong. Also, as biology has taught us repetitiveness is the key, examples are followed by more examples.
The following articles are meant for everyone who is interested in designing code that has low maintenance overhead. A basic knowledge of programming is expected. The examples would be in Java / pseudo code, yet can be followed by a person having knowledge of any programming language.