Polyglot Programming and Agile Development

schedule Feb 28th 01:30 PM - Jan 1st 12:00 AM place Grand Ball Room

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

 

 
1 favorite thumb_down thumb_up 6 comments visibility_off  Remove from Watchlist visibility  Add to Watchlist
 

Outline/structure of the Session

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.



Learning Outcome

We will

  1. investigate the benefits of Polyglot Programming
  2. understand what kind of challenges it poses
  3. 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.

 

Target Audience

Developers, Product Managers, Product Owners - anyone who wants a different perspective

schedule Submitted 4 years ago

Comments Subscribe to Comments

comment Comment on this Proposal
  • Joel Tosi
    By Joel Tosi  ~  4 years ago
    reply Reply

    I like the topic as well.  What background would the attendees need?  Specific language / tools?

    Thanks,

    Joel

    • Shashank Teotia
      By Shashank Teotia  ~  3 years ago
      reply Reply

      Since this is NOT a workshop, I don't need anyone to be prepared with any software requirements. Even if you don't know the language, it does not matter as the concerns should more or less be similar.

  • Sonik Chopra
    By Sonik Chopra  ~  4 years ago
    reply Reply

    Hi Shashank,

    This is a great topic indeed and we face this issue in our day to day life. I would appreciate if you can add more details and presentation if any. And will you be covering any specific languages as polyglot programmer?

     

    Thanks

    Sonik Chopra

    • Shashank Teotia
      By Shashank Teotia  ~  3 years ago
      reply Reply

      Hi,

      Thanks for your feedback. I have updated the relevant sections above to cover your questions. I am in the process of creating a deck so sorry, I have nothing to share which is already published.

  • Shashank Teotia
    By Shashank Teotia  ~  4 years ago
    reply Reply

    More often than not, applications have unique scalability requirements. Some services need to be optimised for response time, whereas others need high availability. Even when persisting, sometime data is unstructured and OK to be eventually consstent but for some mission critical data, we need ACID complicance. Moreover, there are times when our web applications are more tuned towards writing domain logic faster, whereas jobs may be more tuned to leverage multi-core architectures (hence need thread safe code or code which can truly run in parallel).

    In the modern world, languages have evolved to serve specific needs and to build an efficient system, it is important to be able to leverage the right language for the respective need. I will try to address how we can minimise the pains associated with a polyglot world.

    Language wise, I have not yet finalised, but I will be looking at a language optimised for writing domain logic faster, a language which can exploit multi-core architectures and polyglot persistence.

  • Nitin Ramrakhyani
    By Nitin Ramrakhyani  ~  4 years ago
    reply Reply

    Hi Shashank,

    It seems an interesting topic for the developer community for sure. Adding to Sonik's comment, if you got a slidedeck already, then a link to that would certainly help the review team. If not, then do add a link to any of your past presentations under the 'Link' section. 

    Thanks,

    Nitin