< September 2016
     1 2 3
4 5 6 7 8 910
Thu, 08 Sep 2016:

Today's the first day of year 5 for me in Hortonworks.

I've now spent more than a decade getting paid to do open source work. But until Hortonworks, all work I did was tangential to the business arm of the company. All my customers were internal, which meant mostly I got privileged access to the problems. The bug resolution for complex issues never had to deal with walls of customer solutions obscuring my insights into the system. There was never a day when I couldn't tell someone from Yahoo mail that I was working on another issue with Frontpage.

During my Zynga period, I learnt how to sell your ideas to a product focus team looking for solutions - to explain better, to justify my arguments with numbers, to convince and to persuade. To keep my sanity, I also learnt to pick my battles, drop issues and walk away when the friction gets personal.

I never had to sell to a customer direct - even at my best, on the books of the company I was a cost, an engineering expense. My work at Zynga or Yahoo, was helping the company bring down its bottom line by a fraction without ever touching the top line, except by accident (yay, faster load times).

This is generally an area of work with no real conflicts of interest built into it - use of APC for instance was mandated and in most cases, my code was the only available solution to the problem. Giving up on APC meant switching to HipHop, which also I worked on (never got the CLA signed by Zynga, which was sad though). The pattern followed me through out the period even through ZCloud build-out, through ZPerfmon, ZProf and pretty much everything I touched.

Hortonworks has been a completely different experience. I'm still a developer, but my contribution to the company has turned into a top-line enlarging investment in most scenarios. The work I was doing with Stinger was actively bringing in more customers and indirectly, more revenue in. This brings in some interesting conflicts for a developer, when talking to a customer about your features, because that particular transaction starts off as a zero sum exchange of money with the implicit declaration that the "solution" is a non-zero sum win-win.

This shift in the nature of my job has been interesting. The role now requires a completely different social skill set which I didn't need in any job before this. The goal is nearly the same, but conflicts fall onto my lap instead of being able to just say "Zynga first" to end a discussion.

Honestly, it's been a bit of a culture shock.

I feel like I'm astride an elephant, with my toes pressing suggestions of direction. The benchmark numbers are just numbers, unless someone else decides that those need some action. I cannot actually move the beast, but the beast does move, never to stand still.

As always, I've stayed on top of that beast here for the last four years to learn and cope with that process. The learnings are rather harsh, that while in a single company you get to deal with your users first, the actual users in this mode don't run the systems, those who run the system don't make purchasing decisions and those who write the checks don't really deal with either of those folks directly. And in the end, the check they write is eventually only fractionally related to my paycheck anyway.

In that world, it feels ultra depressing to sit in on a call where the dreaded phrase is said - "what the hell do we pay you for?" . There's the sub-text in your head going - uh, you don't ... I'm here because I am the only one who can help with this and this is not even my job, neither is it my turn on the on-call roster, so get off my back. But you learn not to lash out in knee-jerk fashion and close down the conversation, but continue debugging which is upto your discipline, a thick skin and the knowledge that your self-worth isn't tied up in that guy's opinion. I still don't know how to communicate that Insulting my commitment to your problem isn't helping - making it unpleasant might feel better, but you're burning good will here. Looking back, some of what I did never made any sense in the big picture, to feel the pressure from the sales cycle to deliver something over the christmas weekend and then get back on it through the new year weekend too. However hard those weeks turn out to be, the rewards for such heroics diffuses away as the company gets larger and as the customer base expands outwards - no deal ends up being the end-all of your work.

