IT Policies

Three ways to gain programming experience

Justin James offers advice to a reader who needs experience but can't find work because he has very little on-the-job experience. Check out these recommendations for picking up programming experience -- sometimes even without having a job in the field.

 

A TechRepublic member is trapped in the chicken/egg situation that far too many entry-level IT programmers find themselves in: Businesses do not like to hire people without experience, and many businesses are not willing to train. If so many companies aren't open to hiring people without experience, how does someone get experience? Unfortunately, this scenario is a major issue for many IT pros.

In my long running, back-and-forth discussion with this member, here are three ways I suggested that he kick his career into high gear.

#1: Work for free (or close to it)

While the corporate world may not always be eager to hire people with little or no experience, the non-profit world is often delighted (or at least willing) to take volunteers with little or no experience. I got my start as a programmer in high school by volunteering for a local home for developmentally disabled adults. I worked on Excel spreadsheets to manage their finances, I put together a Web site for them, and so on. Was it glamorous? Heck, no. I was working for free on my afternoons and weekends. The only perk was that the place had a stocked pantry that I could hit whenever I wanted. Aside from the emotional satisfaction of doing something positive for the community, it gave me experience that I could put on a resume, and it gave me a reference. Some non-profits will be able to pay you a small amount of money.

And there are plenty of open source projects that can use some help. Or, you could pick up an "abandoned" open source project and revive it. Open source work is a great resume builder.

If you can't find a local charity or non-profit, maybe you can work for family. Perhaps a relative has a business that needs some programmer work. Offer to do it for free, and I bet that you will find that Uncle Jimmy or Aunt Betty would be delighted to have you on the team.

#2: Work like a dog

If you want to get ahead, you're going to have to hustle; I haven't met any developers who were handed opportunities on a silver platter. I suppose a few developers got lucky, and maybe a relative hired them at a very nice salary right out of school. And a few other developers managed to get great internships that led to other good opportunities. But for the vast majority of the people currently in college or just out of college, the only way to differentiate yourself and get the experience is to work, work, work. Period.

Your boss probably won't let you spend huge amounts of time writing code instead of manning the help desk. So, if you want to turn that help desk job into experience developing software, you're going to have to make the time. Code through lunch break? Check. Work after hours? Check. Plan and develop at home? Check.

I know, I know... working for free and working more than what is expected of you doesn't sound like much fun. It could be worse, though. Ever look into what doctors do during their residency (not to mention their pay)? Think of this period as your residency. You're going to bust your buns for a few months or years to get some experience, and your next job, though it may not be any easier (it won't be), it will likely pay better.

There are ways to get experience and get paid; the trick is to sneak in through the "back door" of employment. For example, I had a job where I was doing network management and monitoring. It had been a few years since I had been a professional programmer, and I knew I wanted to get back to it. But between the fact that most of my experience was in Perl (which was fairly dead by that point), and the years since I had been programming, I knew I needed to freshen my experience before I would be employable. So what did I do? I started writing applications to help my department in my free time; on occasion, I would even write code while not on the clock -- all to get some experience under my belt and a reference.

Maybe you can't get a job as a developer, but you might be able to get a job as, say, a desktop technician or in the help desk. From there, you can start flexing your coding muscles and either build up a good resume and leave or get promoted. In fact, working at a help desk or as a desktop technician (or a "computer operator") is one of the oldest ways of getting your feet wet in this industry.

#3: Work at home

Maybe you can't find anyone willing to let you code for free. Perhaps there is no way that you are able to fit programming into your nonprogramming job (such as an hourly worker who can't get authorization for overtime). That's where your home comes into play. If all else fails (or to supplement your existing efforts), do some work at home. Find an application you really like and write your own version of it. Or, think of an application you always wish you had and write it.

When you work at home, try to emulate software development in professional environments as much as possible. Write a project plan, create unit tests, set up a nightly build, and so on. I guarantee that you will become a better programmer for it, and you'll have something to show perspective employers, which is actually quite important.

