Profile photo for Xavier Amatriain

At Quora we use mostly Python for our development. Python is an excellent programming language for many reasons (see Adam D'Angelo's answer to Why did Quora choose Python for its development? What technological challenges did the founders face before they decided to go with Python rather than PHP?). There are many open source tools in the Python ecosystem, and we use several of them. When existing tools do not provide what we need, we implement our own and in some cases also try to open them to the community (see Asynchronous Programming in Python).

In addition to Python we use C ++. Perhaps the only drawback of Python is that being as it is an interpreted language, it is difficult to get the efficiency you can get with languages like C ++. So in Quora we use this language when we need to squeeze the most our of the CPUs. A clear example is when we implement some machine learning algorithms (see
Open sourcing QMF for matrix factorization).

Finally, we also use Javascript for the front-end, and, of course, we have to use some Objective C for iOS and Java for Android native development.

As for databases, we use MySQL as our general purpose database. More and more though, we have moved many of our use cases to non-SQL solutions, mostly
HBase. In very specific cases we have had to use in-memory databases such as rocksdb. We also use Memcache for caching very often.

In the data and streams management layer we use Scribe for log processing (see
Logging and Aggregation at Quora), Kafka for data streams and Spark for managing big data in general. In the past we used Hadoop Map Reduce, but have now moved almost all use cases onto Spark.

We develop everything in the cloud and more specifically in AWS (although we have some smaller use cases in the Google Cloud). In fact, there is not a single desktop or workstation in Quora. All developers have a remote “machine” in the cloud where they develop their work using a laptop as an interface.

As for teamwork tools, we use standard tools like Git for source control. We use both
Phabricator and Asana for task management, but the former is closer to our continuous deployment process (see Continuous Deployment at Quora). For other things, such as unit testing management, we have developed our own internal tools.

I might be leaving something out, but this will give you a fairly good overview of our " tech stack".

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