I still love solving those tough problems and solving them are their own reward, but the process friction is draining for your attention spans and your ability to take criticism for no fault of your own wears thin (I'm rarely the person who wrote the slow bit of code I'm fixing and I'm unlikely to be the one in the next case either, *sigh*). Collective responsibility is hard with open source, when this issue was because of someone back in 2009 who thought this was good enough, way before the YARN and Hive teams sat under the same roof. It's nobody's fault, but remains your problem.

There are some upsides to being thrown about into the rough and tumble of that process, you develop a lot of breadth in your skill sets out of sheer necessity - whether it's about something esoteric like Kerberos or the specifics of file listings in Azure or S3. There are technical savings you build up over the years, which work exactly the opposite of how technical debt works - readymade solutions which you refine through one customer aftet the other, to feed back into the product as much as you can. This is what a front-line engineer does in a small company, to carry a huge memory bank of all the problems cross-referenced to their solutions. A bigger company divides away expertise until no one person has the entire picture and start operating in managable fractions of expertise.

I came into Hortonworks, expecting to fix MapReduce and HDFS, possibly to dig deeper into HBase latencies - it is odd to say that right because instead of polishing old code, I got to work on brand new ideas with Stinger on Hive, ORC and Tez. But unlike my work at Zynga, I've never had to bury any of work (and to have the company salt the earth behind it) - my patents from Zynga are clearly dead-ends which I cannot pursue somewhere else, original ideas which I had and lost posession of. Putting up every little thing I build onto a github repo has been a liberating experience, being able to talk about my work in great detail to everyone including business competitors gives me a sense of autonomy which I have not experienced since college.

There have been so many mishaps along the way too. It was a horrible idea to work as a contractor in India when Hortonworks failed to hire me in time for the H1B cap - every bit of my immigration that followed has been a pain because of the fact that I was an Indian contractor moving to the US. Unfortunately it's too late now that I'm already here and is probably beyond recourse, I would probably have to quit or move out of America to reset that, in the near future. And that's sort of been the only regret of mine in joining Hortonworks the way I did.

But this is the second longest I've worked in my career and this journey has been very different from the Gumball years of the Yahoo. With Hortonworks, I joined a small company in Maude & Matilda four years ago and I now work for a company that is so big it has offices around the planet. When I interviewed at Hortonworks in February of 2012, that was way before the this company was - back before there was a packaged product or an installer, before the "do or die" phase of working for an underdog company.

And an underdog might be down, but always gets to punch up.

Boredom is the feeling that everything is a waste of time; serenity, that nothing is.
          -- Thomas Szasz

posted at: 22:40 | path: /me | permalink | Tags: ,

Tue, 25 Aug 2015:

Must be a strange coincidence, but I think nearly all of my farewell letters have been written in August.

As the days get a tiny bit shorter, all the energy that the summer brings turns into a certain impatience. Sitting in front of a desk, when the brightness outside is getting wasted.

Perhaps you don't feel it, but there's a general ebb of life that makes me acutely conscious of my mortality. A certain knowledge that summer is passing and I'm still indoors, to wait for another year perhaps to enjoy the summer sunshine.

And yet, it's not that I feel sad about the passing of days - those days aren't here. It's a call to freedom. A primal urge to make most of the days in the sun, without concern, because the winter that will follow is inevitable. To plant all the energy of the summer that's half-gone and reap the rest.

Need to just head out into the sunshine & high mountains, leaving work in the valleys.

Your career is like a box of chocolates - you never know what you're going to get.

posted at: 16:27 | path: /me | permalink | Tags: , ,

Mon, 06 Jul 2015:

Here's a short quick set of questions.

Do you work heavily whenever a project causes disappointment, when you are under pressure or have had a quarrel with someone?

Have you built up a tolerance to your life style and developed strategies to cope with lack of sleep when driving?

Have you gone back to work in the morning only to not understand what you were thinking when you wrote some code last night?

When you work in a team, do you find yourself taking up an unfair share of work automatically?

Do you ever feel uncomfortable when you are too far away from work stress, particularly if you've turned off work email?

Are you in a hurry to get some part of your work done, before you have to meet the rest of the team for a standup?

Do you find yourself picking up some work to do, after you make sure your wife and kids are already asleep?

Has a family member or friend complained about you preferring to work instead of going to a social occasion?

Do you ever promise to meet for an event (kid's recital, date night) and missed it because you were caught up in work?

Have you noticed that despite spending more time at work, you get less and less done these days?

Do you eat very little or irregularly, during periods of overworking?

Do you ever feel depressed or anxious during or after periods of heavy working?

Have you tried to change your work habits for several attempts without achieving any real change?

Do you ever find yourself making excuses that this is entirely temporary, while consistently overworking for months?

Do you try to cram in as many lifestyle activites as possible into a single weekend, to make the break from work count?

Do you ever find yourself wondering how other people find time for their hobbies?

Do you motivate yourself with thoughts that when one day you're rich from all this work, you will be able to retire and pursue hobbies?

If this myth is tragic, that is because its hero is conscious.
Where would his torture be, indeed, if at every step the hope of succeeding upheld him?
The workman of today works everyday in his life at the same tasks, and his fate is no less absurd.
But it is tragic only at the rare moments when it becomes conscious.
        -- Albert Camus, "The Myth of Sisyphus"

posted at: 21:48 | path: /observations | permalink | Tags: , ,

Tue, 20 Aug 2013:

I work from home and that causes more trouble at home than at work.

Today Kavi asked me if I wanted to come along for a 4 hour round-trip to the airport to drop off her sister. Now those four hours of that has to come out of my work hours for the day & is a distraction I hadn't planned on having, but that is really my problem, not hers.

But if I were in an office building approximately two kilometres away, doing the exact same thing today I wouldn't have been asked that question. There would've been no expectation that I can spare four hours from the middle of my work day for a car ride.

I didn't go, of course - I'm sitting here ranting about it while my cluster is rebuilding ORC tables. But I didn't really have a pleasant time saying "NO" either. Just having to say *NO* and having her drive back from the airport alone seems like a choice I'm implicitly making.

In reality, I'm spending more time with both of them today, while my cluster rebuilds. But the fact that the question is pursued implies that the people involved do not consider me "at work" and therefore unavailable for anything else. And that question hurts my commitment towards both parts of my life.

The real trouble is that occasionally I do take time out of my work hours to do things with her. It is no sacrifice, because we do things that can only be done in daylight - shopping for things, brunches which last till 2 PM and evening runs where I spend an hour in the middle of the work day clocking up some mileage. I did that yesterday, with my cluster churning profiles out.

I probably really only work 4 hours a day. But those 4 hours come in two sessions of 2 hours of uninterrupted work, when I do not reply to emails, my phone is in another room, I'm not reading HackerNews or tweeting anything interesting (people, now you can see how often I work). I keep every activity which involves staring at progress bars out of those hours - my maven repos will be upto-date, my unit tests are run later and my work setup is all done somewhere in the middle, preferably during a meal or a run.

For those hours I'll be in a state of mind that is fragile enough to be destroyed by someone just asking me a rhetorical question like "XYZ is in town next week, we'll meet them on Wed?".

The trouble is that people who inhabit my life can't differentiate between those four hours and the other four hours. You know, the non-work work hours that go into reading JIRAs, replying to threads, attending calls or setting up EC2 nodes. Some of those leaks into the weekends, but I deal with it if it means having more quality time to spend on a Monday. In those hours, I will not snap back when interrupted, even drop what I'm doing to look at something or get a coffee.

I do try to make it all fit in, usually with some careful & invisible planning. It is the invisibility that is its undoing - it is effort that rarely goes appreciated by people at home (people at work don't even know I do this). It is really hard to say yes to new plans when they keep coming up all the time, without sharing my carefully timed plans - "Yes, I need 10 minutes to setup something that will take 4500 seconds to run. Let's go in a bit, but can we back by 9?".

I love being able to say "Yes!" to a plan, but I rarely say out the rest of the above sentence. And that has repurcussions that affect my happiness over-all. If unexpectedly I have to spend two hours at CPK eating dinner (enjoyable time, of course), I have to catch up by staying up till 3 AM to get my four hours in that day. Perhaps people will come home and I will offer to cook pasta instead of going out. A part of it is selfish even, because if I stick at home, I might get to stare at a monitor while the pasta gets to al dente and get some of the scaffolding work in. Those are not really work hours - if I can cook pasta while I work, I'm not working.

Now, you might wonder about my deadlines when I talk about my time and work. I'm not slogging to meet some arbitrary deadline set by Hortonworks. I'm working because I get paid to do something I actually like. And I do like to take my time off and do other things I like. I want to spend about 9 days somewhere in the Himalayas next month, without cellphones, computers and with my camera, tripod and a stack of well chosen filters. To balance my work and life, I need to put in my time at work doing productive things and I do that without anyone forcing me to "SHIP CODE!" - what else counts as work? :)

But the trouble is that I can't seem to balance my work & life, particularly living with someone who's always up for new things by the hour (which is why I fell in love with her). And it is a question of expectations from the people in my life, because I work where I live, most of the time. Perhaps if I walk out of the home for 8 hours a day and go sit in Yoga House, the assumptions of my availability for plans will drop out of her mind.

I still love working from home. I do get to head out for an hour or so, eat lunch, drink coffee and spend quality time with people. I just wish they'd understand that I have a work schedule between those pleasant punctuations and make my life a little easier with fewer questions I have to say "*NO*" to.

Because saying "NO, I HAVE WORK" makes me sad. Very sad, indeed.

Any idiot can face a crisis - it's day to day living that wears you out.
        -- Anton Chekhov

posted at: 19:13 | path: /me | permalink | Tags: , ,

Sun, 19 Aug 2012:

Friday was my last day in Zynga.

Zynga has been a very different place for me to work in. Coming from Yahoo, where the tech folks had sway over the company, to a place where the product managers were the core of the company was jarring to say the least. But adapting to thrive, indeed succeed there has polished off a few rough edges that I had.

I've sat at the cliff's edge between what's management and the frontline. I've stared into the abyss and stared it down. I've seen exactly how incentives work and more importantly, when incentives tend to work against you. I've learnt to temper my competitive spirit to skip the usual pitfalls of meritocracy. I've understood how to work with people who are not engineers.

I've known the difference between talking & persuading. To effectively bring people over to your side of the debate - whether it is with statistics or merely by running experiments. In some sense this is more diplomacy than being technically right every time - but there's no value in actually being wrong. And I got better at saying No.

I've learnt what risk looks like. Very early in this "game", I learnt to play offense. To gauge a risk, take it and occasionally clean up afterwards if it blew up in my face. And in some sense that's the general motto around there. I became quicker at churning out a solution, battle testing it and minor setbacks weren't really a deterrant anymore. And I was brave.

I got to treat crisises differently. I was on the on-call rota. Instead of panicking and hyperventilating, I started treating them as merely opportunities to offer solutions. And in my spare time, I prepared for these crisises which turned out to be massively productive moments of innovation. I tried to get some of it opensourced, but a lot of it is locked up in the paperwork that I never finished.

I've had my moments of frustration too. There have been scenarios which were charged with egos and people politics, which are probably no different in any other workplace - people trying to play schedule chicken, folks trying to delay others with scope creep, territorial engineers telling me to keep off their turf & avoidable meetings where people duel with power point slides full of promises they can't keep. I've occasionally gotten demoralized about all that, but I've managed to move beyond that and build out a stronghold around me.

And finally, the best thing that's happened to me was working with the senior technical folks in the Bangalore office. People like Binu, Prashun, Prakash & Jayesh have been a big part of my development at Zynga. And not just them actually, the whole team is full of fun folks who don't really consider work as the end-all of their daily life.

It felt like I was part of an uber startup!

The world hates change, yet it is the only thing that has brought progress.
          -- Charles Kettering

posted at: 15:05 | path: /misc | permalink | Tags: , ,

Wed, 11 Aug 2010:

In Memoriam - Monday, August 11th 2003.

And I mourn for a loss I cannot explain.

I'm not upset that you lied to me, I'm upset that from now on I can't believe you.
        -- Nietzsche

posted at: 17:30 | path: /me | permalink | Tags: , ,

Tue, 06 Oct 2009:

Occasionally, as I flip back the pages of my life, I find myself in conversation with a younger me from a much older time. As if caught in a flipbook time machine, I see myself change, grow and in some sense, stay the same. Once in a while though, I turn up a page with which I disagree with enough to need revisiting.

In the mid-summer of 2007, out of my frustrations with work was born an unadulterated rant of pure cynicism.

There's some sort of misplaced humility that is injected into us by our educational system. Or maybe it is some sort social stigma attached to the braggart or overacheiver. Must've been what was going through Lennon's mind as he penned down "they'll hate you if you're clever and they despise a fool". Eventually, the struggle to stand out and the pressures to blend in, find some sort of balance in your inner selves. You'll be happy to be the best at something everybody is doing. And even if you aren't, it's somewhat a partially ordered set. Life makes sense and the years roll on.

So you are the real deal, the bee's knees. To start off your career, you dive in and start pulling your weight. Even a moron in a hurry can see that what you're doing valuable, nay essential to the company. Your management wants to know that, it's exactly the kind of information they crave. When it's handed to them in a platter, they love it. But, you keep working, in your little corner. Nobody notices anything and if they do, it's when you fail. You complain about not being noticed to your peers, you write out long rants on your blog about how your life sucks.

Most people at this point in their careers blame the management for everything that's wrong at their job. And treat every peer who chooses to move into management as a blood traitor. I'm not denying that there are bad managers, just the same as there are bad people. But most managers promoted out of rank & file end up being good people with a job which looks like herding cats, except without any catnip. The people working under ordinary managers go passive agressive in their rebellion, complicating the situation further. Eventhough 'tis a betrayal every which way, it happens because nobody trusts anybody.

You are doing something very important and valuable to the company. Then why don't they trust you? Because they have had people work under them in past who were poor communicators because they weren't getting anything done. They even had good people work under them who secretly didn't like the plans, but kept their traps shut and worked towards a fait accompli. So if you communicate poorly, they are not going to give you the benefit of the doubt. No matter how many poor communicators actually end up getting work done, the managers will always remember the times they've been burned.

You don't need to be a 'Yes Man' or a atrocious sychophant to get your manager to treat you well. All you need to do is to make his job easier ... after all, managing you is pretty hard work. Though, there's such a thing as overdoing it. But that's yet another story altogether.

Watching your future with much interest,
  — future me.

Those who cannot change their minds cannot change anything.
           -- George Bernard Shaw

posted at: 22:01 | path: /observations | permalink | Tags: , ,

Wed, 11 Apr 2007:

After much thought and inaction, I've compiled a quick list of basic things you can do at work to reduce your tangible value to the company (coming to a bank account near you, soon !).

  • Answer questions on devel forums
  • Write a technical blog
  • Live the company values
  • Write cool hacks
  • Have a serious hobby
  • Contribute to an open source project

All of these things shout out that you have too much free time. If you send detailed, well thought out answers to a question on a devel forum - you aren't working hard enough. If you've got time to write a decent blog about technology - you aren't working hard enough. If you actually live the company values (for instance, like I do) - your irreverance and sense of humour do not suit a professional in this business. So is going around your product managers to actually build something that you personally like, without any input from the product strategy team - that's not what you get paid for. And hobbies - they waste your time and cost you money. Without a hobby to spend your disposable income on, you won't need as much money as you're asking for now.

But the last one takes the cake. Assume your full time job involves working on an open source project. Now answer me this, "what *competitive* advantage does your work bring to this company ?". After all the code that you write automatically becomes available to everybody - irrespective of who paid for the development costs. Code thus released drops to near zero value and ergo, the process of creating it ...

These should just about work, but YMMV.

PS: I'm being seriously *sarcastic* (or tersely ironic) here - these things are a potential investment in your betterment, do them, be a better person and as the Bhagavat Gita said - Karmanye vadhikarasthe, ma phaleshu kadachara (do your duty and expect no reward).

The term investment (the basis of all capital) is pretty much forgotten.
Instead, investing money is considered spending it.
                -- slashdot #18632805

posted at: 23:45 | path: /rants | permalink | Tags: , ,

Mon, 25 Dec 2006:

Repeat after me, three times - C++ is not C. This is a fact which has to be hammered into every programmer who claims to know C/C++, with a nice clue bat if necessary. But in this case, it was more of g++ isn't gcc and only for those who use RHEL4.

Here's a bit of working code in C99 which is totally different from C89 (otherwise known as your dad's C standard) - which is technically speaking, legal C++ code as well.

/* compile with gcc -std=c99 */

#include <limits.h>
#include <stdio.h>

int main()
  printf("Maximum value for unsigned long long: %llu\n", ULLONG_MAX);

But the exact same code was not working when treated as C++ code. For a few versions of glibc, no matter which C++ standard you used, ULLONG_MAX wouldn't be defined. Not even if the code segment is enveloped in an extern "C" block.

As it turns out, this was a quirk of the glibc's extension to the C pre-processor - include_next. Rather than include the standard /usr/include/limits.h, what the first include statement does is pull the limits.h file from the compiler include files - from /usr/lib/gcc/.... You can figure this out by running g++ -M limit.cpp, which dumps a pre-order traversal of the include hierarchy.

And the definition of ULLONG_MAX was probably written by someone who never expected a compiler include file to be included directly from a user program - and rightly so. Except, there is no real way to fix the include order for such similarly named files.

Eventually, the fix was to use ULONG_LONG_MAX instead of the slightly shorted ULLONG_MAX. But the glibc bug has been fixed for a while - was just not critical enough to be pushed to all machines.

The strictest limits are self-imposed.
            -- House Harkonnen, Frank Herbert.

posted at: 07:12 | path: /hacks | permalink | Tags: , ,

Tue, 26 Sep 2006:

Jargon is the refuge of the elitist, but I will stoop to it - to hide behind a word, my ideas. Performance Inversion is that dark fate that awaits a "Can Do" person in the hands of an unscrupulous [1] taskmaster. Something dark and deadly which destroys your work ethic and pushes you ever closer to a burn out, while still under-utilizing your real talents. In relatively mild quantities, the problem solves itself, thanks to that great human ability to forget. But for some more unfortunate souls, it throws them into a bottomless pit of effort, in a spiral of work and more work.

Performance: You are stepping into an existing team, filling someone else's boots. Invariably, your first few weeks will be typical bootcamp. You are pushed to deliver and most of us, do deliver in that initial phase putting in extra effort in return for the manager's confidence. But having gained the confidence and trust, the work cycle settles down into a more sustainable load, by mutual consent from both parties.

Distribution: Not everybody in the team works at the same levels of productivity. There are a few who have bursts of extreme results, while some of the more settled folks deliver a constant, steady stream of work. Most managers would like a decent mixture, so they have enough afterburner fuel in the former while the latter keeps chugging. Work comes in and the work load sort of averages out for everyone, a few extra bits given & taken, in general everyone ending up with their fair share - no more, no less.

"Can Do" XPloited: The former category of "in reserve" people are those who are more commonly known as "Can Do" people. Nobody sane (or at least has heard of "Mythical Man Month") will dare to plan for these people to work at full throttle. But a few still break this cardinal principle to keep the wolf off the door, for a few months more. After all, what good are developer resources, if not for working.

'Tis an act of betrayal, worthy of Macbeth and more. But unlike the lady of the play, the blood seems to wash right off the hands - maybe she should've tried the sweat and tears of engineers, instead of perfumes from arabia. Anyway, if someone had yelled out "abort mission!" at that point, I'd shake them by the hand and buy them lunch. For otherwise they have to be eternal optimists who never learn (incompetent) or of the feudal weasel family, whose concern for the serfs is legendary - either way, let them expense lunch.

Blame Spread Thick: Having been told to do the impossible, the developer has a faint idea that he/she is going to be pushed to the very limits of his/her ability. In some sense, the "Can Do" people enjoy that experience. But then something goes wrong, some dependency fails to deliver, the whole plan's a pile of toilet paper as far as the project's concerned. And a landslide of backlogs land on the developer's shoulder and the difficult task becomes mission impossible (where work should've been a walk in the park instead). To compound insult to injury, he/she is called in by senior management to explain the delays. Watching the man responsible for the mess (in your opinion) sit on the other side of the table with a reproachful look, doubting your commitment, is too much for anyone with a straight backbone to bear.

