Spend much time in beginner programming forums and you’ll see many of the same questions again and again from people trying to break into coding. For some of us who just sort of gravitated to the field, it’s a reminder that it doesn’t come as easily for everyone. Sometimes, I feel the urge to send them to Google for all the information that’s available now but, having taught programming, I know that people often need more guidance than that. So, in this post, I want to offer some of my own answers for these common questions.
I’ll start off by admitting to a bias in my approach; I’m mostly self-taught and have been since I got access to an unused Tandy TRS-80 computer in high school and started paging through the BASIC programming manual. My training has been a mix of hobbyist enthusiasm and on-the-job (sometimes anxious) necessity. This is not always the fastest way to learn but I tend to believe that it’s the most effective.
This means that I don’t have any magic programmer pills for you. I’m not here to tell you about the one course or video series that will get you a senior position this year although I will offer a few suggested resources that might come in handy.
How do I start programming?
Start by asking why you want to become a programmer. Do you love computer technology and want to get deeper into it? Do you have something specific you want to create like a game or a program to make your work easier? Maybe, like me, it just naturally appealed to you after you saw someone else being able to turn code into something interesting. Maybe you discovered your love for it through a required college class or stumbled into it on the job. Those are all good reasons but you should know why because it’s not something you achieve overnight and your reasons for doing it will affect your path.
Did you just hear about the great salaries and decide it would be a quick path to a well-paying desk job? That’s less of a good reason; I’ll talk more about that later.
You might notice that many of the links in the previous paragraph go to Wikipedia. It’s not the ultimate authority but it’s a good starting point when I want to learn about something new. If you go the programmer route, Google will also be one of your best friends, even after you know what you’re doing. Try out this example:
What programming language should I learn (first)?
Programming and software development are a type of engineering. It’s the process of breaking down a series of tasks into instructions that the computer can understand. In essence, you are instructing the computer in how to do the work you want it to do. The computer itself has no real intelligence, just the ability to follow very specific instructions over and over again, very, very fast. It will do whatever you tell it to do, whether that’s what you really wanted or not.
The burden is on you to figure out the right series of steps, or algorithm, for the computer to follow so you can get what you want. Then you turn those steps into the specific syntax in whatever language you’re using to get the computer to understand those steps.
Developing the ability to write those algorithms is the hardest task many aspiring programmers face. People often understand tasks in a general sense without really thinking about the steps much after they’ve mastered them. Having the patience to re-analyze the task to explain it to another person, much less a hunk of metal and plastic with a bit of electricity flowing through it, is the real talent.
Also, throughout this article, you’ll notice that I alternate between the titles ‘programmer’ and ‘software developer’. There’s actually a difference and companies prefer software developers who, in addition to writing code, can work out requirements, communicate with the users, write documentation and even manage projects if called upon. It’s about a lot more than writing code.
As for the language, there have been several hundred programming languages over the years although, if you checked out the developer’s survey, only about 25 or so are currently in wide use. Some languages are specifically suited to specific tasks or areas, like website development. No matter which language you start with, it probably won’t be your last if you continue as a programmer so just pick the one that looks most interesting and fun for you and focus on learning how to talk to the computer. Choosing a popular one is helpful because you’ll find a lot of other people to struggle along with but don’t overthink the choice and don’t worry if someone else prefers a different one.
Do I need a degree? What programming certification should I get? Is this bootcamp worth it?
This largely depends on you and what you want to achieve.
In the majority of cases, I would say no to the degree. It might open a few more doors for you at different companies but programmers are in high enough demand that a skilled developer with the right amount of initiative will get along without having to incur all that student debt. Besides, a number of universities are offering individual courses for free through sites like Coursera.
I’ve earned three certifications over the years, two of them just so I could better tell my students what to expect from the exams. The third one from 2006 is no longer worth much but it was a great collaborative experience with my co-workers at the time. I tend to believe the main value of certifications is to provide a systematic path of study of a specific language or technology. Otherwise, you can end up with gaps in your knowledge that your hobby and work projects haven’t forced you to fill. Whether certs will get you a job is the subject of much debate and probably depends on the interviewer but they do demonstrate that you’ve made some effort to learn.
As for bootcamps, I personally have not attended any. With prices starting at several thousand dollars for even a part-time bootcamp experience, I would take a long, hard look at the product before investing. They’re cheaper and more focused than getting a college degree and might provide the collaboration and individual attention that many students need in order to learn, at least starting out. Still, the cheapest of these often cost more than the 16-month vocational program that I taught.
Before shelling out all that money, I would recommend thoroughly investigating the specific bootcamp, talking to people who have been through it and finding out what kind of reputation it has, if any, among potential employers. With the amount of instructional material and forums available for free online, a few Google searches might help you find resources such as books and videos that are far more affordable and available to your specific schedule. Many of the programming tools are also free to download for your home computer. Again, a career in programming and software development means continuous learning so it’s a good idea to develop the skills to learn inexpensively early on.
No matter what training options you use, at some point you’re going to end up sitting in front of an interviewer answering in-depth questions about programming or standing at a whiteboard working out the problem they’ve given you to solve. At that point, it’s all about your ability to learn and apply. There are no magic solutions for that, just time and dedication.
How long will it take? How much time should I spend studying?
Initially, I would allow two years on average to get comfortable and productive as a programmer although it will vary from person to person. Remember that it’s not just about the language – it’s about learning to engineer solutions and develop that confidence that you can take on the next project. It’s also about mastering concepts related to the areas you’re working in. If you work with database programming, you need to understand how data is organized and stored. In any area of programming, whether it’s database, web development or business logic, there are security and user interface issues that you need to learn about. Very often, these are things you learn as you go and as you work on more projects with different requirements.
You’ll probably hear stories about people who went from zero skills to employed in six or nine months. There are also people who have made lots of money on cryptocurrency. In either case, your chances are better of not being one of them so don’t be surprised or disappointed if you’re not.
As for how much time you should spend studying – that question misses the point. If you enjoy what you’re learning and have a clear path of what you need to learn, then the hours will accumulate on their own. Basic time management skills are helpful, though, so put away the online games and don’t plan on bingeing any shows while you’re working toward that certification.
How soon can I get a programming job?
Again, that depends on you – not just on your knowledge and skills but your level of initiative and creativity.
Most employers are going to want at least six months of real, verified experience, not just academic stuff, to bring you into an entry-level job, probably more. There are other ways, though.
In 2005, I managed to get a job as part of a programming support team. We were responsible for investigating failures in the software developed in-house. I had no professional experience with the tools they used but I did have several years of experience with Microsoft Access / VBA from my previous job and the ability to talk intelligently about the concepts. I had also maintained a website since 2000 and demonstrated my willingness to learn and share information. This got me in the door to another job and, after some fancy moves on management’s part, got me the support position. Two years later, in another re-shuffling, I was promoted to the actual software development team and was making twice as much as I had ever made before going to that company.
Short answer – keep studying, keep creating stuff and keep figuring out how to share it. You have to be creative to get noticed.
I feel so lost. Everyone else seems to know more than I do. It’s taking me too long.
Imposter Syndrome is a very real thing and a lot of people who otherwise appear confident and successful suffer from it. Don’t let your own doubts get you down. This is a highly technical area that takes time to learn.
If you’re new to programming, you’re probably running into others who’ve been spending a lot of their free time like I did in the early years – hacking my way around software, discovering different ways of doing things and building their confidence. Also, some of us just have a natural love of the tech. Give yourself time to discover your own path.
Am I smart enough to program computers? Am I too old? What if I majored in something else?
If you’ve read closely to this point, you’ll remember I said that I started programming in high school. I graduated in 1986, studied accounting in college and then coasted between different jobs using other, non-programming skills. I did my first on-the-job database programming in 1994 but that was an unofficial part of an office job. I discovered Microsoft Access and VBA in 1998, started designing databases for my own work and slowly built a reputation for being able to fix any computer issues and provide solutions where nobody else in the office could. I was in my 30s by the time I got that first official programming job and still had more to learn than I had learned since high school.
During those early years, I was also gaining a lot of business experience that I’ve used since to understand the requirements for software projects. That’s an even more important skill than being able to program in five different languages, especially if you want to work as a consultant. Being a successful software developer is just as much about communicating with business users and asking the right questions that will uncover the requirements they haven’t thought to tell you about. There are many types of intelligence.
How much can I make as a programmer?
It is a fact that U.S. programmers can make in excess of $100,000 in the first several years. When I was recruiting students for my college program, this was a big selling point and that probably should have been the first hint that the program wouldn’t last. The program needed students to justify its continuation and I was trying to attract them with promises of high salaries during 10-minute presentations to open house attendees and bored high school students. Some of them might have had a legitimate technical interest but the resulting washout rate once they realized what programming was about didn’t quite mesh with the school’s business model. Even my students’ 100% pass rate on the certification exams couldn’t compensate.
This is to say that if your first thought in approaching programming is to make more money, you’re probably setting yourself up for an unhappy career. No amount of money will compensate for the complete lack of fulfillment that comes from working with code and software specs when you don’t love the process itself. The soul-killing meetings, bad management and ridiculous hours that sometimes seem inherent in technical fields will eat away at you if you can’t find the joy in creating great things despite these hurdles.
Your earning potential also depends on such things as your own dedication to the craft and your negotiating ability. A programmer who actively develops projects on the side and isn’t afraid to talk about them is usually going to be happier and better paid than the one who just keeps up with the minimum necessary training to keep their career rolling along.
So, it goes back to my original question of why you want to become a programmer and where you want to go with it.
I believe that almost anyone can learn how to code, at least at a basic level, and I would even say that everyone should get some experience turning a math problem or some other challenge into a working program.
What better way is there to identify that one student out of maybe 100 who will look at the screen one day and realize that the code is actually beautiful?
Maybe you’ll keep it as a side hobby to play around with every so often – there’s nothing wrong with that. Maybe you’ll actually see the beauty in the code and know that you have the aptitude, mindset and whatever else it takes to make it a career.
That’s up to you.
The following resources can help you get started in your journey to become a programmer.
StackOverflow Developer Survey – Published yearly, this survey can help you identify what you should be studying to stay current and employable within the field. Stackoverflow itself is a primary resource for developers and often shows up at the top of Google search results for any programming questions.
The Odin Project – A free tutorial in the basics of website development, specifically designed by volunteers for new programmers.
Reddit – Learn Programming – An online forum specifically for those trying to learn about programming and software development.
Programming with Mosh – YouTube is a great resource for programming videos and this is one of the popular channels. Mosh Hamedani’s enthusiasm and engaging style makes learning the basics easier.
Pragim Technologies – Another YouTube channel with courses on C# and SQL Server.
W3Schools.com – A free site with beginner tutorials for a wide range of programming languages and technologies.
Udemy – This is an online school where individual instructors can create their own video courses. There are many excellent courses available, often for as low as $10.99. Be sure to read the ratings and reviews and any free previews videos before buying.
Of course, there’s also my own YouTube channel where I post the occasional video on programming and other topics.
These are just a few of the popular resources; see future posts for more resources. Remember that the Internet is a huge place full of available information on anything you might need to learn and it often takes a single Google or YouTube search to get started.
DYMO 1755120 LabelWriter 4XL Thermal Label Printer
Quickly prints XL shipping labels up to 4" wide. Over 60 professional templates from popular shipping platforms.