*Line drawing copied in the style of an ancient Egyptian tomb painting, captioned 'Games of Ball.' Four women in long white dresses, with dark braided hair and beaded collars, stride in profile with arms raised, tossing and catching small dark balls that hang in the air above them.

MongoDB engineers juggling many implementations of many specs.*

At MongoDB, we develop a dozen client libraries (“drivers”) in a dozen programming languages. A few wrap shared cores written in C or Java, but mostly they’re rewrites in their target languages: the JavaScript Driver is pure JavaScript, the Rust Driver is pure Rust, and so on. Building the drivers this way is a big commitment. Lots of database companies just write their client in C and make thin wrappers in various languages. Our way is harder but, in my opinion, better. Our drivers are easier to install, their APIs are more idiomatic in each language, and they participate normally in each language’s runtime: its threading model or async loop, its garbage collection, etc. This is only possible because we keep developing native drivers in each language.