Character Shows: But you still eat crow, swallow the remnants of your self-respect and buckle down. You work insane hours, on weekends, skip meals, eat junk food and work work work. By an amazing coincidence, you manage to drag the entire module back on schedule, mainly by doing the dependencies yourself and doing QA's job when you're done coding. Having got your workload to a manageable level, you wait for the release, the associated kudos and a general pat in the back.

Inversion: And when you think it can't get any worse, it does. So the boss shows up at your cube, and says "Ummm,yeah ... $_nameless_ is quite behind schedule. You're the only one ahead of your tasks, so I'm moving a bit of work off to you". Not only are you not getting credit for finishing your work, but you are getting more work just because you keep doing it. All this while, $_nameless_ has been shirking work, lazing about in the food court and generally enjoying life. So, faced with the basic injustice of the situation and remembering the last lecture about "communication", you walk back up to your boss's office and enunciate - "No, I'm not doing that". Boss takes offense to your "Not my job" reply and lectures for half-hour on team work and "one for all, all for one" philosophy.

Final Straw: For an external observer (such as middle management), in a matter of months, you've gone from being a "Can Do" whiz kid to becoming a whiner who says "No" to work. They just can't comprehend why or how of the scenario and decide to take strong steps to discourage this behavior. In response to your glowing achievements on your self appraisal, they write out a "negative attitude to work" and give you an average hike. Your complaints to HR fall on deaf ears, used to listening to employees bitching about pay, quote salary parity to ignore you. Of course, the boss probably got a good hike for managing with (*sic*) employees like you. The inversion discontent spiral is now complete.

