When I started coding a few years ago, I thought that coding was a very creative activity, with a near-infinite number of ways to solve a given problem, to implement a given solution, to organise the codebase into modules…
Today, I feel the exact contrary. For a given problem, there are not so many good ways to solve it and to code it. Moreover I often have the impression of doing things in a similar, deja-vu, fashion.
Conventions played a big role in this change, as my first impressions were in old-school C code with very few coding constraints; I then moved to increasing coding guidelines and conventions as I moved to C++ and Java. Java API itself also plays the role of an implicit guideline.
A better understanding of OO played an even bigger role in reducing the number of acceptable solution for a given situation, and design patterns, refactoring habits, testability concerns, not to forget personal experience, all reduced again the universe of the potentially good implementations for each coding situation.
With increasing experience and skills, coding thus becomes a more systematic -less random- activity, with more precise quality goals.
I am not complaining at all for this, this is definitely a good thing. Coding remains a creative activity, I still balance several solutions for each problem, but each solution itself is much more accurate than it used to be.
Initially published on Jroller on Thursday March 31, 2005