Saturday, August 20, 2011

Microsoft Annual Review 2011

It has become a tradition for folks to share their review numbers to help get a sense of what's happening and how your numbers stack up. This year we have a new challenge of working through an entirely new review system and (for engineering) a pay-raise for the levels most at risk of departing for greener pastures. I know folks on the edge of leaving who have been willing to hang on to see what happens.

What's a good format? How about something like the following, obfuscated as you wish:

  • L# (promo'd?)
  • Bucket (1+, 1, 2, 3, 4, 5)
  • Merit % (/Promo %) / Engineering?
  • Bonus $K
  • Stock $K
  • Optional comments about Division / Group, discipline, impression of review

If you like the review system, I'd really like to understand why (something better than, "whee, I got a 1+," please) and I'd encourage commenters to not slam the positive perspectives. I'm not too pleased with the new system at all because I feel very good engineers in my org are getting lower results because of a very strict curve. I'm probably breaking the rules in that if an excellent person got a 3 I'm having my folks be truthful in writing review feedback that, yes, they did an excellent job, just when it comes to the 3 realize that more people did even more excellent work and what it is they need to do to step it up (or, you know, start connecting recruiters with all of those competing 1s and 2s). Same thing for 4s who are doing a good job and not really having any performance problem. HR would prefer me to write the text of the review according to the verbiage of the ranking system, but screw that. I did that years ago when people got a trended 3.0 and I'm still scrubbing those dark spots of demoralizing compliance off my soul.

How do you feel, whether you're a manager writing reviews this year and comparing results to last year, or an IC trying to make sense of your compensation and recognition?


-- Comments


Thursday, July 21, 2011

Microsoft FY11Q4 Results

(ring-ring, Mini, ring-ring)

How is this quarter shaping up? First of all, let's review some competitors:

  • IBM: Bang! Third base!
  • Google: Boom! Out of the park, home-run!
  • Apple: Ka-Blam! Out of the city. Game over!

We've already been given a small preview thanks to the Partner conference: good Windows 7 numbers and Windows Phone, as loved as it might be (especially compared to Android) just ain't selling much. And no one is holding out any hopes that current customers will see their Mango update until New Years.

The iPad continues to suck in consumer love and money... money that we'd prefer they send our way but there's nothing comparable for them to buy. Windows 8 ARM tablets? Sometime next year, but what we showed at All Things D is our take of squeezing an elephant into a VW bug. Here's some deep respect and chops to the folks doing all this work, but it's a subtraction game followed by many frustrating conversations about why it's okay not to have certain obvious things work... obviously. And I have to say it's fascinating watching Sinofsky wrangle the Windows organization in this long game of reshaping itself and the consequences it has for the rest of the company.

My one analyst question for today: when the hell is Bing going to stop losing money?!? It appears that the internal hiring spree has finally cooled down so that's good - the piling of warm bodies has stopped (well, only to be replaced by throwing warm bodies on The Cloud because, ah-huck, we're all in). Seriously though, now's the time to start shaking the Bing tree and let the goodness of the search eco-system keep on going and shed the remaining busy work. Come on, if Xbox did it, so can you!


Calibration cacophony: I owe a post about our new review system but I'm not going to put money down about when that's going to happen. In the meantime, I'd love to sit down with each and everyone of you that supposedly told LisaB that the previous review system, with its Exceeded and Achieved and its 20% this and 70% that, was just too durn hard to comprehend. Let's chat. This discuss (*whack* against the side of your head) your results for this year. I'd like to discuss (*whack*) what a peer relative result within a strict percentage based system means. As part of this discussion (*whack* *whack* *whack*) you'll learn that your results are less that what you're used to and the message and your rewards are strictly viewed through your percentile bucket, no matter if you're at the top of your bucket or the bottom. I do seem to have some feedback from your peers to discuss (*whack*) although the majority of it seems to spring from a glowingly content-free "I'll rub your back if you'll rub mine" point of view.

Be careful what you ask for, because the person listening might turn it into one big step backwards. Oh, and for some of you, here's a salary bump.


-- Comments

Thursday, July 7, 2011

Help content for Microsoft Dynamics AX 2012 is now available on TechNet

