Child learns simple words, and use them: "dadda", "mommy"…
Programmer learns simple keywords, and use them: "while", "for", "class"…
Child becomes a Teenager, and by this time should know words more formally: "father", "mother"…
Programmer becomes a developer, learns a few more words, and use them: "virtual", "override",…
Teenager becomes more comfortable with the language, and starts to drop a few vowels here and there: "r u there?", "c u l8r"…
Developer has been writing basic words for so long that has now become "Senior Developer" (no new words have been learned, though).
Teenager becomes an adult, learns a lot more words, and learns that in order to succeed in life, it’s mandatory to use the language properly in order to communicate intentions. Improper use of the language may indicate the person is either uneducated, immature, lousy, or all of the above.
Senior Developer does not learn new words, does not learn how to better use the ones already learned before and used for so many years, and there’s just no hope for improvements.
Question: should the Senior Developer be labeled as uneducated, immature, lousy, or all of the above?
I’d say all of the above, unfortunately. I don’t believe it’s correct to call a developer a "senior developer" just because he or she has been programming for whatever number of years. I believe what makes a developer a "senior" is the level of expertise and knowledge acquired over the years.
Say developer A has read a book such as "Programing with whatever language in 21 days" or "Programming for dummies" 10 years ago, and has been writing code solely based on what’s been learned from that book. Then there’s a developer B, who has read countless books on architecture, OOD, patterns, etc., and has really mastered the craft, but has only been doing this for, say, 5 years. Who should be labeled "senior" in this case?
What I am trying to say here is that it seems like a lot of developers have been living under a rock for ages. These old dogs don’t seem interested in learning new tricks. There’s code out there that really seems like they’ve been written by children. Just like it is hard for a magazine editor to edit an article written by somebody with terrible command of the language, it’s equally painful to read code that seems to be written for nobody to understand.
Obviously, there are exceptions out there, and that’s where I try to set my bar at. I mean, it’s refreshing to see some ingenious code some brilliant people write out there, and that’s what keeps me interested in software development.
#1 by William on March 25, 2008 - 10:55 am
I know exactly what you mean when you say there are Senior developers around that write painful code. I know first hand. Our whole development team consists of "Senior" developers when only maybe one of our guys is of a senior level. One developer is exactly junior level with very little understanding of development and he is a "Senior" developer because he supported an old VB6 application for a couple of years. It\’s sad to say Claudio, but I believe the more you enlighten yourself and learn about your field the more frustrated you become because you are less accepting of subpar code. I believe most of the developers I have seen in the "Houston" area getting good money are probably below par as far as development is concerned. Should we just accept this and try to work in the environment or should we alway aspire to produce good code and development practices? It\’s a rhetorical question but I continue to aspire to learn and implement good practices with little rewards at the end of the day.
By the way I really enjoy your blog, especially to productivity tools and your design ideas.
#2 by Claudio on March 26, 2008 - 11:50 am
I\’m glad to know you enjoy my blog. Thanks.
I must say I\’m also going with the option of always aspire to produce good code. For those who only look at the paycheck, there\’s really little reward at doing that; however, first and foremost, I always ask myself the following question at the end of the day: "have I had fun working today?". My answer to that question is usually a loud "YES" whenever I\’ve been able to write code or come up with designs that I can honestly say they best represent the best of my abilities at that point in time (of course, 6 months down the road I may think that sucks, but that\’s just the nature of learning in spiral…).
On the other hand, I usually feel like I haven\’t had fun working on a given day is because I\’ve had to spend most of my time dealing with the work of people that may not share the same principles I do. Whenever that happens, I go out there and read articles, blog posts, whatever, from people I consider enlighted, since seen smart things created by other people usually cheers me up. 🙂