Polyglot Programming and Agile Development
Polyglot Programming as a technique is not new and as a paradigm was coined in 2006 by Neal Ford. In today's world, we often architect solutions which need to be highly scalable, secure, efficient, have an engaging GUI, be extensible with low technical debt in parts or whole. To work with a single tech stack promotes a sense of mono culture which is detrimental and limiting the way a solution can be designed. Moreover, with multi-core machines available, processing now can leverage parallel processing and it maybe make more sense to use a language which takes away the overhead of the intricacies of multi-thread programming.
In other words, in many cases, engaging in Polyglot Programming helps you focus more on the domain and adds to developer productivity.
On the flip side, increasing the moving parts also means that if not designed well, Polyglot Programming could be a double edged sword and produce more mess in the way different pieces interact with each other.
In this talk, we will showcase an ecosystem we built, involving a desktop device configuration backed, an OS-agnostic desktop GUI, a cloud service, a cloud cluster configuration tool and how we used the Agile principles, namely TDD, Continuous Integration and the works to be able to keep the polyglot ecosystem sane.
Name wise, the languages/tools/etc which we used in our Polyglot case – Google Go, Node-Webkit, JS (Knockout/RequireJS), Ruby, Cucumber, RIAK, Chef, Lisp, Jenkins
Outline/Structure of the Demonstration
We will spend approx 5-10 mins each on (1) the benefits of Polyglot Programming (2) why we chose the languages we chose for the case study.
Then, after we are done with the slides, we will do a live demonstration, where we will showcase the different codebases and how they interact with each other and then finally show our Jenkins pipeline which builds, tests and packages the final product for our customers.
The code and pipeline showcase is expected to cover about 30 minutes.
- investigate the benefits of Polyglot Programming
- understand what kind of challenges it poses
- showcase how we try to mitigate the risks while building a high quality codebase
We will be largely working under the Agile principles so we will try to showcase how we can apply Agile fundamentals in a Polyglot Programming environment.
Developers, Product Managers, Product Owners - anyone who wants a different perspective