Kotlin gained popularity in the last few years, thanks to its refreshing syntax and strong Android support. Java, after all, has never been a good looking yet concise language.

Some companies are adopting Kotlin over Java also for back-end development to improve productivity and readability.

In my experience, however, this less likely to happen, and the reason is a few misconceptions about enterprise software development:

That productivity is about delivering fast, rather than making the code maintainable.

That readability is about writing less, rather than making the code self-explanatory.


As I wrote in a previous article, about 2/3 of development…

Source: Kibana https://www.elastic.co/kibana

Elasticsearch can process analytical data, and it does very well, especially when paired with Kibana.

Born as a search engine on top of Apache Lucene, it performs blazing fast aggregations and scales horizontally, which makes it an excellent candidate for big data analytics.

Using masters

Even if Elasticsearch can work with multiple nodes without masters, things can break while loading large amounts of data.

If you experience cluster instability after large loads, make sure to have at least a master node, it will greatly improve stability.

Splitting indices

When working with time-series (eg. logs or time-based metrics), it is likely to read the most…

In an ideal World, writing code fast gets things done quickly, and make developers productive. Unfortunately, this is not true for many long term projects, and the reason is in a simple chart.

Total Cost of Ownership. Source: Bell D. Software Engineering for Students A Programming Approach.
Fourth Edition. 2005. Prentice Hall international.

The larger part of development time is spent on maintenance, while the first implementation is just a small fraction.


To write code faster, we developers tend to use practices such as:

  • Copy and paste
  • Patchy, append-only code
  • Shortcuts from conventions and coding principles
  • Abuse of hacks, magic code, blurry operators, one-liners

Maintainable code, on the other hands, requires:

  • Refactoring, sometimes even preemptive
  • Defensive programming, decoupling, cohesion, consistency

Roberto Marchetto

Software engineer, addicted to coffee and pasta.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store