.Net Return on Complexity (ROC)

I’m concerned about the lack of return on investment our continuning involvement with .net is going to produce.

I guess I’ve bored enough people with my views on this over the past few months to warrant a blog about it (that way I can just point people here, they can smile politely and ignore it :-))

In a nutshell my train of thought is this:
1. Developers are not only victims of hype, they are now perpetuating it
2. Software development tools are becoming very complex
3. The cost of hype and complexity
4. What is the return on complexity?
5. The .Net P/E ratio
6. The way forward

Here’s my take on the situation:

1. Hype squared – .Net hype is out of control

I first became aware of my uneasieness with .Net hype at CodeCampOz (a wonderful event by the way, so nothing here should be construed as criticism of that event, it is just the time when my disillusionment started).
There, I discovered that the hype previously generated only by marketing departments had been embraced by the developer community and was being pushed to new heights.
(As a long time developer I’m excited by new stuff just as much as the next coder, but now i’m really starting to question if it is getting completely out of control.)

A few years back we developers had little tolerance for crappy beta software. Back at uni we didn’t even look at a product unless it was rock solid. I remember sticking with Borland C++ Builder for my thesis project because Microsoft’s Visual C++ wasn’t solid enough at the time.

But fast forward to CodeCampOz and we had presenters getting applauded if their presentations didn’t crash (which was pretty rare). Even at Microsoft events these days we have the standard ‘disclaimers’ at the start of each presentation (‘now, I’m runnning on Virtual PC so bear with me if it is a little slow…’, or ‘now, I’m runnning beta 2 so it might be a little unstable…’). And countless developers around the globe (I’m one of them) lap this up.
What have we been reduced to? And why?

The reason is because .Net hype is out of control.

And it doesn’t end there. I’m now getting quizzed by clients (who have no technical knowledge) on what our .Net strategy is. It seems that some clients don’t come with a problem to be solved anymore, they come with a hype-induced strategy to be met. The hype has certainly made it to the end of the chain when this happens.

[btw I’m sure this is not unique to Microsoft (lest you think I’m a Microsoft basher), it’s just that we are a Microsoft shop (and plan to stay that way) so that is my exposure.]

2. Complexity
By nature software is becoming increasingly complex as we solve bigger and bigger problems. But what worries me is that the development tools we use to solve these problem are becoming increasingly complex at a rate out of all proportion to the problems they are used for solving.

If you’ve been playing with beta2 then you know that Visual Studio is now a very complex beast. The learning curve is getting much higher. Sure, there’s a bunch of new wizards and some of the new controls are really great. The access to APIs is much better, and the project management/team aspects show huge promise. But, the path of a developer is now, more than ever, one of specialisation. Previously we developers could have a good handle on most of a product or even a product range (eg a few years back you could be very advanced, possibly even an expert on SQL Server, including administration, Visual Basic and ASP). But those days are fast retreating. The .Net developer of tomorrow will be an expert in one thing, be it SQL administration, high performance coding, performance tuning, DTS development, XML implementation, source control manager, whatever.

Part of the reason for this is that .Net is positioning itself as an Enterprise tool, similar to the Oracles, SAPs and other high end vendors out there. They ofcourse have high complexity in their development tools. eg it is rare (and very expensive) to find a person who is an expert database administrator, database developer, and front end develper in Oracle. (By contrast you can find plenty of developers who are great SQL Server administrators, developers and front end developers all in one.)

3. The Cost of hype and complexity

The hype and complexity of .net is going to cost software companies/departments (and thus their customers) more than ever.

Firstly the hype. Already the IT market is going through the roof. Try hiring a senior .net developer these days and you’re looking at $70K-$110K, possibly more. WTF? This product has only really been out for 3 years. (Great for you if you are developer by the way, but not so good if you’re trying to run a development team like I am). More on this later.

Next the complexity. As we become more specialised, it takes more developers to cover all the facets of a project.

