How much do you know about your system?

I while ago I met a company of some dozen developers that were working on a new part of a system. The team was quite motivated, and it included both senior and junior developers.

This new part was implemented in Java EE, and they were working on it for a bit more than half a year. Given that the development was quite at an early stage, the system barely totaled 1500 classes (both client and server side), which for Java is not that much. During an assessment workshop, I gave them the following task: List from on top of your head all the service classes that you provide on the server side. This basically boiled down to enumerating the session beans they had.

To make it easier I also told them that it is not important to get the names precisely correct, and that in fact I will be doing a union of all the item they list. After a couple of minutes, we got to 12 items on our list. And they seemed content. Then I asked Moose to tell us how many classes are isAnnotatedWith: 'Stateless' and the result was 20.

Of course, when they saw the complete list, they did recognize all the other 8 services. And they also found reasons for why they did not list them in the first place: some were not used for most use cases, and some were simply implemented early in development.

These were competent developers that cared about their system. Still they only got 12 out 20. And this was a coarse-grained question about a medium-sized system.

The problem is simply the amount of data. As soon as we are talking about more than a handful of details we should remember, the fancy mechanisms in our brain will kick in and help us focus on what seems more important. Essentially, we scale by not remembering everything.

Why is this an important issue? Well, most modern engineering practices rely on putting the right people in one room and expect them to find the best solution. But, when the facts are not in that room, how are we to expect to get to the best solution?

The size of the systems and data you have to deal with is increasing every day. This changes the game rather profoundly. To keep this game under control, you have to change the way you approach it.

Posted by Tudor Girba at 9 May 2012, 11:24 pm with tags assessment, process link
|