Bionic bar on the Royal Caribbean cruise ship, Source

It’s not done if it’s not shipped

Searching for productivity gains in engineering

Tom Parandyk
Jul 14, 2020 · 3 min read

Facts

Let’s get it out of the way; software engineering is a complicated endeavour.

There are several of complex disciplines between front-end and back-end: DevOps, Services, Databases, and APIs, to name the most common ones.

No/low-code platforms, like Bubble, Webflow, or Honeycode, don’t offer enough flexibility, scalability, and dependability for enterprise-level solutions despite efforts to simplify the engineering process.

We’ve tried multiple delivery frameworks with minimal upside. Reinventing processes brings little to none productivity benefits since the code has to be written by someone regardless if tasks are marked as done in an Agile or a Kanban board.

Hiring rock-star developers has some merit but usually comes at a high price and high risk of losing them to one of the giants, like Facebook or Google.

We asked ourselves:

What could we do as a startup to increase code delivery and quality for the software we are building in the healthcare space?

We’ve landed on this hypothesis:

Could automation and tooling increase productivity, speed up the delivery, reduce the number of mundane development tasks, and if so, where can we apply it, and how can we measure the impact?

Direction

Since our hypothesis boiled down to automation and tooling, we’ve started from identifying the spaces with most manual work overhead.

DevOps, front-end, and APIs were the low hanging fruit.

We’ve looked at our development pipeline and found out that we’ve been already doing some automation:

  • Build process with Maven.
  • Code analysis with InteliJ Idea.
  • Performance analysis with JProfiler.

We knew we could do more, though!

First, we’ve introduced Docker to automate environment setup. Next, we’ve used Sentry to catch exceptions in production.

Still, we could do more!

Proof of concept

Over the last two years, we’ve expanded our approach towards automation with amazing effects. We’ve repeatedly tested and released to production radically different tech-stack:

  • Automated access to data through GraphQL APIs with Hasura.
  • Automated DevOps with Docker, Terraform, Jenkins, and Circle CI.
  • Automated data conversions between data engines with Pentaho.
  • Automated interface, state, and flows with Views Tools.

Here’re more details on two recently released platforms:

We found many pros for the automation, speed of delivery being probably the most vivid one from the business standpoint. We’ve delivered massive platforms in record time with multiple apps each. We’ve managed to reduce the cost per feature from $12K (before new stack’s automation) to $3.2K (first pass at DevOps automation), to $110 (cost per feature in the Urgent Hub project)! 💰

Dependability is also critical when it comes to the technical side. We found that automation is predictable. We could remove the error-prone human factor from the implementation. Errors are also easier to find due to the high modularity of automated solutions.

We’ve achieved scalability in a couple of ways. Automated tasks are repeatable, and solutions to errors apply across multiple products without additional refactoring effort.

High level of automation requires mindset shift within the team. Not everyone was on board with the new direction. Managing through that kind of change can be challenging. That’s the only con in this equation.

We’ve achieved so much, but we are far from being done! Automation requires continuous change and investment. It’s sometimes hard to pull the team from the immediate product work in favour of future benefits. Software development, as we understand it, is a long term game. It’s impossible to turn our blind eye on smart automation once we’ve seen the upsides of it.

Big Thank You 🎉 to our fantastic team for pushing forward and not settling down on “good enough”! Toni Borrallo, Neil Buckley, Dario Cravero, Fran de Haro, Albert Moreno, Viktor Pakhomov, Alex Vladut, you guys rock!

  • Automation removes repeatable manual tasks
  • Automation is dependable and configurable
  • Automation scales

greyfinch

Creating software for clinics and patients