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?
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.