In a few short steps, one person has gone from being an excellent employee to someone who's polishing up their resumes. But the really sad part is that as long as the real offender is not punished, this developer is only one among a long line of people whose work ethic will be destroyed totally by mismanagement. There are a few other branches and variants to the above scenario, some worse, some better, but they all end up in the same gutter anyway.

All this only goes on to prove why I think of management as a dark art of sorts. It requires a lot of finesse and panache to pull it off, rather than mere authority behind you. You can't convert any average joe from a tech lead into a manager, at least not into a good one. There is a certain Je ne sais quoi which sets apart the good ones from the average ones. So if you have a good manager, you don't know what you're missing

And for the record - I only observe, I don't interfere.

[1] - Hanlon's Razor:
                Never attribute to malice that which is adequately explained by stupidity.

Lots of folks confuse bad management with destiny.
               -- Frank Hubbard

posted at: 17:42 | path: /observations | permalink | Tags: , ,

Mon, 04 Sep 2006:

One of the rarest of the rare species that inhabit cubicles is that creature of myth and legend - the Team Player. Often naturalists hiding behind indoor plants near the watering holes of employees claim to have encountered the creature in the wild. But they are probably mistaken or lying, because it is widely accepted that no fossil evidence has been found past the piled carcasses of the Y2K mass extinction event. Ever since the job atmosphere has lost its ozone layer of job security, most of these magnificient creatures have succumbed to cancerous career growths or perished in hibernation between jobs.

