Hacker News new | ask | show | jobs
by le-mark 3141 days ago
This is exactly the reason I despise Spring with a deep and abiding passion.

It's interesting you took the time to post this. As the sibling to this comment indicate, there's a lot of 'magic' in many languages and frameworks. not just Spring. You don't off an example of a tech stack you do favor so one can only guess.

I will say that when I have encountered developers and teams who also disdain otherwise popular frameworks, they sometimes choose to roll their own instead of buckling down and learning said framework. Invariably they end up with a partial implementation of what they didn't understand, that is bug ridden, ill performing, and just plain bad.

There's a lot of good stuff in Spring (and EJB, and rails, and ...) the onus is on us, as professionals to learn it and use it where and when it's appropriate.

1 comments

"You don't off an example of a tech stack you do favor so one can only guess."

I think annotations are used many times in Java where abstractions like first class functions would be used in other languages.

I also find Lisp macros easier to reason about. "This compile time source code expands to this run time source code, which executes like so."

Perhaps surprisingly, I even find Ruby magic easier to reason about. "This method causes these three other methods to be defined to do x, y, z." It can get confusing, and final behavior highly dependent on the order in which the code executes, but I still feel like I have a mental model of how everything executes.

With annotations, depends on the code processing the annotations. You could have different code doing different thing with the exact same annotations. Your IDE can take you to the annotation declaration, but not directly to the code the annotation causes to execute. In the debugger, you can see the code in the call stack that was generated, but no link back to what annotation caused it to be generated.

It all just feels more like memorizing spells at Hogwarts, and less like an engineering process.