I have never worked somewhere where I could take my labor and show it to potential employers. Not only would it violate my employment contract, but it would often violate my employer's contracts with their customers. But when I do something at home on my own time and on my own dime, it becomes something I can show to potential employers. For example, I wanted to get a job doing more Web development and less Webmaster work, so I put together a Flash presentation that had highlights from my resume, quotes from my references, and so on. I even packaged it in a nice CD case and gave it an Autorun launcher, so potential employers could just pop the CD in. The CD got me a job in the middle of the dot-com bust in an instant. It was a real game changer.

As someone who has been on both sides of the interview table many times, I can tell you that it's impressive to have a candidate come in and talk about work they're doing on their own. Does it get the same level of consideration as paid, professional work? Sometimes. From what I can tell, doing "real work" on a credible open source application is just as good as a paid job; the only time it can hurt you is if the application is awful, and you show it to the interviewer anyway. So, yes, this is another "work without pay" suggestion, but it's often the only differentiator between you and the two dozen other entry-level developers who apply for the job.

Related TechRepublic resources

J.Ja

Disclosure of Justin's industry affiliations: Justin James has a working arrangement with Microsoft to write an article for MSDN Magazine. He also has a contract with Spiceworks to write product buying guides.

---------------------------------------------------------------------------------------

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.

62 comments
lunascii
lunascii

" Your boss probably won't let you spend huge amounts of time writing code instead of manning the help desk."

Mine does though. This describes me perfectly.

DComander101x
DComander101x

If anyone needs programming experience, My Open Source project - FreeOS/1 - which is a re-do of DOS, to support multi-threading, and other newer technologies, along with adding compatibility to run Linux programs as well, needs some help, as very little developers have showed any interest in it unfortunately.

tomde61
tomde61

I believe these are good ideas for any career in the IT industry. This to me is a "you get what you give" scenario that sounds like (pretty sound) advice in getting in the door and creating a starting point for a career. Excellent way of receiving experience and helping the community at the same time. Nothing good comes cheap, free, or without sweat...

ojemuyiwa
ojemuyiwa

Excellent!!! You summarised it perfectly.

dhev.dba
dhev.dba

I'm a entry level programmer. You did a great job. Sure I'll do it. Sorry. I'll Achive it.

monica downunder
monica downunder

Yeh, set up a website. You have to work on a real one otherwise you just can get everything into play. Do it for an non-profit organisation, e.g. your church or club, or any one in your area. I'm not a web developer but I started off setting a website for my church in full plain html files. Later, the maintenance headaches came upon my head and I was forced to learn and use a content management system to re-design the site. Learn the CSS in the hard way and now I have to learn photoshop to add graphics to it. Indeed I can put all these into my resume when I retire from my present job. Monica

RayJeff
RayJeff

Is it more important that your work has to be a completed piece of work or is it more important that the work is showing your experience period? I would think that being able to show the range of your work, say a program developed in Java that shows the range of Java skills would be more beneficial. I'm not saying that said program looks like the Where's Waldo picture, but with showing basically that the program works.

blackfalconsoftware
blackfalconsoftware

I completely agree with all the suggestions presented here. However, most of the suggestions seem to be relavent to those already in the field at some level. I can't tell you how many times I have offered to mentor a new person recently graduated from university who wanted to get into development only to be turned down since there was no immediate money in it. Like most senior developers I am always working on my own projects all with the hope that I will be able to promote them on the Internet and\or get my small business off the ground. However, with a day-job it is difficult in terms of starting a business but I am always busy with my own development. Years ago, when I worked with dinosaurs in the cubes next to me, all of us, including the dinosaurs, saw individual initiative as the key to successfully entering the IT field and maintaining your edge. Now most newcomers simply want to be paid before they will put a line of code into a computer... internships

mchargue
mchargue

My issue is I've been doing this for a while but at less than senior level, but there is no senior level where I work, I am "it". So how can I get to the next level? I suppose the same principles apply, just "on steroids."

rick
rick

