Review: Microsoft N Layer App Sample
By Ayende@Rahien
A long time ago I had a temp job as in a bricks ‘n’ mortar architects office, it wasn’t anything special, I was young I’d just gone through Uni and I wasn’t sure where I wanted my career to go. So I did a lot of temping to find out about different careers.
So from my experience in an actual architects office and my experiences working with software architecture makes for an interesting comparison. The one thing I realised about architects is that they wanted to be renowned as the “Designer”, what happened once the Grand Design left their board was incidental. So what did happen.
The architect would sketch out his great scheme and sell it to his client. Something a bit like this. All rough and artistic and he’d build up the hopes and dreams of the client, that they were going to have a beautiful home of their dreams. First, there would be a discussion as to weather the client liked it or no, Often it was a no because the architect would sketch out his own dream house.
So, there would be a revision another sketch produced, hopefully the client would say yes (we’ll assume that they did, often it was a cycle of four or five attempts to change what the architect wanted to what the client wanted). Next there would be a discussion about budget and the sketch would be revised again. Now, unbeknownst to the client, what was going on behind the scenes was that the Architect was getting his draftsman to do the actual pen on paper work. The architect would sketch, draftsman would ink in and tidy up, architect would present to client.
Once the client had committed and the contracts signed, the hard work of putting together detailed architectural drawings and blueprints. Some of the detail that had to be produced regarding things like birds mouth joints on roof A frames was impressive, this was because as always the Architect didn’t trust the builder to do exactly what he wanted.
Trouble was is that builders are there to build and they’ll do it the way they want – what’s easiest for them. So the draftsman has to go to the building site and check over and over again. Run back and forth between what the architect wants and what the builders will build. Sometimes the plans have to be revised, because a situation arises where by it just cannot be done. Also there are the building regulation inspectors, who sometimes come along, say those foundations don’t meet requirements for the weight of the wall – do something about it (tear it down dig deeper foundations, build a lighter wall, don’t make it so high &c, &c, &c).
Finally, after all that malarkey and snag lists and other such stuff, the client gets to move into their brand spanking new house with that fresh paint smell and then after a while wants to alter it.
So why the long preamble, over a few links at the top of this post. Oren Eini is spot on right in my estimation. The architecture guidance is a big bag of what the architect believes is his dream home – his Grand Design. The great thing about bricks ‘n’ mortar architects is that hey haven’t a clue how to mix cement, cut a bird’s mouth joint or anything about the physical labour of building a house. Unfortunately a software architect does know how to write code, fortunately a lot of software architects can write code well. But sadly, the software industry doesn’t have the equivalent of a draftsman ( or architectural technologist as they are called now) to be the bridge between architect and builder.
So what can be done to improve the above guidance, give it a big KISS and be flexible and agile. The moment that the software architect looks at a problem domain – lets not bog it down with high ideas and convoluted this that and the other. Lets draw a foundation that can bear the weight of the project with some internal load bearing walls or with enough strong points to support a suspended floor.
The thing is, we can all over complicate things, the road to hell is paved with good intentions and this is one thing we must all bear in mind when instigating an architecture for software.
The thing that bugged me the most when getting the solution was all the hoops that I had to jump through just to get it to compile and run. I understand the purpose of Pex and Moles but why? I understand the need to ensure that the design meets the specification. But isn’t that the role of the software architect and his team of chosen men to ensure that that happens. If not then we have much bigger problems to deal with.
Filed under: Architecture, ayende, guidance, n layer