You’ve probably heard people talk about how we’re living in the Information Age with an emphasis on how much information there is to process from all different directions. This is certainly true and it can be a challenge for the average person, especially if they were born even a few decades ago before there was a personal computer in almost every home and when most people were happy with a few local channels on their TV.
The flip side of living in the information cloud is that it’s never been easier for you to find information and learn virtually any subject. Universities no longer have a monopoly on education and people are no longer dependent on their local library, bookstore or media outlets for materials. Conversely, I never imagined when I was growing up in a small town in the 1970s that, one day, I could be a published author without going through the trials of manuscript submissions, editorial reviews and multiple rejections … but here we are.
What does it take?
As I indicated in Part One, a career in software development doesn’t require a large amount of formal education or a long list of certifications. Neither of these are bad things and the more paper you have to your name, the easier it is to get your foot in the door with various companies. Some people also find it easier to start out learning in a classroom rather than on their own. The company and collaboration with other students can be very helpful.
In the end, though, the person who commits themselves to a programming career will be continuously learning and will need to be flexible in the way they can learn new languages and technologies. Seminars and classes can be expensive and limited in the information that they can impart. A single programming language can include a huge amount of information that no one person can carry around in their head. For the new programmer, books and reference websites will become constant, indispensable companions.
Beyond the initial introduction to any programming technology, the most important part of becoming a software developer is practice and more practice. I’m talking about the hundreds of hours of your own time that you will gladly, even eagerly, spend at your computer trying out new things with your chosen languages just because you know that certain tasks must be achievable. Really good programmers will attack programming challenges with the same passion they show for developing their character in World of Warcraft, collecting baseball stats, gourmet cooking or any other favorite pastime you can think of. They will do it simply because they enjoy it. That’s the mindset that is necessary to be able to quickly pick up the new languages and technologies that are constantly being released and adopted by potential employers and customers. It’s the quality that enables a seasoned programmer to go from having once heard of a technology to being able to discuss it intelligently in the time it takes to prepare for an interview.
Still, everyone starts somewhere and I still remember the time when I barely knew how to work with a computer. Instead of just giving you a dry list of resources or steps to follow, let me start by telling you how I did it.
One Programmer’s Story
My first programming experience was in high school back in the mid-80s. At that time, there was never much room in what computer classes were available but I did find one of the old TRS-80 computers sitting unused in one of my classes where I had a lot of spare time. Those computers had the old BASIC language hardwired into them and there were manuals available. That’s all it took to get me started. I managed to learn enough to get hooked and gain an edge in the college programming courses that came later.
In college, I used a later version of BASIC called GW-BASIC (still primitive by today’s standards), better computers and more encouragement. I remember the hours I spent after school trying out new things and developing my own projects. At one point, a teacher handed me a project and said with a chuckle “Well, maybe this will keep you busy for a day.”
Not having a computer at home and with computers being fairly expensive at that time, I actually put the programming aside for several years as I focused on the early part of my career. This wasn’t a completely bad thing. It’s good for a programmer to have experience in another field to provide a user perspective when developing programs. I did the occasional bit of programming throughout the 90s but my real return to programming came in 1997 when I started playing around with Microsoft Access. I was looking to automate some things I was doing at work and managed to get hold of Access 97. I learned something about relational database design and then started working with Visual Basic for Applications (VBA), the version of BASIC behind all the Microsoft Office applications, including Access. Once I saw what I could do with that, there was no going back. Within a year or two, other people also saw what I could do and I was designing apps for other departments … then other facilities.
In 2002, I took another detour into technical writing and then helpdesk support for hardware and software. It’s also good for programmers to have exposure to other areas of I.T. and I needed to get over a hardware phobia I was holding on to. This time, I kept programming. In 2000, I’d started my first website and learned how to write HTML code. In 2002, it morphed into a professsional site and I started posting samples of my work. The next year, I started writing about Microsoft Access and other subjects and publishing the articles here on Drewslair.com.
In 2005, the work I’d done with Microsoft Access / VBA and was able to demonstrate here was instrumental in landing me a job as a Production Support Engineer where I tracked down problems with custom software by examining the code and the data involved. That led to my first official programming position a couple years later and both jobs provided me with a lot more programming experience with tools I hadn’t used before. I’ve continued learning ever since.
In 2010, an interviewer asked me if I could design an online purchasing application for his company within a generous time frame. Despite my work with Drewslair.com, I’d been fixated on Windows desktop applications when it came to what I considered actual programming but I’d experimented with ASP.NET so I said “Sure!” and proceeded to learn what I needed to know to design the application.
After being laid off from that job, the experience I gained there helped qualify me for my last outside job which was almost pure website application design for a local company with ASP.NET. Now ASP.NET itself is not a language but a style of website design that combines HTML web pages with either the Visual Basic.NET or C# language, depending on the programmer’s preference. I was accustomed to VB.NET but learned to do everything in C# since that’s what they were using.
So that’s the story of my career up to the present which finds me using all the experience I’ve gained so far working for myself. It hasn’t been a perfect run but I’m pretty much where I need to be given the overall circumstances of my life and I feel that’s a good place.
If I had to sum up the most important quality that a professional programmer needs in order to succeed, I’d say it’s initiative, meaning the willingness to do something you haven’t done before without waiting for someone else’s permission or direction. That quality depends on a good supply of confidence and sound judgement. It’s been my biggest strength over the years and my biggest regrets are about when I didn’t show enough of it. Just as I’ve been willing to take risks and try new things, there are also times in the above story when I’ve waited for circumstances to push me into learning new things and shied away from subjects I didn’t want to deal with at the time. I’ve regretted those decisions later when I didn’t have the skills I needed at a crucial point.
Aside from the willingness to learn, initiative is also what makes the difference between a programmer who is willing to ask the unpopular questions if it means saving a project or to suggest a new project that will benefit the company or client and the programmer who sits back with the crowd and lets someone else take the risk. In a constantly changing field of technology, it’s the quality that enables someone to keep moving and stay current instead of being left behind when their skill-set becomes obsolete.
There are more opportunities out there to learn than one programmer could ever follow up on and fewer excuses than ever not to reach out and grab some of them. Take whatever inspiration you can from my story and know that given the right combination of talent and drive, you can do even more.
(This article is updated from an article series previously published by Comeau Software Solutions.)