When I last worked at MegaCorp, I would be in the office by 6.30 in the morning and leave by about 3.30 in the afternoon. This was non negotiable and part of the agreement I made with the company. I could work[1] productively for about three hours before the day's meetings and "manager work" started and the rest of the day usually went downhill very fast. I had some dim sense of "preserving my sanity"as a reason for doing this and it worked very well in this regard, but I could never explain clearly why this worked so well.
Now I know. Paul Graham writes an excellent essay on the different notions of scheduling for managers and "makers". A must read for both managers and programmers.
[1] At MegaCorp "work" had strange meanings - it was mostly measured in the degree you sucked up to your superiors (I am not being condescending here. I watched several masters of this art who would apply a frightening degree of focus on "managing upwards". Very educational but very scary), and how many meetings you attended. By God, did we have meetings. One of the reasons I left (not the most important one!) was that we started to have meetings about meetings and I came out of these dispirited and demoralized and completely drained.
Wednesday, July 22, 2009
Tuesday, July 21, 2009
Why do startups still use java? Part 2
In my last blog entry I had asked the question "Why do startups use Java (vs more powerful languages - Clojure, Scala etc - on the JVM, or other languages like Haskell or Erlang)?"
I had the opportunity to talk to a couple of ex-colleagues who are working on their startup (which, I predict will be *astoundingly* successful - these are very intelligent, well funded, capable -even the"business" guys is a good programmer - guys with some cool software) and I asked them this question and the answer was " (1) we find it hard enough to get good programmers. Adding a requirement for an unusual language will narrow the field (2) we don't have the time to train people. People should come on board ready to code. Unusual languages make this more difficult".
Both are thoughtful responses. I have some thoughts on these, but they will have to wait for another blog entry. Just throwing it out here for anyone interested.
Continued in Part 3 , Part 4
I had the opportunity to talk to a couple of ex-colleagues who are working on their startup (which, I predict will be *astoundingly* successful - these are very intelligent, well funded, capable -even the"business" guys is a good programmer - guys with some cool software) and I asked them this question and the answer was " (1) we find it hard enough to get good programmers. Adding a requirement for an unusual language will narrow the field (2) we don't have the time to train people. People should come on board ready to code. Unusual languages make this more difficult".
Both are thoughtful responses. I have some thoughts on these, but they will have to wait for another blog entry. Just throwing it out here for anyone interested.
Continued in Part 3 , Part 4
Saturday, July 18, 2009
Why do startups still use java?
I can't imagine what competitive advantage using Java (or C#) to create a startup provides these days. I can see why the JVM is sometimes a good idea. But java?
The only advantage Java provides *these* days over something like Clojure or Scala (or Python or even a c + scripting language combination depending on domain, let alone more powerful languages) is that you can be sure an average dumbo "programmer" hired off the street won't run away screaming when introduced to the code base. But if you are a software *startup* (vs big, fat and slow MegaCorp), why would you want to hire "average" (we'll be kind here) programmers?
I mean if you need a lot of libraries, use a better language on the JVM. If you need only a few, use the most powerful language you know. I would have thought it was obvious.
Well I thought about it and found an answer.
Startups are not necessarily founded by great programmers (who presumably are fluent in better languages than java or C#). They are often founded by MBA/business types who bring in a programmer they know and unsurprisingly enough these are the mediocre "enterprise" type of programmer. And they reach for what they know and are comfortable with, and hey presto, yet another j2ee/dotNet startup!
COntinued in Part 2, Part 3 , Part 4
The only advantage Java provides *these* days over something like Clojure or Scala (or Python or even a c + scripting language combination depending on domain, let alone more powerful languages) is that you can be sure an average dumbo "programmer" hired off the street won't run away screaming when introduced to the code base. But if you are a software *startup* (vs big, fat and slow MegaCorp), why would you want to hire "average" (we'll be kind here) programmers?
I mean if you need a lot of libraries, use a better language on the JVM. If you need only a few, use the most powerful language you know. I would have thought it was obvious.
Well I thought about it and found an answer.
Startups are not necessarily founded by great programmers (who presumably are fluent in better languages than java or C#). They are often founded by MBA/business types who bring in a programmer they know and unsurprisingly enough these are the mediocre "enterprise" type of programmer. And they reach for what they know and are comfortable with, and hey presto, yet another j2ee/dotNet startup!
COntinued in Part 2, Part 3 , Part 4
I've become some kind of weird clearing house
for good programmers looking for interesting projects/jobs. I know people doing interesting things (startups or other interesting projects). I also happen to know some really good programmers (who are as rare in Bangalore as they are elsewhere). Sometime I am able to link the former to the latter. If I didn't have so much to do I would probably start something like "Really Cool Jobs for really cool programmers in India dot com".
And since I connect only people I know personally, I can put my credibility behind them they are able to bypass multiple levels of interviews and such. Maybe there is a business model in there somewhere? (just kidding. I have enough to do for the next 10 years and my pile of "things to do" would be just as high).
And since I connect only people I know personally, I can put my credibility behind them they are able to bypass multiple levels of interviews and such. Maybe there is a business model in there somewhere? (just kidding. I have enough to do for the next 10 years and my pile of "things to do" would be just as high).
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 ...it 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!
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 ...it 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 lonf 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?
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 lonf 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.
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.
Subscribe to:
Posts (Atom)