.NET systems need software architecture too

Why do .NET development teams seem reluctant to use the

Although most of my experience has been building Java systems, I have worked alongside a few .NET development teams over the past few years, particularly in the banks where many of the new systems being built make use of a range of technologies. One thing that I've always found odd is that, if pushed, many Java developers will claim that they've undertaken some software architecture whereas most .NET developers won't. And these aren't junior developers either. I've met some people who really know their .NET but seem reluctant to use the "architecture" word.

I'd be really interested to hear other people's views on this because I'm not exactly sure why this is. Perhaps some of it can be put down to the Microsoft stack being integrated in a way in which it's clear how certain types of applications should be built; whether it's a database-driven website or a desktop application accessing data from a collection of web services. Perhaps it's just that the people I spoke to were only building small applications that didn't need a rigourous architecture. Maybe the "Microsoft way" (as promoted on MSDN, etc) is just the de-facto approach. Who knows.

Now that I've been working in-depth on a complete .NET system (ASP.NET website, WCF services, SQL Server, etc), I don't really perceive any difference between this and the sort of Java systems that I've built in the past. There are multiple distributed tiers, the business logic is being written in a rich OO programming language, there's XML, there are databases, there are external systems and so on. Throw into the mix some complex non-functional requirements around security and no longer is this a simple "My first ASP.NET application". To further complicate matters, like Java EE, there are now a number of different technologies that can be used to achieve the same end-goal. ASP.NET or ASP.NET MVC? WCF, WSE or .NET remoting? Is this all running on a single IIS instance or are we splitting it across multiple boxes?

For a .NET project like the one that I'm working on, software architecture is just as essential as any other Java system that I've worked on in the past. Everybody needs to be more architecturally aware, but my experience suggests that .NET development teams seem reluctant to use the "architecture" word. Why is this?

About the author

Simon is an independent consultant specializing in software architecture, and the author of Software Architecture for Developers (a developer-friendly guide to software architecture, technical leadership and the balance with agility). He’s also the creator of the C4 software architecture model and the founder of Structurizr, which is a collection of open source and commercial tooling to help software teams visualise, document and explore their software architecture.

You can find Simon on Twitter at @simonbrown ... see simonbrown.je for information about his speaking schedule, videos from past conferences and software architecture training.

Re: .NET systems need software architecture too

I think its simply a product of scale and the traditional background from the 2 camps.

If you look at where the microsoft development culture has come from, it is around smaller, 'frontend' apps with a short lifespan, put together by teams of 1-5 people. The priorities for tools, frameworks etc are strongly based on productivity; maintainability and the long-term view were secondary.

If you look at the heritage of java, it is around 'backend' apps with a longer lifespan put together by large, often distributed teams. Maintainability and the long-term view take precedence over cranking out working, pretty systems quickly.

The concept of architecture and clear separation of concerns only really adds significant value when you cross that magic threshold somewhere in the middle.

Now that DotNet, C# and associated frameworks are moving into ground traditionally held by Java, we're seeing an increasing interest in the concept of architecture from the microsoft side - witness the 'Architecture edition' Visual Studio tools coming through in recent years, their 'Architecture Journal' and so on and so forth.

Re: .NET systems need software architecture too

While there may be some truth in the heritage argument (although in 2000 I was working on an ASP website with many feeds on a web farm and was by no means alone), for me it is that you need architecture when you have choices (both to make the decisions and to give confidence to everyone else that they are correct)

Recently the mainstream "microsoft way" has been diverging e.g. compare all the different ways of accessing a database. Open source projects have been a big influence on this and it is these options that mean that architecture has to be made more explicit now in the microsoft world

Re: .NET systems need software architecture too

I think you're both right. The need for architecture is related to the size and complexity of the problem bring solved, where much of the complexity comes from the fact that we now have more technology choices than ever before. Whether it's good or bad depends on your point of view. :-)

Re: .NET systems need software architecture too

I can just state that I made the same observation. A average Java programmer cares more about quality and architecture then a .NET programmer does (i've been developing .NET for 7+ years) But .NET has become more relevant in enterprise application development, and will proceed to do. I hope more and more experienced Java architects with open minds will use their skills in .NET, especially ALT.NET projects in the future. I don't think we can expect Microsoft to do anything about it - except for delivering an "free" application server (Dublin).

Re: .NET systems need software architecture too

As an old Smalltalker, cum Javite, cum Csharper, my take on this is a bit pedestrian. Microsoft programmers are typically business-oriented, not engineering-oriented. The big issues are just not in-scope. Build it the Mcrosoft way and get 'er done... don't waste time trying to make the software some idealized artistic statement of perfection - just address the damn requirements and move on. The software will be replaced in a couple of years anyway - don't waste time on it. IMHO, of course.

Re: .NET systems need software architecture too

I think the principle that the software will be replaced in a couple of years is very true in many cases and you're right, these type of systems don't necessary need much software architecture. The problems start appearing when those teams, who have successfully delivered working software are asked (for example) to publish parts of their application on the internet. This is where software architecture is needed ... not to ensure that the software is an idealized artistic statement of perfection (I like that term!), but instead to ensure that it actually works and meets the more demanding set of non-functional requirements. In essence, one of the major benefits of software architecture is a reduction of the risk of failure and reputational risk.

Re: .NET systems need software architecture too

I think you've asked a good question about whether "the Microsoft way" is simply taken as the default. I think it is in some parts of the community, but not others. I've recently noticed another facet of this lack of discussion of architecture in the Microsoft community: there is very little community engagement in Microsoft's supposedly open discussion of architectural guidelines. It's almost as if the community is split into two groups: one group doesn't comment because they feel that architecture is something that emanates from Microsoft; and the other group doesn't comment because they think Microsoft won't listen.

Re: .NET systems need software architecture too

Can anyone point me to 'the Microsoft way' regarding software architecture and a guide in choosing SW technologies and methodologies? All this lead by business objectives.

Add a comment Send a TrackBack