The Promise

You promised me something. It all looked great on the paper. It even worked in “hello, world” world.

And now, I am in tears.

You promised it would be easy, and all fun! But it’s no fun at all, not anymore.

How come I forgot about “No Silver Bullet” 1, and how come I believed there can be one?

Silver Bullet

Does this sounds familiar? Well, it might, or even worse, you might not know, that you are tricked. What you know is that you are suffering, and probably you think this is natural, the way of software development.

There are technologies that tries to hide complexity and help you out. They really do try hard, and there are some really smart people doing their best, but I think, as depicted by “No Silver Bullet” 1, this is not going to work.

I ran into some of these in my career. Remember 4GL 2, or the fancy thing called MDA 3? Then there were/are other technologies but probably the most prominent of all, - at least for me, - was JPA 45. Selling the idea of “you don’t need to know SQL”, or that it’s just objects that needs to be stored. Just annotate your objects, and the magic will happen.

Nowadays there is a fancy thing called Low-code 6 (and No-code 7) that sits on the roots of 4GL 2, that is no different to 4GL.

The list goes on and on, as we would like to believe that there is a silver bullet, an easy solution, a silver bullet.

The worst thing with all these stuff is, that if you start to use them, each story will end up about them, each problem will become the problem within the “solution”. It will not be the tool you can use to solve a problem, it will become the problem itself, - a new one.

For example, in projects using JPA, it is common to talk about how to solve this or that with JPA, how to overcome some obstacles that are there because of JPA. - Like how to handle one-to-many when there are lots of records 89. - On the other hand if you are not using JPA, but for example a template engine with SQL, or even pure SQL in strings (not what I would recommend),
you are not talking anymore about JPA, but about how to solve business problems.

If you don’t believe me, try it yourself. Or you can decide to still believe in fairy tales, - but I warn you, these fairy tales are actually sad ones.

So next time, you see a technology that proclaims to solve a complex problem without you needing to understand it, run, duck, hide…

P.S.: DDD is a cure for your database problems, but it has nothing to do with JPA ;-)

Credits

Silver Bullet (inline) Photo by Alex Azabache on Unsplash

Background Photo by Mitya Ivanov on Unsplash


  1. https://en.wikipedia.org/wiki/No_Silver_Bullet ↩︎

  2. https://en.wikipedia.org/wiki/Fourth-generation_programming_language ↩︎

  3. https://en.wikipedia.org/wiki/Model-driven_architecture ↩︎

  4. https://en.wikipedia.org/wiki/Jakarta_Persistence ↩︎

  5. https://en.wikipedia.org/wiki/Object-relational_mapping ↩︎

  6. https://en.wikipedia.org/wiki/Low-code_development_platform ↩︎

  7. https://en.wikipedia.org/wiki/No-code_development_platform ↩︎

  8. https://stackoverflow.com/questions/3600999/jpahibernatej2se-onetomany-millions-of-records-slows-adding-a-new-object-d ↩︎

  9. https://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/ ↩︎