Since I’ve been pushing Spring quite a bit lately (what can I say… I like it!), a lot of people have continuously asked me, “why?” The most common question I keep getting is “What problems does it solve?” and when I mention all the features it has (dependency injection, wiring, bean management, event publishing/subscribing, etc) the response is always along the lines of “Why bother? Why not just handle the dependency injection yourself?” or “Any programmer worth their salt would be able to write a simple event handling mechanism.”

My thoughts on this is that Spring handles all the boring, mundane boilerplate work and allows developers to focus on what really matters in software… the domain. The domain is what drives business, and sadly while it is 90% of what makes the software important, it often goes ignored in favor of focusing on the mechanics of tying everything together in a system. And, to my dismay, I have on more than one occasion observed developers ignoring the domain all together (even at one of the DesignFest sessions I attended at OOPSLA, the developers tackled the problem by first designing the database tables and the ORM mapping to them).

So, long story short… I think that we as developers need to delegate non-domain work to frameworks as much as possible… why in this day in age we still let developers write custom O/R mapping solutions, dependency injection frameworks, and custom event dispatching systems on business projects is quite a mystery indeed… wouldn’t their talent and effort be better put to work by focusing on the business logic in their system instead?

If you're new here, you may want to subscribe to my RSS feed. Thanks for visiting!