I can’t even count how many times I have seen someone new to the programming scene ask the question “I am new to programming and want to know which is the right language to learn first.” Then of course there are a ton of veteran programmers that jump in there and start recommending every language under the sun and all sorts of ways to go about learning them. “No learn C++, forget C and go learn it on codeacademy.com!” or “No what you should do is learn Python because it is easier than Ruby and has an awesome green snake logo to boot! Find a tutorial article online.” I think we all need to take a minute to stop and think about what we are actually telling the person new to programming and stop pushing personal preferences.
I found that typical replies to this question come in one of three flavors. Some are better than others but they often include:
I recently answered such a question for a new person on Google+ and told them that they should really go to a bookstore, sit down with a few books that interests them (or maybe even recommended to them) and read a few chapters to see if the material made sense to them. Maybe read up through the first “hello world” example and by then they should have an idea if the language is going to work for their learning style or not. They should do all this before they even buy the book. Unfortunately shortly after making such a recommendation I got blasted for the remark. This person then proceeded to mention that reading books was a waste of time and that the newbie should focus on a language “X” through general practice. Mainly they were recommending the first option from the options above.
What followed was a heated debate on the merits of a few main ideas. First reading books about programming as a way of learning. I believe that books should always be “part of” a comprehensive learning process to start any new language. More importantly the first language. Books are often vetted, reviewed, worked on by multiple experts in their field and usually fairly complete (or at least as complete as one can get in X number of pages).
I always recommend that newbies learn through books over YouTube videos to start because YouTube video tutorials are often too short, made by less than expert people, sometimes poor quality and people tend to skip what they don’t know of a topic. This is because when on video people don’t want to be seen as not having the answer right off the top of their head. In other words, they play it safe and leave out material. I also recommend that they learn with a book in conjunction with a class (if they have access to some) so they can have discussions, articles they read online (preferably that mimic the material they are currently reading in the book) and a really good active web board to ask questions and get answers on code they write for practice.
Another idea in the debate was the idea of picking a book/language that makes the most sense to the person. The debater I was talking with said something along the lines of, and I am paraphrasing here, “If they did that then we would have a bunch of Ada programmers”. I chuckled because obviously Ada books fill our modern bookstore shelves didn’t you know? *sarcasm*. But I replied by saying “Hey, if they did find an Ada book and started with that because it made the most sense…well…good! They will learn generics, strong type safety and even object orientation in later versions. All this would be helpful for that person then to go into a language like C++ or Java to learn even more. Besides only people like the US Navy are looking and willing to pay well for such Ada programmers.”
I felt it turned into a lopsided debate quickly after that. Debate aside there is a few things we, as professionals advising newbies, need to remember when advising those new to programming:
Thanks for reading and I hope this helps those newbies out there that always get confused by the conflicting replies from the professionals when they ask that question! 🙂