We recorded episode #476 of .NET Rocks live at devLink in Nashville, Tennessee in August 2009. Billy Hollis, Kathleen Dollard, Jim Holmes, and Josh Holmes (no relation) discuss the issue of the complexity of software development. Several .NET celebrities in the audience also chimed in.

Richard Campbell: How are going to start this? So is software development too complex, Billy Hollis?

Billy Hollis: You know I have no opinion on it... (smiles)

Richard Campbell: I know you have no opinion on it.

Billy Hollis: In the shows that we get on.

Richard Campbell: That guy builds software every day. It's easy, right?

Billy Hollis: Actually, this is a great place to talk about it, here in Nashville, because from my perspective I think Nashville shows why it is too complex. Nashville doesn't have tremendous numbers of huge companies that can afford large teams to master all kinds of technologies.

Carl Franklin: Yeah.

Billy Hollis: And since we're in that small to medium space, it's probably worthwhile to poll the audience on this.

Carl Franklin: Okay.

Billy Hollis: How many of you work on a development team that is three people or less? Clap.

Richard Campbell: About a third.

Carl Franklin: I'd say a third.

Billy Hollis: Okay. So that's what we tend to see in this area. Now, if you look at the .NET universe right now and you look at what you've got to do to get a complete application done, you've got a pretty long list of technologies there.

Richard Campbell: Yeah.

Billy Hollis: You've got the language, you've got some kind of transport mechanism. Is it remoting? Is it Web services? Is it WCF? You've got various UI possibilities. Is it ASP.NET? Is it ASP.NET with MVC? Is it Windows Forms? Is it Silverlight? Is it WPF? And how many different data access technologies do we have because I have lost count.

Carl Franklin: There are so many.

Richard Campbell: There are around seven?

Carl Franklin: At least.

Richard Campbell: I bet I could list them all. We did a show on that.

Carl Franklin: You've got Astoria, you've got the Entity Framework, you've got the Dynamic Data, you've got NHibernate.

Richard Campbell: How about good old ADO.NET?

Carl Franklin: ADO.NET.

Billy Hollis: And so if you just look at the sheer numbers, if you've got a fairly small team, and I get this from interviewing people a lot because I interview folks from the Nashville area a lot for clients, and if you ask about even fairly typical things that have been around a while, like generics in the language, you don't tend to get a really high adoption just because people feel like there is just too much to know. So teams carry us to a certain level but I worry about the complexity issue. There is a local company here, some of you may know it, called Rehab Documentation. Do you guys know Rehab? Some of you? Yeah, I've got some over there that know it. Now, Rehab started out in the mid-'90s with doing physical therapy management software. It's healthcare, it lacks so much else here, and they started out doing something on Microsoft Access. The founder was in a band which is, you know, that's rational. I'm one of 15 people in Nashville not in a band I think, and he was in band with a guy who was going to Nashville Tech taking Access {training} and they started working on something to automate Office, and then here we are 14 years later they have installations in all 50 states, and they are a 30-person company with five .NET developers. Now, suppose they start over today on the Microsoft platform and they just want to slam something out to see whether or not it makes sense. They want {to build} a model. They don't know for sure whether they're going to do it. What do they do? How do they cope with that? I mean, we had Access, we had FoxPro, we had classic Visual Basic back then. What have we got for those people today?

Carl Franklin: So I think what you're really saying is part of the complexity issue isn't as much the complexity of using a particular technology but the sheer number of choices that need to be made and therefore an assessment has to be done about every available choice in every category.

Billy Hollis: That's right.

Carl Franklin: Yeah.

Billy Hollis: So if somebody comes up and says we just want to slam something out, the typical .NET developer today has to say, "Well, I have to develop my data access layer. What do I choose there?"

Carl Franklin: And if you've got a team, chances are half of them are going to want to use MVC, half are going to want to use Visual Studio, blah, blah, blah.

Billy Hollis: Yeah, so the higher up you go in terms of the size of the company and size of the team, the less the complexity issue matters. But if we're leaving off the companies at the low end and they become successful, now what does that say about the .NET ecosystem 10 years or 15 years from now? They're not suddenly {going to} become successful and then say, hey, let's switch to Microsoft.

Carl Franklin: Let's give some of the other panelists a chance to chime in. Kathleen?

Kathleen Dollard: Yes.

Carl Franklin: What you're saying is...

Kathleen Dollard: To follow-up on what Billy said, I wrote an editorial about four or five years ago that was somewhat misunderstood in which I talked about the hobbyist programmer becoming extinct, and what that meant for the rest of us. We lost the hobbyist programmer, they really never made it to .NET, and the hobbyist programmer to me is someone who does not work 40 hours a week on programming. They have a day job. There was one good friend of mine, he used to be a grip and he was in San Francisco, not Hollywood, but he worked on sound stages. He was a grip, which means somebody who runs around and makes sets and things. We lost the one man shop in the last couple of years and what Billy is saying is that the 1-3 man shop is now under threat and this is a trend that we have seen over a fairly long period of time and to me it is one of the measures of the fact that we're too complex.

Carl Franklin: Are you talking about the sheer number of choices now in complexity, or are you talking about the technology itself?

Kathleen Dollard: I think it's far more than just the sheer number of choices. It's the fact that we have millions of architectures in the wild because the only way we have to express an architecture is to read a whitepaper and try to figure out how to do it. So you have some place between millions and hundreds of millions because every organization, every project, has to restart figuring out exactly what the small details are. It's that problem, it's how fast technology is coming at us and choices are coming at us, and it's that the overall scope of it is just getting really, really big.

Carl Franklin: Now you guys, you know, all four of us actually, we’ve sort of been around in this business a really long time and we could easily give the impression that, you know, back in my day we had Visual Basic 3.0 and we liked it. Maybe we couldn't do everything that we can do today with those tools, and they did have limited choices, but they also have limited...

Billy Hollis: Yeah, I don't want to go back. My criticisms are not because of what I want because I love .NET and the stuff that I can do in it is amazing.

Carl Franklin: Yeah.

Billy Hollis: But I'm projecting into that group of people that I talk to on a regular basis that are not into the technologies the way I am.

Carl Franklin: Yeah.

Jim Holmes: I think there is some value to be had in doing some initial exploration in smaller teams and looking to cut the complexity by kind of making those decisions once….

Carl Franklin: Yeah.

Jim Holmes: …and using some careful consideration to the tools that you want to use. I mean, at one point or the other, you have to get going. I'm a big Lean advocate and there was an interesting point made at Rubycon that Josh and I were at last weekend. One of the speakers talked about automating your decisions. So, rather than having spent a lot of time rebuilding things every time, you put some thought {into} where can I reuse these templates? That's not the silver bullet, but that's the way to kind of consider {whether I} need all of those technologies. Maybe not. Maybe I can find something that will work for our small team that we can reuse and we get familiar with.

Richard Campbell: Do you get a sense that there's a culture of developers in VB and there's a culture in general? There's a sort of air {where} we always have to find the best, and now we have so much choice that finding the best is just going to take too long. We have to work with good enough.

Jim Holmes: I'm big on that. You know, the shiny toys are nice, Cowbell 4.0 may be really cool, but maybe 3.0 will get you where you need to be. You're familiar with it and the people that you're handing software off to are, but what's meeting your business need?

Richard Campbell: Right.

The conversation continues online at http://shrinkster.com/19lo.