A TechRepublic member wants to know how to make the transition from a system administrator to a programmer. The good news is he already has some development experience:
I've been wanting to make a change of career, from system administrator to software developer, I have some Python script experience to automate tasks with Linux and I have been studying OOP paradigm, GIT repository use and Django for web apps development, most of my experience is of course managing, configuring and installing Linux services.
I wonder how I could make my resume and cover letter more appealing for a company with my experience being more on the side of sys admin than developing.
I'm looking for an entry level programmer job!
This member has already given himself a good foundation by learning Python and "hygiene" practices such as using source control. I have not used Django, but I hear good things about it. He's also being realistic about his abilities and seeking an entry-level position. So, what can he do to take this decent start and turn it into a change of careers? Here's my advice.
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.
- 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
- Unit testing
- Second-level languages such as Python, Scala, and Ruby
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.
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!
More career development tips on TechRepublic
- Five tips for starting a programming career
- Three ways to gain programming experience
- Write a resume that will land you a programming job
- 10 signs that you aren't cut out to be a developer
- How did you get around the no-experience barrier?
- Job snapshot: Programmer
- If you don't have a mentor, now's a good time
J.JaDisclosure of Justin's industry affiliations: Justin James has a contract with Spiceworks to write product buying guides; he has a contract with OpenAmplify, which is owned by Hapax, to write a series of blogs, tutorials, and articles; and he has a contract with OutSystems to write articles, sample code, etc.
———————————————————————————————————————————-Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!
Justin James is an OutSystems MVP, architect, and developer with expertise in SaaS applications and enterprise applications.