TechRepublic member steven.balderrama posted a question in our Forums and asked if he is ready to start his career as a programmer. He has spent a lot of time teaching himself C#, including a number of advanced techniques such as LINQ to SQL, 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 and how to navigate the workplace. Based on the information that he provides, I think that he is ready to venture into a professional development gig; here are my suggestions for how he can accomplish his goal.
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 sometimes there is stigma attached to the self-taught developers.
So 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 typically 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.
Work on more projects
You mentioned that you've developed a human resources application that you can show off, and that's a great start. You'll want to get some more experience under your belt to help give you that edge in hiring.
I also recommend getting involved with an open source project or volunteering with a local non-profit 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 get to 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, documentation, etc.
- 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.
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 your experience 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.
In addition, the entry-level positions are the ones most vulnerable to offshoring. The overall trend in development is that the first five years or so of a career are, unfortunately, getting increasingly difficult.
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.
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 and 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 will 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 changing directions.
Hope this helps, and best of luck to you!
Additional TechRepublic resources
- 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?
If you have a programming question for me, please post it in the Forums. If I answer your question in a column, we'll add the post's URL to the discussion.
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 the Lead Architect for Conigent.