Categories
Development

Investing in Design

Roy Osherove has a good piece here called Invest in the design of the system every day. He’s got it nailed:

Without daily attention to design, the cost of changes does skyrocket. The dire predictions of the critics comes true: poorly designed, brittle, hard-to-change systems.

Right on! You have to keep a constant mind on the overall design of the system as well as the task at hand. You have to keep an constant eye out for areas to improve the design of your system. And don’t be afraid to make the changes! We are practicing this on our current project with success.

If “small, safe steps” is how to design, the next question is where to design. The simple heuristic I have found helpful is to eliminate duplication. If I have the same logic in two places, I work with the design to understand how I can have only one copy. Designs without duplication tend to be easy to change. You don’t find yourself in the situation where you have to change the code in several places to add one feature.

Take the time to make the changes. Think through how you can change the beast of a system to avoid duplication. I am convinced it improves the system. On the flip side it does make it harder to predict what is impacted by a second change, but I guess that’s where tests, routine and good documentation comes into play. 😉

Alright, I can’t quote anymore now. Read the short article yourself. 😉

Categories
Development

Redesign of The ServerSide

The ServerSide has redesigned their backend from EJB onto Tapestry and JDO. They argue that they chose JDO to avoid vendor lockin because it’s a standard. Ok reason, but I don’t see it as very likely to happen. By the time they decide to switch again I bet they will be switching to another standard alltogether. 😉 Read the details here.

Categories
Development

Hibernate Query details #2

The followup to the first post on the new query parser for Hibernate is up here.

It is technical compiler stuff. I guess I should have paid a bit more attention in my compiler classes. 😉