As you might have heard, AX 2012 has RTM'ed recently.
Now, the question you might ask is - OK, I have read the What's new in AX 2012, but that's not enough. The changes are too vast and I need more detailed information about them.

Well, worry no more :)

The information about AX 2012 is now available on TechNet, with a lot of new content still being added each day. And, finally, it's actually interesting to read. We now have various graphs, diagrams and tables that should help you understand each feature area a bit better.

Hint: The description of the functional modules of the application is under section 5. Use Microsoft Dynamics AX.

Enjoy!

Microsoft Dynamics AX 2012 Technical Library
http://technet.microsoft.com/en-us/library/gg852966.aspx

Tuesday, May 10, 2011

Skype? Steve Ballmer Discovers a Way to Obliterate Eight and a Half Billion Microsoft Shareholder Dollars!

That's $8,500,000,000USD for the Skype brand.

Microsoft to Acquire Skype Combined companies will benefit consumers, businesses and increase market opportunity.

Also, because, you know, the aQuantive acquisition didn't destroy enough shareholder money.

We're bringing Skype to the Windows Phone. Just like how it's on the iPhone and Android and appears it will continue to be.

Okay, so we're bringing Skype to the Xbox. Because, you know, we don't already have video chat on the Xbox. Oh, wait... crap. Why do we need this? Other than the brand and the user base, and that's not worth 8.5 billion dollars.

Some early stories:

What I'd like to hear is each Microsoft board member share their reasoning why this is an excellent idea and worth 8.5 billion dollars. And I'd keep a really, really close eye on their nose.

Geez.


-- Comments

Saturday, May 7, 2011

Tutorial: Table Relation properties in AX 2012

As many of you already know, Microsoft has put in a lot of effort into normalizing the tables in AX 2012 and consolidating all the data modeling tools in one place - the table itself. As part of this effort, a number of new properties have been introduced on Tables, and in this post I would like to cover some of them, namely the properties on Table Relations.

The new properties you will find on a Table Relation in AX 2012 are:
  • Cardinality
  • RelatedTableCardinality
  • RelationshipType
  • Role
  • RelatedTableRole
  • UseDefaultRoleNames
  • CreateNavigationPropertyMethods
  • NavigationPropertyMethodNameOverride

Hua Chu from the AX team has written a Guideline document, explaining how these properties should be set for Relations you add to Tables in AX. Note that in AX 2012 most of the above information is not actually used at runtime. This is something that will happen in future releases.
I have modified the document so that it contains the information relevant for partners and customers extending the standard application and have uploaded it to my SkyDrive.
(Modified: Something weird is happening with SkyDrive, so I have also uploaded the file to my personal site - download)
The document requires certain knowledge of Entity Relationship Modeling (ERM) and UML notation.

Disclaimer:
This document is intended as a guideline only, and should not be used as a Step-by-Step instruction.
Changes to any of the described functionality might still happen before AX 2012 RTM.


Your feedback and questions are, as always, welcome.

Thursday, May 5, 2011

Tutorial: lockWindowUpdate() vs. lock()/unlock()

There are two method pairs in X++, that are used throughout the application by everyone writing some processing on application forms. These are:

element.lock();
element.unLock();


and

element.lockWindowUpdate(true);
element.lockWindowUpdate(false);


Now, not that many people know the difference between the two methods, and only very few think about why and when should each of them be used.
I will try to describe the behavior of these methods and at the end give some recommendations on how to use them. I have done some kernel code reading (with help of kernel dev. Andy Stach, who I would like to mention here), so what I write below is more or less backed up by code.
If you disagree with some of the recommendations though, please share your experience in using these methods through comments for this post.

FormRun.lockWindowUpdate()

is basically a wrapper around the LockWindowUpdate Win32 function. What it does is pretty simple:
When a window is locked, all attempt to draw into it or its children fail. Instead of drawing, the window manager remembers which parts of the window the application tried to draw into, and when the window is unlocked, those areas are invalidated so that the application gets another WM_PAINT message, thereby bringing the screen contents back in sync with what the application believed to be on the screen.
See the link on MSDN for a detailed description.
Note, that according to MSDN, it should not be used for general purpose suppression of redraw operations, but only when dealing with drag&drop operations. This does not hold true for AX, where this method is used all over the place to prevent redraw of controls on the form.
Another interesting point is that only one window can be locked at the same time. So, any nested calls to lockWindowUpdate will be ignored, but when unlocking, only the outer-most unlock will actually invoke the Win32 counterpart. Now, I have not seen this used in X++, which is for the better.

