Are You Agile Enough for Polyglot Programming?

In Europe many people are polyglots—people who speak multiple languages. In America? Not so much. One day I was reviewing a resume of a job candidate that said he was fluent in six languages. When he came in for his interview, I asked what languages he spoke. “Speak?” he said, no way, I program in six languages: Object Pascal, C++, Java, Visual Basic, TCL, and JavaScript. I am also fluent in ten markup languages, 8 frameworks, and seven database languages on six different platforms. Ok, I thought—he was truly a polyglot.

What good is to be a polyglot when it comes to programming? Aren’t most applications are written just in just language? C continues to be the most popular language. However, today we write composite applications, with multiple components running on different systems and different platforms. The old model view controller paradigm is split up across Web servers application servers and database servers all tied together by some sort of message bus and a network. Different components are typically written in different languages. Kernels and core components are still in written in C for speed. Code running in applications servers are typically written in Java or C#. Today’s browsers are so powerful and engines like V8 making JavaScript the language of choice for web GUIs. Then there are a whole plethora of frameworks like Ruby, Groovy, PHP, and that use languages similar to Python and Perl. Then there are a whole host of markup languages for every imaginable. Moreover, your programmers who know SQL and XML might just find that JSON is a piece cake.

So the question is, do programmers need to be polyglot, or is it the systems that are polyglot?

Polyglot Programming

Harper Reed's Amazon Architecture

Harper Reed's Amazon Architecture

An interesting case study in Polyglot Programming is the Obama re-election campaign. The entire project was conceived of, designed, deployed, and dismantled in 583 days. It was spread across 3 data centers and 2000 nodes; it consumed 180 TB of data and supported 10,000 requests per second.

Luc Perkins (@lucperkins) says in his blog that the Obama campaign was unbelievably agile. It was 100% cloud based and polyglot. Poly-language, poly-framework, and poly-db.

Harper Reed, the CTO for the Obama re-election campaign, knew from the beginning he was resource constrained, so he bet big on the cloud. Without millions of dollars for servers, Harper chose Amazon Web services to host everything.

A presidential campaign relies heavily on volunteers. So rather than using a rigid architecture with fixed standards, he decided to leverage the varied resources of his volunteer. He created a deeply polyglot framework that allowed people to write code in multiple languages.

To manage these hundreds of different applications Reed relied heavily on APIs. He created a dashboard where citizens could interact with each other, never knowing that each application or sometimes each page was written in a different language. APIs allowed all the applications written in Ruby on Rails, Java, JSON, Node.js to communicate like they were written all written in a mother tongue. There was no tower of Babel.

Enterprise Architecture

As an enterprise architect, I would never have thought of doing it that way. I would have set my standards and then enlist the resources I need. Nevertheless, Mr. Reed couldn’t do that. He employed an agile framework that was modular and very iterative. With thousands of volunteers, he had a wildly diverse set of skills. To take advantage of that diversity, he used polyglot programming. He let the best and brightest minds build their own apps with the tools they knew best.

Harper created a framework where all of the different components could act as one. As each module came online, the functionality of the whole system increased. Programmers were able to create their own modules in the language of their choice, leveraging their expertise. The primary donation program was updated daily, and A/B testing occurred in real-time—that’s agile!

The Obama election campaign was certainly remarkable, and Harper was a clearly a genius, but is this kind of programming replicable? Can federal, state and local agencies can use polyglot programming and achieve this kind of agility?—I think so.

Let’s say an agency has an initiative to modernize a monolithic application. Rather than approaching it like a big bang, an agile approach using polyglot programming enables you to tackle one piece at a time in a modular fashion, developing components iteratively. This approach should not be confused with “minimum viable feature set” The goal is not to eliminate necessary features, but bring them on line iteratively. This way you end up with more and better features.

