Developer

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.

50 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

Editor's Picks