Education

Four steps for transitioning from sys admin to developer

A TechRepublic member wants to know how to make the transition from a system administrator to a programmer. Read the advice Justin James offers to this aspiring developer.

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.
  • 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!

More career development tips on TechRepublic

J.Ja

Disclosure 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!

About

Justin James is the Lead Architect for Conigent.

18 comments
Tony Hopkinson
Tony Hopkinson

but if number 4 doesn't interest or appeal, don't bother you'll always be crap. You might get a job, but you'll never excel.

Baumann
Baumann

Obviously, this article is biased toward a web/business developer, on windows platforms for the most part. Right up front, I'll admit I have the exact opposite bias. I develop drivers, and OS level constructs - things that live either on the bare hardware, or just above. And *nix only. Under your "must have" languages - add, at a minimum, objective-C (mac devel), c++ (yes, long in the tooth, but still used quite a bit), C (see comments on c++) and perl. As far as history of programming.. why isn't Donald Knuth in that list?! And Kernighan? (you mentioned Ritchie, 1/2 of the K and R team. As in K and R C language) If you plan to do anything but web/business development, learn something about hardware. Even if you don't plan to do anything but web/business development, learn about the hardware. Each platform has its own strengths and weaknesses. You've already got a step up by being a sysadmin - you're aware of at least one OS's set of quirks.

Rolland St-Onge
Rolland St-Onge

Get yourself a web site where you'll put some code snippet on things mostly requested on the web. That way, people will have a chance to evaluate your work. If you can learn a few languages and be versatile, the better. But be carefull. Some companies will hire you for your programming skills at first but will require from you that you take-on some sysadmin responsabilities as well, it happened to me twice.

alexisgarcia72
alexisgarcia72

I encourage you to get at least basic programming certification like Lotus, VB or Java. Some hiring people see if you have a certification from SUN or Microsoft to see you are competent.

Justin James
Justin James

If you were looking to switch jobs from system administrator (or a similar techie but not programmer role) to developer, how would you go about doing it? J.Ja

Justin James
Justin James

Interesting alternative perspective! There was a reason why I said that it was a list for "typical enterprise development" and not a catch all list! That being said... I would never, ever recommend the work you are doing for an entry level person! The list has to be shorter than I wanted it to be... too little space. :( I also left out Ada Lovelace, Charles Babbage, Matz, etc. J.Ja

Snak
Snak

.... and the best programmer of all said 'I don't have any. I've always worked on the leading edge and by the time there's an exam or a course to be taken, I've moved on'. I'd employ someone who can demonstrate skill here and now, rather than someone with a cert who cannot. Exams are memory tests valid for the day of the test only. I guess I'd make a lousy HR Numpty :)

Tony Hopkinson
Tony Hopkinson

anything. One of the key things that marks a real developer is the ability to program in any language. Syntax and semantics are leent by using them on a regular basis. The ability to construct a coherrent and accurate sentence that communicates the intent is the real skill is programming. Development is something else again as that is synthesis, being able to write a for loop or a while loop are tested, which one to use is generally not.... Those some people should turn over hiring responsibility to someone who is competent.

dlovep
dlovep

When you can learn something relevant to what you're doing it's already good enough, you knew how to manage Linuxs, Servers, think about what you could develop in order to advance your tasks/abilities. Script a program to schedule update tasks from SQL/MYSQL servers, from that build a website to read/write those data you get from forms and formalize the data before you update, generate reports from the DB server, then you're nearly there. After you achieve all these, you already knew from back to front, front to back. Lastly, learn to put the BI inside those forms,reports in your website, you then can call yourself solution provider. It would be far better than just a developer for specific platform(S), those dev(s) will earn much less than you. If you cant sell your solution, you need to learn a sales lesson and go ahead. What ever languages you like and can solve problem will do, need not C, C++, I saw even just EXCEL with MARCOs makes better profits in financial sector then what most genius C, C++ programs can earn.

alexisgarcia72
alexisgarcia72

in development the certs are not as important as in network admin or security. I worked in big projects in the past and I see normally lot of technicians and engineers with NO certs who spend lot of time on issues where the cert guy go for the short and professional way. SOmetimes the cert proove dedication and knowledge of the tech guy. This is a fact.

alexisgarcia72
alexisgarcia72

I have a friend who is master in JAVA and LOTUS programming. His LOTUS certification jumped him to a very good job with very good payment. He work mostly in JAVA but the LOTUS cert was the difference in the hiring process.

Rolland St-Onge
Rolland St-Onge

I have no doubt that some individuals have their certs at hearts and do acquire some knowledge while studying for them. As you said, the certs requirements is more evident in the networking/DB/security fields then in the software development. With that being said, some businesses will demand certifications in their job requirements but are willing to overlook that requirement if the person in front of the hiring officer is capable to present itself with a bag full of experience. Here in Montr?al, Canada, most developers required to have a certification of any king in the field usually acquire them while on the job. Some company's policy allows them to get trained and certified for the job. It is in fact a govn't policy that every business must set aside a part of their net profit for training. Still, the certs requirement in the field of software development and programming is not always recognized and/or required by all business. As a matter of fact, the type of business requesting certs are mostly programming shop, whether it's web or application developement. In the retail business (where I work), the need for certifications is almost non-existant. I'm sure it is the same for other type of businesses. Still, there is a value added in the certification process which can only be acquired while studying for them and it is recognizable in the individual who takes hearts in the lessons learned.

Tony Hopkinson
Tony Hopkinson

on confusing your man's skill with a bit of paper. You can learn that sort of thing without the cert, and unfortunately you can get most certs (from just pretending to cram to bootcamp) without any real talent. Optimising is a case in point. Optimising for what, performance, resources. Optimising in a managed environment is very different in places to an unmanaged one. Optimisation is also always a trade off, setting up every you might need slows startup and increases foot print for instance but but gives you the fastest execution times you can get once done. How is tools, when is an art...

alexisgarcia72
alexisgarcia72

is rare, is real life stuff. He is working today in a good position because the certifications. When he apply for the job, three guys with the same "level" of knowledge, expertise apply too. they all pass the exam with flying colors. All three guys have a degree but the difference was he have JAVA and LOTUS certification. The other guys don't have nothing. My friend is a crazy java programmer, he made real good stuff and he one day explain me in the certification training he learn a lot about code optimization and security.

Tony Hopkinson
Tony Hopkinson

a certain level of ability. As soon as you provide formal learning to pass the exam, instead of gaining the ability......

Jaqui
Jaqui

"HR numpties" but then, I agree that certs are meaningless when it comes to actually doing anything. :D

Tony Hopkinson
Tony Hopkinson

I didn't say the the certs didn't have value in the hiring process, I said they didn't have value in terms of assuring that the person with it can program... Simple limited examples where the answers can be learnt by rote, where the questions in order to be unambiguous are pretty much the answer. By all means get one if it will get you past the HR numpties. In programming language is the tool not the skill..... Ask your mate, he'll agree.

Rolland St-Onge
Rolland St-Onge

Most certs are useless with companies since they are looking at level of knowledge (how many languages), hand-on experiences (how many projects) and skillz (quality of codes snippets or apps).