It sounds like I followed almost the exact same path as Justin and many others. My first real project was for a non-profit. It was unpaid, and I spent many long nights at home learning code the hands on way. Although I didn't code over lunch, I did read coding books. My first "paycheck" came from taking the company website of one of my classmates and redoing it on a demo server. The company liked some of what they saw and implemented some of our "upgrades" on their live website. In return, they sent me a coffee cup with the company logo. I still have the mug today, and it reminds me where I came from. But, because I was willing to put in a lot of hard work, I was the only one out of my class of a dozen or so to land a "real" coding job out of college. None of the other people were willing to put in any real work. They had the typical college attitude that they were going to be weeding thru all these $175,000/year jobs that would be thrown their way just as they finished coasting thru college. They all hit this brick wall and instead of swimming, they sunk. They all went back to being bus drivers etc. Nothing wrong with driving a bus unless your true ambition is to be a computer nerd :)

mattohare
mattohare

In some States the laws are very picky about paying you for all the work you do. Especially the overtime laws. Some bosses will actually sack a person doing work off the clock to avoid getting fined. A way to bridge this for me was to do all the learning and a bit of practice off the clock. I was efficient enough at work with my duties to be able to develop in spare time. The tools I developed would cut the amount of work I had to do down, and I got more development time. Finally, document all of your projects clearly. My best friend and I both got massive promotions when we left and we had to do the knowledge transfer in the exit interview.

damon.mac88
damon.mac88

Nice article, i think it really is a story of a self made developer who works out from bottom and reaches the position where he once wanted to be. Even im spending my time developing either at a really low price or else freeware softwares.

JohnOfStony
JohnOfStony

The one problem with practising at home is the software development environment. Although I'm not a Microsoft fan, they do supply "Express" versions of Visual Basic and SQL Server free to download. You can't make distributable software but you can write anything you like to run under the development environment. So getting your hands-on experience with Visual Basic or SQL won't cost you anything - assuming you already own a computer. Then there's Open Source development, but by adding Microsoft programming experience to your resume, you'll widen the market for your skills.

douglasgross
douglasgross

You got it right. People that are willing to pay want to see examples of your work. You have to get started doing whatever you can for free, and you have to utilize as many skills each time you make a site that you can. Maybe you don't have to use a server-side language for a site, but you can think of ways you could do it. So, then do it. Maybe you don't need to go that extra mile for a simple church site, but you can think of ways to make the stretch. Make the stretch. I have been graduated for a year with a web development degree, and I am still doing self-study and working for free. The road to knowing all there is to know about web development is long, and you got to keep busy doing sites whenever you can. Without examples of your work, an employer is blind to see what you can really do.

mikifinaz1
mikifinaz1

Work at a charity, connections work, work in a related field like software test, help the programmers, get into a mentoring program, and so on. I did it through test. First black box, then automated testing, then white box then helping with bugs and finally maintenance, which lead to programming new stuff and system design.

Leon Dudovich
Leon Dudovich

I dont understand what is this three way for? I think one of eathier way to make a websites its to use one of website builders like www.site2you.com and dont blow your mind for learning all this programming stuff.

Maarek
Maarek

that's the 4th. for small businesses looking for engineers, those are the best starting blocks. Yeah working for free works, but only for Schools, fundraisers, and other non profit organizations. They will blab about your work everywhere.

Sterling chip Camden
Sterling chip Camden

I started programming to pass the time while working as an operator in a data center. When they first discovered what I was doing, they shut me down because I was using too much disk space. Then they relented, and put me to work on various small projects they needed done. Next thing you know, I was a programmer.

Tony Hopkinson
Tony Hopkinson

discipline in the real world. Whether you can and have becomes very obvious after about five minutes explaining what you've done. So if you've done nothing.... NB classwork snippets don't really count. It's not knowing how to maintain a list in a circulr array that counts. It's whether you can or should use one and why....

Jaqui
Jaqui

in the work for free category. work on a Free Software Project [ aka Open Source ] That way you can get experience that directly feeds into your primary interest.

Garion.kong
Garion.kong

@tomde61

I agree that these principles are true and applies to any career specialization in the IT industry. You just need to put in that extra bit of effort to differentiate yourself from the others.

Tony Hopkinson
Tony Hopkinson

Unless you are targetinga particule role, for business work Get the three or four layers in. XMl file(s) or a db, a business layer and CLI /GUI Show that you've thought about in terms of separation of concerns, robustness. Code readability. May be something very simple, and then a later version, and how your design made that possible. One I was asked to do but worked out very well was bin packing algorithms. The persisitance was config, business layer the various versiosn and then I did a little UI and created some user compoents to demonstrate it. I was impressed.

