Lessons learned in 2016

by Jannik Arndt


Do not fix your code.

Rather understand why nothing kept you from creating this bug. Make your code so easy that this bug would have been obvious the first time.


Automate early.

You know, CI/CD. Or just clean-up-scripts. Or a complete infrastructure-as-code. Remember: A script to setup something is the best documentation!


A function must not do more than one thing.

If a function name contains “and” there’s still work to do. Build small pieces.


Side effects are the root of all evil.

If you need side effects (like database or file outputs), let it be the only thing a function does.


It’s all about data.

Business logic is just a concept to change data.


A system is defined by its input and output.

Every description of anything should focus on these two things first.


This example show how to write a reactive reader for the AWS Simple Queue Service, using Scala and alpakka (respective akka streams).

While the Akka documentation is incredibly well written, it has surprisingly few images. Since I visualize concepts to remember them, here is my take on how Event Sourcing in Akka Persistence works:

Changing the password for a PostgreSQL database user involves two steps: The change in the database and the change in the application code. This blog post describes how to do this without any downtime or failed authentication tries.