Software Development

Five tips for starting a programming career

If you're hoping to become a programmer, you'll probably have to find some creative ways to gain experience and become marketable. Justin James shares some practical strategies for getting your foot in the door.

TechRepublic member steven.balderrama posted a question in our Forums and asked whether he is ready to start his career as a programmer. He has spent a lot of time teaching himself C#, and he's beginning to learn WPF. In addition, he is currently working in the networking field, so he already is familiar with the IT industry's general challenges and rewards. Based on his information, I think he's ready to venture into a professional development gig. Here are my suggestions for how he can accomplish his goal.

Note: These tips are based on an entry in our Programming and Development blog.

1: Learn the fundamentals

Many people who teach themselves programming have a blind spot when it comes to the fundamentals. The mindset that drives someone to teach themselves programming is one of motivation and the desire to "do something now." This is a great attitude to have! Unfortunately, the desire to learn new things often leads people to run before they can walk when it comes to basic principles. (I know this from personal experience.) This is why a stigma is sometimes attached to self-taught developers.

Be sure that you learn the programming fundamentals. This includes variable naming, proper program structure, when something goes in a library as opposed to the application, and so on. The typical "How to program in XYZ" books often gloss over how to perform the problem solving necessary to be a top-flight developer. I recommend going through something like Structure and Interpretation of Computer Programs by Abelson, Sussman, and Sussman, which will go a long way in helping you get up to speed.

2: Work on more projects

The more experience you have under your belt, the better. I recommend getting involved with an open source project or volunteering with a local nonprofit organization to write software that helps them out. This will benefit you in the following ways:

  • You'll gain exposure to what it is like building an application to a specification.
  • You'll experience the full development lifecycle, including maintenance.
  • You'll work as part of a team.
  • You'll learn "basic hygiene" practices, such as version control and documentation.
  • You'll get a feeling of accomplishment, which will help keep you from getting discouraged.
  • You'll be able to list programming experience on your resume.

3: Be willing to take a pay cut

It's no secret that the economy is a wreck right now. The common theme I keep hearing is that while there are some jobs out there, the pay packages are really tight. Many employers are locking people into lower salaries and "resetting" the pay levels.

Recent college graduates (many of whom are finding themselves unemployed for months after graduation) are the competition at entry level. In addition, most recent graduates do not have the financial obligations that experienced workers do and are willing and able to work for less money than someone who has been out of school long enough to have a mortgage, a family, and a car payment.

Entry-level positions are also the ones most vulnerable to offshoring. Unfortunately, the overall trend in development is that the first five years or so of a career are getting increasingly difficult.

4: Look at non-programming development jobs

There are plenty of positions on a development team that are not hands-on development jobs, but will help get you closer to your goal. There are jobs for QA/testers, maintenance, support, and so on. If necessary, take one of these positions to get your foot into the development world, and find ways to ease yourself into programming. For example, you could be a QA person, and instead of simply finding a bug and reporting it, you could go through the code and find where the bug is occurring and note it in the ticket. The developers will appreciate the help, and as you prove your value, doors will open.

5: Moonlight for your employer

At your experience level, it is unlikely that you are going to find work moonlighting; however, you may be able to do that for your current employer. Talk to your boss and your coworkers and find out if there are any simple programs that would make their day easier. Then write that software. If you have an internal development team, you could offer to help them out in some way. Some managers will let you do this as part of your workweek; others will tell you that it needs to be done on your own time. Either way, you'll be able to gain development experience, make yourself more valuable to your current employer, and maybe open up a new career path for yourself within your current organization. Time and time again in my career, I have found that "going the extra mile" is the game changer when it comes to career growth, development, and heading in new directions.

Additional TechRepublic resources

,h2>


About

Justin James is the Lead Architect for Conigent.

49 comments
fredy.machoka
fredy.machoka

I'd really like to enhance my programming career that is why I'd like you to please explain what you meant by: when something goes in a library as opposed to the application? Thanks

Tony Hopkinson
Tony Hopkinson

If you don't get that language is tool, none of the rest of it matters.... Work on more projects or thriough several iterations on one. Preferably with other developers. Good practices will happen in self defence, and each change will soon make you question whether the practice is still good. One other tip, despite everything you learn about how to do the job properly resign yourself to endless biodges, juvenile design decision and endless rework, because in corporateville , good enough will do. If you feel this means you don't have to bother learning to do it properly, you aren't a programmer.

Jaqui
Jaqui

documentation writing. a big one many hate to even think about, that is critical to any good application.

jkameleon
jkameleon

Why in the world would anyone want to take a pay cut just to become a programmer?

MauriceWeiner
MauriceWeiner

