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

25 comments

  • Hi Craig,
    You are right, its high time to decide on which direction we are heading. Just reminds me of a joke

    Joke: Potential & Reality
    A kid comes home from school with a writing assignment. He asks his father for help. “Dad, can you tell me the difference between potential and reality?”

    His father looks up, thoughtfully, and then says, “I’ll demonstrate. Go ask your mother if she would sleep with Robert Redford for a million dollars. Then go ask your sister if she would sleep with Brad Pitt for a million dollars. Then come back and tell me what you’ve learned.”

    The kid is puzzled, but decides to ask his mother. “Mom, if someone gave you a million dollars, would you sleep with Robert Redford?”

    “Don’t tell your father, but yes, I would.”

    He then goes to his sister’s room. “Sis, if someone gave you a million dollars, would you sleep with Brad Pitt?”

    She replies, “Omigod! Definitely!”

    The kid goes back to his father. “Dad, I think I’ve figured it out. Potentially, we are sitting on two million bucks, but in reality, we are living with two sluts.”

    Well does it say everything… :)

    Aashish

  • Hi Craig,You are right, its high time to decide on which direction we are heading. Just reminds me of a joke Joke: Potential & Reality A kid comes home from school with a writing assignment. He asks his father for help. “Dad, can you tell me the difference between potential and reality?” His father looks up, thoughtfully, and then says, “I’ll demonstrate. Go ask your mother if she would sleep with Robert Redford for a million dollars. Then go ask your sister if she would sleep with Brad Pitt for a million dollars. Then come back and tell me what you’ve learned.” The kid is puzzled, but decides to ask his mother. “Mom, if someone gave you a million dollars, would you sleep with Robert Redford?” “Don’t tell your father, but yes, I would.” He then goes to his sister’s room. “Sis, if someone gave you a million dollars, would you sleep with Brad Pitt?” She replies, “Omigod! Definitely!” The kid goes back to his father. “Dad, I think I’ve figured it out. Potentially, we are sitting on two million bucks, but in reality, we are living with two sluts.”Well does it say everything… :)Aashish

  • My thanks to all who commented. Your thoughts are much appreciated. The main issue facing us software managers is how to ensure our businesses not only survive, but grow in the light of these concerns. My aim in voicing them is to generate thought about how we can best respond to them. And for those who may have missed it Andy’s post is very interesting reading:
    http://weblogs.foxite.com/andykramek/archive/2005/07/06/719.aspx

  • My thanks to all who commented. Your thoughts are much appreciated. The main issue facing us software managers is how to ensure our businesses not only survive, but grow in the light of these concerns. My aim in voicing them is to generate thought about how we can best respond to them. And for those who may have missed it Andy’s post is very interesting reading:http://weblogs.foxite.com/andykramek/archive/2005/07/06/719.aspx

  • hi craig ,

    hmmm base on my observation I found out that majority of your problem is the word cost. Since in your article you have mention it a lot of times. The answer to your problem is simple outsource your way to the third world. I can guarantee you that an equal talent your looking for where your paying $80K I bet in a third world you can pay them for as low as $170 a month.

    Think about it. Outsourcing is the future.

  • hi craig ,hmmm base on my observation I found out that majority of your problem is the word cost. Since in your article you have mention it a lot of times. The answer to your problem is simple outsource your way to the third world. I can guarantee you that an equal talent your looking for where your paying $80K I bet in a third world you can pay them for as low as $170 a month.Think about it. Outsourcing is the future.

  • Yabbbbsssss,

    What a load of hot cocky sh¦t. Now I’ve been an “acquaintance” of this Craig chap for a while now and have heard some pretty ludicrous, even outrageous things in the past, but this blog takes the cake. Mr Bailey, you have truly outdone yourself this time…..

    Nah, just pulling your leg….good post, no really, I mean it this time.

    Here’s my take on this issue, call them the Mulky laws of software developement:

    First: All things being equal (and that’s important to keep in mind here), it is faster to develope a running, deployable application with technology N+1 than it is to develope with technology N (where “N” is the technology at any given point in time and N-1 is the previous version). Craig, think Citect Pages.

    So for example, it’s faster to do a .Net application than it is to develope an MFC C++ or VB application (which were the previous techologies).

    Second: All things are never equal!. The only constant in our industry is change. Customer expectations will continue to rise because they need every edge possible over their competitors. If they currently have X cools features in their product, the next version better have X+5, otherwise their competitors will go X+5 or better, or cheaper and their customers will switch. Customer loyality is a thing of the past.

    Complexity: Yep, it’s out of control. But what ya gonna do. This is what you can do: You make sure that your team knows what the hell their coding about. Find out how all this new stuff works. Don’t believe the marketing hype, don’t even believe MSDN (been shafted too many times by the MS documentation it’s not funny). You’ve got to find out yourself and to do that, you’ve got to have dedicated SW research time. Get a software architect, pay them well, and make them find out how this stuff works and how to use it. I’m not talking about inventing new languages, a better compiler etc etc, just find out how the existing stuff works. Yeah it will cost, but yeah it will pay.

    SAP: Don’t start me on that…..too late. So far, the only two companies that I’ve worked in that introduced SAP was a financial and usability disaster. Final costs were in excess of double the original estimates, and took almost twice as long to execute, had much poorer performance, much less functionality and finally, resulted in redundant data entry. If I ever work for another company again that decides to introduce SAP, I’ll quit.

    Maks: Outsourcing is not the solution, in fact, it could be one of the biggest mistakes a company could make. Why? Domain Knowledge Loss. DKL happens quite simply when a company ABC decides that it can outsource it’s development because it will be cheaper for version X and just maybe X+1 of their products. Come version X+2, when foreign currencies and wages have adjusted, the contractors want better deals, or they just move onto other more lucrative and interesting projects, the previous projects were way late due to cultural, language, expectational and time zone differences, company ABC will decide that it’s time to either move onto another external company (complete DKL) or start building up it’s own internal staff (short term DKL, long term no DKL). This will result in version X+2 also taking way longer (due to knowledge build up) and being more expensive than expected, and you may just find that had you stuck with your original (local) developement team, you would already be up to version X+3, or X+4, where your competitors are right now.

    Man of many names.

  • Yabbbbsssss,What a load of hot cocky sh¦t. Now I’ve been an “acquaintance” of this Craig chap for a while now and have heard some pretty ludicrous, even outrageous things in the past, but this blog takes the cake. Mr Bailey, you have truly outdone yourself this time…..Nah, just pulling your leg….good post, no really, I mean it this time.Here’s my take on this issue, call them the Mulky laws of software developement:First: All things being equal (and that’s important to keep in mind here), it is faster to develope a running, deployable application with technology N+1 than it is to develope with technology N (where “N” is the technology at any given point in time and N-1 is the previous version). Craig, think Citect Pages.So for example, it’s faster to do a .Net application than it is to develope an MFC C++ or VB application (which were the previous techologies).Second: All things are never equal!. The only constant in our industry is change. Customer expectations will continue to rise because they need every edge possible over their competitors. If they currently have X cools features in their product, the next version better have X+5, otherwise their competitors will go X+5 or better, or cheaper and their customers will switch. Customer loyality is a thing of the past. Complexity: Yep, it’s out of control. But what ya gonna do. This is what you can do: You make sure that your team knows what the hell their coding about. Find out how all this new stuff works. Don’t believe the marketing hype, don’t even believe MSDN (been shafted too many times by the MS documentation it’s not funny). You’ve got to find out yourself and to do that, you’ve got to have dedicated SW research time. Get a software architect, pay them well, and make them find out how this stuff works and how to use it. I’m not talking about inventing new languages, a better compiler etc etc, just find out how the existing stuff works. Yeah it will cost, but yeah it will pay.SAP: Don’t start me on that…..too late. So far, the only two companies that I’ve worked in that introduced SAP was a financial and usability disaster. Final costs were in excess of double the original estimates, and took almost twice as long to execute, had much poorer performance, much less functionality and finally, resulted in redundant data entry. If I ever work for another company again that decides to introduce SAP, I’ll quit. Maks: Outsourcing is not the solution, in fact, it could be one of the biggest mistakes a company could make. Why? Domain Knowledge Loss. DKL happens quite simply when a company ABC decides that it can outsource it’s development because it will be cheaper for version X and just maybe X+1 of their products. Come version X+2, when foreign currencies and wages have adjusted, the contractors want better deals, or they just move onto other more lucrative and interesting projects, the previous projects were way late due to cultural, language, expectational and time zone differences, company ABC will decide that it’s time to either move onto another external company (complete DKL) or start building up it’s own internal staff (short term DKL, long term no DKL). This will result in version X+2 also taking way longer (due to knowledge build up) and being more expensive than expected, and you may just find that had you stuck with your original (local) developement team, you would already be up to version X+3, or X+4, where your competitors are right now.Man of many names.

Archives