Bill wrote in with some questions about starting to learn computer programming. It’s something I get a lot on this blog, since I write about effective learning techniques and I am a computer programmer by trade. He’s never tried computer programming before and wants to know where to start, including what kind of online courses to use:
I’d like to get your input regarding switching over to mobile development. This is something I have just started to consider so I would appreciate any and all feedback you could share regarding: (1) front end vs back end or both? (2) Is it worth taking online classes or getting a BS from an online course like Cal State offer? (3) any resource requirements to start?
Free from Skill Cookbook
An Evidence-Based Approach to Self Improvement, available from Amazon and on the Kindle store.
The Joy of Craft
How to improve focus, practice better, stay motivated, and everything else you could want to know about better studying.
Exciting shift! Digging right in: when you say “mobile development,” my mind goes first to apps on Android or iOS. If this is your goal, your road will be a little harder than website development (or maybe you meant mobile web development?) Apps can be challenging because they are a compiled language, and there are more constraints placed on you by the speed/size of the device. Web, speaking broadly, is easier because you can iterate quickly and deploy your changes on a whim.
For making the decision between frontend and backend… backend development tends to attract analytical minds who like to think about speed, space, efficiency, huge scale, etc. Web frontenders (and many mobile devs as well) tend to be able to speak the same language as UI/UX designers: they consider interface design, user interaction, transitions, framerate, etc. Honestly, which one of the two you choose depends on what interests you more. Personally, I’ve jumped back and forth, and I like both for different reasons. It’s a bit of a false dichotomy, at the end of the day; if you develop the underlying skills of programming you can learn whatever else you need to with relative ease. I learned Ruby (a new language) on the job and switched from mobile frontend to API backend all in the course of a year because it seemed like fun, and that’s not a special or unique story.
The online class/training debate is one which I find myself having difficulty answering. Lots of people seem to be asking about learning online, and I’ve heard good things about Code Academy and other such sites. I can’t speak from experience, as I taught myself long before these things appeared, but I’m willing to bet that they’re a great springboard… but not very effective beyond that. The only things that will carry you through the years of hard work it will take to become a programmer is determination and curiosity.
Some final musings… programmers are tinkerers by nature: we see a system, and we want to build/improve on it. Most programmers get good by starting projects and not quitting until they make it work. When I evaluate programmers (as I am sometimes called upon to do), I probe both the knowledge learned in the classroom and the skills learned on the job. At times, the classroom knowledge does have consequence, but I’ve seen plenty of smart people acquire this knowledge outside any educational system whatsoever by refusing to ever not understand an idea. They search and ask questions until they get it right… but, again, like many complex skills, you will be rather bad for many years before you get good… and that’s only if you do it every day, care about your work, and remain curious.
To that end, I would point any new programmer to StackOverflow. It’s a community of programmers. Once you’ve made it through whatever basic online training you can find, go search this community for questions you have. Over time, you’ll gain the vocabulary to find the answers faster. Eventually you’ll start asking your own questions, and perhaps even answering others. It’s a way to turn your quest to learn programming into a mini-game, since you earn points by using StackOverflow.
p.s., the name “StackOverflow” is a super nerdy programmer reference. Understanding it, at some point, will be a milestone for you.
p.p.s., the best gateway into programming is whatever interests you. I’ve seen casual bloggers start fiddling with the HTML and CSS of their site until suddenly they found themselves consulting for other blogs. I’ve seen teenagers build games because they loved the fantasy worlds that had shaped their youth. It’s so important that you have something you’re “banging your head against” each day, trying to improve and solve. This is the programming muscle. Every time you sit down and make one thing work just a little bit better, you’ll start to feed an addiction. Like reps at a gym releasing dopamine for the weightlifter, solving interesting problems is mental ecstasy for the programmer.
Have a Question to Ask?
Do you have a question about learning a new skill you’d like to ask? Scroll to the top of the page for many ways to contact me, or jump to the about page.