Sunday, November 26, 2006

Limited Round-Up, New Souls, and Old Problems

It's a holiday season copy-and-paste special!

Going back to the issues over Limited Scenario II, a couple of folks wrote in describing why it is the way it is and that it's a good thing. First: my main issue is with calling a good, solid person on your team "limited." L-i-m-i-t-e-d. I do hope you got that. Slapping a "II" on it doesn't make it better. And if you're okay with that designation, do you go and give them a head-nooggie right after reviewing their numbers? E.g., does repeating this - perhaps in an increasingly louder voice - make things better:

Limited II: "Consistent performer who has met expectations".

?

Seriously, though: I'd like to see what you think the text of such a message is like, as if you were delivering it to someone you was important to the team, solid, but not expected to advance to the next level and therefore Limited II. How do you deliver such a firm message that doesn't grind their motivation and morale under your heel?

The ever reliable Alyosha` has an interesting insight:

[...] But this sort of nonsense wouldn't happen were it not for Microsoft's corporate philosophy of differentiated rewards.

Differentiation creates winners and losers. And because it's nigh impossible to distinguish performance from potential, capability from visibility, and perceived performance from real performance -- some of those "losers" ought to have been winners, and some of the "winners" ought to have been losers.

You insist on differentiation, you get exactly this sort of crap.

You get rid of differentiation, you get a totally different set of crap. Some people start coasting, other people get offended because they consider themselves a unique special snowflake that deserves much more compensation than their base pay.

But you know what? Most people just take their COLA and keep chugging on. In the end, I'd be willing to bet that non-differentiation is the lesser of the two evils.

Alyosha`'s comment does make me wonder: what if we had unbalanced differentiated rewards: keep the high-end and drop the low-end? Continue to reward the super-contributors and people who obviously committed a lot of time and effort to get excellent results far beyond their peers. But drop the hunt for finding the Kims of the workforce. More time goes into protecting people who are solid contributors but at risk of getting zero or mediocre rewards. Why? Because we have a statistical need, it seems, to ensure somebody gets zilch. Because surely there are a batch of people in your team deserving of zilch. Don't make us statistically decide that people deserve the zilch. But reward groups who move on the obvious zilchie deadwood, Microsoft-mismatches, and low-contributors through-out the year. Otherwise, we'll continue keeping them around to ensure the bottom is properly zilch-padded.

Regarding Limited II, one commenter wonders if it's basically process-based age-discrimination :

Not only is it bad management, it's also ILLEGAL! It's a violation of both state and federal law to have management policies that favor younger workers over older ones. This is age discrimination, plain and simple. The higher level you are at, the more difficult it is to earn a level increase.