Tony Hopkinson
Tony Hopkinson

How anyone can call themself a programmer, when they don't do it for the shear fun of it is beyond me. I'll take guy who's experience is writing Tic-Tac-Toe in VB6 at home over some twit with a CS degree who thinks IT is where the money is at.

Justin James
Justin James

I have found that the following things can bring you to the next level: * Do the job that you want, in addition to the job that you have. Eventually someone will notice, and you'll get the official promotion to the job you've been doing (and hopefully the raise). If not, your resume will be all the stronger. * Study/practice at home. "On the job training" doesn't exist in IT, other than, "here's some shoddy documentation and a half finished project, you have two months to get it live". Learn new tricks at home, and bring them into the workforce. If you aren't "officially recognized" (raise/promotion), your resume is strong to send you out the door. * Free/cheap work. If you are a Java shop, and you want to transition to being a Ruby developer (just picking two languages from a hat), you'll need some serious Ruby experience if you want to maintain wage parity when you make the leap. The only way to get that experience are "real" projects in Ruby. Open source, volunteer projects, etc. It's really all the same principles as the article, but you are right, it needs to "be on steroids". Simply put, to break into the field initially, you just need to demonstrate some experience in things you already know. To step up to the next level, you need to learn a pile of new things, *and* demonstrate the skills. J.Ja

Tony Hopkinson
Tony Hopkinson

there. There are couple of threads somewhere in JJs progamming blog. One on how to progress from junior, and another about what makes a senior developer. Whether you feel you 'qualify' or not (job title is irrelevant), you'll have to figure out. You are right that Experienced Senior though, I met more than a few Developers with a decade in who never really stretched themselves after being promoted from Junior. I was doing the job twelve years before I got a tile with Senior in it, about nine years after the fact...

Tony Hopkinson
Tony Hopkinson

no experience about anyway. Those that there are, if you have none anyone who can show a working version of hello world is going to be in front of you. Worse still they could be "unqualified" .... Getting something real done while studying is no longer an optional extra, (if it ever really was). Even if your Dad owns the firm, he would prefer a bit of proof.

jk2001
jk2001

