Of Cogs (and other aspects of life inside eye-tee)

A severely biased analysis of life inside Microsoft^H [current company name], as well as any other random thoughts that require venting.

Wednesday, November 26, 2008

Tap, tap.. (I'm pretending to be speaking to an audience, as if the spammers cared.)

Soo, after a long hiatus, I am back with a vengeance (read: finally found some time to kill after seeing my movie collection twice and having browsed to the end of the web and back). I've cleaned up the steaming pile left behind by a horde of spammers though, truth be told, wasn't that large, which proves I'm not popular even with those.

Short recap of what transpired since my last post, so I can get rid quickly of this transitional blurb:

I switched groups inside MS to the then-newly-formed DiGiT (such lameness.. stands for Desktop Graphics Team), met some cool guys, found my voice and then promptly...

left MS, the PacNW and the States to go to Europe, where I found...

employment with a small-ish (under 500 people) software company somewhere in Europe, between the Nord Sea and the Mediterranean (one can never be too precise)

I've been here for a year and a half already, and time passed reasonably quickly. I guess I reached the point where this whole "small company" experience was/is sufficiently stable to make meaningful comparisons with life inside MS. Hence my renewed interest in this old shouting pipe to the void outside.

I'll try posting with some regularity on my current duties, my interactions with the "natives", tales from the front (and some gossip, too), quirks and features of working for a small(er) outfit and whatever else tickles me hard enough to waste time blogging. Let's see if I make it to 10 posts before New Year's Eve. The 2009 edition, to be precise.

Administrivia: comments are still unmoderated, though it took me tens of seconds (!) to clean up the 40-odd pure spam feedback. Captchas are now required - sorry for the pain (here I go again, pretending to speak to an audience).

Thursday, August 10, 2006

The restart

Been a while.. Lots of infuriating events, too, except I found it more pleasing to take some time (and weekends) off, rather than foam over the keyboard in the middle of the night. And besides, there were the NBA playoffs (what a disappointment that was), the World Cup (what a disappointment that was), the Tour de France (what a disappointment that appeared to be, before it rocked completely, then to again reach new depths of disappointment)...

So then, a brief recap of my hot issues:- the missing technology debacle, or how are things done at MS Our group delivered a new, public API. Beneficiaries express concerns that a few key functions are missing. We cost these, sum (3 days) and triple (2 weeks) the estimates and wait patiently for the executive decision. After about two months, a dev in another group finds a GM in a third group who will pony up a dev to do the work. It then turns into a contractor situation, whereby MS is to pay almost a full year worth of L59 wages to some long distance commuting contractor, who will copy our sample code, add param checking and give it back to us 2 weeks later for check-in. At this point, we're 3 months away from the inital meeting, and we've left ridiculous well behind. (Incidentally, had MS offered someone on the team a cool $20k extra if this work were done, I'm quite sure there would have been positive - even enthusiastic response.) External partner is furious for the delays, the GM is nowhere in sight and executive decisions come from the GM of the group next door. The final decision is to punt, not accept it even if it magically showed up on the doorstep. The customer is livid (or disgusted, couldn't tell from their choice of invectives) and we've managed to burn off 5 months of calendar time, maybe 20 hrs of meetings and break partners. I feel so proud, serious skill is required to pull something like this off.

- Prince Handsome rides his stallion in to save Windows; he brings with him a cohort of very skilled "inefficiency fighters". Msrs Valentine and Jones have been shunned from the future leadership of HMSW (His Majesty Ship Wreck) Windows. Mr Sinofsky is to assume command and he is to restore efficiency, predictability and accountability in the proud tradition of the Office Suite at his earliest convenience. Though bloated with features, of late, I liken Office to slightly more than the Windows Accessories than to the whole of Windows itself (I mean, there's Notepad, the pretty picture viewer.. and address book to act as Excel...) Still, higher powers deemed the intervention of Office luminaries as necessary. Clearly, an org an order of magnitude larger than Office, with a code base larger by several orders more, did not contain individuals capable or worthy of Doing The Right Thing. That is not to discount Mr Sinofsky's capabilities, of course, but the move seemed like an unplanned, hastily announced damage control measure. All would have ended well here, but the logical consequences are still unfolding. More Office luminaries are being instituted (promoted?) in elevated positions over all of Windows, to bring forward and implement The Office Way of Doing The Right Thing. (Picture this, the head PM of Notepad becomes the next VP of buildings 1 through 50. When I am King, I, too, promise to all my friends ministerships. First come, first served. You need to prove we were friends. Rainchecks may apply, inquire at the front desk.) The vision is coming together quickly, as the senior level meeting on Friday sent the seniors back to their buildings with clouded, pensive gazes. Hours ago, the Pretty Picture Player document was sent out for all to see and marvel at the crispness of the new face of WinClient. It looks remarkably similar to the current schema, it's peppered with caustic (and well deserved) comments of failure to execute and it's prefaced by the announcement that new people will spearhead the old divisions. Oh, yes, by the way, we've got this new guy coming in to lead all of UX and he's, you guessed, of Office extraction.It's too early to tell whether this is a bona fide effort to righten the wrongs, but I really can't help noticing the heavy aftertaste of nepotism. Behind the new slogans, enthusiastically blogged, I fear I hear the cries of joy of those stricken by lottery winning tickets.

- the exile of the once-wonderVPs. Ahh yes. I remember the heralding of Mr Jones as the brightest star in the constellation of MS VPs not 3 years ago. Mr Amir M., too, had a vision and fought considerable hours on AVSForum defending it. (Much like a hobby.) Both are now exiled to more elusive areas, though both more potent than the severely punished Mr Poole. In full-throttle Vista effort, key dev and test resources (heh, funny how adjective change their meaning so dramatically in context: key dev meant knowledge and execution; key test meant warm bodies) were pulled and redirected to a now seemingly defunct project concerned with the next generation of video disc players. Amir was certainly a charismatic leader, but it was decisions like these that led to his transplanting. More senior level leaders should have the passion for their area that Amir exhibited, because worse than bad execution is bad execution and nefarious indifference. Chris Jones seems to have been punished quite severely, actually: "hmm, VP of Windows Client.. Lead of all PMs in Live.. hmm.. tough one.."

- how is test really viewed. Recently, an episode featured yours truly in a debate over meaning of particular tests with a 3rd party entity. Now, the context is that normally, I feel appreciated, recognized as a good resource/reference for my field of activity. One dev manager decried, a while ago, the unfeasability of an experiment that would reverse roles (dev, test), so that everyone can see it's the same old bloody job, irrespective of the discipline. That helped, too. But in this particular incident, although being right and having standards to lean on, I found myself facing a common front of devs, PMs and 3rd party devs. Not a single punctuation sign of support was there to use, much less a word. The presumption was clearly that of "tester, hence not really knowledgeable". Had I been a dev, I'm quite certain the exchange would have unfolded differently. Every time an acquaintance of mine jumps the fence to the dev side, I increase the ref count on the main difference, as they portray it: people listen to testers politely, but simply listen to devs.

- how many approvals does it take to check in a one-line change? Why, 4, of course. One to check in the lower branch, one to approve it for Kit A, one for Uber Kit B (which includes A) and lastly, one for RIing (manually) the change from the useless staging branch to the live one. It's a rigorous process, that takes quite a few emails, a day and lots of patience. Without these approvals, my customer would not have my fix. In addition to being incompetent enough to make the coding mistake, I've only realized it very late in the game. I have an entire list of Vista heroes to thank for their help - I wish you were so lucky as to join me.

Wednesday, March 15, 2006

The Good, Old Times

or, More Cogs Decrease Efficiency

Just when I thought I fresh ran out of rants, all is great and why the hell did I start a blog, I brushed again against the ugly spectre of bureaucracy. A few years ago, working on a new OOB XP technology, my attributions included a constant dialogue with IHVs (mainly driver developers). We were a bit understaffed on the PM side, the devs were loaned to MCE to hold their devs by hand through the most difficult process of writing working software and so we, the test, were wearing the polymorphic hat we sometimes do: test/dev/PM. (And doing none really well.) Driver devs had questions about the spec, and we'd get them the clarifications (as well as updating the spec with more examples). Then they would need test tools, and we'd give them a bucketful of test cases, along with the reference output. Lastly, we'd help them with debugging/unpublished error codes and code up small fixes that our devs would put in the product. It really was great - fast paced development of both our tests and their drivers, and you could see the quality of the overall experience going up every week. What more could you, as a professional, expect other than the instant gratification of "it's fixed/better"?

Well, too effin bad, 'cause those days are gone and they ain't coming back. We now have almost as many PMs as we have devs, pretty fresh in MS years, high on talk and full of process. To be fair, the process part is not of their conception, and it's by far the most damaging aspect of this "new" life. Need to speak with an IHV? Sure, talk to the PM presenting the problem until they understand it, send him/her an email summarizing the issue, the expected outcome, ping them again in two days and try to maintain composure. Then that email gets to the addressee (hopefully) or to their counterpart in the IHV company (realistically) and, in due time, I'll get back a response. Need a quick and dirty update to the spec being published? Likewise, we have to go through LCA, lest our treasure map is leaked outside and we end up begging for food in high, affluent foot-traffic areas. And you just know those helpful LCA people, as well as your PM, have assigned exactly the same priority to this task as you and your IHV counterpart did. (Speaking of LCA, I'm not accusing them of not working hard during their regular program, but did you ever happen to be in one of those buildings at 4pm? The elevators burst at the seams and they will run you over enroute to the nearest exit. Be warned. I think "long hours" in that building means working till 4:05pm. The offices are deserted and you just know that if you see one of them in during the weekend, they're up to no good. Just kidding.)

Try to circumvent this pointless detour and watch hell emerging; after all, what do you know, it's not as if you participate in all the high level meetings that the PMs do and you lack the clear overview to see that this tiny, 30 min technical issue must follow the rigorous chain of communicators in order to be properly solved, without presenting a risk to the company. That's how it is to be done, so get your issues back in line, Bucky.

I postulate that the number of bugs is the same in any generation of drivers/components. People don't learn from their more obscure mistakes, and when they do, the new version adds complications that compensate, with bugs, for the learned lessons. It's just that, what took in SP2 2 days to identify, solve and fix now takes a week, at best. To that, I add the subjective cost of losing the giddiness stemmed from seeing issues actively resolved. Why? Who decided it'd be a great idea to channel technical issues through non-technical people? Or that specs need to go through a 1 week of LCA brewing before going out to partners already under NDA? What massive losses will the company incur if a simpleton of a test app goes out to its intended audience directly from its source? What, do we risk not being able to file yet another pathetic patent on grounds of disclosure?

We need to step back and look at what we need to accomplish, and not what is the "safest" way to do it. If we'd deliver the software faster, we could make further progress and achieve more over the same time, versus locking up all the doors and making sure nobody is peeking over our shoulders at the laughable contraption we've put together.

Want an example from an extremely fast paced (figuratively and literally) field of economical activity? In Formula 1, there are no patents. The time and expense required to obtain a patent is time and funds taken away from development and/or improving on the last race. The patent would essentially give your competition the blue-prints to your clever finding, and the meager royalties you collect from such a small audience are absolutely nothing in contrast with the possibility of them bettering your form by adding your finding to theirs. And that really is high tech. Who cares about apeing a silly API to dethrone the mighty Windows?

But until the good old days return (or until I find another company that believes in agile development), I'll go back to quarreling with my PM about each one of us not including the other in important discussions.

Sunday, March 05, 2006

This week I've been bitten twice by the same problem, and had to live with the infamy of being the offending party in one of the situations.

Say you're providing a library (and associated headers)(or a generic service) to an interested party, without necessarily adding them to a subscription list. Such a list would be the most reliable mechanism, certainly, but one doesn't always have the luxury of (pick your choice) being able to collect this data, or having the time to update/consult it etc.

Versioning would also help, provided it is accompanied by broadcasting the current "safe" version, and provided that the interested parties poll for updates. In one of the cases I mentioned above, a dll I wrote and used by another group took on a new dependency. The dll was consumed by their own harness/component and, as you may have guessed, the setup of their component was not updated to copy the new modules. One or even two days of runs were lost (with detection, investigation and what not). Now they are on my list, but I'm not sure whom else can I add to the list. So, what's the solution?

The second of the two was a more classical example of broken backward compatibility. A widely used logging component (part of a larger system, let's call it UTT) revised the behavior of a method it exports. But instead of a more straightforward crash/fail when the old-style params are passed (which would instantly attract attention), it quietly went about working, in an invalid state, crashing only upon exit. The investigating parties had no idea such a change occured, and were exchanging pleasantries ("I think it's in your component", "Actually, I think it's in yours" "Mine hasn't changed" "Neither has mine"). Presumably, this is where versioning might have helped. But the detection of a version newer than expected would probably prevent situations like these in less than half of cases. (And the consumers would incur the cost of investigating whether the new version of the service provider should translate into updated client code. (Well, the second example was a simple case of dumbassness, but there's got to be a protection against that also.)

I'd love to hear your thoughts, words of advice (or condescendent snickers, as long as you have a simple solution to this).

Auto updates. Nothing more annoying than losing the signal while watching a show. An asteroid taking out a satellite is certainly an acceptable reason. A power outage is also palatable. Heck, even a bug check is okay - it's either an unstable configuration (unsupported drivers or what have you) or me (or someone else) haven't done my/our job properly. (Not that it's ok not to do my job, but we can't be all perfect.) However, when the rude interruption occurs due to a silly applet, the behavior becomes malign - by design. The dreaded auto system updated with a kink - the restarting is not left to the user's convenience, but it's rather an ultimatum. The Win update service decided the latest patch, applied to prevent an obscure Photo editor exploit, is so crucial, that your entire house will collapse after your computer has sustained spontaneous combustion. You have been warned (in the background) and have 10 minutes to comply. But alas, you're watching Whatever: Wherever in full screen mode in your Media Center session (or you're recording it), and the bloody applet restarts the system. I'm so lucky my TiVo doesn't run IExplore or Media Player.. One more hurdle in getting the PC in the living room.

Another quirk - let's say you're behind the current time in the 30 min buffer in live TV. You paused it and now you want to record the entire show. The silly thing starts the recording at the current live time, so you've lost all the content between current playback time and current live time. Who.. what.. Why?? You've even lost the 30 min buffer and that is definitely as a loss of data. I can't imagine the expected behavior would have been so difficult to implement, and I'd like to meet the person who decided this is "by design". Unbelievable. You'd think the first order of business when a new MCE is kicked off is to go out, buy a TiVo and spend 5 days with it in an office until you know exactly where its flaws lie and what are its strengths. (I hear this might be fixed in Vista, though.)

Lastly, can't modify an ongoing recording. For instance, the show being recorded is running longer - such a simple scenario. The only way to accomodate the overtime is (apparently) to cancel the current recording and set up a new one, with advanced settings. If you know of an alternate way, do let me know. If this, too, was "by design", I'd love to hear the reasoning behind this dimwitted decision.

Monday, February 27, 2006

Missing cogs,

or Precipitous Move(ment)or "HTTP Error 404"-placebo post

Heh. Just when I dully incorporated Mini's (and others') thinly veiled critique* about attempting to steal the spotlight by removing all of the posts from my blog, here comes an assist from the Who himself/herself. (Or is it Mr(s). da' Punk to noobs?) Sorry, the posts are gone, as I really did not mean to attract undeserved attention to my humble cyber-abode, and so the honourable course of action was taken. (Literally 30 minutes in advance.) Besides, some of them were so vitriolic and devoid of substance that I appeared even more of a whiner than I really am. (I guess I can repost it, for the both of you who are interested.)

* Mini sayeth: "..I acknowledge the desire to reduce the outright trolling comments and, for the frequent commenters out there, the need to encourage them to express their deep skills of expressions within their own space."Sorry 'bout that; rookie first time blogger newbie beginner here, I didn't quite realize it was a faux-pas to comment while logged in.

Then: "..and some folks went off on wild, argumentative tangents. "Sorry about that, as well. If I'm among those dishonorably mentioned, let it be known I was simply responding to various posts, of the "twist and flame" nature. Oh, what a rush.

Again, my apologies. Bloody timing.

(I have some thoughts on hiring (and internal transfers), which I'll let brewing for crispness. I wouldn't want to profit again from Mini's gracious mentioning of this blog (plus I'm in B2 fire drill mode), but do come back in a week or so. The main reason of getting my own blog was to be able to turn bits into drivel at my own convenience, rather than follow someone else's schedule. I'd like to hear some thoughts (that is, besides mine) on this topic. It's bound to become a much hotter issue this fall, with Vista/Office shipping, a lot of people shuffling around and the managers getting back into hiring mode. Will we see another wave of Californian imports? H1Bers?)