Less is MORE

You can become a serverless blackbelt. Enrol to my 4-week online workshop Production-Ready Serverless and gain hands-on experience building something from scratch using serverless technologies. At the end of the workshop, you should have a broader view of the challenges you will face as your serverless architecture matures and expands. You should also have a firm grasp on when serverless is a good fit for your system as well as common pitfalls you need to avoid. Sign up now and get 15% discount with the code yanprs15!

Just finished watching an interesting seminar video by the guys from Object Mentor (a consultant company founded by Robert C Martin, the father of agile development) at:

http://www.infoq.com/presentations/polyglot-polyparadigm-programming

The video is about an hour long and covered a large number of topics around using different languages (polyglot) and different programming paradigms (poly-paradigm) to simplify and speed up the software development process. The main thing I took away from this was:

“Less code is better, so less code is more. With less code, all your problems become smaller, be it maintenance, testing or performance.”

which most developers would agree I’m sure, after all, one of the reasons we refractor our code is so we end up with less code.

For young developers like myself, we have come into software development in an era dominated by the object oriented paradigm and a small handful of mainstream OO languages like C++, C# and Java. So for me at least, it’s refreshing to see how other paradigms and languages can be used in conjunction with those I’m familiar with to achieve:

  • greater productivity from the developers
  • more agile and extensible solution

Summary:

If you don’t have the time to watch the video (or simply not interested enough to do so!) then hopefully the list of key points I’ve compiled together would at least give you some idea what it’s all about:

  • There’s no silver bullet in software development
  • OO paradigm not always the best solution for the problem
  • Statically-typed languages (C#, C++, Java, etc.) are compiled for greater speed and efficiency at the cost of lowering productivity
  • Dynamically-typed language (ruby, python, JavaScript, etc.) are interpreted for greater extensibility, agility and productivity at the cost of lowering runtime performance
  • Ola Bini‘s Three layers – Domain layer (Domain Specific Languages), Dynamic layer (JRuby, etc.) and Stable layer (Java, C#, etc.)
  • Scripting languages increases pace of development
  • Aspect-oriented programming makes it easier to deal with cross-cutting concerns
  • Functional programming makes concurrency easier, because:
    • functions are side-effect free and stateless
    • nothing to synchronize, so no locks, semaphores, mutexes
  • Functional programming is cloud computing friendly
  • Functional languages and DSLs are more declarative than imperative
  • Scala is cool!
  • Advantages of the polyglot and poly-paradigm approach are:
    • able to use the best tool for a particular job
    • minimize the amount of code required and keep them closer to the domain
    • better decoupling between components
  • Disadvantages of this approach are:
    • multiple tools, languages, libraries to manage and learn
    • need to manage the different metadata models and overhead of calls between languages
  • It’s nothing new! For example, web developers often have to work in different paradigms and languages on a website
  • Higher end-user expectations and tighter schedules are driving the popularity of higher level languages such as functional and scripting languages
  • Developers have to deal context switching between different languages, so as the application grows larger and more complex, you have to start partitioning the teams (should be second nature to those working in the enterprise world!)

Parting thoughts..

As the presenter stated several times throughout, polyglot and poly-paradigm programming (PPP) has all been done before (despite now being mentioned with unfamiliar terminologies), and I certainly see a lot of familiarity of it in my line of work where in a typical 3-tiered application you’d have:

  • the data access layer using SQL (relational paradigm)
  • the business layer written in C#/Java or other OO languages
  • the UI can be in any number of different languages or paradigms depending on its form (HTML/CSS/Java/C#, etc.)

and numerous scripting languages (Perl, for example) are also used in various places (hell, after all, there are over 5000 applications being actively used within Credit Suisse alone!).

Watching this video has helped me identify with what I already know and put names (polyglot, poly-paradigm) to familiar faces (which is why jargon are important and I keep blogging about buzzwords :-P ), watch it, and see if it can help you too.

Further readings:

Ola Bini’s blog post on writing different layers of code in different languages

Liked this article? Support me on Patreon and get direct help from me via a private Slack channel or 1-2-1 mentoring.
Subscribe to my newsletter


Hi, I’m Yan. I’m an AWS Serverless Hero and I help companies go faster for less by adopting serverless technologies successfully.

Are you struggling with serverless or need guidance on best practices? Do you want someone to review your architecture and help you avoid costly mistakes down the line? Whatever the case, I’m here to help.

Hire me.


Skill up your serverless game with this hands-on workshop.

My 4-week Production-Ready Serverless online workshop is back!

This course takes you through building a production-ready serverless web application from testing, deployment, security, all the way through to observability. The motivation for this course is to give you hands-on experience building something with serverless technologies while giving you a broader view of the challenges you will face as the architecture matures and expands.

We will start at the basics and give you a firm introduction to Lambda and all the relevant concepts and service features (including the latest announcements in 2020). And then gradually ramping up and cover a wide array of topics such as API security, testing strategies, CI/CD, secret management, and operational best practices for monitoring and troubleshooting.

If you enrol now you can also get 15% OFF with the promo code “yanprs15”.

Enrol now and SAVE 15%.


Check out my new podcast Real-World Serverless where I talk with engineers who are building amazing things with serverless technologies and discuss the real-world use cases and challenges they face. If you’re interested in what people are actually doing with serverless and what it’s really like to be working with serverless day-to-day, then this is the podcast for you.


Check out my new course, Learn you some Lambda best practice for great good! In this course, you will learn best practices for working with AWS Lambda in terms of performance, cost, security, scalability, resilience and observability. We will also cover latest features from re:Invent 2019 such as Provisioned Concurrency and Lambda Destinations. Enrol now and start learning!


Check out my video course, Complete Guide to AWS Step Functions. In this course, we’ll cover everything you need to know to use AWS Step Functions service effectively. There is something for everyone from beginners to more advanced users looking for design patterns and best practices. Enrol now and start learning!