Wednesday, July 14, 2010

Four steps for transitioning from sys admin to developer

Step one: Focus on must haves and differentiators

My career development mantra is simple: obtain the “must haves” and focus on the differentiators. For typical, enterprise development, the must haves for an entry-level position are:

* One or more of these languages: VB.NET, C#, PHP, and Java
* Working database/SQL knowledge.
* Version control concepts.
* JavaScript, HTML and CSS basics.
* Web services (SOAP or REST).
* Web development basics (understand sessions, the Web development model, etc.).

The entry-level differentiators are:

* Experience on a real-world project (this is the most important differentiator)
* Version control hands-on in a team environment
* Working in a team, preferably with a formal development model and defined hierarchy
* QA
* Unit testing
* Advanced JavaScript, HTML, and CSS
* Second-level languages such as Python, Scala, and Ruby
* Debugging

Step two: Contribute to an open source project or volunteer

My next piece of advice for building a development resume will not surprise regular readers: find an open source project that you can contribute to, or donate your time to a local charity to perform programming.

At this stage, if you go the open source route, find an existing project instead of trying to start your own; when you do, inform the other developers on the project about your skill level and ask if they would mind holding your hand a little bit.

If you volunteer for a charity, make sure it has programmers you can work with and learn from. Keep an open mind and listen to their advice; if something does not make sense, ask them (in a nice way) why things are done like that so you can learn from them.

Major benefits to this approach

* You will gain valuable experience that would take much longer to learn on your own. After six months or a year of donating your time (say, five to fifteen hours a week), you will have a very impressive skill set for someone who is entry level, and your resume will look great. The best part is that it won’t cost you a dime!
* You will get a really good idea about your strengths and weaknesses and your likes and dislikes (which are not necessarily the same as strengths and weaknesses). You’ll also discover whether this really is a good career choice for you.
* You won’t be throwing away your current career during this process. If the economy was what it was four years ago, it would be much easier to throw caution to the wind. But right now, the job market is still very soft in many areas, and I would not be hasty to make a sudden career jump without really knowing if I was well suited for it, since the prospects of finding another sys admin job are diminished right now.
* This will differentiate you from the hordes of other entry-level developers who just got out of school and are looking for their first jobs. For some reason, the overwhelming majority of college students have this strange belief that they can go to college for four years and flip burgers for pocket money and still expect to have a career waiting for them when they graduate. In 1998, when kids could drop out of college and make $50,000 a year just by knowing HTML, that was actually true. To make matters worse, most colleges leave out a lot of the skills that programmers really need, such as working on a team, development methodologies like Agile, leveraging source control, QA, etc. Employers are looking for a much deeper skillset than they were 10 years ago, much of which can only be learned in the real world and that’s a significant challenge for the majority of entry-level employees.

Step three: Get active

If there are local developer groups in your area, get involved in their meetings and get to know the people there. You will learn a lot in the pre-meeting and post-meeting time just talking to people. Let people know that you are trying to learn, and I promise that they will be eager to share their knowledge with you and offer suggestions.
Step four: Study the history of development

I like Wikipedia as a resource to learn about the history of development. If you spend some time reading about Grace Hopper, Alan Turing, Alan Kay, Larry Wall, Dennis Ritchie, Paul Graham, and John McCarthy (to name a few) and what they did, you will have a much better foundation for future learning than most of the programmers I meet.

I know that I’m a better programmer because I learned this history. This knowledge also helps me see when we are reinventing the wheel (for example, Web development is a bad case of déjà vu for anyone who has been around the industry for more than 30 years).

In addition, you will also be better able to tell the poseurs from the “real deal” when you meet people who offer to mentor you.
Summary

By following these steps, you will build on your existing IT foundation, and you will be in a much better position when hiring managers look at your resume. When you interview, emphasize that in your existing career, you have learned great troubleshooting and debugging skills as well as how to research issues; this is something sorely lacking in most entry-level programmers.

The most important action you can take is to get hands-on, real-world experience under your belt, and the best way to get it is to volunteer your time. Many companies hate taking chances on new programmers and, by getting that experience, you look like a much better candidate.

Best of luck!

No comments:

Post a Comment