When people set out to learn to program, they often get mired in a lot of choices. What programming language should I learn? What will get me hired? What frameworks do I need to know? It goes on and on and on.
These are all good questions, but they miss out on the essence of what you need to learn: to program.
It's true that programming can be a career. But programming is also a tool, a skill, and, when you approach it more rigorously, a science and an engineering practice. While there are tons of expensive programming bootcamps, higher education degrees, and certificate programs, the quest for career fulfillment sometimes gets in the way of true learning.
In this article, I'm going to suggest that you set aside the career aspect of programming, roll up your sleeves, and do some hands-on learning. If you read to the end of this article, I'll show you how this approach can also be a strong win for your career goals, so it's a win-win.
The starting point for this is getting yourself an Arduino. The Arduino (known as a "Genuino" outside the US and UK) is a single board computer. It doesn't run Windows or MacOS or Linux. It just runs your program, what the Arduino folks call a sketch (and the rest of us would call a script).
You can pick up an Arduino Uno for as little as 25 bucks, but I'm going to recommend you pop a Benjamin (a hundred bucks) for the Arduino Starter Kit. This kit contains an Arduino processor, plus a ton of additional hardware components.
The kit is designed to help you come up to speed with building Arduino devices. It includes a nice selection of geeky goodies, ranging from a breadboard to an LCD display to a temperature sensor, and more. The kit also comes with 15 starter projects. Those projects are at the core of my recommendation to you.
Here's the thing. Fundamentally, programming is about using a sequence of instructions to make a physical piece of hardware do something. Whether it's in the cloud, or on your workbench, all coding really does is make hardware change its state, its condition.
When you learn to make Arduino sketches and build Arduino projects, you get very close to that fundamental reality, and you'll get a much better visceral understanding of what's happening when you write a line of code.
You will need a traditional computer to write Arduino sketches. The Arduino programming environment is written in Java and will run on Macs, PCs, and Linux machines. You write using the keyboard, mouse, and display on your computer, and then download the code into the Arduino to run. Don't worry. It's a mere matter of a USB connection, and it works well.
I know. I know. You're asking how this can possibly help your career. I'll answer that in a couple of different ways.
First, the Arduino programming language is based on traditional C/C++ code standards. So if you learn to program something for your Arduino, you'll already have a leg up on the most commonly used category of programming languages.
So once you do a few projects with your Arduino, you'll be in an ideal place to pick up other programming languages. The only difference is that you'll have a good feel for how programming fits into the overall system that makes up a computer and a device. THAT knowledge can help you understand a LOT more about programming in the long run.
Second, a lot of very cool things are being built with Arduinos as controllers. If you want a taste, visit xrobots.co.uk and take a look at some of the projects James Bruton has been working on. He's built a Hulkbuster suit and three BB-8 robots. He's currently working on a walking robot and a motion-controlled Ultron torso. Tying things full circle to my other columns, Bruton builds most of the physical components of his projects using 3D printing.
All these devices have a bunch of Arduinos in them, controlling many different facets of the robotics projects. Arduino devices are very popular in the maker community. If you develop some skills with Arduino programming, you'll not only open the door to basic programming skills, you'll also get a foot in on hardware and robotics.
The bottom line is simple. If you let go of the hype about which language and environment you need to learn to satisfy the check boxes on a job application, and learn to code with an inexpensive Arduino kit, you'll be able to learn a lot more, a lot faster, and have a solid understanding of the basics.
Go forth. Make great stuff. If you build anything cool, tell me about it in the TalkBacks below.
You can follow my day-to-day project updates on social media. Be sure to follow me on Twitter at @DavidGewirtz, on Facebook at Facebook.com/DavidGewirtz, on Instagram at Instagram.com/DavidGewirtz, and on YouTube at YouTube.com/DavidGewirtzTV.