I have some axioms: 1) One man's complexity is another man's simplicity Often what we consider complex, is just what we are unfamiliar with. If you've been working on something for awhile it gets simpler. Keep in mind that what at first appears complex, will get simpler. 2) He whose work is most incomprehensible, is most respected. Unfortunately, this is the bane of our industry. The ignorant are impressed by incompr…
"3) Never be a maintenance programmer. Always be the original coder."
I think this is pretty unrealistic. Maintaining legacy code is definitely not as fun nor as exciting as working on "green fields" projects, but it's often necessary and can definitely help you mature as a programmer.
Simply gaining exposure to good and bad code is very beneficial. It means that the brand new code you are going to go out and write will not be as terrible and maybe will be good enough to make the next person's life not so miserable. Plus, even if you vow to never work on anyone else's code, is that really even possible? If you create a new system today, and have to maintain your own code in 6 months or a year, are you really the same person? It's common to look at your code from a year ago and think "what was I thinking when I wrote this crap?"
"You can always find a better way to do it than they did, at least in my experience."
This is a common reaction that programmers have when reviewing old code (myself included!), but it's not always true. You may think you can find a better way, but you had better be damned sure you're right. You need to check your understanding and make sure you really comprehend all the components of the existing code and are not about to replace something that is working and ugly with something that is beautiful but will fails in 6 months time because you didn't anticipate some edge case that the original programmer did.