Justin James mentions the title of a book that would be useful. The corresponding materil is in MIT's OpenCourseware material: 6.001 Structure and Interpretation of Computer Programs | Electrical Engineering and Computer Science Control of complexity in large programming systems. Building abstractions: computational processes; higher-order procedures; compound data; and data abstractions. Controlling interactions: generic operations; self-describing data; message passing; streams and infinite data structures; and object-oriented pro ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-001Spring-2005/CourseHome/ - 20k - 2010-02-10 Go to ocw.mit.edu and search on the title of the book (leave off 2nd edition). You might also find some videos of lectures.

shetty.pras
shetty.pras

Its good suggestion u have made....Hope dis would be very good for the programmer....of all type.

NickHurley
NickHurley

The economy, depending on what you do for a living, is in the crapper, the specter of job-loss keeps many a person gripping their cubicle, white knuckled, grimacing from the employer's chafe. At least that's the image you get sometimes. Some will agree some won't but the fact is keeping your job is as much a gamble as getting one, many a mighty organization has sunk and those left standing still shake employees out like fruit trees in a wind storm. I humbly suggest to one starting out, look to the founders of successful businesses (I assume you would like to be paid at least eventually, if you want to do it for free then look to successful charities), they thought they had something special to offer and for the most part they were right (Apple, Microsoft, Google...), it is daunting to start your own shop especially in these times, but the rewards can be great. If you love programming (coding what have you), why do it just to enrich someone else. If you are going to start at a deficit, at least put yourself in a position to receive full rewards when they do come in. If you are starting at a lower wage (or received a pay cut) take a good look at the contract, to make sure your creations aren't snatched away as "company assets". Before you code a stroke, know that information first. Moonlighting for the boss turns into "part of your job" and no pay to show for your initiative. "The Brighter Future" choir aside, there is no excuse for being naive about these things, as there is a chance for improvement there is equal chance of being pooped out screwed. If you love being a code monkey (and I don't use the term derogatorily) then by all means be paid for your efforts, if they can't (won't) pay you what you think you're worth, but your work is of considerable worth then make sure that contract allows you to take what's yours with you, or at least be paid handsomely for it.

lastcount
lastcount

Thanks! This will help for a hoping-to-graduate comsci student like me. ^^,

twainiqolo
twainiqolo

Learning to write a program is so easy that anyone can write a program. But the crunch of the matter lies in the solving of problems using mathmatical concepts. In most, if not all problems, there lies a mathematical solution. A programmer without some mathematical knowledge is as good as a word processor. Moreso, without advanced degree mathmatical accreditation, a programmer will find it difficult to solve most problems.

yogi_john
yogi_john

Justin mentioned the Structure and Interpretation of Computer Programs book available online at the link he gave. I recently learned of MITOpenCourseware (OCW), free online course materials. MIT has a class of the same name that uses the text: http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-001Spring-2005/CourseHome/index.htm The OCW has additional offerings in the Electrical Engineering and Computer Science Department. Listing at: http://ocw.mit.edu/OcwWeb/web/courses/courses/index.htm Stanford also offers a few classes: http://see.stanford.edu/see/courses.aspx I've only begun looking at these, but I see these as a great aid for the self-taught. Edit: Justin's link was not to the online text. See http://mitpress.mit.edu/sicp/ and click Full Text

cvicd9
cvicd9

Steven those are good points in the text. send a direct mail at cvicd9@gmail.com. I am a designer and may have a job for you

ps2goat
ps2goat

In .NET or Java, for example, there is a great amount of information on the various framework objects and all of their methods, properties, interfaces, etc. It is key to learn how to understand the signatures used in the frameworks' help libraries. I would group this in fundamentals, but even this was barely touched on in college courses.

rohitbanerjee
rohitbanerjee

I will totally agree with Justin as I also am a self-taught developer and had to face the same stigma. Kudos ....

Justin James
Justin James

I think this reader is ready to get into development, what do you guys think? J.Ja

Tony Hopkinson
Tony Hopkinson

whether it goes in it's own dll, or in the application's exe. In windows terms anyway. So for instance if you have some standard stuff for logging (file or event log, console etc.) a Logging dll generic enough to just use, saves you writing nearly the same stuff every time. Another reason to use a library would be to segregate functionality. So for instance you might have an exe with some forms and stuff in, a dll to get stuff in and out of storage (sql, xml,text, web service...) and another to to the business processing. If you design this way you get all sorts of benefits in terms of testing, code clarity, and enhancibility. You could replace you windows forms with say a web page or two for instance. And what it does for testing is truly good. HtHs

jkameleon
jkameleon

About as bad as programmer testing his own programs. Programming, testing, and documenting must be done by diffent people. There's no way around it.

Tony Hopkinson
Tony Hopkinson

They get paid big for what the code they wrote does.

Cerebral*Origami
Cerebral*Origami

The idea that "anyone can write a program" while on the face of it is correct, does not mean they are a programmer. There are guidelines and techniques that must be learned. Proper commenting, variable name conventions, avoiding spaghetti code, writing in a consistent manner, breaking your program into logical modules or subroutines. I first learned to program in BASIC (the one with line numbers!) and everyone loved to use the goto (line number) command that made for some tortuous spaghetti code. Then there are other techniques that are not obvious such as recursive programming. Learning the language is like learning to operate a car you know what all the controls do but you still aren't ready for the road until you learn the rules that everyone else drives by.

NickHurley
NickHurley

Seeing the back and forth between you guys, it would appear to be a case of understanding what you are willing to live with. I can see how a person with hopes and dreams becomes jaded when the management gives more excuses than promotions, even more so if in one breath they can't justify giving you a raise while simultaneously increasing your work load, with the "better in the future maybe" carrot perpetually dangling ahead of you. In relation to the "do it cause you love it" crowd, there still has to be a line of reason, a person might love sex but the life of a porn star might not be what they are looking for. To be brutally honest even someone with no "responsibilities" in the traditional sense shouldn't be exploited, as the "Joker" said, if you are good at something never do it for free. Research who you are about to approach for work, if it appears like a sweatshop then it probably is, if you can't find a place with your "ideals" then ally yourself with some one of business savvy and start up you own gig. If you are going to put your blood sweat and tears into something for little pay, at least be the owner.

ddouglas
ddouglas

As the other replier posted. They are looking into the future. Those who cannot see past next week may not understand why you would take a lower pay to start in your field. Get the experience you need and then go much higher. Ambitious people with an ability to think and plan long term do this. These are also the people who end up doing well in their career! I certainly started my career with a company who gave me substandard pay even for a new comer to the industry. Got experience developing a huge sussessful application which lended itself well to my next position with another company and so on.... BTW jkameleon - I read your profile - and I suppose I now understand your first message - I've run into many people with your negative attitude in this industry and they slip through the cracks for a while - negativity will kill you in any industry - newcomers... remember that!! There are negative people in this industry and then there are those who take their career in this industry very seriously. The negative ones never make it.

ian
ian

because their current job (if they have one) is going nowhere. By going that extra mile, that pay cut will soon become a pay increase, and then another.

Jaqui
Jaqui

if you are TRYING to get started with programming career, getting onto a team to do the documentation is a step into the career.

NickHurley
NickHurley

It's just being aware of that as a beginner, might require them to look beyond the "I like writing code for code sake" mentality.

jkameleon
jkameleon

True, negativity might kill individual's career in organizations or industries based on positive culture. On the other hand, positive thinking will kill such organizations sooner or later. Hell, it can even ruin entire society. Careers in organizations based on positive culture are therefore not worth pursuing in the first place, and ruining them is actually a good thing. Read more about it here: http://www.commondreams.org/view/2009/07/27-1 Positive psychology, which claims to be able to engineer happiness and provides the psychological tools for enforcing corporate conformity, is to the corporate state what eugenics was to the Nazis. Positive psychology is a quack science that throws a smoke screen over corporate domination, abuse and greed. Oh, and newcomers... if you haven't watched "Office Space" already, by all means, do. Looks like that shitty, dotcom-boomish, attitude-centric times are coming back again. http://www.youtube.com/watch?v=i2ZyF8Ufz4Q http://www.youtube.com/watch?v=-bXHPqj3NcI

Duke E Love
Duke E Love

I got in the same way, back in the 90's during the .com boom. I wood sheded my ass off and BS'ed my way into a dot com start up and never looked back. I love what I do and even after 12-13 years I still get excited about new technologies and releases. I am a pre-release tester for a large company (the first rule of pre-release is that you don't talk about the pre-release) and love to develop on beta or even alpha. I love the feeling of getting my mitts on a new pre-release version and rolling my sleeve thinking "What can we get this puppy to do?". If this floats your boat and gets you excited then go for it. Baton the hatches and damn the torpedos. And if you don't you may end up like jkameleon and hate your life and your job and generally be miserable. And yeah. The pay does not suck.

jkameleon
jkameleon

Job, that pays worse than their current job, can only be going nowhere even more.

lovingNJ
lovingNJ

If you're doing what you love and can afford the pay cut, fine. I made a "strategic" job move with an enormous pay cut and discovered that the job is also "going nowhere". I don't believe I'll ever make what I was making before (and I don't like the job!). Oops!

Duke E Love
Duke E Love

You are a sad, sad man. A pathetic loser that has nothing better to do then spread bitterness and malaise to all who will listen. In a word, you suck.

jkameleon
jkameleon

... and I ain't gonna let no psycho scumbag make it worse.

Duke E Love
Duke E Love

You got me all figured me out. But remember, I too am one of those guys who can get things to work by hook or by crook and the go to guy when all hell breaks loose. Now, you go have yourself a sh!tty life, you deserve it.

jkameleon
jkameleon

... stitch of difference to anybody, and that is a good thing- relatively. Straining every nerve to be artificially happy surely makes a difference- for the worse, because it's bad for your noddle It causes frustration, nervosis, and errr... well, all kinds of nasty psycho stuff. > I have a couple of degree's in psych and know what they are talking about. It is an opinion I don't share. One can engineer an environment that fosters growth and a mentally healthy and stimulating environment. Yeah, well... you know, there's a nasty beast out there, her name is "Reality", and she doesn't give a shit about the mental environment you create. Your job is to keep it at bay, and my job is to deal with it. Consequently, opinions we could share are few and far between.

Duke E Love
Duke E Love

I have a couple of degree's in psych and know what they are talking about. It is an opinion I don't share. One can engineer an environment that fosters growth and a mentally healthy and stimulating environment. I have seen it done. I have seen it go down the sh!tter too. It can be abused by unscrupulous people. Anything can. Again it is ones attitude. You can rationalize why being unhappy is a being good thing all you want. It is not going to make one stitch of difference to me or you. HAND.

jkameleon
jkameleon

It is the salary. Job paid well enough is not a dead end. Attitude is just a pretext for harassing and getting rid of employees, that are no longer profitable.

Duke E Love
Duke E Love

It is the person. I love what I do. *I* make it interesting. I would be happy in a boring dead end job. Which is what I have now. I needed the money so I am sticking it out till the market gets healthy again. It is what you make it. It is absolutely, 100% about ones attitude.

jkameleon
jkameleon

In software development, 99% of work is pure tedium. Jobs like yours, jobs people like to do, are few and far between. I'm not complaining, though. Jobs that suck, jobs nobody wants, are generally better paid, in software, and elsewhere. It's a basic economy, supply and demand. Being able to get things done, by hook or by crook, no matter what, motivated or unmotivated, is far more marketable than any kind of enthusiasm or attitude. That's what serious employers are looking for. The ones with money, not some BS startups.

jkameleon
jkameleon

I've been making a living by programming for the last 25+ years, hands on keyborad, and I'm still writing code people are willing to pay for. And in all these years, I've never heard a fellow programmer ask "why do you feel the way you do?" Not even once. Such questions are asked by shrinks and agitators only. Nevertheless, your member profile says "Software / Applications Development". I'm pretty sure that's a lie, and my grandma told me not to spill my guts to deceivers.

ddouglas
ddouglas

Hey Man, I disagree with you, but if you can explain your arguments - explain them - that's no problem for me. Much better than a one word response such as "Morons". So far you haven't given an explanation for the way you feel about it.

jkameleon
jkameleon

People considering this field don't have to pay attention to my arguments at all. All they have to do is to have a look at who'd putting on a positive spin on programming (managers, PRer, HRer, universities, power point brigade), and who's bitching (programmers, especially the older ones). Those unable to draw any conclusions from that, certainly deserve a career in programming.

ddouglas
ddouglas

... well maybe a small response. This article is about a new programmer trying to break into the field. As an experienced professional, I see unprofessional, inexperienced, and going nowhere written all over your posts. I'm responding in hopes that someone considering this field does not really consider your arguments as valid... This was a great article by J.J.

jkameleon
jkameleon

In programming business, with all that offshoring and stuff, you got to compete against the whole world in who's going to work cheaper. Properly motivated, you could even win this competition, and that would be very bad for your well being. So: Demotivate yourself already!

ddouglas
ddouglas

I understand you are not whining, but I am afraid I must insist in giving the facts as I see them. It's about motivation, skills, and a long term strategy. No one is going to give you an advancement tomorrow because you want one. In an UP economy, it might be more possible to get an advancement without the right skills - or someone might hand something to you because there is an influx of jobs and not enough people to fill them! In a DOWN economy --> Check your skills, upgrade, do what you need to. It's possible if you try and are dedicated. There are opportunities available now and in the future for those who are motivated to get them. If you aren't motivated to get the opportunity then you are absolutely correct in that you are in a go nowhere position.

lovingNJ
lovingNJ

I'm not wallowing or even whining.

ddouglas
ddouglas

Forgot to add this to my last message..

ddouglas
ddouglas

Certainly, this industry, and especially being a programmer requires a certain aptitude. If you are changing careers - make sure it's something you want to do. Talk to as many people who are in this industry - talk about the kinds of opportunities that are available and the skills/training as you move forward that you need to aquire in order to attain them. There is a huge potentially in IT for people who start out as programmers if you love what you do and are willing to commit to yourself to get exactly what you want out of it.

Editor's Picks