A good friend of mine recently asked my how he might go about revitalizing his career. I’m putting some words in his mouth here, but I’m pretty sure that he’s interested in getting back into hands on development and moving away from a strictly managerial role. In his case, he is/was a very strong developer who really just needs to scrape off the rust. The problem is that I think he needs to go get some knowledge and experience to position him for a different role that he probably can’t get in his current role.
Here’s my thoughts on the subject. I (and my friend) would appreciate some feedback and better ideas:
- Pursue the MCP/MCSD certification. I would definitely take certification into account when hiring very junior developers, but it’s not something that I would pay a lot of attention to for mid level or senior developers. I think the certification effort could be helpful for experienced developers moving into a new platform where you just need to map Java names/syntax to C# names/syntax or vice versa, but the question is my mind is whether or not another effort would be better.
- Follow some of the leading blogs just to see what people are doing, thinking, and writing about. For the cutting edge in .Net practice, I like Los Techies, Elegant Code, and CodeBetter (of course). For development in general, my favorite online source now is InfoQ.com.
- I think podcasts can do a much better job of explaining/discussing subjects because of the more interactive nature. My favorites are Herding Code and the Elegant Code cast. DotNetRocks is by far the most popular, but I don’t think they cover their topics sometimes as well as some of the others. Hanselminutes has some gems here and there. The ALT.NET podcast just isn’t regular enough, but it’s good as long as it isn’t a meta-ALT.NET podcast (like the one I did last time).
- Go to user group meetings. The talks themselves aren’t usually very good, but the conversations afterwards are worth it. I prefer discussion groups like the NYC eXtreme Tuesday club and Austin’s ATX lunch group over eyes forward ***NUG meetings. If you ever get a chance to attend an open spaces event, jump on it.
- You gotta get some experience with the newer things and concepts. My strongest recommendation to bump up your coding skills is to find a way to participate in an OSS project of some sort. That recommendation goes double if you’re in some sort of non-Agile shop and you want to get some hands on experience with things like TDD and test automation. Plus, OSS work is usually more interesting and much more challenging than the day to day programming (my experience anyway).
- Build a side project of some sort. This is based on the theory that hands on experience is better than just reading. Use different tools and techniques than your day job.
- Personally, when we’re hiring, I’m far more interested in a person’s
understanding of concepts and principles rather than in specific
technologies. I would strongly recommend focusing much more on design principles and even practices as opposed to purely technical subjects. If you study and build an understanding of the SOLID principles, you’ll be able to apply that knowledge to any enterprise software project. Reading a book on WPF is useless for working on a web developement project. I’m not saying to completely ignore technologies, just to put them at a lower priority.
- I honestly can’t think of a single book to read that is going to make a huge difference. I like the Pragmatic Programmer book, all of Fowler’s books, and the Feathers book, but I see books as a good supplement and not the main thing.
- Find a different job. Maybe this isn’t a good recommendation during a deep recession, but your ability to grow in your career sometimes is only as good as your company. I see a depressing number of people trying to rise above the riff raff at very mediocre development shops. Sometimes you can make a big difference where you’re at, but other times you’re just stunting your growth.
What I Did
I’ve written about this subject before, but a bit of a recap can’t hurt. In 2002 I was moved into a non-coding architect role and I hated it. At the time I only had experience with DNA technologies and Oracle when the enterprise development world was quickly being divided up into J2EE and .Net camps. I felt like my career was circling the drains with every powerpoint I delivered and every bureaucratic meeting I attended. I slowly started working on what became StructureMap off to the side to get some demonstrable experience with .Net and some new concepts (TDD, OOP). In ’03 I made the big leap out of the stultified big corporate IT world into ThoughtWorks right as Agile/XP was getting off the ground. I spent a lot of time around stronger developers who were passionate about the craft of software development and learned a lot about software engineering (which I hadn’t in a CMMI wannabe shop because that was someone else’s job). I can’t say that my experience there was roses every day, but I would credit that move with salvaging my career and putting me on a better path.
The best single thing I’ve ever done for myself was to start blogging and writing.