Developer Aspirations

YAPB - Yet Another Programming Blog

Tuesday

15

December 2009

Diversification

by Colin Miller, on development

At times there seems to be too much stagnation in the world of software development. I don't mean that progress in new technologies or techniques is slowing, in fact it is probably chugging away at its standard accelerated pace from the rest of the sciences, I mean that developers themselves tend to stagnate.

This is a dangerous thing for any developer and for our community as a whole. Many developers become stuck in a rut of working on the same programs, writing in the same language, fixing bugs or adding minor incremental changes. Maintenance mode: it dominates many software shops and can cause your career and your company to become outdated.

As an example, take a look at Internet Explorer. Microsoft practically stopped developing IE in the mid 2000's because they had such a high market share they figured there wasn't a need to do real work on a new version. Minor fixes was all that went into it. Meanwhile other browsers such as Firefox, Safari, and Opera were putting together new and exciting packages. Microsoft was at a loss and had to hurry up and create IE 7 and later 8 to try to catch up to the standards compliant and innovative new browsers that were on the market. If they had kept pushing even when they felt secure, they would have had a better product and probably a better market position.

I feel the same thing occurs not only in the products we make, but in ourselves with our skills. Once you become a Java developer, or a web developer, or a Java Web developer, you stay there. Maybe you've been using C, or Java, or PHP all of your career and you've never really expanded out of that. Perhaps you've written mostly web applications and never really touched desktop or mobile applications.  I feel that that is a significant loss to yourself and to your current position.

The thing is people, and especially developers, need to change from time to time. If you keep programming in the same language on the same types of projects or are just in maintenance mode of the same project constantly, you'll begin to stagnate. Your skills might be quite good in your area of expertise, but if you're ever forced to leave your comfort zone you will find you struggle. Perhaps you get laid off and need to get a new job, having some versatility will look good on your resumé. Even if you're staying with your same position, having skills in additional technologies, different languages, and programming on different platforms will help you in your current task by forcing you to change your point of view.

Change inevitably happens. I remember working at a government job in NY where all of the older programmers who were masters in COBOL were forced to retrain in Java or retire. Many of them had problems with that transition as Java and COBOL are fairly different. The few who were keeping up on their game for the last few decades and learning new strategies and processes on the side were poised to take over top positions after the transition. They already had the knowledge that they taught themselves, while the ones who stagnated either had to struggle to adapt or look for a new job.

My ambition typically involves trying to keep as many new languages in circulation in my head as I can. I use Java primarily at work, but when I start doing my own projects I tend to lean towards Objective-C, C++, Ruby, and Groovy. I mainly write web applications at work, so my home projects tend to be closer to command-line scripts, desktop applications, or mobile apps (the iPhone is a nice platform to play in as a developer). I may not be able to use these projects or the skills that I learn on them directly at my job, but I do become more versatile from the experiences. That versatility allows me to answer questions or think of designs differently than I would if I just focused on web based Java applications.

In addition, try to make sure that you do have side projects. I know for a lot of people who work 8-14 hour days programming that the last thing they want to go home and do is more programming. A lot of the time I would agree with them, however keeping a few side projects that you work on several times a week in your spare time will keep you sharp and can be very rewarding as you make things that you wouldn't have the opportunity to at work. I know that I've felt more accomplished by satisfying my own goals at home than I am at filling another bullet point on a feature list of a product that I have little passion for at work.

If you can't think of a project, try to find an interesting open source one online to make contributions. It's not always easy to get started, but those contributions will look great on a resume and can help a multitude of people along with yourself.

comments powered by Disqus