Notes From the Field has a great comment that starts off as follows (I urge you to read the whole comment - it's great and gives insight into what customers are responding to):

No, *I* am Kim.

Several people I've worked with for a number of years are Kim too. If I were to start my own business tomorrow, these are the people I would want to take with me to Kims Inc. These are the people that close deals and make customers and partners happy. These are the people that have instant credibility and know how to take control of a situation. These are the people that know their stuff, but don't need extra wide doors for their egos. Sure I would want some of the rising stars, but the majority of my company would be the strong performers with business maturity - the Kims.

If your in a dark mood reflecting over being a corporate cog, this is the comment for you. The teaser:

I'm probably missing a few other important notes here, but having said that, here's some guaranteed ways for you to get ahead at MSFT, if you have the balls to swing it [...]

In the midst of all of this, the Intel Perspective anonymous blog has a couple of posts up regarding their Intel Focal review process:

One thing that's interesting: Intel employees get what seems like a 360 review by recommending peers and stakeholders to their manager to get feedback on the employee's performance. An even worse political drama than what we have? Maybe. But I think team work might have to be elevated to some degree in order to get positive feedback (even if you both wash each others' hands, there might be some good for the company and customer as a side-product). I would at least like a system for year-around non-anonymous feedback open to anyone.

And, as always, I have to highlight any comment that is summed up as: let your resume set you free:

It should be obvious to anyone reading the internal blog and observing the changes over the last year that there is unfairness in our compensation system but nobody is going to do anything about it - if only because there is no fair system to correct the status quo.

If you have issues, don't whine, go jobhunting and post your success stories instead.

Elsewhere in the land of the letter J...

Jay and J: Jay Greene at Business Week has an edgy thinker J Allard focused cover story piece: The Soul Of A New Microsoft (strangely iTunes obsessed sound-cast also). This came out around the same time as:

Anyway. Props to J for the refreshing dose of determined culture and actually endeavoring to make a new image for Microsoft and probably cause Sony to shoot all of its toes off with platinum bullets. But how does the bottom line and results come up for J and Microsoft? So far, our new soul seems obsessed with blowing all of our money. Dividends? Buy-backs? Hell no. Let them play Xbox!

Nero's got a new fiddle.

More interesting to me in the article are the changes being called out at Microsoft. Snippet:

Lately, some outsiders who work with Microsoft detect signs that the culture is slowly shifting as well. "They're definitely in the middle of a strategy re-look," says Hewlett-Packard Co. chief strategy and technical officer Shane V. Robison, who chats with Microsoft brass. "It will be a fairly orderly evolution, but there's a lot of new discussion that I'm seeing."

Joel and the menu of doom: Joel Spolsky grumbles about the revised Vista shutdown options. Moishe Lettvin follows up with the more interesting post-MSFT inside perspective of what it was like to try and design some menu options: moblog The Windows Shutdown crapfest which is a more interesting read given that it discusses the meeting-cluster-flub Microsoft seems to be obsessed with. Or perhaps that was old bad bureaucratically obsessed Microsoft. Joel followed up on that. Even post-MSFT-Scoble followed-up with a big thumbs down / hard-to-dance-to all the Microsoft committees.

How to avoid that cluster-flubbing in the future? You've got to trust your individual contributor feature owners and let them revel in having the courage to make decisions on their own. And compensate them well for their successes. Plus, wipe out all those meeting obsessed management layers. This was a small dose of Philip Su all over again.

The small bit of Microsoft culture you have to figure out what to do with: our obsession with consensus. Maybe you've had success at avoiding it (like a new webcast a few of us watched recently by Microsoftie Josh Ledgard). How do you get it done right, Microsoft-style?


Friday, November 24, 2006

Description of ClassBuild class:

Today I want to write about using the class ClassBuild.
A collegue of mine recently used this class for extending Axapta's IDE, so I decided you all should know about this class too.

OK, let's start with the declaration of the class:
It's simple, the class isn't extending any other class, a variable of type class ClassNode is declared together with a macro #aot - it contains pathes to all the objects in the AOT
X++:
public class ClassBuild
{
ClassNode classNode;
#aot
}


The class contains the following methods:
  • void new(str _name, boolean _allowExisting = true) - this is the constructor of the class

  • void addMemberVariable(str _variableType, str _variableName) - this method is used to create a variable declaration in a class

  • TreeNode addMethod(str _name, str _source) - this method is used to create new methods and set their source code

  • void addSourceToMethod(str _memberFunction, str _addSource) - using this method we can set the source code of an existing method

  • ClassNode classNode() - this method returns a ClassNode object pointing to the created class

  • public MemberFunction getMethodImplementation(str _methodName, boolean _includeParents) - the method return a MemberFunction object, which has methods to edit or view the source code of the specified method of the class

  • public str name() - the method returns the name of the created class

  • TreeNode overrideMethod(str _name, str _newSource = '') - this method is used to override the method of the parent class in case one exists


  • I will explain how the class should be used on a specific example: (click the image to enlarge)


    Explanation:
    In line 6 we create a new Object of class ClassBuild. Into the constructor we pass the name of the class we want to create and an optional paramter, which controls the execution of code in case the class already exists in the AOT.
    After the execution of this line the class already exists.
    After that we add a method test() to our class and set the source code for this method.
    Then we add a member variable of our class, and will try using this variable in a second method we create - test2(). You can see that here I did this in 2 steps on purpose - to show the way you can use the method addSourceToMethod().
    OK, now all the methods are created and we have to compile our class. For this we can use the method AotCompile() of class TreeNode, which we access through the method classNode of the created class.
    Now, to see how 2 other methods work, we show a message dialog with the name of the class being created and the source code of one of the methods.

    Then, just to show you the class works and is ready to be used, we can call one of its methods for execution.
    For this, we use the class DictClass and its methods, but I will not discuss it in this post.

    That's it. Try running the attached job and see how it works!
    Attachment: Job17.xpo


    There is also another way of creating the same class - by using the UtilElements table: (code provided by AndyD from AxForum)

    UtilIdElements utilIdElements;
    TreeNode tn;
    ;
    utilIdElements.initValue();
    utilIdElements.Name = "newClass";
    utilIdElements.recordType = UtilElementType::Class;
    utilIdElements.insert();
    tn = xUtilIdElements::getNode(utilIdElements);
    tn.AOTcompile(1);
    tn.AOTsave();



    See also: Classes\FormBuild, Classes\DictClass
    Adding an AND condition in a queryRange


    Wamr from AxForum found an interesing feature of fieldId2Ext global method:


    X++:
        Query       q = new Query();
    QueryBuildDataSource qbds;
    ;

    qbds = q.addDataSource(tableNum(InventTable));

    qbds.addRange(fieldNum(InventTable, ItemId)).value("8");
    qbds.addRange(fieldid2ext(fieldNum(InventTable, ItemId),1)).value("2");

    info(qbDS.toString());
     
    But you have to use it with caution, because you won't be able to find this range afterwards. 
    so, searching for
    qbr = qbds.findRange(fieldId2Ext((fieldNum(InventTable, ItemId), 1));
    won't return you the range with the value "2", but the one with the value "8"
     
    You can find the range, specifying the exact occurrence of it in the query:
     
    qbr = qbds.findRange(fieldNum(InventTable, ItemId), 2);

    Monday, November 20, 2006

    AxCreateNewProject
    Homepage

    AxCreateNewProject is a nice tool to help you get started on a project - it will create a shared or a private project with specified project nodes for you and open it in a new window, so that you can start edding objects right away.

    Also included in the zip file: a bmp image to add this tool as a plugin for Tabax


    And after you press OK a project will be created: (see an example below)

    Sunday, November 19, 2006

    A Peanut Butter Manifesto for Microsoft to Chew On

    The big news of this weekend in the blog echo-chamber is about thinly spread peanut-butter: Techmeme The 'Peanut Butter Manifesto' (Wall Street Journal). In case you don't know, it's an internal Yahoo! memo (the kind you hope gets leaked to build external support - and perhaps your own career) from Brad Garlinghouse, a senior VP at Yahoo!, that calls for radical cuts and restructuring within Yahoo!. As I read the memo, I switched the context a bit, imagining that this was written by the kind of butt-kicking maverick I don't think Microsoft has ever seen regarding Microsoft and what we need to do to fix it up. Have a read yourself.

    What do you think?

    It's interesting to read this in light of a couple of articles in today's Seattle Times about Microsoft and Vista:

    First, I think of this time for Yahoo! versus how it was looking for Microsoft over a year ago: both responding to negative wake-up calls in the press - Business Week and Forbes articles for Microsoft in particular. In my opinion, Microsoft tried to Jedi Mind Trick its way out of the situation and eventually backed into a few mea-culpas and passively moved-on some people who may or may not have been part of the problem. Garlinghouse is take a far more brutal, open, honest assessment of the way things are. Snippet:

    I believe we must embrace our problems and challenges and that we must take decisive action. We have the opportunity - in fact the invitation - to send a strong, clear and powerful message to our shareholders and Wall Street, to our advertisers and our partners, to our employees (both current and future), and to our users. They are all begging for a signal that we recognize and understand our problems, and that we are charting a course for fundamental change, Our current course and speed simply will not get us there. Short-term band-aids will not get us there.

    Our response under similar challenges? The Pipeline of Plenty Dog and Pony Show with lots and lots of sunshine and smoke.

    Garlinghouse puts special focus on bureaucracy:

    We now operate in an organizational structure -- admittedly created with the best of intentions -- that has become overly bureaucratic. For far too many employees, there is another person with dramatically similar and overlapping responsibilities. This slows us down and burdens the company with unnecessary costs.

    I never heard us admit we had bureaucracy problems. Sinofsky a while back put up a blog post about bureaucracy (wave of the hand, "This is not the problem you're looking for."). But now as parts of Microsoft reorganize, layers of management are going away to remove problem-making decision makers that paralyzed us more than enabled fast, decisive progress. So, now that something has been fixed, at least maybe we can admit we had a problem? The most we get is from the above Seattle Times article:

    [Kevin Johnson] said Sinofsky and other new Windows leaders are changing the structure of the group to eliminate layers of management.

    "Every time you have a layer of management, there's another opportunity for someone to layer in their strategy, or set their direction," Johnson said.

    Which - I guess we're left to deduce on our own - is bad when you have awful leadership at those layers and their strategy and direction is myopic, restrictive, and destructive to the product. What happened to them? Where did they go?

    Back to the Yahoo! memo. As for employees and passion and deadwood:

    We have lost our passion to win. Far too many employees are "phoning" it in, lacking the passion and commitment to be a part of the solution. We sit idly by while -- at all levels -- employees are enabled to "hang around". Where is the accountability? Moreover, our compensation systems don't align to our overall success. Weak performers that have been around for years are rewarded. And many of our top performers aren't adequately recognized for their efforts.

    While we might poke our low-performers with low compensation and mediocre reviews, we're just not fired up about getting them back on track or out of the company. As for accountability:

    a) Existing business owners must be held accountable for where we find ourselves today -- heads must roll,

    Rolling heads! Yes! The only rolling our problem makers ever had to deal with is rolling around in their wads of stock awards and SPSA payouts. Eventually, some of them managed to be rolled out the door. Quietly. But no one ever has been held directly accountable within the company. Perhaps Yahoo! can show us how this is done.

    As for Yahoo!'s performance review system (which I know nothing about), it sounds like they want to move towards something more like Microsoft, where we endeavor for differentiated awards so that our top contributors get maximum rewards. I remember reading rumors that Yahoo! was moving to a stack-ranked based system. Let us know how that turns out for you.

    And the big bit of news that resonates the most with me:

    c) We must reduce our headcount by 15-20%.

    Simplify. Refocus. Restructure. De-redundantification. Empower and reward passionate employees. Fire redundant non-performing deadwood and leaders to this current malaise. Sounds like a good recipe to me.


    Administrivia: I'm giving a hard look at switching this blog over to the new Blogger infrastructure soon. Think good thoughts.

    Updated: added a call-out to a context switch. Again: fixed strange word order that shot out of my finger tips.


    Monday, November 13, 2006

    Not-so-limited Kim

    Should Kim just quit?

    A bit ago, post review season, the following comment came in about how a mandate came from HR to slap "limited" on anyone who had been in their level too long:

    Apparently some groups either didn't get the message or chose to ignore it. I have an email from HR indicating that EVERYONE with more than 30 months at level (regardless of level) MUST get a Limited eval. This is why they added "limited scenario 1" and "limited scenario 2".

    Your group may have chosen to ignore the memo, but I know that many divisions didn't.

    And I know that many senior 64s who got 0 stock award are sitting looking at Google and Amazon's help wanted ads.

    Most folks called FUD on this. And without a smoking gun email from HR, there it died. Recently, I sat in a meeting with managers across the company and they were complaining fiercely about Scenario II for limited. Who-da-whatsa, Scenario II was for real? Okay, time to get off my lazy butt and actually revisit the contribution ranking review pages. Hmm. Sure enough. Outstanding / Strong / Limited was updated in the middle of the review season so that the original Limited, which seemed to match the word pretty well, had an additional branch added for people who had plateaued in their career at their current job salary level and were doing a fine job but were not expected to be promoted any further.

    You're doing well. But you're limited. A... special kind of limited.

    Whose bright idea was this? Isn't this a trended 3.0 all over again?

    My question is: is this just a passive aggressive way to move on people from Microsoft with a vague hope that people in lower levels will fill their spot and perhaps achieve more?

    Imagine you're a manager and one of your reports is Kim. Kim is a solid report, doing exactly what you need, very professional, integrated well into Microsoft. Someone you can depend on and an integral part of the infrastructure to your team. Maybe Kim is reached Level 63, 64. You realize that you could probably push to get Kim promoted to the next level, but most likely Kim would get murdered come the next review time. So Kim is going to stay in their current level, probably for the remainder of their long career.

    Microsoft has invested a lot in building Kim up to this solid contributor point.

    Thing is, come review time, once Kim has been at their level for a while, you're going to have to slap a "limited" on Kim. Does Kim see this coming? Does Kim buy into this "limited" designation with little awarded stock (as in zero)? I can tell you, if I was a 62 or 63 and a solid contributor to the team like Kim and I was slapped with a "limited" I would be heading for the door, patting my right buttock along the way as a firm kissing spot for my boss. If Kim stays with the team, most likely they are not going to be putting in the big effort for the team (why should they - they've been put in a box: unpromotable). Maybe you think this "Limited Scenario II" slap would fire Kim up and get them to prove that they can earn and perform at the next level. I doubt it. I don't see too many people on the internal HR blog happily fired-up about their limited appraisal.

    I think it's fine to ensure someone realizes they have, in your leadership's opinion, topped out. But are they limited? Because I can tell you, once you tell them they are, they no doubt will perform like it. Or leave. And I wouldn't want my solid Kim to go in either direction. Shouldn't there be an expectation that if you reach a nice level like 63 and keep performing at that level that you should get reasonable compensation and rewards? Maybe we just need a new designation below Strong: Solid. Or a scale, given that many of these designations are already broken into sub-levels anyway. What do you think?

    Another thing about this whole Scenario II thing: my (obviously enlightened) group didn't buy into it. If they did, there would have been a lot more limiteds being handed out. Which brings up another issue with our new review system: now that the training wheels are off, groups roll-up some wildly different ways of spreading out the reviews. Some do in fact bring back their own curve with respect to commitment ratings. Others vigorously pursue Scenario II. I'm pretty sure the goal was to be honest about how a person is doing against their CSP and their commitments, but this is being dampened in some teams.

    Other going ons:

    • Microsoft Shareholders Meeting 2006: did you go or listen to the webcast? What did you think?
    • What exactly is MSFT's dividend strategy? from MSFTExtremeMakeover. Again, Microsoft gets advice over and over again that to invigorate the stock for consistent growth, Microsoft needs to increase the dividend to a respectable level.
    • Delegated to the Dustbin of History by Collision Domain talks about management at Microsoft, especially focusing on micromanagement vs. delegation.
    • Generally positive reactions came in around the Microsoft Academy post. What I found interesting are the stories people shared of other companies who did something similar to ensure they had a high quality workforce.
    • With so many releases I keep on thinking of that Thanksgiving cornucopia decoration, with Vista and Office boxes and Zunes and 360 games spilling out, along with a lot bags of cash with "To Novel, love Microsoft" written on them. Looks like in return Watson should be reporting lots of interesting data to the Zune team. Maybe we'll figure out a way, as a company, to dogfood major strategic devices - and their support software - one day.

    Administrivia: boy, things (and by "things" I mean "servers") are up and down in Google's Blogger land. I assume this is because the underpinning BlogSpot infrastructure is getting replaced. The good news is that there should be a comment feed for posts one day. The bad news is that there are probably many 500 errors between now and then.

    Update: corrected title, almost a year after posting and see it was "No-so-limited Kim" vs my intended title of "Not-so-limited Kim" - oy!


    Sidax - a sidebar tool for DAX 3.0

    Max Belugin (AxCoder) has made some upgrades to his tool - sidebar for Axapta - Sidax.
    Current version is 0.3.7 beta14
    The link to download this great tool is:
    http://erpkb.com/Axapta/Sidax/files?get=sidax0.3.7beta14.zip

    Enjoy!

    Wednesday, November 8, 2006

    Party 'Til the Cows Come Home!

    Congratulations to Office 2007 and Windows Vista for reaching Release To Manufacturing - all within a week!

    No commentary. Well, other than acknowledging that we've finally made it through the denouement of triage and can close the book of these two (hot-fixes and service-packs aside). And in the midst of these two cash cows ascending to RTM, there are so many other bits of news and releases gushing out that proverbial Microsoft pipeline that I'm losing count.

    The stock might actually close above $29 Real Soon Now.

    And I anticipate going forward, things are going to be really different. The more I travel around campus and chat to various folks and their plans, the more I remark "That's exactly what we should be doing."

    Of course, the proof is in the pudding. Or at least the golden bits.


    (postscript: no comments on this one. I'll put a new post up next week. Now's a good time to take a short break.)

    Hello, everyone.
    This blog will mostly be about Dynamics AX (formerly Axapta).
    (This is what I do for living and what I am interested in)
    Also, here is a link to another resource of mine, where I am planning to store different projects and thoughts I consider interesting:
    http://infostore.org/user/kashperuk/DynamicsAX

    I want to start off with a small post about Axapta Label System.

    I am translating a book on Axapta (MorphX IT, Steen Andreasen) into Russian language. I will tell about it in more detail in a little while, when the traslation is finished and proof-read.
    So, while doing the translation of an Appendix chapter, I stumbled on something I have never read about in the past.

    It's about searching labels in Axapta:
    "When searching for a label using <> will narrow your search. If you want to look up the label 'Customer', it will perform faster by keying in <Customer> as only labels with the exact text 'Customer' will be found. To find all labels starting with 'Customer', you simply enter <Customer."


    Also, as Max Belugin pointed out to me, regular expressions are used in the search.
    You can read about different Regular expressions by opening the AOT node:
    \System Documentation\Functions\match

    Wednesday, November 1, 2006

    Microsoft Academy

    (A different sort of post. Around hiring people [Goodness!]. Enjoy the dissonance.)

    Microsoft Academy. What's that? A new movie franchise? Real Genius + Revenge of the Nerds + Police Academy? No, though Val Kilmer and Steve Guttenberg are of course welcome on campus anytime (sorry Curtis Armstrong, no welcome for you... more for screwing up Moonlighting, though, than the whole Booger thing).

    No, it's more a small thought I had walking back to the house with the paper one morning.

    Like many of you, I fill my spare work hours doing interview loops, technical screens, and informationals. As much as I bitch and moan about rampant hiring, I do my duty tracking down high-quality "A" hires for Microsoft. It's never been easy. And it's never been more difficult than now. There are many reasons: we're in higher competition for talent than ever before, H1B visas are not being handed out like candy anymore, and enrollment in computer engineering / computer science and relevant fields is on the decline.

    Plus, my personal dev-focused bugbear: more and more candidates who can lay down the smack with Java and script can't manipulate memory and discuss deep operating system constructs just-in-time at all. I need you to be able to write a GC, not be in an unhealthy co-dependent relationship with one.

    So, there I was with another interview candidate, getting ready to review their work on the whiteboard. Smart. Self motivated. Passionate. Great potential. Resume? Accomplished. I studied their whiteboard results and their thinking around a simple coding problem. Sigh. No hire. It's not always that easy, though, as you try to reconcile the whiteboard results with a smart accomplished person. Once again, ABBA echoed in the back of my mind singing "Take a Chance on Me" (hopefully I didn't hum that while busying myself as the candidate reviewed their later work). Nope. Yet another candidate who, metaphorically speaking, knows how to drive a car but doesn't know how the engine and transmission works.

    And the future looks bleak. I know we're trying to instill a grass-roots education initiative to increase enrollment and interests in the science and technical fields. But even then, is it enough? Are the increasingly smaller set of seemingly qualified Microsoft candidates on the path to be aligned with the needs that the company will have in the years and the decades ahead?

    Do we need to change our strategy? Rather than hiring people who can hit the ground running and slowly assimilate knowledge, do we instead need to look for potential to deeply learn the hard skills we need and then put them through an educational hands-on gauntlet to prove they have the stuff to be hired full-time? Something like a Microsoft Academy.

    I'm thinking that it's intense training a potential hire would go through before joining any team. There would be tracks for all the major disciplines in the company, whether development, program management, testing, consulting, user content, HR, etc. etc. Deep instruction on topics relevant to all aspects of the discipline at Microsoft along with practical lab and perhaps even field work. Along with some cross-discipline training. I appreciate that the NEO has increased in scope but it's more about navigating the culture of Microsoft (thumbs up for that Stack Ranking exercise - whoever got that through deserves a big bonus).

    I'd like to see at least three-months investment in the new hires in deeply learning what we're using now across the company. For developers, it would be stuff like C/C++, Win32, COM, ATL, XML, DHTML, AJAX, .NET, debugging, performance, Watson analysis, design patterns, security, using our best internal tools and resources and so on. Working against real code for Microsoft products. Testers would get a dose of various automation technologies around the company, along with debugging and Watson analysis, too, so that they could dig deep. PMs would focus on design concepts and real-world user management and relationship building. And everyone should take some of the key professional courses on cross-group communications and effective individual leadership.

    And just like academies in other real-world professions, some folks would wash-out. Fine. Better upfront than to be a deadwood burden later.

    Come graduation, Microsoft would have a deeper perspective into the new hire and vice versa. With their fellow academy attendees, they would have a built-in cross-group network from day-one of their new position. And people out of the academy could be situated in the team that best suits them, perhaps even spending the last few weeks focusing on content directly relevant to their new team (e.g., focusing on fine art of backwards compatibility for the shell).

    And current Microsoft employees could lobby to qualify for the academy. Maybe you're looking to switch disciplines, like from test to dev. Go through the dev-academy first to sharpen your saw and prove your ability. Excel while in the academy? Okay, let's find a spot for you. It would be a source for renewal for our current Microsofties to find new positions and opportunities in the company, versus letting them become more and more marginalized over time and eventually more of a liability than an asset.

    The Microsoft Academy should be hard. Intense. Push-you-to-the-edge-perhaps-this-was-a-bad-idea-crazy-hard. But once you've accomplished all the class, lab, and practical training, you are aligned and ready to contribute with the skills that Microsoft needs today, not bits and pieces you pick up over your first year or so. Or never, if you don't have the refined abilities to start from day one.

    I'm just trying to think of how people out there who have the raw abilities to be great Microsofties but do not possess refined talent could reach the point that I'd be proud to have them on my team - perhaps even work for them one day. Although we continue to gobble up more bodies, I do not feel we're in a talent glut. I see a talent crisis. How do you think it will be solved for Microsoft?