Jokes aside, I'm here to debunk the myth of the team player. To study and expose the nature, being, migration patterns and if time permits, the mating habits of the common team player which is endemic to air conditioned cubicles of software companies.

For a borrowed concept from professional sports, the team player label has undergone a sea change before it has been used to describe a software engineer. Rather than deride the noble concept, which embiggens the smallest man, the target is the namesake euphemism which has replaced it in corporate vocabulary.

Managing a software project is no walk in the park and if Mythical Man Month is any indication, is often contrary to conventional wisdom. Essentially, most of the problems stem from one single assumption - that software is an industrial product. Building software is unlike any other industrial process and is more of a research & development activity than an assembly line of coders assembling components. Allowances have to be made for dead end attempts, work done to maintain status quo (aka Backward Compat), regressions and other anomalies.

Programmers, by definition, are only human. And humans have good days, off days and then those days when it doesn't pay to get out of bed. The productivity of a programmer is bursty and unpredictable. But predicting that is exactly what all the money in management is all about - creating schedules, timelines, plans and bullet points. And they'd rather have their task made easier.

So it is obvious that a steady, yet low, throughput would be considered more suitable to the management principles adopted from the industrial revolution, rather than the odd week of lucidity separated by a fortnight of stupor. The brilliant programmer who works in bursts falls out of favour, while the predictable programmer is pushed forward. The moral of the Tortoise and the Hare is vindicated in this modern race, where the hare is caught napping, though the jury is still out on whether 'twas the management's inaction which let the hare sleep.

