Framework or Custom Code

I read an interesting discussion on Slashdot. A developer had some simple requirements for an app. Then he entered a long phase of scope creep. The original implementation utilized the Spring framework as well as Hibernate. However the new requirements needed more than the frameworks chosen could provide. This scenario generated a lot of talk on Slashdot.

The original developer in retrospect thought he should have used JDBC to implement the requirements. Then any new reqs could be implemented with custom code. Senior developers agreed. You got to know when to use a framework, and when not to. In general, you should skip the framework if you are developing for a long lasting project.

Some believe Spring to be an evil framework in general. They say that removing Spring saves development time in the long run. Others say that frameworks in general are not bad, but Spring is no good. All of these frameworks are decisions made during the design phase. You got to get your design correct.

There is a benefit to using framework. You save time. There can be a lot of wasted time if you try to code your own framework, or code everything by hand. You could choose a compromise. Skip the Spring framework, and use JDBC with Hibernate.

You also cannot rely on the framework for everything. It does not come out of the box supporting all of your specific requirements. We use some high level frameworks in our system for general programming purposes. When necessary, we step back and roll our own code when need be. We also make use of some third party tools to take care of mundane tasks. It is a delicate balance which requires some experience to make.

Remote Pairing

I have done pair programming in the past. Sometimes we get a lot of benefit from it. However this is not an XP technique that is used often by programmers. In my own project, it is hard because the team is spread out all over the place geographically. Is it possible to conduct pair programming remotely?

One columnist tried it out. He found that tools were not mature enough to handle this. His system froze a lot. In the end, they just tried a virtual connection. It is better to do pair programming in person.

Pair programming in general helps eliminate distractions you would encounter if you were on your own. However it may impede progress. Most devs feel that they can accomplish more on their own. But the real question is whether pair programming improves code quality. I don’t think the verdict is in yet on that decision.