I've got a secret.
It's not a bad secret, I didn't kill a hobo or anything.
And it's not a particularly well kept secret - lots of folks who know me have heard about it.
Although I've been a software development professional for nearly 20 years - my degree was in History.
Why am I going public with this confession? Because one of the things which has happened in the course of my software development career is I'm occasionally hit up for career advice - often from people who have a stronger foundation than I did starting off. I'm always happy to oblige with whatever meager insights I can offer; but I sometimes feel I need to qualify it with the fact I fell into this career by happenstance. I'm very glad I did, too, because I've enjoyed myself and had a bit of success in the process.
So when I got an email recently from a member of our local user group asking what skills have helped me my career I thought it would be a good topic to cover as I rediscover my blog.
It's a pretty open ended question when you think about it. One I would probably better be able to address in a conversation rather than an blog post. But there are a few things that I can put down which might help him out.
The first thing that I thought of was a post I did several years ago that covers a related topic, staying current. The post is http://bigpigvt.blogspot.com/2009/01/keeping-current.html. It's a little dated, obviously, but staying current from a technology standpoint is very important. One update from the original post, too, is my participation in the user group directly lead to my current job. The few presentations I did combined with actively asking questions during others' presentations raised my visibility in the local development community. My current employer knew about me before I knew about them and that gave me an edge in the job hunt. Local user groups are also a key opportunity to build and maintain your professional network.
Another thing I believe is nothing beats experience. Getting a programming position if you are not already doing it professionally - after college or during a career change - can be challenging. You're up against a lot of candidates. One way to differentiate yourself is to have a history of actually coding. There's a bit of a chicken and egg issue there, though; how do you get meaningful programming experience if you're not already in a position? During my tenure as a hiring manager I would advise inexperienced candidates that one approach to that dilemma would be to begin contributing to an open source project. It will expose you to programming skills and techniques that you won't get from books or many tutorials. Once your contributions are actually folded into the project you'll be able to cite those contributions to a potential employer. So go to http://www.codeplex.com/site/search/openings, http://sourceforge.net/people/ or other open source option and get coding!
Finally, what worked for me, and this is definitely because of the non-traditional trajectory my career took, was to be patient and not expect to be programming straight away. The reason I said I have nearly 20 years as a "software development professional" and not as a "programmer" is because I started out doing customer support for a software company, transitioned to being a software analyst, transitioned to a developer analyst and then finally into a full-fledged programmer. For me, the process took about 3 years but it was worth it. My understanding of the software development life cycle is thorough and based on experience.
So now you know my secret. It's just between us, though, because my other secret is nobody really reads this blog. :-)