On Sources, First Languages and Learning
by Ethan Glover, Sun, Oct 12, 2014 - (Edited) Thu, Oct 06, 2016
Some of the most common questions that come from potential future programmers involve asking how to learn. What's the best source to use to learn? Which language should I learn? Is there a best way to pick up new languages? These questions are certainly important and deserve consideration, but are they so simple to answer? Isn't it possible that by throwing out options, you're only overwhelming and showing them what they hadn't expected?
For me, one of the major reasons I never really got into learning programming at first was because of the way some experienced programmers try to teach, and this is a major reason that such questions may be a little more prevalent than is necessary. If you were to write up a blog breaking down which languages are best for beginners, you may get a lot of views, but is anybody really going beyond those initial basics? Let me explain what I mean. My first source for programming was The New Boston. This is a popular YouTube channel run by Bucky Roberts that goes over programming concepts. But I never really learned anything by watching his videos. Why? Because I would simply watch the video, copy his programs and run it. "Great! That works! I'm doing good!" Except, I never remembered anything, and I never understood what the concepts had to do with actual, real world, career based programming. Sure, I can print stuff and add things, but what good does it do?
Out of frustration I began to look for more sources. I explored Codecademy, Khan Academy, Computer Science is For Everyone (No Longer Available), Learn Code the Hard Way and even downloaded a few Head First books. After all of this, I came across WiBit as the final frustration. I figured, here's two guys that sell themselves as industry experts, making fun videos and I'm not learning a thing! I even compiled a very large list of sources (along with other things) before giving up on these online sources of learning.
Finally, I entered college and went with a major in Computer Science. I was still determined to do this programming thing. I figured all I needed was a curriculum and some homework to help guide me. For the most part, I was right. However, it's not the school that is teaching me. It's the textbooks. The large textbooks with many practice problems that you could do for hours. The reason I never made any progress with the Head First series is because the books feel rushed and a little too... fun. I get it. You have lots of cheesy jokes that don't make me laugh. What am I 5? Maybe if they'd put a little more effort into actual programming instead of being cute, they'd be more effective!
I don't mean to put down these things, they just simply don't work for me. I look for both repetition and progress in solving problems. A lot of times the sources for learning concentrate on an immature fascination with making the computer "do things". I'm sorry. I'm not impressed by being able to print Hello, sell it as a basic, not as an accomplishment, and I'm less likely to get annoyed and give up. This is the way I learn. Unless I accomplish something for someone else, I don't really feel like jumping up and down, and I'd appreciate it if no one asked me to. I get that the Head First series is very popular, and I respect the work they do. But what worked for me? Introduction to Java Programming by Daniel Lang. Published by Prentice Hall, made for college level students, made for the classroom and packed full of so many practice problems the concepts will be drilled into your head so much so that it will be impossible to forget.
With this, I stopped worrying about which programming language was the best, it doesn't matter, as long as I learn one, I can learn them all. Sources don't matter. Fun doesn't matter. Progress matters. Maybe this shows that I'm a boring person, or I learn oddly. But the point I want to make here, is that when someone asks you those basic questions. Where to learn, what to learn, how to learn. Don't give them an easy answer. Don't tell them of the latest and greatest website you heard about and tried out just for fun. (Finding that you, as an expert, enjoyed doing a few basic problems.) Ask them what exactly they're looking for. To make a career? To learn how to fix their computer? To build a quick website? Because, without clear goals in mind, they may not appreciate having wasted time a few weeks down the line. I want to work as a programmer and as I learn I hope to teach concepts as I go. I have a technical mind, and I learn best by repetition. This is why the large textbooks work form me. But if someone has an ugly website and wants to learn CSS, well, maybe they'd get more done through a nice theme suggestion. If they want to learn for the sake of it, if they're the passive learner type that watches MOOC videos for fun. Sure, send 'em over to Bucky. But without careful consideration of goals, needs and wants. One may be in for a disappointing surprise and more terrifyingly, may be turned off of programming forever.