For tech companies that handle large volumes information (pretty much all of them), there are a number of technologies and programming languages that will do the trick.
In the simplest of terms a programming language is a set of instructions that communicates with computers make them do stuff. What this “stuff” is varies greatly depending on what you want to accomplish, that’s why there’s hundreds of programming languages out there to choose from.
Locking a bunch of engineers in a room and telling them to come up with the single best solution to store, protect, and serve that data back to customers probably isn’t the best way to go about choosing a company-wide language.
SumAll has avoided bloodshed by taking advantage of our open culture, and formalizing a process by which a language’s pitfalls and merits can be disputed and measured against another’s without the loss of any limbs or eyes in the processs.
We interviewed SumAll engineer and data scientist Michael Hwang who describes the advantages of doing a “Language Showdown” and why your startup should think about hosting one.
What is a language showdown?
The programming language showdown was a highly compressed marathon of presentations on different programming languages. Each presenter championed a single programming language by educating the audience on different aspects of the language. Every engineer gets an opportunity to push forward his/her agenda while the audience gets to quickly learn about different languages.
How does it work? What kind of languages were presented and how was the showdown conducted?
SumAll is fortunate to have an engineering team with such a diverse collection of programming language knowledge. We had seven volunteers who championed eight different languages: Haskell, Scala, Erlang, Java(Android), Ruby, Coffeescript, Python, and Clojure.
Each presentation was given a very strict 10 minutes of time to educate either through a presentation and/or demonstration. A template slide deck was provided to give some structure to the presentations. Topics recommended to be covered included: history, basic technical details, ecosystem, strong use cases, not-so-strong use cases, and how the language could fit into SumAll.
The structure was not strictly enforced and not everyone followed the format. At the end of the showdown, a survey was e-mailed out to take a temperature on the different languages and the different presentations. All the champions did a fantastic job but there can only be one champion-of-champions…
What purpose does the language showdown serve? Why do you think it’s important for a startup to host their own?
Again, SumAll is fortunate to have a knowledge base of different programming languages and thus we end up having many isolated debates about “the better language.” The SumAll engineering team is heading towards a micro-service architecture which opens up opportunities for the adoption of other programming languages that may be better suited for certain cases.
Rather than having these important discussions small and isolated, the programming language showdown was created as a means to surface this information and to formally share it amongst the entire team and the entire company. The showdown got everyone on a common footing. From there, we were able to poll the difficult questions and to gain insight into what the team was thinking.
How are the results turned into decisions and subsequently implemented?
There were a couple interesting results. The engineering team was most interested in trying out Haskell and was most interested in having Scala or Clojure get adopted next by SumAll. These results help the team to plan ahead and to allow individuals to learn the language that will most likely be adopted ahead of time.
How does this type of thing scale to larger and smaller operations?
SumAll is a relatively small operation but we reached a critical mass where I felt we had enough knowledge to be fruitfully shared. Smaller operations may want to continue to have those impromptu discussions.
Another suggestion is to go to local meetups. There are many programming language specific meetups that are very well run and are an invaluable resource. Larger organizations may want to keep a formal channel open to continuously discuss suitable languages via an architecture committee. They can also setup workshops and regular presentations where peers can educate each other at different aspects of languages.