Monday, May 30, 2005

Taking some time off

I am taking some time off after an extremely busy product milestone. I worked on an average of 11+ hours a day for the last couple of months. I plan to read the following 2 books during my vacation:

Blink : The Power of Thinking Without Thinking
by Malcolm Gladwell

Free Software, Free Society: Selected Essays of Richard M. Stallman
by Richard M. Stallman, Lawrence Lessig, Joshua Gay

These 2 books were in my "Todo" list and now is the time. I don't think I will be doing much blogging.

Saturday, May 21, 2005

Microsofties are not slaves!!

At least that wasn't the impression I got when some one I know told me what happended to him last week at work!

He went to his manager and requested that he needed to take 2 extra weeks of unpaid leave so that he could spend more time with his family which he hasn't seen in many years. The manager said "No". He said you take what vacation you have accrued and return to work afer that. If he failed to do so, he was warned that it could be considered as abandonment and one of the consequences is termination of his employment!

What the hell is going on here? Here is an employee who feels the need and the company says that it has work cut out for him and so he can't go! The truth is, this employee over the last few years has lost so much unused vacation (he is workaholic) and there was no patterns of misuse that I could see from what he told me.

This is what they used to call slavery in the past and it now seem to have taken a new form and name now! I just wish that this is an isolated case and that this comapny is better than this.

Saturday, May 07, 2005

Performance..What?

I have said it before and saying it again. Microsoft needs to ship a quality product that exceeds customer expection for reliability, performance and functionality. There is no point in shipping products every other year with incremental changes just for revenues sake. I see many examples of this quite often and especially in the product I work in. Here is a real story:

A Program Manager who works in some other product division came to my Office asking for my help fixing the solution she deployed. She built a solution using the product I work on because it made their process better. She spent days creating the solution and after deploying it, nobody in her team wants to use it because the performance is so bad. Editing the document is very slow and the users are staying away because of that. The way she put it and shared her story, I really got emotional and felt bad for not being more proactive and vocal about product performance. I looked at her solution and saw that it wasn't a very complex solution but not simple either. Spent some time with my colleagues trying to find some tips on improving the performance and in end couldn't do much (It would have required re-writing the solution).

I did something about it and talked to the performance guys. The problem turned out to be the mindset. The common answer to performance problems that the performance team would get was:

  • Why would someone display 1000 rows of data instead of filtering it?
  • This is stupid scenario
  • Why would anyone want to do that?
  • This is not our issue. The external component X is the bottleneck

So the performance team ended up writing some guidelines for easing the performance problem. But we were all dead wrong. Most the real world solutions that I saw are above the mark we set and they perform badly. In other words, customers are doing things we thought were bad ways to do things and said all the time that there was a better way to do these things.

Customers aren't stupid to build solutions that doesn't scale or do stupid things. Just as we all do, we learn from our mistakes. I write much better code than I did a few years ago. I didn't want to write bad code few years ago but I did because I didn't have the knowledge that I have now. But the lack of knowledge didn't stop me from achieving my goals or do things that I wanted to do. A desktop application that is used by everyone has to perform reasonably well in such situations. Note that we are not taking about C++ compiler performance for badly written code. We are talking about applications like Microsft Word (e.g.) that slows down trmendeously when used differently.

What is the remedy?

It is the mindset stupid!

  • Don't assume that everyone who is using your product is Raymond Chen or Charles Simonyi.
  • Expect some unreanable uses and don't expect that everyone has time to read books and manuals before starting/getting their job done
  • Take resposibility for the performance of the external component that you use. If that doesn't scale well, invest time in it to re-write as customer benefit far exceeds our financial goals
  • Make performance part of the process and not an after thought
  • There is more but I need to go :-)

Note: I stopped using Outlook and instead switched to OWA. Now my days go a lot smoother and I do a lot less cursing everyday. Outlook Guys, your product has a lot of nice features but if it will only perform well in an ideal environment, you guys totally got it wrong. I can't understand how a version 11 of a product can have still such issues as performance and reliability!!

I love Steve Ballmer

It has been an awesome week at Microsoft for me. There were a lot of discussion around the company (through letters to editor of Micronews, In Gleam DL, executive communication etc) about the HL1515 and diversity and discrimination. One thing that came out of it was that I am proud (and surprised to some extent) of the position that company took in the end which is to support legislation similar to HL1515 if it comes up again in washington state.

One perception that changed in the last couple of weeks was that SteveB is my hero. I always considered him in the past as some one with excellent marketing skills and someone who is funny and vocal on stage (i.e. speeches). I really never took notice of him nor was he in my thoughts or felt sorry for him on something. Now that I have seen his human face, courage to take a stance on social issue like this and his commitment to diversity, I think now of how hard it would have been for him the last couple of weeks and how much soul searching he would have done and what would I have done if I was in his position. He would be in my prayers if I did one.

Clarification: When I said earlier that companies should not take a stance on social issues. I meant that they shouldn't on issues like Gay Rights in general. But it should when it comes to discrimination at work including discrimination based on sexual orientation. Also, I meant that companies shouldn't actively engage politically on bills like HL1515 but instead provide letter of support when asked by legislative branch. There is a difference if you can see it. Bottomline, don't spend shareholder money by politically engaging on social issues but when it comes to workplace issues like this, just let them know where you stand.