No Magic!

I’ve read an amazing article Who Needs Lombok Anyhow, which discusses Lombok and its quirks. I personally feel no need for Lombok since Kotlin contains all the features offered by Lombok, but there was something else that caught my eye.

I am now a firm believer that Spring is harmful to the Java community. However, it was hard for me to put into words why exactly Spring is so evil, until today. The article above sums my feelings very eloquently:

Magic is harmful. I don’t want any magic in my code. It is the thing that makes behaviour non-transparent. It makes you fire up your debugger, because you don’t actually understand what is going on behind the scenes. There should be no behind the scenes. Everything should be as explicit as possible, for economic reasons.

~ merciless refactorer at Who Needs Lombok Anyhow

This is the same idea that I’ve touched in the Code Locality and the Ability To Navigate article.

Another quote I quite like:

Magic is a feature with non-compositional semantics that succeeds in making the common case easy, at the cost of making the uncommon cases surprising, impossible, or ridiculously complex.

~ John A De Goes

Uncle Bob dislikes Magic as well: Never buy magic!. Which is quite a wow for me, since in other areas Uncle Bob demonstrated lack of affinity towards simplicity.

Also the 8 lines of code talk is great. I don’t necessarily agree with all the points, but the ‘no magic’ idea was expressed very eloquently.

Enough said!

Written on October 9, 2020