|
A lot of young and talented developers are continually looking for new projects and problems to solve and gain experience with; however, there are very few single environments that provide the ability to diversify and grow. Most jobs consist of working on legacy code where there is very little architectural “wiggle room”. As a result, many developers feel the need to move to a different job or environment to get to the next level of learning. While job hopping is one way to gain diversified experience, may I offer an alternative - contract work. In hindsight, one of the fastest ways I matured as a software developer was through the experiences I had while working with a consulting company. Why is this? A few reasons: Many New Projects (And A Few Old Ones) The ability to start with a clean slate every 2-3 months is priceless. I always joke that the only code I am proud of I wrote less than 6 months ago. It’s for this exact reason, I got in the habit that I got to learn from every project mistake and continually get better. Old projects exist as well (and this is OK) as it allows for developers to also learn how to maintain legacy systems. Brainstorming how to introduce unit tests into a Lotus Notes application can be a very daunting (but rewarding) task. Not every project gets a clean slate at the end, which is a great equalizer in terms of learning to write maintainable code. Different Problem Domains Probably one of the coolest domains I ever worked in was I had the opportunity to write an application that physically moved a HUGE dirt shovel for a coal mining facility. What an awesome domain! Physically coding with a hard hat on, in the middle of a strip mine, and my code is moving a 2000 ton machine around - can I get a hell ya?!? These opportunities do not present themselves often if you work for a company solely focused on one business domain. Architectural Responsibilities Probably the hardest thing to gain is wisdom and insight of architecture. When to use them, when not to use them, when to use them but then break them. Different projects, different domains, and the responsibility to pull it all together provides the opportunity to gain this experience quicker than most job environments. Learning To Deal With People Being a consultant is what you make of it. If you decide to be a hermit that never talks to clients and always decide to solve different problems with the same solution, you probably will not learn a lot. If you decide to sharpen your skills as a communicator while experimenting with different technologies, patterns, and architectures consulting might just be a good fit…. The author of this article is Max Pool visit his blog at http://mailer.dzone.com/link.php?M=151635&N=101&L=563&F=H |
| Posted On October 29, 2008 |
Like this post?
|