Saturday, June 27, 2009

Turning Down Projects (in a recession) Part 2

One thing I love about blogging is how it enables me to think clearly. I wrote about how I turned down a couple of "good" projects in my last blog entry and gave some reasons. But something kept nagging at me as to why I turned down these projects.

I just realized that I turn down some projects because I don't want to be a part (*any* part, no matter how well compensated) of a mediocre project any longer. (I've had my share of mediocre projects, especially during my "outsourced enterprise" days. Been there, done that got the t-shirt -nutshell version -> life is not worth living when you spend 8+ hours a day on a sucky project).

Now I've decided to work *only* with good people on good projects, producing excellent code that provides great "customer value".

Funnily enough, I seem to have made the decision and committed to it before I was consciously aware of doing so.

Once upon a time a friend asked me to come work at his company(which will remain un named). Just as I began to turn it over in my mind, I heard myself say *very vehemently* " I'll beg on the streets before I work for [company]".

I was the one most surprised. But felt right. I *will* become a beggar rather than work for that company.

And now I will never ever work on a project/company/team that doesn't make excellence a goal and way of life.

Life is too short to be mediocre. *Trying* for excellence and failing is better than compromising "successfully" with mediocrity.

Ok, end epiphany. Back to regular programming!

Thursday, June 25, 2009

Turning Down Projects (in a recession)

As an independent "consultant", I get to hear a lot of project ideas. Most aren't worth listening to because it is just MBA types trying to extract free labor from technical people, but once in a while you come across some projects which are good or decent but you have to turn them down anyway.

I was talking to a brilliant guy the other day who wanted me to come into his organization, take charge of his engineering team and ramp them up the effectiveness scale while simultaneously welding 6 different (java/j2ee) codebases into a single "suite". Generally when I am asked to do such "enterprise-ey" jobs, I just turn them down flat, but this guy was a very atypical manager and so I actually thought about it.

It would take on the order of two years to get the desired effect and ramping up an indifferent technical team into a top notch team is one of the hardest things in the world to do well (no matter what an "agile consultant" would tell you ;-)). After thinking about it for a bit, I decided that the opportunity costs of working two years on something like this is too high (for me). Besides, I'd rather build a new team of brilliant people than ramp up mediocre people and processes.

Yet another project I turned down recently was a healthcare project that seemed promising. Unlike the usual MBA hallucinations this idea actually had a decent business model, clients waiting to give them money, real domain expertise and so on. The problem was that neither did they want to give away equity to the technical folks who built the product nor would they pay a high enough amount of money to be worth the time and effort it would take. Their ideal deal was "we'll pay you a modest amount now (NB: this is far better than the usual "work for us for free" deals most MBAs propose) and once you've built the product, we'll raise some VC funding (In my opinion, they had a good enough idea that VC funding wouldn't be a problem even in these times) and then we'll give you a decent fee and that's it".

Unfortunately (a) the nature of the product was that it couldn't be built by your garden variety enterprise programmer(some significant algorithmic challenges to overcome and some tricky programming to pull off) and besides they'd already tried this with some "enterprise outsourcing" folks and failed badly (b) a good programmer wouldn't take on this magnitude of work without a *huge* fee or significant equity and (c) none of the founders were technical (they were doctors) and they couldn't see the sense of giving equity to someone akin to a carpenter or a mason. You don't give equity in your company to a carpenter who builds the tables in your company would you ? ;-)

Which brings me to my central point. Even in this recession, practically every company I know (the bodyshoppers - Infosys, Wipro TCS Satyam etc being the exception) is hiring (though more selectively than usual), people are still proposing projects (with funding available) to a degree where some one like me who doesn't even actively look for such projects or jobs can have the luxury of turning down what would seem very attractive terms. I know people who would kill for a two year engagement with excellent pay, which was essentially what the first project I mentioned was.

The one group of people who are really hit by the recession is people just out of college. Some really good people aren't getting entry level jobs, but I am not sure it isn't actually good for them in the long run. Working for Wipro or IBM Global or Accenture is a sure way to waste years of your life for not much return(as a few thousand people in Satyam just found out).

Somehat tangentially, one problem I see with people trying to do a startup/work as an independent consultant etc, is that very few people have any *distinctive* skills that give them a competitive advantage. Knowing J2EE or Ruby On Rails (and possibly a smattering of "agile" or "lean software" or whatever the latest fad is) makes you just like the ten million people already on the market, at least on paper. What do you know/what skills or advantages do you have that (most) other people can't compete with you?

Stop Twitter. More Blogging

I've been on twitter for a couple of months now and am getting tired of it already. Twittering does have its benefits, especially the need to shrinka thought to its bare essentials, but I find it detracts from my more thoughtful writing.

Of course twitter wasn't intended to replace blogs, it seems more of an "update what you ae doing" thing. And I write quite a bit of the "thoughtful stuff" on YCombinator, so the blog gets increasingly neglected.

Well, time to change(back). I am traveling in internet access-less places till about the 10th of July. Once I get back I'll put my writing on a more regular schedule.