http://jroller.com/page/wiradikusuma?anchor=5_reasons_why_i_won


2007年07月05日, 10:04:45 上午 WIT in category Java by Thomas Wiradikusuma

I’m not an employer. But if I do, here are 5 ultimate reasons why I won’t hire (some) developers who always complain about Spring:

1. They think Spring is XML
Complainers often blame the way Spring gets configured: through XML. They think the XML stinks, bloated and hard to maintain.

Quoting Spring’s Reference Manual, “XML-based metadata is by far the most commonly used... It is not however the only form… Spring IoC container itself is totally decoupled from the format in which this configuration metadata is actually written...”

Having thought that Spring is (configured solely in verbose) XML indicates lack of (albeit basic!) knowledge about the way Spring works or laziness to read documentation.

Spring 2.0 introduces XML Schema-based configuration which make XML configuration easier. It can also be configured using Annotation (Spring’s “official” style or the Spring Annotation project) or JavaConfig (programmatic configuration).

Not being aware with these options indicates unwillingness to catch up with things that may potentially increase their productivity.

2. They don’t know how to use tools to simplify their life
Spring IDE is a plug-in for Eclipse to make projects “Spring-aware”. It provides various features to make configuration less painful. It has strong type checking support (or something like that) so that you won’t type invalid classes or properties. It also participates in refactoring.

It is true that not everybody uses Eclipse. But Spring IDE is an open source effort; you can port it to another IDE if you like. AFAIK, IDEA also has Spring support to some degree. And hey, nobody uses Notepad for serious enterprise development.

Some of you might say, “Hey it’s cheating. You’re using tool! Spring XML sucks without it.” Well I would say, “The same with Java”.

Tools are made to help us, to make us more productive. Ignorance is status quo, and it doesn’t fit the spirit of software development.

3. They think all they need is a DI container
Some applications require no more than a DI container, most applications expect more. Sure, you feel macho when you (must) write integration code yourself. Not until you find yourself debugging your half-baked solution somewhere before deadline.

Spring is not just a DI container; it is a complete integration framework. You don’t have to use those integration features if you don’t need them, but you can rest assured that they are there when you do. Tested and proven.

Software development, especially as teamwork, is not for Superman. You will be respected when your work is brilliant, but if your ego hinders development (and causes more trouble than its worth), you’re out of the line.

4. They think application startup time is everything
Some people say that application using Spring is slower during startup. Well, I don’t restart my application every hour. Do you?

People complaining Spring startup time can be two things. They’re not used to (isolated) unit testing (so they have to start the whole application just to test a one line change) or they are too worried to small details.

Most applications don’t need to run blazingly fast, they just need to run in acceptable speed. Of course, being faster is a nice bonus, but it doesn’t worth the try if higher interest (such as maintainability) is to be sacrificed.

5. They complain, but don’t come up with a solution (or a better alternative)
If Spring doesn’t work for you, that’s fine. It’s not a perfect solution for everything and may be unsuitable in some cases.

Some people reacted by contributing code patches. Some others voluntarily become beta testers and give feedbacks to the developers. Constructive-minded people come up with solutions to enhance Spring’s limitation or even develop their own alternative.

Some people just complain. They whine in their blog, attacking obvious deficiencies with weak arguments, and do nothing to “fix” them other than creating controversy. There are even “groupies” who simply yell in virtually every thread attacking Spring.

I don’t say that people against Spring is against me (as a fictitious employer). I’m just using this “Spring sucks” thing as an example. When asked for an opinion, make sure you know what you’re saying. It’s a qualification that distinguishes you among others. Coming up with a solution is an added bonus.