We Need a Full-Time Javascript Front-End Developer

Updated Feb 6, 2014: We found our guy! This posting is now closed.

About Us:

We’re a profitable, bootstrapped, growing company. We create beautiful personal finance software that’s changing how people think about their money. Our software is named “You Need a Budget”, but everyone just calls it “YNAB”. For years now, lots of people have been buying YNAB and then telling their friends how awesome it is. (Google us and you’ll see.) We’ve got desktop, iPhone, and Android apps. And we’re currently working on the iPad app.

Now we want a Web App

Our desktop software is great, but our customers would love to access YNAB on the web too. We’re already hard at work on our Rails-based REST API that will take care of the difficult stuff like occasionally-connected data synchronization between our various clients. So, much of the back end is covered. Now we want to write a Javascript app that does everything client-side, and uses the API to send the data back and forth. That architecture would have a lot of benefits, like letting us wrap it and deploy it on the desktop, or letting folks use the app even when they’re offline.

And that’s where you come in!

You’ve got significant experience architecting and building large, Javascript-centric web apps, and you’d like to work with us on a full time (40 hours/week) basis. If you’re international, your status would be as an independent contractor. If you’re stateside, you can be W2, or independent contractor as well. It’d be your call.

This app is going to be our bread and butter. As its lead architect, you will be laying the foundation for our web and desktop efforts for years to come. After reading that, you’re hopefully thinking, “Wow! Cool!” And then, if you’re really experienced, you’re probably thinking, “Oh, wow…that sounds like a lot of responsibility!” And you’d be right. But now you’re probably already back to thinking how much fun this is going to be…

You would be:

  • Architecting and co-developing a Javascript-centric web app that has many features of our existing desktop application. (We’re pretty excited about Ember as our framework at the moment, but we’re approaching it with an open mind)
  • Working with a small development team (~2 other client-side devs, a server-side API dev, and a designer) on a regular basis. Our teams are small (our whole company only has about 12 full-time employees, and the CTO is writing this job post), but we get cool stuff done.
  • Mentoring your teammates on how to develop a maintainable app in Javascript
  • Working from home most of the time, and working with us in person (or at someone else’s home) occasionally.
  • Talking with our other desktop, iPhone, Android, and Rails developers (we’re all friendly) to make sure we’re all on the same page.

You’re the one we’re looking for if you:

  • Are a confident, humble programmer who would thrive on a small, remotely based team.
  • Have already written large-scale Javascript-centric web apps.
  • Major bonus points if you’ve written a web-app that’s been deployed to the desktop (Chromium Embedded Framework, XULRunner, etc)
  • Have experience with development apart from the web. Our ideal candidate now lives and breathes web tech, but perhaps had a former life in another language.
  • Know more languages than just Javascript/Coffeescript.
  • Have experience with at least one of the major modern Javascript frameworks other than JQuery:
  • Ember, Backbone, AngularJS, Dojo, Sproutcore, YUI, etc, and have an informed opinion about some of the others.
  • Understand the value of a strong test suite
  • Have an informed opinion about Javascript vs CoffeeScript
  • Are suitably paranoid about security. We don’t deal with bank account credentials or CC numbers, but you should act like we do.
  • Geek out about automation, continuous integration, and continuous deployment.
  • Dislike reinventing the wheel and consequently enjoy finding a library that does *just* what you were about to code yourself.
  • You stand out amongst your fellow geeks by being a great communicator and all around “nice person.”
  • Are familiar with distributed version control (Git, Mercurial, etc).
  • Have excellent debugging skills
  • Have great architecture software design skills. Many of us will be learning about Javascript architecture by reading your code, so it should smell good.
  • Understand the balance between shipping regularly and getting things right
  • Like to optimize/profile
  • Understand how to use in-browser developer tools to great effect
  • Are at home on the command line
  • Write code that is easy for other programmers to understand and use
  • Use descriptive variable names
  • Have excellent spoken and written English (we’re an international team, so accents are fine!)
  • You’re self motivated and thrive with directions like:

“Now that you understand the constraints, how do you think we should go about writing this component?”

“Woah, looks like we have a bottleneck when we’re iterating over a few thousand transactions in this sample data file. Can you look into it?”

You get Bonus Points if:

  • You live anywhere remotely close to Texas, Switzerland, Maryland, Sydney (Australia), or Italy. (That makes it easier for us to get together on a regular basis).
  • You do back-end stuff too. Devops, deployment automation, Rails, etc
  • You’ve written some open source stuff, or made some good contributions to an open source project.

Major-Triple-Gold-Star Bonus points if:

  • You already use and love YNAB

More about how we work:

  • We all work from home. We don’t track time, but we do get stuff done. If this is your first “at home” gig, let’s talk. We were nervous too when we made the shift out of an office.
  • We like to use “the best tool for the job”, and here’s a sampling of what we use now:

We communicate on Skype, HipChat, Google Hangout, Basecamp, email, and occasionally real phones.

  • We use BitBucket for source control (we use Git and Mercurial)
  • We track our tasks in Assembla
  • We handle Bugs and Customer Service in FogBugz
  • We meet each other in person sometimes to work on big tasks or get started on large projects. (We like each other, so this part is fun). We’d do that with you too to get everyone up to speed quickly.
  • We don’t track vacation, but we believe it’s good for you to take some, and think you know best when a vacation is needed!
  • We’re profitable, and we wouldn’t hire you if we weren’t. We’re in this for the long haul.
  • We budget for the business like we do in our personal lives. We’ve been saving up to hire you, so if we stopped making money tomorrow, we could pay everyone for a good long while.
  • We’ve got 12 full time employees and a number of part time people too.
  • We make a huge, positive difference in people’s lives.
  • We have a 401k where we contribute 3% of your salary and it vests immediately.
  • We don’t provide health insurance, because we’d rather have everyone shop around and settle on a plan that fits their specific needs.
  • When you do cool things, we pay you a bonus. Unfortunately, there’s no 30-page document describing our bonus system.
  • We are bootstrapped. Initial funding was $63 for AdWords. We’re really glad AdWords used to be inexpensive.
  • We give birthday gifts.
  • The full-time team meets once every 18 months or so for a fun meetup. (Our last one involved wilderness survival training, ziplining through trees, and surfing)
  • We’ll give you a YNAB T-Shirt (and not one of those XXLs that companies can never be rid of)

To apply:

  • Your cover letter can be your email. No need to send something separate.
  • Send your resume in PDF form.
  • Don’t forget to include links that make you look good! Twitter, LinkedIn, Stack Overflow, GitHub, BitBucket, etc.
  • Please include links to things you’ve built, and describe your role in building those apps.
  • Include “Let’s build a web app!” in the subject line of your email. If you don’t, we won’t read your email.
  • Applications should go to: [email protected]
  • Also, please complete the following questions. All told, they should take you less than an hour, and will save us a great deal of time in the long run.

1) What Javascript MVC framework(s) are you most familiar with?

2) What Javascript MVC framework(s) are you most excited about?

3) What aspect of Javascript trips you up the most, or what language feature do you most often wish it had? (If you are using a variant like CoffeeScript or TypeScript, you can answer with the aspect you were happiest to avoid or the feature you were happy to finally have.)

4) If you were interviewing a prospective Javascript expert to join our team, what one or two concepts would you ask about to make sure that the developer really understands the nuances of Javascript rather than only knowing how to Google, copy and paste. (There are plenty of good answers here. I’m trying to figure out what knowledge you value and believe can help identify the experts out there.)

5) Fork the following JSFiddle and follow the instructions:


Send us a link to your answer (your fork of the Fiddle)