I was thinking about time management on my way to work (after waking up late, LOL). It's important to "clock out" at 40 hours a week, and immediately jump into your own work, on your own computer if possible. Time management is really important to get ahead. Everyone who is into their "career" knows this. (That's why it's a big deal to me, because I'm not a great careerist :) My current job is pretty cool, but, the management don't really understand FOSS, and most don't really understand what programming and automation bring to small organizations. They seem to like the end results, though. Still, I got some push back about picking up mobile phone development. Additionally, it's not possible to develop something quickly that'll give them rapid ROI on mobile phone dev. (We have too many different platforms and too few users. The market is also diverse. Training time is loooooong.) So I'm dropping the issue of mobile phones within the organization. However, I'm being good about stopping work at 5 pm. At 5, I hit my personal mail, get through it (I don't check personal mail at work, for the most part.) Then I study mobile phone development two or three days a week. I'm NOT working on any project related to work. That's for the good of the organization - they need to learn to value the cost of development. Besides, a niche intranet app is boring, and a little mobile phone game or networking app is not. I do this stuff for fun, too. Mobile phones are a pretty open field right now. There are numerous platforms, and the dev tools are (somewhat) free because of the competition. Your main expenses will be your computer and, probably, a big monitor because these newfangled "IDEs" use a lot of pixels. :-)

Justin James
Justin James

Yeah, that's a fine distinction there. Something I learned along the years is that in most places overtime must be "authorized". In other words, if I decide to sit at the office on something and my boss is not aware, and I submit a timecard with OT on it, he has the right to reject it. All that being said, I suggest that if you decide to work at the office on a non-mandatory item, you can try to ask for OT, but do not be surprised if you end up spending "personal time" at the office. In my experience, spending time at the office working "for free" is often not a bad deal... it tends to lead to promotions and/or resume building, which always pays in the end. Either way, it's going to pay more than sitting at home watching TV. J.Ja

ultimitloozer
ultimitloozer

You most certainly can write distributable software with the Express editions of these tools. I've used them to create custom apps for friends and family without the need for them to install the development environment.

JohnOfStony
JohnOfStony

Leon Dudovich wrote: "I dont understand what is this three way for? I think one of eathier way to make a websites its to use one of website builders like www.site2you.com and dont blow your mind for learning all this programming stuff." There have to be programmers to write the tools you suggest. Also you obviously haven't realized that programming is fun - getting a machine to do exactly what you want it to do can be very satisfying. By the way, what does "eathier" mean?

Tony Hopkinson
Tony Hopkinson

Three ways to gain programming experience Your option is to use something where you don't need any? Which by the way isn't true. Sitebuilders are to some extent programming languages/environments. If you put togther a home page, with links to a bio, family snaps, feedback and your resume. Or you write a C# program, with main form, a menu or tool bar, and then separate forms to do the other functions. It's functionally equivalent isn't it. If you were applying for a job where programming was a key part, expereince with a site builder is n't going to be the top of the list of wants though. From a graphics and design point of view it might be a good choice (given you have some freedom in the application), for programming though, almost certainly a don't call us we'll call you.

RayJeff
RayJeff

"Your boss probably won?t let you spend huge amounts of time writing code instead of manning the help desk. So, if you want to turn that help desk job into experience developing software, you?re going to have to make the time. Code through lunch break? Check. Work after hours? Check. Plan and develop at home? Check." It was by sheer amazing luck. I was hired to work at a small liberal arts college in their Education division to managed a computer lab (one person operation). What I didn't know at the time that the teacher education program was going trough a national accreditation. Also, I didn't know part of the accreditation process was that the program had to move all of its data from paper to electronic...meaning database. I had some minor experience playing around with creating a very small database for the last job I was on using Access (started off with an Excel spreadsheet). But, on the scale I had to develop the database, never. Then, along the way when I found out that the faculty in the division would need access to the database, than I thought user interface.. SO, at the same time I was developing the database, I started work on the user interface created with VB 6. I wanted to do it in Java, but because of time constant, went with VB and in the future I was going to convert to Java. All of this was an almost 3 year process. It was a great experience because I had no help with the actual work, it was all me. And I got to experience the good and the bad...experience the "this is not what you are supposed to do" when programming. I needed that experience to learn. I got lucky with that opportunity. And I've been using it to offer up programming solutions for friends of mine who work for themselves or who are educators. What teacher wouldn't love having an Excel spreadsheet to hold their grades but don't know how, don't have the time or don't remember Excel past passing that sometimes only computer class they ever had college.

Justin James
Justin James

Jaqui - "And there are plenty of open source projects that can use some help. Or, you could pick up an ?abandoned? open source project and revive it. Open source work is a great resume builder." Second paragraph of that section. ;) J.Ja

RayJeff
RayJeff

I can definitely go with that and agree with you. The database/user interface system that i mentioned before is a working program. I've been working on it to make it a more general type system, because the original system focuses on information management in higher education (academic, student, faculty, school district, etc).

Sterling chip Camden
Sterling chip Camden

It's that driving curiosity that finds new ways instead of slavishly following the 'correct' ones.

RayJeff
RayJeff

*rofl* *rofl* I'm sorry, Tony. I really needed to read your comment. I mean, you gotta love those guys. I don't know whether to be sorry for them or to sorry for them

jk2001
jk2001

I think it's important to develop a set of outside skills that you really enjoy. I like the whole old-school MIT/functional programming/FOSS/Perl universe of technologies. It's my background, and, frankly, I enjoy the development environment more than any other environment. While I know Windows from NT to (a little) Vista, and ASP, VB, and some Win32 C programming, I try to go for jobs with a FOSS component. So, to pad out the resume, instead of learning more C# or .NET, I learn Haskell, so I can say, "well, I can write some toy programs in Haskell, but nothing real." It's an exotic language that would appeal to someone interested in CS and performance. It's also fun to learn - a real mind bender that will improve your code in other languages. There are other exotic languages that look cool: haxe, lua, erlang, ocaml. Follow your bliss!

