If you want to get to get a job writing code and you don’t have a computer science degree, what do you do? “Attend a Boot Camp!” seems to be the common refrain. Specifically, one to make web apps. Web app boot camps, baby, that will learn you some code.
I’m going to pick on web app boot camps for a bit. The vast majority of opportunities to use code do not involve web apps.
The first question I would ask a prospective web app boot camp attendee: do you have a problem that needs to be solved with a web app? If you need a web app, perhaps for your personal site, maybe you’ll just use Squarespace or find an existing solution for literally everything else.
Maybe your problem is “I’d like to make more money by becoming a software developer". That’s a great problem to solve! You’re not going to solve it with a web app. Maybe an expensive boot camp will get you closer to your career goals (and that’s a big maybe), but it’s not guaranteed to give you skills you can use every day.
Herein lies the problem. The way to learn to code—and make it stick—is to have a problem that you want to solve and then force yourself to solve that particular problem with code. You’d be surprised at how many problems can be solved with code once you have that skill (and once you have a shiny new hammer, everything might look like a nail, but that’s another post for a different day).
Ten years ago, coding boot camps were around but I couldn’t afford them. Web-based versions that greatly reduced the cost of learning to code were still a few years out. If I wanted to learn to code to solve my everyday problems, I had to teach myself.
My first job out of college allowed me ample opportunity to solve problems with code. I didn’t know any better, which made it even more fun.
“Can you figure out a way to make it faster to collect data for this report?” Sure thing! In the existing process, you literally had to print out a report on a dot matrix printer and type the values into Excel one by one. Oof. To replace that nightmare, I’d have a .bat file retrieve a CSV report from our IBM AS/400 system and then import the CSV into Excel. This reduced hours and hours of manually entering data into Excel into just a few clicks.
Next I had to massage the data a little bit in Excel, doing the same thing to each line. To solve that, I’d record a macro, assign a keyboard shortcut, and then run the macro over and over and over, saving a few clicks.
(Brief aside, I remember being terrified of getting started with Excel macros—they’re so technical!—and was hesitant about trying them out. I now recognize that the feeling of being terrified of new things happens all the time. I’ve learned to embrace being scared as a sign that I’m about to level up.)
Back to Excel. At some point, I got curious about seeing if I could edit the macro (queue scary music). I’d open the VBA editor and look at the code the macro had generated. Can I change it? Yes, I can—cool! At some point, I figured out for loops and if statements. By combining those things, I learned to bend the macro to do my will. Was this the fastest way to get this particular task done? Probably not. But I’d have to run the report again in a few weeks, so I’d be saving myself massive amounts of time over the course of the year.
If you want to learn to code, you need to find a problem that you want to solve, one that maybe you could just do manually, but you choose to take a step back and solve the problem with code.
When I’m hiring for a support engineer, the level of coding ability I look for is “can unblock themselves with code”. It means you’ve stared at the wall of “I can’t climb this” and you chose to climb it anyway. It means when you want things to get just a little bit better, you’ll reach into your toolbox and code up a solution to smooth things out just a bit.
One more thing, I used to think the problem with programs that teach you how to code was that they weren’t helpful enough. Perhaps, the thinking goes, they should hold your hand a bit more, tell you exactly what editor to use, how to execute files from the command line, etc. But I think this is actually a disservice to the honest student. Part of learning is knowing when to ask for help. Asking for help forces you to climb the terrifying wall. Not only do you get what you need by seeking it out, you realize you have the ability to climb terrifying walls.
Interested in a boot camp (or know of one that exists) that teaches you to unblock yourself with code? I’d love to hear from you.