FormRun.lock()

is internally invoking lockWindowUpdate to prevent the redraw of the window, and then also prevents the IntelliMorph control layout engine from running. This is commonly used in scenarios where control properties affecting control arrangement are being set in a loop, which provides a performance optimization as it avoids redundant arrange calls being processed. On the other hand, when calling FormRun.unlock, more work will need to be done, compared to using lockWindowUpdate(false), where the control layout changes were actually processed by the layout engine, but simply not displayed.

So, based on my investigation, I would suggest to use the following recommendations when doing form development:

  • When formRun.resetSize() is used, specifically, when some controls become visible, increasing the form size, always use formRun.lock()/unlock(), otherwise the change in the size of the form might not get reflected on the screen correctly.
  • When changing multiple layout properties (Left, Width, etc.) on one or more controls, use lock/unlock
  • When you modify the properties that do not impact the layout of controls on the form, use formRun.lockWindowUpdate(), or, if there are only very few control properties being modified, do not lock the form window at all.

Thursday, April 28, 2011

Microsoft FY11Q3 Results

What's on your mind as the Microsoft FY11Q3 results get released? Some things I'm thinking of:

Win7 Business being eaten alive by iPads? Oh, those hungry hungry cannibals eating away the post-PCs for your PC dependent iPad slates. Probably no good news in the Win7 OS business could please people seeing Apple having to buy everyone working at Apple pants with ten pockets so that they can continue stuffing money into them.

Office 14 / SharePoint: continued strength? Leveled? Dip?

Kinect: what are the post-holiday sells like?

Xbox Live security: not that we want to be cocky, but if Xbox Live was broken into like Sony's Playstation Network Microsoft would have a big-black eye. Probably two. How confident is Microsoft in the network's security?

WP7 numbers: how has the trend been in activated phones? How is the Nokia deal shaping up? How will Microsoft not be the weepy little toy of the phone carriers crying over a release chart when the Mango update goes out?

Share price: talk about one dead share. It's a dead fish. That a bunch of hippy dock-workers played hacky-sack with and left to rot out in the sun. So dead that we're shifting budgets around to not award stock but give out crisp, sweet-smelling Benjamins instead to the employees we value most. Microsoft millionaire days? A long, long distant memory. I think of that book Microsoft In The Mirror where a number of interviewees were reluctant to share with outside folks that they work at Microsoft because folks would light up, assuming they were rich beyond words. Today's response? "You work at Microsoft? Well bless your heart."

Keeping employees: seems as though we'll need to justify the extra bucks and effort the company is putting into spreading cash to the section of employees most likely to be recruited (aka poached) or give up on Microsoft. I'm sure that the investors could care less about our performance review system, but it's sad we stuck with a 20th-centry industrial review system for a 21st century Gen.Next workforce. Like many opportunities: buh-lown.

The two pressure points I certainly continue to feel:

WP7: the NoDo update was just a Class-A Cluster-Fuck. And I don't use language like that very often. And the fact that the pre-update bricked phones was inexcusable. The WinMo team has to realize that everything they have to do must be perfect and ahead of schedule (wrt running in customer's hands). Any sort of focus other than that is a recipe for disaster. Mr. Ballmer is a fan of Coach John Wooden. WWJWD? Pound excellence into the team such that releasing an update was the easiest thing they had to do. If you're the kind of person looking for a challenge to fix Microsoft and prop-up its future, look for opportunities to join that team. Less Pink, more you.

iPad: it's pretty. It's slick. It comes from a company where design is realized. It doesn't do as much as a PC, but it does enough. And by now everyone has been able to put together the pieces (e.g., Windows 8 demonstrated running on ARM) to figure out when Microsoft might release something that has similar form factor. But will it have the elegance and cohesiveness of the iPad 2, let alone the iPad 3? Will it be too late?

Should Microsoft release an iPad competitor, it will be THE defining moment for Microsoft's future: back in the game or game over.


-- Comments