Monday, August 18, 2008

People: Infrastructure vs Application

If your development team is larger than 5 developers, it is likely that you have at least one developer with high quality standards. As your team size increases, there's a good chance, you have yet another, maybe even more demanding developer.

Considering you have two developers demanding high quality code, there is a good chance they have a very different opinion about what makes good code. Somehow, this does not necessarily cause conflicts however. In many cases, both colleagues appreciate each others demanding attitude and they are willing to learn from each other.

The question is whether they actually copy each other's habits though...

There are roughly two ways you can handle your code: you can consider code as a list of instructions intended to make the computer do what you want it to do. Or you can use code as modeling tools to describe the real world and make it come alive. The resulting computer program is considered an implicit result of the working model.

Instructing the computer is done on Infrastructure level. Building models on Application level requires a working infrastructure . In an ideal situation, your infrastructure logic and your application logic fit together well but are clearly separated.

If you have developers with different quality standard, the chances are that one is more interested in infrastructure level and the other is more interested in application level. This could be a perfect team.

More problematic is the tendency to mix infrastructure and application, not being aware of the potential problems of this approach. In my drawing a few posts ago, this tendency can be seen in developers with a preference for the Sun cluster:




Technology in the IBM cluster offers more options to make a clear separation between infrastructure and application. More about such technologies in upcoming posts.

5 comments:

Mark Berck said...

Don't you think there's a place/time for either one of the approaches you've described?

Reading your post I get the feeling that you really think that Infrastructure can't be mixed with Application, while I feel that there are situation where you don't want to separate these concerns.

Thanks for the nice post, though.

Mark

Adriaan de Jonge said...

Hi Mark,

Thanks for your reply!

I don't think Infra and App can't be mixed.; I am quite convinced they can and are mixed in most cases. I really think they shouldn't be mixed. If there was a time/place for mixing them, it would be 2007, 2006, 2005 and all the years before, anywhere in the world. ;-)

Separating concerns is a challenge. I hope the upcoming posts can help show the possibilities to do so.

What are the situations where you feel you don't want to separate concerns? I am curious whether I can address these. If not, I would be happy to acknowledge I am wrong on this one!

Thanks!

Adriaan.

Mark Berck said...

My opinion is, that for small businesses, stand allone applications, this is the perfect way to go.

But if your application is part of something bigger, the application uses shared data sources, publishes to other system, etc. I completly agree with your statements.

Mark

Adriaan de Jonge said...

I see your point and it is definitely worth a new blog post to address that. Thanks! A.

Adriaan de Jonge said...

I posted a more elaborate reply in this post:

http://blog.adriaandejonge.eu/2008/08/answering-mail-7.html