2016-03-28

The following post is a guest post by Nate Strauser. Nate is a developer and consultant from Philadelphia, Pennsylvania, and runs the popular We Work Meteor job board. In this post, Nate offers up some tips on finding a job with Meteor, how to prepare, and what to expect during your search.

— Ryan

So, you're learning about Meteor and want to find a job working with this awesome technology, but how do you get there? Well, the good news is that Meteor developers are in high demand and) and I've been doing professional software development since 2005, working exclusively with Meteor since late 2012. Currently, I provide consultation, training, and development services to clients, but in the recent past I've also been the CTO of a startup with a Meteor based product.

I also build and maintain We Work Meteor, an open-source job board and exper), aldeed:autoform). I'm a developer at heart, but this project has given me heightened awareness regarding the employment aspect of the Meteor community. I've helped numerous employers find developers and developers find employment in addition to my actual consultation business.

My experiences of running We Work Meteor, building several Meteor applications, hiring Meteor developers and subcontractors, consulting and training developers new to Meteor, and finding my own clients has helped me discover a recurring set of skills and techniques that are specifically helpful and relevant to Meteor developers.

Now that you have an idea for who I am, let's jump into my recommendations for developers looking to get a job with Meteor.

1. Brush up on basic competencies

You’ll need to have some solid basic skills to effectively work with Meteor to build an application.

Git

You’ll need to be comfortable with committing, syncing, branching, merging, and creating pull requests.

Working with git requires you to understand what tools are available to you, but also how and when).

Any real world product will need to make use of multiple branches to exercise control over versioning. You can branch in any way you like, but I prefer to use a simplified version of git-flow with at least three branches (develop, test, and master). I recommend using the most simple pattern that fits your current needs and then adjusting over time. Team growth and project complexity will likely increase your need for git structure.

If you are using GitHub, check out their desktop app. It makes working with repositories much clearer and very visual. Sometimes you'll still have to use the command line though, so it helps to know some of those commands (like submodule, stash, checkout).

JavaScript fundamentals

Meteor apps are JavaScript apps, so your understanding of basic JavaScript is key. You should also be comfortable with using jQuery and Underscore.js. If you can, read up on ES6/ES2015 enhancements to stay on the leading edge.

CSS frameworks

Most applications will be built with a CSS framework like Bootstrap or MaterializeCSS, so that a reasonably good-looking and responsive app can be produced quickly without lots of custom CSS work. Most CSS frameworks have similarities, so if you know one or two you should ea): follow through the tutorial examples for each available front-end rendering framework: Blaze, React, and Angular. While Blaze and React are more popular, be familiar enough with all three to give you a wide range of potential opportunities.

Meteor Guide: The guide has excellent examples for real-world applications. It is the definitive and opinionated resource for how to use Meteor. Many of the concepts and techniques are fairly advanced, but they are still very suitable for usage even in simple applications.

There are also numerous open-source Meteor applications available. You’ll have to dive into the code yourself, but these are excellent examples of how to build and structure Meteor applications.

Telescope – Product Hunt / Hacker News clone

WeWorkMeteor – Job board and developer listing

RocketChat – Clone of the team communication platform Slack

ReactionCommerce – A highly customizable eCommerce platform

WeKan – Trello clone

3. Get familiar with some of the most common and powerful packages

Having high-quality packages that enable rapid application development is one of the biggest advantages for Meteor applications. There are packages available for almost every need, but the following packages stand out as being broadly useful in a wide variety of applications.