The team player has come to be a euphemism for such a slow and steady worker - predictable and absolutely devoid of hidden reserves & surprises. Someone who would rather move with the team rather than run ahead and look back at others. To make no exceptions and just keep on working, despite lack of motivation or support from above is the clinching quality of the newly defined team player.

To put it more bluntly, being a team player (in context) is not for the benefit of the team of peers, but functions primarily as yet another variable removed from the game of uncertainity that is management. The ease of control is why this group is encouraged to form and survive, even re-evolve in new circumstances. By whom ? Take a guess. And where the species is missing, others are dressed up in the robes of team play-dom, under the flag with the device SCRUM.

The moment the system favours such team-players over strong contributors, the team will quickly lose its edge and motivation. The balance has to be maintained to ensure that the average output of the whole group exceeds the sum of the parts.

Finally, all the above discussions treat team players from the cynical point of view. But just because you are not a team player in the eyes of your management does not make you not-a-team-player in the eyes of your peers. As long as you can have fun, while working with them, help those who struggle and in general, not let your ego rule your decisions, you'll be one of the team - truly.

Otherwise, you're just a team player.

Captain, a starship also runs on loyalty to one man.
And nothing can replace it or him.
                         -- Spock, "The Ultimate Computer"

posted at: 01:46 | path: /observations | permalink | Tags: , ,

