Wednesday, April 25, 2007

Big company tax

People often wonder why it takes so long for a big company to ship, when a smaller one with much less resources can ship much faster. Is it because big companies hire incompetent people, dont know how to write software or run projects?

From what i have seen, the same software (say a messenger) will take much longer for a big company for the simple reason that much more has to be done to ship software, it is not done when the features are done and tested. Some of the things that small company folks never even think about:
  1. Clustering support
  2. Security reviews
  3. Windows Logo compliance (client and server if you have both)
  4. Legalese and trademark stuff. Oh, you are shipping a sample/demo code called "CatDemo"?? Legal wont approve, so go change all your samples and tests which use it to call it "DogDemo".
  5. Localization support, Does your software support turkish?
  6. Playing well with other products that the company ships. Oh, you mean you do not have an integration story with Office??
  7. Branding and ship vehicles. You are too small, so we will ship you with ProductLarge, so now lets make sure that we have an setup integration story with ProductLarge
  8. Run the million code analysis tools and do a superficial supress of all the crappy warnings that it generates? We dont trust your tests/perf tests to do a good job, we will warn you that you have a performance problem if you do a string catenation
  9. And btw, the next version of OS is shipping while you do this, so please make sure that you run on that too...
  10. and on and on ....
I think doing some of the above results in real $$ (clustering, loc etc), others are just the tax that smaller companies don't see as no one ever bothers to hack their code or sue them for some violation. And not doing it is not an option either[what do you mean, you wont support Vista :) ]

So net effect is that if you 100 hours of usual software work, you have around 200 or more hours of process work. Depending on competency of the folks who run the project, these things will be on radar right from start or turn up as surprises right at the end => more slips and chaos at the end.

This makes it frustrating for a developer at times, but the upside is that you get to work on stuff which small companies can never do [Database, OS, Servers, CLR etc] and have a corresponding larger reach .

3 comments:

RK said...

What is clustering?

Vishal Grover said...

I would tend to disagree with that. Software is one industry that is very suitable for a network collaboration than a conglomerate collaboration. i.e. many single product companies collaborating with each other. In fact, this is the industry which has pioneered this model. Most of the problems that you have described are consequences of a closed architecture and not a big company syndrome. In a world of open standards several of these things will disappear.

Kalyan said...

clustering - microsoft clustering services (think of it as software failover for the most part -> one machine goes down, the clustering service will pick up and reinstantiate your application on another node w/o manual intervention)

Vishal baba: I don't buy that interactions across company boundaries is simpler than across product teams in same company - negotiation/alignment of dates/getting them to give you required fixes etc will be more of a nightmare. Of course if we say that we don't have integrate with others when we ship then we don't have the problem, but then we are no longer talking of the original problem