1) Meteor is the full package
I should begin by explaining what Meteor is. Meteor is an open-source, full-stack JavaScript framework that makes it easy to write top-quality web apps in a fraction of the time. If you’re anything like I was two years ago, though, terms like “full-stack” and “framework” may be slightly fuzzy to you, so the above might not mean much.
Rather than a technical elaboration, let me frame it in terms of what it means for your experience as a budding developer. There are lots of different technology components that have to work together to get a full-fledged web app up and running; the particular components you choose constitute your “stack” (e.g. what kind of database you use, what server-side programming language you use, how you use Websockets). Learning to program is only one part of the picture; a lot of the work typically lies in configuring these components to work together. All this configuration isn’t necessarily a big deal for experienced developers, but for beginners, it can be quite daunting because you have to learn several different technologies and understand them all at some rudimentary level.
Meteor eliminates this complexity. When you install Meteor on your laptop and create a new Meteor project, it comes bundled with all the different technology components you need, and it configures them to work together behind the scenes so that everything just works. This is really powerful for beginners because it lets you focus on learning to code, rather than on configuration.
Speaking of learning to code, you’re probably familiar with the terms “front-end development” and “back-end development,” which correspond to writing code for the web client and server, respectively. Normally you need to learn JavaScript for client code and a different language like Python or Ruby for your server code. Indeed, most web developers specialize in one or the other, so if you’re trying to write a web app all by yourself, you’re literally performing the jobs of two people. Meteor allows you to write both your client and server code in JavaScript. Whereas you would normally need to learn two frameworks to get off the ground, with Meteor you only need one.
2) Meteor will quickly give you something to show
Meteor gets you to your first live deployed web app right away. I can’t overstate the educational significance of this. As a beginner, having your own tangible project to hack on is hugely motivating, and that makes you much more likely to succeed in your goal of becoming a developer.
I first got into programming with one semester of CS101 in college. I enjoyed it and took a renewed interest when I graduated and tried to found a startup. At the time, I remember placing a lot of importance on learning programming “properly,” with the correct concepts being learned in the correct order so that everything would logically build on each other, and I wouldn’t have to unlearn anything down the road. As it turns out, I was mostly outsmarting myself with that attitude. It’s much, much more common for people to lose motivation or simply get busy with other things than to somehow screw themselves by learning in a slightly pedagogically imperfect order.
I now think it’s crucial for beginners to have a working project of their own, that they’re excited to improve, as quickly as possible. If it’s something you can show everyone, that’s even better. There’s a reason that the Khan Academy programming curriculum focuses on JavaScript, as did Codecademy when it first launched. It’s certainly not because JavaScript is pedagogically cleaner than Python. The truth is, for most people, learning to program isn’t academically motivated. A lot of people who say “I want to learn to code” are really saying “I want to build websites and web apps.” Learning about data structures and algorithms is a means to an end.
Meteor is the most powerful platform I’ve encountered in this respect. You can install Meteor, create an example app, and deploy it online in just five commands in your terminal.
3) Meteor is easy to learn
One of the seven principles of Meteor is “Simplicity equals productivity.” Meteor was designed to be easy to learn, including for beginners. You don’t have to learn everything at the start. For example, Meteor automatically synchronizes data between all your users in real time for you: you don’t have to think about it until you’re ready to add custom rules for who can see what.
In addition to Meteor’s inherent approachability-by-design, it also has the benefit of wonderful learning resources. When Rails was released, one of the things that drove its adoption was a comprehensive Rails book that showed you everything you needed to get a Rails app into production, from start to finish.
Not all frameworks have an equivalent, but Meteor does. Earlier this year, two members of the Meteor community (Tom Coleman and Sacha Greif) wrote Discover Meteor, an interactive Meteor textbook. It’s one of the most engaging, well-thought-out programming books I’ve read (take a look at its reviews on Hacker News), and it takes you from novice to building a real-time Hacker News/Reddit clone from scratch.
In addition to Discover Meteor, the community has produced a wealth of tutorials, blog series, and reference material, and more are coming out every week. Our Learn Meteor page provides a shortlist of some of the best resources.
4) Meteor’s community is naturally beginner-friendly
Programming is a social activity; when you pick up a new technology, you’re not just getting software, you’re joining a community. These are the people who publish packages you’ll use in your app and who open-source projects that you can follow as examples. They’ll answer your Stack Overflow questions, give you feedback over the mailing list, and help you out on IRC. The quality of the community you join has a huge impact on your experience with a new technology, and I think the Meteor community is something special. Meteorites are working on some advanced and interesting projects, and yet it’s not at all awkward to be a complete beginner here. I’ve found people to be consistently friendly and helpful.
I think one major reason is that almost everyone is learning something new. Many of the new ideas in Meteor, like latency compensation and hot code push, aren’t standard fare even for experienced developers.
Some people might hesitate to learn Meteor because it is quite different from programming in a traditional LAMP stack or an MVC framework like Rails. I would argue this is actually an argument in favor of learning Meteor. The entire web is moving toward thick clients, reactive interfaces, and realtime APIs. And it’s not just Meteor: many leading tech companies have developed internal frameworks that share some of the same ideas. Asana has Luna, Facebook has React, and Airbnb has Rendr, to name a few. If you learn Meteor, your knowledge will grow more and more relevant with time, not less.
Technology moves fast in this world; an app that was state-of-the-art eight years ago would feel clunky today. Users’ expectations are calibrated by rich reactive web apps like Facebook and Twitter, and as developers, we don’t get to choose that. The best web developers aren’t just good programmers; they’re adept at judging industry trends and staying current with the latest tools and technology. When you’re choosing what to learn, you want to skate toward where the puck will be, not where it is right now.