I am still getting mature as a software engineering/designer/architect, as you may want to call. At this point in time, I am getting small projects, private projects and so on.What I noticed is that even though I think about the SW structure, design some diagrams, have they really clear in my mind when I start coding, at the end, my software is not flexible and clear as I would like to.I would like to ask you what kind of approaches, mechanisms or even tricks do you use, to get your software (and SW design) flexible, robust and clear (easy to understand and use). So.... Any ideas to give to a beginner?
What do you do to get your software design robust, flexible and clear?
design
Refactor.You can almost never make it right the first time. And even if you do, requirements change and new ones come along, so over time you need to extend and modify your code in unanticipated ways. So whenever you notice it is awkward or difficult to change the code the way you want to, refactor it first to make it open for change. A recommended reading for this is Refactoring to Patterns.Good design rarely comes out of the box - rather it emerges through a series of transformations and refinements over the lifetime of an app. Of course, the more experience one has, the easier it is to see dead ends: decisions which look appealing now but would cost dearly in the long run. Practice makes the master.