Mon, 08 May 2006:

This one's for all the times I saw an eskimo on a sled with the banner North Pole or Bust in Miami. Actually that was just a cartoon - but that's the point. Ever wonder why it's funny ? Actually I have a pageful below that will do nothing explain it. But I think you'll understand why I hold back no smiles. This is actually a page from my life, carefully bookmarked (disclaimer: some names changed for more hilarity).

The problem with opportunities is that when they do knock, they're likely to press alarm bells rather than door bells. As articulated so clearly by Wally - there are no problems, only issues, challenges and opportunities. So, what does that have to do with my life ? Well, I was the neighborhood Wally when I used to work in Initech.

I used to show up at work a bit after nine. Yes, 9 AM and that's late by Initech standards. I'd walk upto to my desk with a cup of coffee as if I just nipped downstairs for a coffee. I never carried a bag and hardly ever an umbrella. I'd imagine somebody would be hard pressed to figure out whether I just walked in to work or whether I'm relaxing after my early morning bit of work. My job involved taking a mobile phone, flashing the latest build and literally key mash my way into the bugzilla records. I was a QE and they were wasting a really quality engineer by making him poke a few buttons. The managers knew it, but were really powerless to pull in a kid out of college into writing embedded software (*oooh*).

So the problems started in the April of 2004, when 25-odd people from the 34 member development team gave in their resignations. What I was doing at the moment was having an argument with my technical manager about my leave, without knowing about all the hush hush resignations. I basically had put in more than a month's salary into my round-trip (non-refundable) plane tickets to Trivandrum and wouldn't stand to any level of bullying about the leave which I'd applied for two months ago. So I left office to spend an enjoyable week at home.

I returned to a chaotic office. Almost every good developer in the team is on notice. At that point hardly anyone cares about the project to waste their time on it. Here's where the management decisions kick in with true force :- We need to hire more people. Since they've already sold the IP for the project, management is now being paid for time rather than code output - there's no motivation to hire excellent developers. Solution, throw the bunch of freshers who've been sitting around on to the code. The more time they take to do things, the more money the account pays. And I was one among them.

That, my friends, is how I became a developer in profession. The loss of a significant amount of technical talent in one place, means a significant opportunity to people sitting in the benches elsewhere. That might sound too simplified, but there are two unspoken assumptions. The new guys on the bench have to be really good and the management has to have enough confidence in them (or shouldn't care which way) to throw these kids at the hardcore work. On a normal day, that'd be a big risk - but during these few desperate hours, this could be the last gambit.

It might just be my big empty head, but I keep hearing echoes.

The solution of problems is the most characteristic and peculiar sort of voluntary thinking.
                -- William James

posted at: 08:46 | path: /observations | permalink | Tags: , ,