I got a lot of interest comments to my post Maintenance matters: How should we change our designs to show we care?.
Anthony Eden replied, and had some good comments.
The posting wasn’t meant to discuss the pro’s and con’s of using new technologies.
Even if the newest technology makes you a little more productive, that doesn’t mean that it actually makes sense to go ahead and use it, if you take the other considerations into account:
- Developer knowledge and skill set
- Your History
- Business decisions (e.g. who your VP plays golf with)
- and many more
Skill set is always a big one. I was working on a project where the team were TOP NOTCH when it came to the database tier. For them, throwing an abstraction of the DB in front of them that made it hard to get in there and make the tweaks was painful. So in that case, we didn’t care so much about making that abstraction, but simply hid the implementation behind interfaces, and let them do their magic. If they were doing wacky PL/SQL behind that object that you got back, so be it (as long as that skill set remains).
I love the idea of using scripting languages combined with Java, in the same project. I find that there is a place for nice static interfaces, and a place where it is nicer to just be dynamic and let it flow.
However, even here, I have to stop myself on some projects. What if the team doesn’t know a Groovy/Jython/[insert other scripting language]. Does it really make sense to train everyone? Especially for the maintenence cycle too?
There is no right and wrong to all of these questions…. just interesting to think about, and to know that “bleeding-edge and cool != the best solution all the time”.