The unique way to avoid the price of a poor design project to replace them in time. But we all know that replacing a software is not a great idea.
Software should be improved via multiple iterations and that’s why you or your teammates will read a lot more code compared with the amount written and the of the story.
In a rush of writing a new project, this sentence will sound wrong, but this is just one of the phase of it. After that, it will be all about reading and replacing lines of code one by one and if you poorly design the software somebody will pay the price of it. You or somebody else, probably somebody else looking at how quick a developer changes job.
it is in your hands as a developer to think about design, at least to save yourself from the darkness
In a fancy unicorn startup, you will hear that there is no time to think about design, if you are in tech probably that’s not true, but there is always a project that nobody cares but it needs to be fixed.
Some other companies don’t have time to think about design because they are always running against something.
So, as you can see, it is in your hands as a developer to think about design, at least to save yourself from the darkness.
Recently I read “Philosophy Software Design” by John Ousterhout. This book turned out to be not a breath of fresh air for me was more like a “breath of consolidation”. Professor John Ousterhout fixed on paper, in an excellent way what I try to do every day but I was not always able to express.
Why comments are essential, deep API vs shallow classes, information hiding. You should read it!
Design it twice. It looks expensive but it is a take away from the book that I think is the practical key to unlock the door to make our work fun and healthy.
The first solution can’t be the best one. Even if you are smart enough to design something that it won’t crash we should make an effort to think about another solutions, to ask for a review, just as we do for when writing code.
In theory, we will have a great design looking in between of all the other attempts.