If I had the opportunity to make an analogy between using Meteor and being hit on the head with “a small body of matter from outer space that enters the earth’s atmosphere, becoming incandescent as a result of friction and appearing as a streak of light”, I’d snatch that opportunity right up. But unfortunately, that does not accurately describe my experience with Meteor. Instead, I’d picture learning Meteor as ascending, rather than descending, through the layers of the atmosphere. Running on minimal sleep and optimal stress seems to allow the brain to make crazy connections between unrelated things in ways that are totally unheard of, which is probably why I’m describing learning Meteor as a breaking through the atmosphere and into the stratosphere, even though I don’t actually know what that feels like.
Before you assume that sleep deprivation has gotten the best of me, however, consider this. Meteors are objects that were moving freely through space, but happened to get caught up in Earth’s gravitational field and pulled inevitably towards the ground to fall and be smashed up. With this in mind, we’d associate Meteor with things that crash and burn, right?
But that’s not what happens with Meteor – at least, as long as you are using Meteor the right way. As many various complaints there are about Meteor, it’s not there to crash and burn your app. The reason why I say that Meteor is like ascending in the atmosphere is not because it makes me feel like dying; it is because after learning Meteor, I feel like I have broken through a barrier and reached the next level of app-development possibilities.
As an intern developing Microsoft Outlook inbox add-ins for an engineering company, I’ve felt the pain of being confined to a single language and framework. I started at the beginning of my second semester in college, and was assigned to develop a project management app to run on the company’s Microsoft Outlook inboxes. I only knew Java at the time and had just taught myself C#, and since that was all I knew, that was all I used. Not knowing what a database was, I used an enormous XML file to store project data for each user. Creating functions to read, write, and update those files involved lots and LOTS of parsing. It was a big headache! Creating the user interface for the add-in was a headache even more so, since I developed them only using Visual Studio’s built-in form designer which required that I manually orchestrate every little detail change that occurs when the user does so much as select a project on the list. I tolerated the headaches, because I had no idea that tools like Meteor existed, and thought that Visual Studio was all I had. Now, I come to work with my newfound knowledge of Meteor and marvel at the big, ugly, bug-infested mess of project code that I wrote back when Java and C# were all I knew, thinking to myself “This could have been so easy, yet I made it so hard.”
Everyone complains, myself included, about how slowly Meteor runs, how MongoDB is too simplified to be useful in many applications, etc. Like a banana bread embedded with ransid walnuts, Meteor isn’t perfect. However, it is still a really great tool with so many perks. Its automatic updating makes life so easy. It tells you where your errors are, so that you don’t have to dig around for them. It’s even a great way to impress your friends and look cool. Most of all, it is the cornerstone app-development tool that opens up so many different opportunities for you to create whatever types of apps you want, and allows you to use multiple different languages optimized for specific functions, and combine everything together into one really awesome app.
I can be sure that without Meteor, I’d still be in that lower part of the atmosphere where it’s very cloudy and confusing, which is why I feel like its creators should have named it after something that ascends rather than falls to the ground, like… Rocket Ship? Call it what you want, but there is no doubt that learning how to use modern, internet-based, client-server application architecture like Meteor will help you ascend into the next level of possibilities in software engineering.