Profile photo for Quora User

Get ready for more answer than you bargained for…

To expand a bit on what
Piotr mentioned, here are some of the reasons that we went with the technology we have today, some of pros and cons we’ve run into along the way, and even a little bit about where the future might take our tech stack.

Google App Engine for the back end

The scalability of App Engine has been a huge benefit to our team. We’re a relatively small engineering team, and while App Engine has its quirks (eventual consistency and random latency, anybody?) the fact that we don’t have to sink a lot of time into the maintenance of servers or scalability/reliability of hardware gives us a fantastic advantage.

We use the Python variant of GAE because Python is a lovely language which is easy to both code in and read :)

If you’re interested in learning more about app engine, here’s a shameless Udacity plug!
Web Development Course Online - How To Build A Blog teaches the fundamentals of web dev, including some about using App Engine under the hood.

MongoDB for collecting analytics

The speed. Oh man. The speed. (For what we're doing with it.)

We dump a
lot of activity data into our Mongo database – everything from sign up events, to quiz results, to twitter shares. With all you guys hammering away at our server (we love it!) the data comes pouring in.

Storing and pulling our data from Mongo is, for us, all about performance and flexibility. Yes, at some point we’ll top out what we can do in this realm, but since we made the jump in late January, working with larger scale data has been a breeze.

Examples of what we’re doing? Everything from A/B testing of website content (Does encouraging students to share their progress on facebook help them reach the end of the course?) to looking for broken or unintentionally hard quiz content (“Only 5% of our students eventually got this right? Hmm…”)

One of the huge benefits of MOOCs is the ability to use large-scale data to improve how we deliver educational material, and MongoDB has really let us get to that point without an unreasonable time investment in DB performance and maintenance.

AWS for code execution

For programming assignments, we need to be able to run your code in a full environment, and our sandboxed grading system on AWS does just that. This is another place where scale and hardware reliability are taken off of the big ol’ list of things we need to worry about, and man are we ok with that.

Everything from your first
Python program, to your massively burly CUDA code runs in this environment and allows us to offer a much wider array of programming languages/environments from within the browser than would otherwise be possible.

As with any “Make A talk to B” setup, we sometimes get service drops (very infrequently! Thanks, Google and Amazon!), but the fact that a student can learn how to code in Python from a shared library computer without having to install anything? That’s pretty cool :)

AngularJS for JavaScript

Angular. Is. Amazing.

We have tried everything from
Ember.js (V1 of the Udacity website, which was retired this January, was all Ember), to Backbone.js, to Knockout, and in the end Angular was the right solution for us (although we do augment it with Underscore.js for full JS goodness.)

The injectable services, the testing-as-first-class-citizen, the awesome and supportive community… it’s honestly a pleasure to work with. Once you get yourself setup, developing with Angular is an exercise in awesome reusability and “Hey, yeah! That’s how this
shouldwork.”

I’d like to explicitly mention that Angular took a bit of time when it was young to
find out what, exactly it was.. A few trips through Europe, a whirlwind romance with MVC, and guidance from some good friends later, it’s a truly stellar framework. The documentation/tutorials sometime still show artifacts of its self-discovery phase, so check out the AngularJS Meetup Groups to get the latest and greatest.

Lastly,
Angular 1.2 is about to come out and our entire front end team is extremely excited to see that drop. They’re adding many new features, fixing up some minor-major quirks, and generally making the whole thing even better.

Bootstrap and LESS for styling

The decision here was far less clear-cut than the Javascript side of town.

First off, I want to say that
Bootstrap is quite fantastic for startups. Using bootstrap will give you a solid, if decidedly bootstrappy, design and get your MVP out the door in a fraction of the time it would take you just to get IE compatibility handled. (Although, to be fair, IE11 is getting right up there – I should be burned at the stake, for acknowledging that. I know.)

Now for the less fun bit: When the time comes to leave the relative comfort of Bootstrap, and strike out into the world of “What if I want to do something Bootstrap doesn’t do?” things get hairy. And bloated. And kind of painful.

Even compiling our own, extremely tweaked and trimmed down version of Bootstrap (instead of just loading vanilla bootstrap and then cascading our own rules on top of it), we send you guys a LOT of CSS. It’s not ideal, but in the world of getting you classes and features in a timely manner, it serves its purpose.

In a future version of the site, we’ll start phasing out our less-used chunks of bootstrap in favor of our own home-grown framework.

On the homegrown front: Our general style falls fairly in line with the ideas behind
SMACS (by the awesome Jonathan Snook), and borrows a bit from the fantastic Nicole Sullivan's Nicole Sullivan’s ideas about OOCSS. We try to make reusable and extensible CSS modules and rules that help us use our CSS over and over. Imagine that!

Finally, “Why
LESS? Why not SASS?” Because bootstrap is written in LESS, and if you think I want to go swapping back and forth between overwriting Bootstrap in LESS and Udacity in SASS, you’ve another thing coming… :)

Annnnd I'm done

So there you have it, bottom to top, how Udacity runs. As Piotr mentioned, this is the tech snapshot today; one of the fantastic things about working on an evolving project like Udacity, is the ability to use new and better technology as it becomes available.

View 3 other answers to this question
About · Careers · Privacy · Terms · Contact · Languages · Your Ad Choices · Press ·
© Quora, Inc. 2025