Sterling chip Camden
Sterling chip Camden

When I was an operator and had barely figured out how to write a program, all of the programming staff quit within a couple of weeks (bad boss). Suddenly I was senior (though not in title). I read tons of source code and figured out a lot on my own. Not always correctly, but I got 'er done. That was the single biggest boost to my long-term career.

RayJeff
RayJeff

That was the trade-off for me. The project that I mentioned in my other post was like that. When I was originally hired by the college, I was working part-time 20 hrs a week. When I started officially working on the accreditation project, I didn't officially start the database development until like many a month later. Of course we in this work area know that programming take alot long than just a few hours in the day. And along with my other duties of managing a computer lab and be the helpdesk person, I didn't have a choice but to spend person time on and off the clock, there and at home to develop the database and the user interface. AT that employer, part-time means no benefits at all, including not getting overtime pay, as with most jobs if u work part-time. But, because I was a salaried employee, that a whole different ball of wax. It took about a year for my supervisor and the division chair and a consultant that the division I was working for had hired for the accreditation project to literally put the college president in a corner to make him change my contract to full-time status to give me the time I needed on the development. Well, it gave me the extra time that I needed? Not really. because I was already working that extra time. In the beginning, my supervisor and I talked about it in detail; I explained to her that I would need extra work time. And of course she gave me the spiel about I wouldn't be paid for it an all of that, but I didn't have a choice. I had to play catch up on about 3 years of work and then had less than 2 years to apply that work into a running information system. I didn't have a choice. If I hadn't done it, it would've never been done. At the end of the accreditation process and the actual accreditation visit was over, I wrote a memo to several key people letting them know I needed to keep my full-time status, as in my modified contract that after the accreditation was over, my contract would revert back to the part-time status. The memo was to let them know that shouldn't happen because the work on the database system would REALLY be starting. That is when I can look at the database and look at the user interface and make the necessary corrections and modifications. And what do you think happen..? Nothing, My contract wasn't revised at all. I was pretty much pimped. But in the end, it was a trade-off where I got the better end of the stick. Experience that can never be taken away from me.

Tony Hopkinson
Tony Hopkinson

:p Can't distribute without breaking teh license agreement, might have been a fuller description...

ilyaskazi
ilyaskazi

Your story is similar to me... I was appointed as a Data Analyst and within a year I became software programmer using VB 6 and Excel programming. This was then all 3 year process I upgraded my skills and knowledge in programming world. Now I am a web developer using PHP, MySQL technologies........

csmith.kaze
csmith.kaze

the same thing about open source, then I reread the first one. My mistake. I think Open source may be easier to get into than finding freelance work, at least around here.

Tony Hopkinson
Tony Hopkinson

Being able to work 'off line' using something like CECompact and then synchronising. Another is parking the db behind a service (your own , or a webserver) ie making the client totally storage agnostic. (except when off line maybe) A document or property bag solution with an OODBMS is a goodie as well. All challenging enough even with a very simple system even Customers Addresses, Contacts type example)

Sterling chip Camden
Sterling chip Camden

Good ole CL has been a real eye-opener for me in the last couple of years. I can't name all the ways it's changed my perspective on programming.

Tony Hopkinson
Tony Hopkinson

I categorised myself as senior when I realised I was being given programming jobs no one else there had a clue how to start. Started as a data entry clerk, lots of play and study to counteract mindnumbing borredom. Then took that massive step up the ladder to the heady heights of "Junior Support and Development Technician".

darpoke
darpoke

Seriously though, that was comedy gold. Nice one. :-)

JohnOfStony
JohnOfStony

Would you call people who can't get past character 140 "twits"?

Sterling chip Camden
Sterling chip Camden

Just post a subject line matching the pattern (microsoft|linux|apple) (rules|sucks) It doesn't matter what you write in the body.

bfpower
bfpower

I almost lost interest by the end =)

csmith.kaze
csmith.kaze

i don't get to character one. Im a subject-line commenter :)

Sterling chip Camden
Sterling chip Camden

Most Internet readers can't get past character 140 before they have to comment.

Editor's Picks