Job openings/Senior Software Engineer Frontend



Job Title

Senior Front-End Software Developer [CLOSED]

Reports To

Director of Features Engineering

You are

A great engineer who loves to hack JavaScript. You’ll join the team that’s building Wikipedia’s next editor. Think of the best web-based document collaboration tool you know -- and then consider building one that's totally open source. Challenge accepted?

Who we are and what we’re doing

Other companies and organizations promise you'll change the world. We are doing it. From Albuquerque to Zanzibar, Wikipedia is where the world turns to understand almost any topic -- more than 500 million people every month. The Wikimedia Foundation is the nonprofit that operates Wikipedia with a small staff.

But we need more help now, to grow and diversify the editing community beyond those who have the stamina to figure out geeky code. We won't be satisfied until everyone in the world can contribute to Wikipedia, any time, on any device, in their own languages.

This presents a great challenge for frontend engineers. Not only do we need something as easy to use as a typical word processor, it also has to be backwards compatible with the terabytes of complicated “wikitext” we already have.

We've already made a good proof of concept, but now we need more specialists. For this job we're specifically looking for someone to work on the Wikipedia text processing "engine". While your code will run in the browser, you will be focused on creating an efficient system to process transactions on the document, and maybe even coordinate an editing session with other users elsewhere on the Internet. So when an engineer makes a button that adds footnotes to the page, they will be calling the general-purpose API that you wrote.

What we’re looking for

Ideally, we desire someone who can be in our San Francisco offices daily, or at least on a semi-regular basis. That said, our team is distributed around the globe.

You have written a non-trivial amount of code in JavaScript, and you're very familiar with that or other dynamic and functional languages such as Python, Lisp, Erlang, Haskell, ML, or Smalltalk. Programming in a dynamic language energizes you; it doesn't send you diving under your desk for your “Enterprise Patterns in Java” book.

You're not afraid of large, complicated data structures or algorithms. When you hear “we have to synchronize trees for simultaneous views of code and WYSIWYG” you are happy to have a problem worthy of your education (or self-education).

You're a professional developer and learning all the time. You're comfortable writing code for a Linux server deployment. You know Subversion and/or Git, and have used bug trackers. You document your methods as you write them, and sometimes even write tests as you go (or before you code). Some of the code you have written now makes you cringe because you've learned so much since then.

It's a plus to have

You also know all about web browser scripting. You slay demons with Firebug or Chrome's Inspector. You know jQuery (and its limitations). You understand HTTP, and latency and asynchrony in AJAX.

You know open source and free culture. You probably have an account on GitHub. Or if not, you've been at a closed-source company and you're looking to finally unleash your code on the world.

You know what it means to be a volunteer or to coordinate the works of volunteers. Big ups if you are a contributor to Wikipedia.

If you have any existing open source software that you've developed (these could be your own software or patches to other packages), please share the URLs for the source.

If you have one or more technical blogs that you contribute to, send us the URLs.