4. Return on Complexity (ROC)

Now increased cost is all well and good if the problems we are solving are proportionally increased. But for companies like ours (at the small end of the scale – we only have 15 developers) the problems we are addressing are the same ones by and large. eg Customers want this database intensive web site, or that accounting interface, or that EDI network or this trading system etc.

So, assuming we are staying current with .Net skills (which we are), it is gradually costing us more to provide solutions to largely unchanging problems.

Thus my quesiton: what is the return for us? Will we (software companies) be making more money? Well, we’ll have to in order to keep the talent! Will we be making more profit? I doubt it. Will our clients be glad to be paying the higher fees we’ll be charging? No, we’ll employ bigger marketing teams to win them over (with the added cost that brings) or else rely on the hype to do it…

And, are we providing ‘better’ solutions for our clients? Well, yes we are. But is it worth the extra cost to them? How do you accurately calculate what I refer to as the Return on Complexity?

5. .Net P/E ratio

I’m getting a feeling of De ja Vu here. This has shades of the SAP debacle we experienced a few years back. I don’t know if this happened elsewhere (I suspect so) but in Australia atleast, we had a sudden surge in SAP projects. SAP skills were highly sought after and of course the prices went sky high. SAP ‘consultants’ (ie more than 2 years experience) weren’t getting out of bed for anything under $80K+. And so the vicious cycle started. Pretty soon the hype surrounding SAP got more suckers (think companies that want the latest ‘in’ technology) and the demand for SAP developers jumped again. ‘What! you got out of bed for less than $100K?…’ Everyone started learning SAP and the future looked rosy.

But pretty soon the big SAP projects started going way over budget and every week IT newpapers heralded another SAP project that had blown out/been canned/postponed. SAP was fast going out of favour and the rash of failed projects left a glut on the market. Suddenly SAP developers were having trouble getting work and their salaries were way down. ‘I had to get out of bed the other day for an interview with 80K other candidates…’

Nothing really new there I guess (think Dot Com boom all over), except that I perceive we are going to learn this great lesson again in about 3 years time. The hype for .net is unprecedented. And for now, clients are happy to pay for .Net solutions.

But look at all the big bank projects and other high profile .net enterprise solutions in progress. And look at the market value of .net developers continually rising (time to switch to recruitment me thinks…). Look at the numbers of new developers coming out of uni all eager to get stuck into .net and earn the big bucks. In a year or two I think we’ll see the first few .net failures in the press. These will be the big bank projects where the CTO suddenly had a look at the bill and said ‘enough is enough’.

The sad thing ofcourse in all this is that is has nothing to do with the technology. The projects won’t be canned because of the technology capabilities of .Net. No, it’ll be strictly a financial decision. And then we’ll see the mass redundancies, more customers questioning the cost of their projects and soon after the market will have ‘corrected’ itself.

Consider .Net a stock with a P/E ratio just starting to climb too high. Ride the wave as long as you can, but be wary of the crash.

6. Moving forward

So, where does this leave a company like ours. We are small (15 developers) but growing (we plan to double in size over the next 2 years). Should we be investing heavily in .Net? Well, one way of looking at is that in a few years time we’ll be able to pick up skilled staff pretty cheap…

But seriously, the question is more ‘Can we afford not to?’. We don’t want to be left behind, and we certainly can’t move to another platform – we are far too entrenched with Microsoft. And, Microsoft has been good to us over the last decade. Their servers and tools have enabled us to deliver great products and solutions to our clients. And frankly, (with my technical hat on) I like playing with the new stuff. I get a buzz out of building new ‘cool’ solutions. But you can understand my concerns when I have my ‘manager hat’ on. Just how should a software manager be guiding a small but growing software company?

I’ve raised my concerns here. With Visual Studio 2005 released in November, my job is to set a clear path for our company over the next few months.

I’ll write more on this as answers become clear.