Taught vs Self Taught
When I was just starting out in software, I found that many of my peers often dismissed education as unnecessary saying, “just go learn it yourself.” Which is the great thing about the internet age: there are so many good, readily available, and often free resources that allow you to learn just about anything, even the complexities of programming!
The funny thing was that those peers that dismissed education often already had a degree in computing. That’s misleading to say the least. If you have a good grounding in a foundational language like Java or C++, you can experiment with just about any aspect of coding that comes along — from new technologies (like Docker) to new programming languages (like Golang) to new career paths (ever wanted to be a build engineer?).
But software technology is a cumulative field of study. Those without a good grounding, will quickly become mystified, which is where the misconception of software developers as “the new priesthood” came from — a priesthood with its own language (or rather programming language), rituals (code, compile, debug, etc), and specialized terms such as modulus and string, not to mention the more vernacular borked, pwned and noob.
Take the classic question of “pass-by value vs. pass-by reference” for example. Without a good grounding, you’ll end up googling the term, reading tutorials and maybe even watching a YouTube video or two to truly understand how to use them. But in my C++ course the answer was a side note during the lecture that passed without notice because due to the foundation we’d built in the class, the answer was obvious. (PbV is a new memory address allocation, whereas PbR is the same memory address).
Learning How to Learn
Don’t kid yourself, learning programming is hard. Not because it’s particularly difficult, but because there’s a lot of topics that will make absolutely no sense at first blush. Education is the key to demystifying programming. I’ve taught friends to program periodically and it always comes down to fundamentally changing their frame of reference and how they think about problems. It’s not a black box when you understand the fundamentals of the art.
I don’t have the classic nerdy profile that fits with the stereotypical software developer. My career history was Punk bands, treeplanting, and snowboard/ski instructor until my mid-late 20s. The thought of my becoming a programmer was on par with the thought of me becoming the CEO of Coke, so I can vouch for the fact that it’s much more accessible to become a coder than people think. Today, there are many new languages that are much simpler to learn and use than what may have been true 20 years ago.
While some people can just jump online and learn things on their own, I need a curriculum and structure, as well as the accountability of a testing environment. The way that I started was taking an online computing class offered by Udacity that taught Python (which I never finished but did well in). After realizing my personal learning requirements, I then went on to take night courses in OO programming in Java, which was tedious but informative. I’m still continuing this practice even today. To date, I’ve take almost enough classes to qualify for a diploma, including a C++ course, mobile app development, NodeJS, Web development courses, and many others. I’m sure this is going to surprise some, but I LOVED my C++ class. It gave me excellent grounding in the fundamentals of the programming stack, after which I noticed an immediate improvement in my productivity and comprehension at work.
At each step along the way, the key was access to a teacher/mentor that I could turn to when I needed clarification. When you’re just starting out, the answers you’ll get online from asking questions in StackOverflow or participating in Youtube channels will likely be geared at too high or too low a level for you to get a grip on. After all, it’s hard to ask the right question when you don’t know the subject very well. A mentor can make all the difference.
Where to Start
Don’t look to be a front, back or full stack developer right away. There’s no reason to specialize right away. Some people are just natural UI and UX geniuses, but most are better suited to the backend. First make sure you like it. If you have a programming friend, talk to them and see if they can help you get started, as well.
But whether you’re just starting out, or whether you’re looking to add a new programming language to your skillset, you’ll want to check out our recent webinar, “Eliminate Struggles with Adding a Language”, which offers some great tips from folks that have “been there, done that.”