[`iron:rout): AutoForm gives you easy to use insert and update forms with validation tied to a defined schema. It is very powerful but also quite customizable. Once you know AutoForm, you’ll never go back to building your own forms.

useraccounts:core: UserAccounts gives you nice looking pages for log in, log out, forgot password, change password, and enrolling invited users. It is customizable to meet your appearance needs. It’s a better UI and more functionality than the Meteor accounts-ui package.

alanning:roles: The roles package gives you an easy way to restrict content or actions based on a user's role. Building role-restricted functionality into your app is much easier with this package.

percolate:synced-cron: SyncedCron provides an easy and scalable way to run repeating jobs. Very useful for nightly jobs like sending emails or crunching data.

reywood:publish-composite: Publish Composite allows you to send related data from multiple collections in one publish function. It’s a nice timesaver if you have related collections.

aldeed:tabular: Tabular is a Meteor adaptation of DataTables (https://www.datatables.net/), which is a full featured table plugin with paging, sorting, and filtering.

If you can effectively utilize packages and make the right choices and compromises in your application design, you can rely heavily on packages. This allows you to focus on the unique functionality of your application and not all the necessary, but non-novel, functionality.

4. Improve or build a package

Improve an existing package

Review existing packages and submit pull requests for bugs fixes, tests, or documentation. Tests and documentation are not glamorous, but it will help you build your knowledge and help others to utilize the ) that bring existing libraries into the Meteor package system, libraries specifically for building Meteor apps like aldeed:autoform, and novel pieces of application functionality like useraccounts:core that can be dropped into a Meteor app.

Wrapper packages will help you understand how the package system and API work, but as these are just wrappers, there won’t be much novel utility. Meteor library packages like AutoForm are advanced and require significant understanding of Meteor to be truly useful. Novel application functionality is a good sweet spot. For example, there is not yet a plethora of photo gallery, shopping cart, and product review packages in the ecosystem. This presents a great opportunity to build something that other developers can drop into their app.

Packages of any type can be an excellent way to build your reputation and generate leads. If you construct a good drop-in component, it’s quite possible you may get paid work to customize or enhance that same package in the future.

5. Get familiar with popular Meteor DevOps and hosting options

If you are going to build a Meteor app, you’ll almost certainly need to host it somewhere.

You’ll need a web server layer to run the Meteor server. This layer can be set up somewhat manually using MUP on EC2 or DigitalOcean. It can also be a far more hands-off PaaS offering like Modulus, Heroku, or Galaxy.

Your app will need a Mongo database to store your data. Similar to the web layer, you can set up your own Mongo instance or cluster on EC2 or DigitalOcean. You can also pay a little more for a robust and secure DBaaS offering from Compose or mLab.

Automating the deployment process from the git repo to the web server is another useful technique that can be facili), Compose, and Codeship, which is the setup that I use for all my work.

Which of these services is best for a given app or how to set up your app on a service is beyond the scope of this article, but you may find these other articles useful: Modulus + Compose + Codeship - Digital Ocean + mLab.

6. Build and release a Meteor application

Build something that you have a need for and share it with the community. You could write an application from scratch or fork an existing open source Meteor application. You’ll gain more hands-on coding experience building from scratch, but you’ll get experience running and deploying a Meteor app with either approach.

If possible, you should make your application open source to let others see what you can do with Meteor. Potentially, your application could help out the community if another developer learns from or reuses your work.

The application you build doesn’t have to be a billion-dollar unicorn or even look that good. The important part is that you gain experience and confidence with a Meteor app running in the real world. If you do build an application that you want others to use or review, be sure to announce it on the Meteor forums.

7. Passively promote your Meteor knowledge

Let the world know that you know Meteor. The need for Meteor developers is currently very high, and you’ll likely get a few leads just by making a few low-effort declarations of your skill set.

WeWorkMeteor: Create a developer profile to list out your experience with the framework and what type of positions you are interested in

LinkedIn: Create a profile that strongly features Meteor. Be sure to add ‘Meteor’ as a skill and consider calling yourself a ‘Meteor Developer’ instead of a ’Software Developer'

AngelList: Create a profile that features Meteor. Be sure to list ‘Meteor’ in your mini-resume and as a skill. Also add any Meteor apps you’ve built as ‘Projects'

8. Monitor popular outlets for Meteor development needs

WeWorkMeteor: I may be biased as this is my pe

Show more