Not so long ago, I was sitting in the office of my previous company, wrestling with the HTML tables on the Intranet site, when the boss called me over to discuss a learning app he wanted to create. “Do you want to oversee this?”, he asked and uncomfortably, I responded, “I don’t have the technical expertise to run this project.” As soon as the words left my mouth, I became painfully aware of how familiar they sounded, and how in recent months, I had to pass up several programming-related projects, all because I didn’t know the slightest bit about coding.
Technology has been increasingly disruptive to the education industry and I came to the realisation that if I wanted to move forward in my career, especially as a project coordinator in the education industry, a good level of coding knowledge was a must, and so, I began my research in the most efficient way to plug this skills gap. It was then that I came across the concept of coding boot camps, institutions where programming fundamentals are pounded into your head for 6 hours a day, 5 days a week, for 12 weeks with the promise that at the end of it all, you will be ready for an entry-level coding position. “That sounds like it could be fun,” I thought. How ‘wrong’ I was!
Here’s what I wish I knew before going in:
1. You Will Never Be Ready
I spent two weeks before the boot camp studying HTML, CSS and Ruby on Code Academy before the course. I went in on the first day thinking, “I got this!”. Nope, it doesn’t work that way! You see, knowing the theory of how a programming language works is very different from knowing how and when to apply it in solving a problem! Since the only way to get better at application is through the practice of increasingly challenging problems, and since people signing up for a bootcamp are new to programming, there’s no way you can avoid feeling unprepared in the first week! So learn to roll with it!
2. Estimated Study Time vs Actual Study Time
All time estimations stated on the marketing materials or given by the instructor are just estimates. You will find that almost all technology introduced was built on a dependency and you will need to invest the time to study the technology it depends on, or it will come back to bite you in the ass when you least expect it! Case in point: While I was rushing my capstone project, I wasted more than 5 hours going back to cover the basics when I tried to use Rail’s Devise gem without having a clue how authentication worked!
3. Programming Languages ≠ Natural Languages
These are fundamentally different and if you have experience learning natural languages like Spanish and Japanese, you will need a different learning strategy! Unlike human languages where you can employ circumlocution to get your point across and achieve communication success, programming languages are very precise, and you can’t rely on the computer to help you along when you use the wrong word. In short, either you succeed or you fail each time you “say” something to the computer, and this “all-or-nothing” concept to communication can be incredible frustrating until you get used to it.
When learning a natural language, you don’t need to know every word in the language, and the highest frequency words will come up time and again, where your brain can eventually internalize them. This learning strategy doesn’t work with programming languages, and you will constantly have to struggle to learn every new word/method that you come across, or you will soon find yourself stuck on a problem without the necessary framework to come up with a solution.
4. Fail Fast and Fail Often
I like my work to be as perfect as possible before I show it to the world and the thought of trying something new only to end up falling flat on my face terrifies me. However, the very concept behind coding is to constantly try and fail in small increments, so that you can fix the bugs before they get out of control! A good programmer tries to fail often, so get used to failing!
Also, since you have the luxury of an instructor to help you along during class, make use of the safety net and try as many new things as you can, secure in the knowledge that you will have someone more experienced who can easily help you fix your code if you screw it up beyond repair!
5. Your First Programming Language Doesn’t Matter
I was attached to the idea of learning Python as my first programming language, but local coding schools were only offering Ruby. An online search of companies requiring Rails developers didn’t bring up optimistic results, and I started questioning whether learning Ruby as my first language was a good idea. It turns out, it doesn’t matter!
The industry expects developers to be polyglots and work with multiple languages, since each language has its own unique strengths! A company we visited even told us they develop applications in different languages and integrate them all into their product!
Looking back at the sweat and tears shed over the course of these 3 months, I realized that the biggest benefit that I got out of this course was really the network of amazingly talented and wonderful people I had met! Coding and debugging can be a lonely and boring affair, so having a group of fun-loving people to motivate you when you feel like giving up, to tell you how wonderful your app is when you think it’s crap, and to constantly bounce silly ideas off of, is vital in helping to maintain the sanity of an aspiring programmer!
A big thank you to the people of Alpha Camp, both students and staff, for pushing me through these 3 months!