Agencies can use Harper’s strategy of leveraging the skills he had. Let’s say you need fifty programmers, and according to your architecture, they all need to know Java. It’s going to be hard to find fifty programmers with that skill set. Polyglot programming provides an alternative. You can break the application into parts and assign small teams of three to five people that can be proficient in a single language and make them responsible for their own module. You might be surprised to find that many of your programmers are skilled in languages they aren’t being paid to work on. Your older COBOL programmers may know C, which is still the most popular language on the planet. While other programmers might have picked up JavaScript on their own. Your database administrators, who know SQL, will feel right at home with JSON, and pick it up in a heartbeat. Your veteran programmers will understand structured programming and can easily pick up some of the ‘glue code’ that is necessary in polyglot programming.

Studies have shown that when factory workers do repetitive work and can’t see the whole project they get bored, and their work quality decreases. The beauty of polyglot programming is that you have small teams or even individuals writing modules, but they also get to see how their module is part of the whole. They take greater pride of ownership, and quality goes up.

APIs are the magic that makes polyglot programming work. Without them you just a pile of separate modules. Agility means changing direction rapidly while maintaining control. Being agile doesn’t mean you have to all go learn a complete Agile framework like Scrum or SAFe, complete with all the new jargon of sprints, and scrum masters. The key to agility is iterative design and modularity. Smaller modules are easier to test. They are typically simpler. Simple is good! You may never be as agile as Harper’s team bringing new code online daily, but with polyglot programming and Agile you don’t need to rewrite you application as a big bang and risk blowing it all up. Agile doesn’t mean just going faster, by leaving out features. It means being able to change direction quickly while staying in control. This means testing earlier, bring code on line sooner, higher quality and a better user experience.

Not everyone programmer is going to be a polyglot—fluent in multiple languages. However your applications can be polyglot. Polyglot programming is the way of the future. It provides more flexibility and it fits the perfectly with RESTful architecture and Internet at scale. Moreover, you might be surprised to find that your programmers know more languages than you think.

Nathaniel Crocker

CIO and Co-founder at Crocker Institute
Nathaniel (Rushfinn) Crocker is the CIO and co-founder of the Crocker Institute, a benefit corporation in South Carolina dedicated to helping organizations meet their mission through Enterprise Architecture and Program Evaluation. He is passionate about cybersecurity and protecting our online identities. You can reach him at
About Nathaniel Crocker

Nathaniel (Rushfinn) Crocker is the CIO and co-founder of the Crocker Institute, a benefit corporation in South Carolina dedicated to helping organizations meet their mission through Enterprise Architecture and Program Evaluation. He is passionate about cybersecurity and protecting our online identities. You can reach him at


  1. Petar-Krešimir Marić says:

    I feel like this is just one of those buzzwords (or buzzphrases) that don’t have much substance behind them. Most programmers are proficient in more than one language. Even if they are not, learning and adapting to another language is not that difficult for experienced programmers. Often when applying for a job, a company will either test your knowledge in the language they need, or a related/similar language. This is because they know they can train you in the language they use as long as you’re proficient with another one that’s not too different. Programming is a mindset, not language syntax. In fact, learning the syntax and the quirks of a specific language is the easy part. This why good coding tests (like the ones on TestDome for example: measure the underlying problem solving abilities, instead of just language familiarity.

    • Anonymous says:

      Petar-Krešimir, thank you for reading the article and for your feedback. I always appreciate hearing from readers. I would agree with you completely that most programmers are proficient in more than one language (I hope I said that). While I am not a programmer myself, I do understand your point well about a mindset vs. syntax. While monoglot, diglot, triglot are definitive in the specific number of languages you know, “poly” as a prefix means many. “Many” people define Polyglot as knowing six languages or more, while the term “hyperplogyglot” was coined as knowing 12 or more. I do think it is unusual whether they are human or machine language for people to be fluent in any number more than 10 languages.

      The point I was trying to make in the article, and maybe didn’t succeed, was that the term polyglot programming (PPP) as defined by Dean Wampler was an idea that Harper Read was shooting for in the Obama re-election campaign, where he was pushing the envelope in the number of languages used in system. Again, I use the prefix Poly, as “many” not “several”

      Harper’s architecture is not so innovative today, but in 2008 it was. From an infrastructure perspective I was impressed.

      Not being a programming, it was not my intention to belittle the abilities of programmers. I hope that I did not do that.

      Again, I appreciate the feedback.

      Thank you


Leave a Reply