edX is an online learning destination and Massive Open Online Courses (MOOC) provider based in Cambridge. The organization was founded by Harvard University and MIT in 2012 and operates as a non-profit.
I had the opportunity to interview Mark Haseltine, edX's CTO, to discuss the engineering organization as a whole for our Engineering Spotlight series. There are a lot of different aspects to edX's platform and technology, which is makes things very complex. Plus, Open edX is the open source platform that powers edX courses and is available for free.
Mark Haseltine, edX CTO
edX is growing the engineering and product teams, so make sure you check out its BIZZpage for more details on job openings.
Keith Cline: From a broad point of view, what’s the background of the engineering team at edX?
Mark Haseltine: We have an amazing group of talented engineers at edX. They have come from a variety of enterprise and startup companies to assemble here with a mission of making an impact on higher education all over the world.
Our primary goal is to hire software engineers with excellent problem solving skills and strong computer science fundamentals. Although we’re a Python/Django shop, our team has a wide variety of backgrounds including former .NET, Java, and Ruby engineers. Most developers are full-stack and usually focus on a specific part of the system based on product line.
We’re an agile shop with small cross functional teams running daily standups and deploying to production regularly. Our work is open source so the code not only benefits edx.org but hundreds of other sites worldwide.
KC: edX is a MOOC - can you share more information as to what makes up the overall platform? It must be very complex.
MH: In achieving our mission, the edX site has grown very quickly to reach millions of learners worldwide. From a design perspective, we focus on simplicity and scalability to continue to support rapid growth. Our systems are as complex as they need to be to handle our expanding learner base.
We have relationships with over 100 top universities that provide the rich course content at the heart of the edX mission. In order to support them, we create a learning platform that is flexible and extensible enough for a wide variety of online learning choices. Our extensibility model is a key component of system design at edX - especially as the number of content partners continues to grow.
Since our code is open source, we also have a broad community depending on us to keep our platform as simple as possible. It can be a challenge, but we strive to make the system straightforward for people who operate our platform as well as those who enhance/extend it.
KC: What are the underlying technologies that ultimately make up the platform?
MH: We are primarily a Python/Django development shop entirely deployed in the cloud on AWS. We use MongoDB for the course content and MySQL is the primary data store. The front end system is a mix of Bootstrap developed pages along with RequireJS. Our analytics stack is a combination of open source and proprietary technologies including Hadoop, Hive, and Vertica. You can find more details about our technology stack at the Open edX web site.
KC: What are some of the cool and interesting problems that your engineers get to solve?
MH: Our edX mission is three-fold:
- Increase access to high-quality education for everyone, everywhere
- Enhance teaching and learning on campus and online
- Advance teaching and learning through research
Achieving this mission at a worldwide scale while supporting a thriving open source project presents a number of interesting challenges to our engineers which require creative solutions.
Our engineers are key partners in creating the learning environment of the future. We work closely with our course teams to build a platform that enables the most cutting edge approaches to online learning. For example, we are blending big data and machine learning techniques to optimize the experience for the unique needs of each learner.
At edX, we strive to be a true leader in accessibility of our learning tools. We invest in accessibility training, testing frameworks and test automation to measure our compliance. We are helping to lead the way when it comes to mobile accessibility standards and testing where the state of the art in our industry is truly lacking.
Globally, we see interesting challenges bringing the best of large-scale e-commerce to e-learning and higher education. Our engineers must provide a customizable, secure platform that works in different languages/currencies, integrates with local payment methods and provides flexible merchandising. Our capabilities in this area are very important to the long term success of our mission.
As an open source company with an active community, our code is shared with the larger community and we are fortunate enough to receive contributions from community members on an ongoing basis. This development model adds a number of design challenges to all of our projects in building the proper extensibility to enable these community contributions.
In the end, our goal is no less than to change the face of education. We want to support better individual outcomes for all of our learners worldwide. There are an evolving array of interesting technical challenges to achieve this objective well beyond those few cited above.
KC: What is the culture of your engineering team?
MH: At edX, we are focused on our learners and that is the core of our engineering culture. Our developers own their code so the engineering team is highly collaborative and self-directed. We are an agile shop with an ongoing feedback loop working on outcome based objectives. It’s a very simple approach that leads to empowered teams who truly make an impact for our learners.
KC: Can you highlight a couple of people specifically?
MH: Eddie Fagin (above) recently joined as our Chief Architect here at edX. He leads the software architecture team and focuses on the long-term technology roadmap for the edX.org organization and the Open edX platform. His team is responsible for defining the structure of our extensible educational platform to enable a global community of learners, instructors, and researchers.
Eddie believes that good architectural design and clear context empower our developers to be more self sufficient, productive and confident in the changes they are making. He is excited about unlocking even more options for app developers and course teams that want to provide new experiences to learners through our platform.
Ned Batchelder (above) is one of our senior Python developers who helped design and build many of the core platform features like XBlocks. He currently works on the open-source enablement team helping others use and extend our code. He also works on technologies underpinning our Django-based learning platform like safe templating, safe code execution, and testability.
Ned is driven both by edX's goal of educating the world and our idealistic approach as a non-profit, open source company. In his spare time, Ned is an organizer of Boston Python, and maintains a side-project or two including coverage.py which is the standard for measuring test coverage in Python and used by serious Python shops everywhere.
KC: Can you highlight some of your job openings?
MH: We are looking for Senior Software Engineers for our Data and Analytics Team, as well as a Software Solutions Architect for our Solutions Team. The Analytics role will focus on data support for enhancing the overall educational experience. The Solutions Architect will work with key customers to enhance the platform and develop custom solutions using our extensible framework. Both roles are key to our overall success.
Python/Django experience is not required to apply for either of these roles. All we require is an interest and desire to learn. Many of us came from companies with a different technology stack. Python is a fun language to learn with a strong community behind it.
KC: Finish this sentence: I love working at edX because…
MH: ...I get to work with a very talented group of people in an empowered environment solving a challenging problem which is important to the world -- increasing access to high-quality education. I feel good knowing our work has a broad impact not just on our edX learners but on the broader open source community we serve with Open edX. We are a truly unique and interesting place to work unlike any other in the area.