What is the Best Language to Learn Programming?
SendGrid TeamFor non-programmers, picking a language to learn seems like a daunting task. Sometimes it may be one of the things stopping you from doing the work to get started. But it might be the most important step. “Pick a language with a strong community and don’t switch,” said Zack Shapiro, one of the experts I consulted for this post. See what Zack and others said about some of the web’s most popular languages: Ruby, Python, PHP and JavaScript.
Ruby
“Ruby is optimized for programmer happiness and productivity. Sure, Ruby isn’t the fastest or most performant language for a variety of common programming tasks, but its syntax is clear, intuitive, and fun, which makes it easier and faster for programmers to learn and use.
“Ruby abstracts a lot of the pain out of programming. Ruby makes it unnecessary for first-time programmers to have to deal with things like manual memory management, pointers, or type safety, which I think is a huge win.
“Ruby has a great community that’s especially friendly to beginners. The Ruby community sometimes gets a bit of flak for its ‘fanboy’ vibe, but it’s full of smart, earnest people who love programming, Ruby, and teaching people who are new to both.
“Ruby lets you make something fast. Ruby is great for rapid prototyping, so the time spent going from ‘I know nothing’ to ‘I wrote a functioning program’ is very short. People are encouraged by frequent, consistent moments of positive feedback (‘aha!’ moments), and Ruby promotes that.”
Eric Weinstein, Content Architect at CodeAcademy
“I recommend most beginners start with Rails. In the beginning, you’re looking for quick wins, quick understanding, nice syntax, and near instant gratification for your efforts. Rails provides that much faster than most other languages in terms of writing web apps.”
Zack Shapiro, Engineer at TaskRabbit
Python
“These days I recommend Python to anyone who wants to learn to code for the first time, and it’s the language that we are increasingly focusing on at CodeLesson.”
Jeffrey McManus, Founder at CodeLesson
“I’d add Python into the mix as well, especially Learn Python the Hard Way.”
Elmer Thomas, Developer Evangelist at SendGrid
“As much as I love Ruby, I might recommend Python over Ruby to a total beginner because of Python’s ‘there’s one best way to do something and this is it’ philosophy. (Ruby is much more ‘there are many paths to the summit’ in its approach to problem solving.)”
Eric Weinstein
JavaScript
“Javascript is ubiquitous. It’s no longer just a browser language. You can run javascript on the server using node.js, or create mobile apps with javascript using projects like Phonegap. Platforms are increasingly supporting javascript, html, and css as tools for building apps, making javascript an essential language to learn.
Javascript is forgiving. You can make a lot of mistakes with javascript and not completely crunch your program. It doesn’t matter how you indent your code. There are a lot of ways of solving any particular problem. Because of this, there’s a lot of bad javascript code in the world, but it also means that making mistakes as a beginning javascript programmer is a little less overwhelming – especially if you use tools like Firebug or Chrome Developer Tools to debug your code.”
Seth Vincent, Author of learn.js
“Learn HTML and CSS. If you’re dealing with the web at all these are not optional. I can’t imagine trying to learn javascript without knowing these.”
Brandon West, Developer Evangelist at SendGrid
“I think that JavaScript is a poor choice for beginners for two reasons: first, it’s a notoriously fussy language, full of quirks and difficult constructs, whose evolution represents a dog’s breakfast of use cases and agendas. Also, the advent of Node.js notwithstanding, JavaScript is simply not a general-purpose programming language — you can’t use it to build anything. Ninety-nine percent of JavaScript code running in the world today is used for things like client-side validation in the browser. JavaScript is worth learning for that reason, but it’s not an ideal first choice since there are so many other things you need to get good at before learning JavaScript will make sense.”
Jeffrey McManus, Founder at CodeLesson
“Learn Javascript because it’s so versatile. Client, server, database, scripts, and assets can be composed in one language.”
Swift, Developer Evangelist at SendGrid
“You’re going to have to learn JavaScript in order to do any significant web programming, but it has enough gotchas that, when combined with the headache of cross-browser implementation (even with awesome libraries like jQuery), make it less than ideal for complete beginners.”
Eric Weinstein
“I would recommend javascript. It can be used on client as well as server side which will be useful for beginners.”
Kunal Batra, Developer Evangelist at SendGrid
PHP
“I learned PHP first. It’s nice because it’s a simple extension of HTML really, but it doesn’t really set you up for success by teaching you proper patterns or practices.”
Swift
“Ignore PHP, not many modern web startups use it. They’re more looking for Ruby or Python guys right now. Don’t really see things going back to PHP.”
Zack Shapiro
“PHP is, in my opinion, kind of a mess. This blog post (by Alex Munroe) explains why I don’t think it’s a good language, let alone a good first language.”
Eric Weinstein
Concluding Advice
“My best suggestion for the new programmer is to do some research, pick a language with a strong community (Ruby, Python, JS are great), and don’t switch. People you meet will tell you reasons to switch, usually citing things you have no idea about or haven’t come across yet. Your early goal is to get proficient at building things in one language. Switching is the enemy of that. ”
Zack Shapiro
“My recommendation is actually to not learn a language first but learn the basics of program design, algorithms, and flow control structures using pseudocode. I think beginners should start with a strongly typed, compiled language. C++, Java, .NET.”
Brandon West
“iTunes U is a good resource for the fundamentals of Computer Science. If the person likes to read, a subscription to Safari Books Online would be useful. Also, check out the Programming Throwdown podcast.”
Elmer Thomas