Revitalizing a Technical Career

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

 

 

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Blake

    I recently landed a job in part because of my MCSD. An internal recruiter for the company found my resume on Monster. She told me that she did a search for “.NET Developers” in my area and came up with hundreds of results. After narrowing the search to those with MCSDs, she was left with four candidates (including me). That got me an interview. Without the MCSD, I would’ve been lost in a sea of candidates. Pretty nifty.

  • Evgeny

    “I easily crammed for an exam using a book provided by the people who created the exam (I always thought that was a massive conflict of interest)”

    Of course it is not a conflict of interest. First you pay them for the exam, and then you also pay them for the book. That’s a win-win for the cert provider.

    My take on cert is like this: Is there a chance that you get some edge because you have NO cert, and your competitor has it? (Let’s say, skills and experience being about the same). I don’t think so.
    What if you have the cert, but the other person does not? Well, I’d say there is some chance it will be viewed favourably.

    So, if it’s really a question of studying for 1-2 evenings, why not get it? There’s nothing to lose.

  • http://codeobsession.blogspot.com David Adsit

    @All,

    Has anyone else ever interviewed a tech trainer? The ones I have worked with or interviewed have had stacks of cert on their resumes and can quote the MS training manuals. Ask them to code the Fibonacci series (after you define it for them) on the white board and rather than ask, “iterative or recursive” they make excuses for 5 minutes and then tell you which resource they would look it up in.

    @Jim,

    You just made the jump back from manager to developer, what was your technique? I mean, other than just apply for a new job in a dev role rather than manager? Your were fairly involved with the team you managed, even to the point of pairing with us when you weren’t in meetings, so maybe it is a different situation.

    @All,

    Hey, there is an idea! Pick a Senior Dev from the team you manage and go pair with them as much as you can. Pairing is the best way I have ever found to transfer knowledge from from one dev to another and that should remind your friend of the things he doesn’t use much anymore.

  • Venugopal

    Recently I was faced with the challenge of switching job. I used to work in classic VB and .Net 1.1 and when I decided to update my skills I was confronted with lot of abbreviations… WPF, WCF, WF, WTF ;) etc… Blogosphere didn’t help either… TDD, DDD and other DDs… While trying to make sense out of this, heaven smiled upon me in the form of Karl Seguin! If you are too eager to catch up with the current development practices, you need Foundations of Programming by Karl… It will get you to about 100 meters from the bleeding edge best practices in no time… Thanks Karl!

  • Andy

    All the suggestions so far have been very conventional. If you’re very talented and / or very lucky, you may get a good job with a good company and work on some interesting projects. More likely, you’ll find your career in need of more revitalization pretty quickly. Either way, you will probably have to slog your guts out and you’re not going to get rich making money for someone else. Your best bet is to reduce your dependency on working for a company as an employee and to take greater control of your own destiny.

  • Blake

    I think certifications provide great exposure to the target technologies, even for seasoned pros. My experience has been that it’s easy to pass certification exams without studying for them as long as you’ve been working with the technology, but I’m always pleasantly surprised to find that forcing myself to read through a 700 page exam study guide yields some useful tidbits of information I wasn’t aware of.

    On another (nitpicky) note, MCSD exams have been retired. Gotta go MCPD from now on…

  • http://jopinblog.wordpress.com JohnOpincar

    I was about to post something very similar to what Eric wrote. I found getting the MCAD a rewarding experience. However, I do agree that certs are only guaranteed to demonstrate that the person with the cert can memorize material and take an exam.

  • http://www.ericswann.org Eric Swann

    Actually, I think the MCSD program really helped me when I was first learning .Net 1.1. For one, it gave me motivation to research a wide array of .Net topics I wouldn’t have otherwise cared about. Much of it didn’t apply to my then ASP.Net development job and it gave me insight into what else was available. Obviously you can just do brain dumps and take the tests, but if you really use it as an opportunity to research the breadth and depth of the framework it can be really valuable and definitely make you a better developer. It also did help me land jobs back then when the first web bubble burst.

  • Jim Cooper

    How exactly is a podcast “interactive”? Surely that’s only true if you’re in it, interacting with someone else.

    Listening to podcasts is not interactive in any way.

    In any case, they are usually poor vehicles for explaining technical concepts, IME

  • Andrew

    Brett,

    I’m not saying certifications are bad, I am just saying they aren’t good. Basically, I ignore them because I don’t feel they give any sort of indication if a candidate is going to be good or bad.

    For example, years ago I worked for a Microsoft Gold Certified Partner (or whatever we were called), part of our certification requirements were that we needed X amount of MCP exams between our employees. A few days before our partnership review we realized we were one short, so I went to Borders and picked up the Xml Web Services for C# Exam Prep book. I was allowed to take the afternoon off and I wrote the exam at 9am the next morning. My experience with webservices was very (very, very) limited at that time, but I still passed with flying colours.

    That is a rare case, but that has always stuck with me when I see certifications on resumes because I easily crammed for an exam using a book provided by the people who created the exam (I always thought that was a massive conflict of interest) and passed.

    Again, I’m not saying they’re bad, but they really don’t tell me anything about the person. If they want to show me dedication and commitment, show me that they are constantly learning new things or are part of a community. That impresses me.

  • http://www.grounding.co.za Brett

    I agree with persuing some certification, it focuses your path what to learn; especially if you do not have a starting point. Certification teaches technolgy\syntax it does not teach best practice, for this read blogs. Certification from an employer perspective indicates the person has been exposed to certain areas of the technology, albeit they may not be experts.

    @Andrew I could not disagree more about disregarding certification. It shows seriousness, dedicatin and some commitement on the individuals part. The trick however is in the interview phase is to determine wheter the person really learnt the technolgoy or braindumped it. I would far hire enthusiasm, dedication and commitment. However, having said this it is not mandatory and should not detract from a canditate.

    These suggestions are good.

  • http://www.pseale.com/blog/ Peter

    I’ll second your suggestion of having a side project; I just started one, and it’s been a) more enlightening, b) more fun than any other thing I’ve tried.

  • http://codebetter.com/members/jmiller/default.aspx Jeremy D. Miller

    @All,

    I certainly wasn’t trying to recommend certification efforts here for anybody but total newbies.

    @Andrew,

    There’s getting hired, but I was just as concerned with what will actually make you be successful when you do get that job.

  • Andrew

    When I hire, I ignore certs entirely. I’ve interviewed way to many people who have them who don’t know the first thing about development. I have two MCP certs myself and I remember how silly the exams were. Granted, I don’t think they hurt either and I’m sure there are plenty hiring managers out there (mainly those who’ve never written the exams) who value them.

    But I do think most of your points are good, but should probably be renamed “Revitalizing Technical Knowledge”. The reason I say that is I find that most interviews I’ve had over the past 15 years are by people who aren’t very strong technically. Sure, you get a few who are, but they tend to focus on silly questions about syntax.

    I yet to have an interview where I’ve been asked about general development principals.

    I’m not saying that is all bad, one benefit is that these are obviously companies that could use your help, and if you play your cards right you can definitely excell in that environment and really make a positive impact on their environment.

    All I’m saying is that a large portion of the companies hiring out there have never even heard of the SOLID principals, et al., so learning them won’t automatically kickstart your career.

    But overall, that is all very good advice for someone trying to get back into development after some time off.

  • http://codebetter.com/members/jmiller/default.aspx Jeremy D. Miller

    @karl,

    Years ago I took some of the VB6 MCP tests. As I recall, it was a whole bunch of rote memorization and trivial pursuit style questions. Nothing I’d put much stock into.

  • http://blog.elliottohara.com Elliott O’Hara

    I concur with everything, although I do question the value of certs.

    As an MSCD myself, I was kinda appalled at some the company I kept. However, I do think there’s (some) value in it, especially for junior level devs.

    Couldn’t agree stronger about the value of principles over technical expertise.

    I agree that reading is supplemental to actually getting in code, but I think it’s very important.

  • http://www.mknopf.com mknopf

    I have recently given several presentations on preparing for tech job interviews which should definitely help your friend. I’ve posted the article on my blog in both PDF and PowerPoint 2007 versions. You can find it at http://www.mknopf.com/articles/preparing-for-technical-job-interviews.html

  • http://computeristsolutions.com/blog josh

    personally, i very strongly agree with all these but not as strongly about getting a cert. I think its a good thing, but I’ve only ever gotten certs to meet department/personal goals so I don’t have as much stock in it.

    shameless plug coming..
    the friend could read my beginning IT careers post, but is probably beyond it if he’s been in dev before.
    http://computeristsolutions.com/blog/post/Beginning-IT-careers-for-humans.aspx

    here’s the for humans series; might have something interesting for your friend.
    http://computeristsolutions.com/blog/category/for-humans.aspx

  • http://codebetter.com/members/karl/default.aspx karl

    I’m curious, have you taken an MCP/MCSD exam?