My Microsoft Experience (2013)
blog.ellenchisa.com
blog.ellenchisa.com
The stack ranking system is and was hugely popular with this org. It is popular nowhere else.
MSFT still likes to think of itself as an engineering company, but it is hard to have a tail that big and not sometimes accidentally wag the dog. Stack ranking is probably the best example of how true this is.
EDIT: To add some color to this tale, a Technical Fellow once told me that during the "rank and yank" period (when everyone was ranked and the bottom 10% were effectively fired) he was continually on the verge of quitting. If you are doing something like inventing the CLR, and you hired 5 of your favorite engineers, how are you supposed to react when someone tells you that it is imperative to fire one of them per year? What could the point of that possibly be? This is more or less a common sentiment among extremely senior engineers who ran important orgs at that time.
Ask HR about bad attrition and they would totally deny it. "Sure, people leave. They leave all the time." But if your really, really good systems programmers are bailing, you have a problem; those people do not grow on trees.
That said, I'm skeptical that the stack rank system is gone, based on what I hear from those that are still there (I've been out for many years now). It sounds like a lot of the same curve-fitting is just renamed.
Now I'm by no means a great developer (as one of my Microsoft-employed friends brutally said about my declining, "No loss for Microsoft"), but I imagine this concern could scare away genuinely good developers too worried that the politics of "keeping the team together" would outweigh any actual individual contribution they'd make.
That's a pretty poor thing to say to a friend.
I would review his definition of a friend... I'd say that was a very poor thing to say even for an acquaintance.
A real friend might have said "From my perspective you could improve as a programmer. Your weakest point is field x and therefore I recommend that you read the following book."
Saying a person sucks is pretty pointless without a detailed performance review, identifying a few key points to improve in the next span (of months/years) and keeping tabs on progress. Usually saying someone sucks in general is pointless demotivation and hurts feelings without purpose.
Identifying specific sucky aspects in ones work and suggesting helpfull improvements is beneficial, if requested.
The bottom of the stack should be the juniors, not the GE yank bullait
Stack ranking actually works, unlike the naysayers like you to think. The problem is that it works to good. You burn out your engineers killing themselves to avoid the yank and everything starts falling apart. Stack ranking is a lazy and uninspired technique that is the last resort of a CEO who can't excite the ranks with great ideas.
That's a odd definition of a system that "actually works"
And the worst thing is that these strategies aren't any better in managing subjectivity and prejudice. For all its quantitativeness and statistically-oriented methods (e.g. fitting the performances to a normal distribution), these systems are subject to biases just like others. More often than it should, your placement in the stack or distribution reflects more your influence and relationship with evaluators than your actual performance.
Not totally as brutal as it sounds as they would have got medical retirement.
This was the result of someone deciding, some 20-25 years ago, that developers couldn't handle talking to one another, and they couldn't test software themselves. I sort of agree with the latter point, but only when it comes to manual and end-to-end testing. Developers have an overriding priority: to get stuff out the door, whether it's ready or not. That's what they get promoted for. Any kind of deep testing beyond unit tests is considered, by and large, a waste of time, especially by junior devs who haven't been through support hell yet.
PMs though? You could easily have one or two of them per team of 20 devs if they do their work well, not 1:1 as it sometimes is at Microsoft. Shit, for the past 7 years I haven't worked with any PMs at all, and my productivity is at all time high.
So when I found out recently that Microsoft is getting rid of the formal test discipline (a mistake, IMO, for reasons outlined above, should have merely reduced their scope to high value work), I thought about PMs as well. Bite the pillow, my PM brethren, Satya is going in dry. I imagine once the second shoe falls, Microsoft will once again be a pretty decent place to work.
It's only the dumb use, where you repeat the type name as part of the variable that such notation gets deserved derision.
If MS had been a bit more forward thinking, they'd have come up with a language, or extended C/C++, to be able to enforce all that notation via the type, killing the need for special notation.
You don't have to like what he's saying, but I'd prefer you not try to chase people away. Thanks.
Hungarian Notation makes a lot more sense after reading that.
If you want to appeal to authority figures, I got one for you, too: "Encoding the type of a function into the name (so-called Hungarian notation) is brain damaged - the compiler knows the types anyway and can check those, and it only confuses the programmer. No wonder MicroSoft makes buggy programs." Said one Linus Torvalds.
Joel is "some kind of authority on software". So am I. So are you. Our community is influenced by its members. If you think that modern programming trends aren't heavily influenced (for better or for worse) by individuals like Joel Spolsky then you're kidding yourself.
The PM role kind of forces people to become political players. Unlike engineers, a good PM often has trouble distinguishing her work from that of a bad PM that is just good at politics. A good engineer can't get away with being garbage if the engineering manager has half a brain. On the other hand, a bad PM can mask his lack of work and talent pretty easily if he can master the political games of a large organization.
A lot of the value add of a good PM is the intangible organizational and communication stuff that is difficult to quantify. A good PM can make an organization respond better to customer needs. A bad PM can still take credit for anything good that comes out of an organization.
PMs can easily shed blame for organizational failures, especially if there are multiple layers of bureaucracy and scapegoats that haven't mastered politics. In places like Google you'll see the most skillful PMs line up people to share blame with by taking on collaborators mid-way through projects; similarly, they can spot a success story in the making and engineer their own late involvement to benefit from the halo effect of a successful project.
At the highest level, the CEO can filter the shit from the gold in the PM ranks, by personally taking an interest in projects ... but a CEO can't get into the weeds of all corners of the organization. So even in companies with great CEOs there are lots of shit PMs sprinkled throughout the organization.
Many engineers learn to just live with it. You learn that political skill will be rewarded in large organizations. Its the nature of the world, just like jackals and vultures eat for free after the wolves do all the hard work. Wolves don't get depressed about it.
But there will always be some naive kids from college that don't understand the way of the world. And they just can't deal with some PM getting paid well for doing nothing but politics. Instead of making peace with the world the way it is, they leave and go to start ups, thinking that is a refuge. But if the start up has success, the same cycle begins again as the team grows larger and larger.
The only way to avoid politics is to become a hermit ... or the tech equivalent ... the solo consultant/gun for hire. Or I suppose, you could start your own company.
Another possible solution is Holacracy: https://medium.com/holacracyone-blog/holacracy-vs-hierarchy-...
I've never worked in a place with Holacracy, so I have no idea if it actually works.
Concerning the removal of testers, I think this is also wrong in some extends. Software Engineers are having a hard time to catch up with the code and testing. The goal was to create a better quality and having more people being able to understand the code but at the end we become more specialize in some part of the system and know less of the overall, mostly because we are working longer on the same part because automating everything take a lots of time.
I also think that PM does not help the whole process of being fast to deploy new bits. However, this is something rotten in the code of big business with multiple hierarchy. This goes far beyond the PM problem, it goes with a paramount management hierarchy where everyone can override any decision. Oh well, I guess any big top 500 companies has the same problem at some point. Isn't?
I would speak to her and try to understand what was her main goal. Could never find anything aside of just being in charge and aiming to get all the credit. This person was more fit to work at the DMV.
Thats how things work in my job - which is in the "non-software" engineering world. I'm an engineer I do technical work it is the responsibility of my manager, (who is a former engineer) to sit in on all the meetings so I can get on with my work if something relevent to me or our team comes up he disseminates it to us.
We had an issue last year. Our team was working on a largish project and we had one of those micromanaging PM's who was bugging a collegaue and I, similar thing to your complaints constainly demanding status updates from us trying to sneak scope/specification changes through the backdoor etc. All it took was one complaint to our manager and he tore the meddling PM a new one.
After that everything came down through the approriate chanels and we were able to deal with things in peace, we didn't have to waste hours dealing with an incompetant project manager. I'm not usually a fan of "top heavy" management structures but in this case perfect example of management working as intended.
Why do I still do the role? Well, it kind of fits what I wanted to do for a living. I always enjoyed doing lots of diversity in my job and trying all kinds of new technologies out. I get to be a customer for a living. I try out our product and think about where I want it to go. I can be annoying (a real customer would probably be a bit annoying sometimes too, they challenge your product and your hard worked design). I get to care for a living. As an engineer, I could see myself needing to let things go because it's gotta get out the door. As a PM, I know a customer is going to hit that issue and I need to get it in front of people so we can fix it. I'm building applications using our technology and competitors and technology not obviously related just to see if could be relevant.
The problems with PMs vs Engineers is that it is super hard to tell a good PM from a bad PM who is good at politics; but I'm still super happy the role exists. I'd likely have to become an evangelist to do the things I do everyday still, but I'd have less influence with the engineers and it'd often be reactive if I wasn't on the product team. To any people considering a job as a PM, do me and your other future customers a favor and ask if you can care more about your customer than having your job or being promoted? I've held fast to the notion that customers are why I'm here and my career hasn't been too bad so far, management still recognizes good work with customers. But if it all goes to hell, I can always find some other job and be happy with myself.
The honest answer to that is "no" 100% of the time, for any rational person. Anyone who says otherwise is either stupid, or trying to BS you, or both.
Simply put, incentives should align to desired outcomes, otherwise you get the outcomes your incentives _do_ align with.
You're describing a product owner.
edit: typo
[1] http://blogs.msdn.com/b/techtalk/archive/2005/12/16/504872.a... [2] http://microsoftjobsblog.com/zen-of-pm/
(The problems it describes are slightly different from the ones you or the blog post describe, but not totally unrelated, either.)
A notorious team in Office (where E. Chisa worked) is the OneNote, that team used to take pride till couple of years back that they don’t have any designers, all UX design is done by PMs. No wonder EverNote came out of no where and steamrolled them (I’m personally a big fan of OneNote for its feature set, but hate the User Experience).
To me Microsoft’s biggest bane is the PM discipline, they are holding back MS on taking up Apple, Google to new startups (whenever MS engg team was design driven - Ex. Windows Phone - it came out with great products). The PM discipline used to make sense 20 years back, but not now to the extent that one would have 10-12 PMs for a dev team of 40-50.
> I never understood why PMs are given the task of designing
This is my biggest concern going forward. My background is developing backend services, not building good UIs. I'm confident in my ability to build something somewhat sensible (I have some Android and other UI experience), but fundamentally my strengths have always been in designing and piecing together abstractions with code.
I feel like the largest roles of a PM should be in resolving ambiguity and enabling people who have good ideas. My current boss, while he could certainly code circles around me, doesn't actually write much code aside from a few unit tests. Instead, any time I wonder why something should be done a certain way, he can give me a reason and convince me it makes sense. When I have a good idea about how something should be done, he gets out of my way, checks up every few days, and removes any non-technical barriers so that it's as painless as possible for me. I believe that the system we work on would be in a horrible state very fast if he were to suddenly up and leave.
If you want to build and design stuff, you need to be an engineer, not a bureaucrat. That's what engineers do.
Here's what a typical PM does at Microsoft: https://www.youtube.com/watch?v=nV7u1VBhWCE
http://blog.ellenchisa.com/2013/12/23/challenges-with-a-stac...
Part 3 is here:
http://blog.ellenchisa.com/2014/01/21/effective-performance-...
From her post she came in with extremely high expectations of how well she'd do at Microsoft (promoted within 6 months), she got a new manager and immediately assumed they'd play favorites with their existing employees then once given a project she couldn't handle instead of asking for help waited too long so "she wouldn't seem clueless".
Then she gets a performance review that says she didn't do well and blames the system & her manager. This seems to expose a significant lack of introspection and self awareness.
Is there a company in the world that gives a good performance review when someone spends months on a project, doesn't make progress and doesn't ask for help until it's too late?
That said there are two places where Microsoft's former performance review methodology hurts here
1. Microsoft used to give people a score in the misguided belief that knowing "you suck" or "you're awesome" relative to your peers is motivational. In some cases, it does but in many cases it has the opposite effect where it causes someone to be so discouraged that they quit. Which is what the blog author did.
2. The requirement to have people who are flagged as "underperforming" in stack rank based models discourages managers from helping people who are struggling. As a manager it is actually somewhat of a relief to have someone who you can clearly award the "sucks" label without the strain of having to decide which of your team of good performers needs to draw the short straw(s). This to me was one of the biggest problems with the model as a manager at Microsoft since your reward for turning around a poor performer is to find someone else to mark as a poor performer.
- There is really no 20% rule that applies to teams. The calibration process is across bands / levels across a given product area. So it is not that you are supposed to give a score of 5 (deadwood) to a member in your 5-people team. It means all people across the division who are at level X are looked at and "sorted" to do that assignment. People level 64-65 and above typically have these "cards" that they use to sort people. That is the meeting where your manager or his manager is supposed to support you. But the other managers don't really know who you are for real. In the best case, they may know of you. So it is really hard to have a conversation because only one or two people have context about every person. So just to summarize, there are these cards that people drop on a table where they do the classification, and people don't really know who they are ranking.
- the second point is that moving into new teams is in many cases a really bad idea because the new manager now inherits a new person that cannot be defended as well as the existing team for the simple reason that the new person is not known as well. Many people have been in the same division for 15 years or more. You know they are not going to be an unknown and they coast on the legacy reviews. The new guy / gal is an easy victim unless she is some sort of Bill Gates right off the bat.
- one thing that was crazy in that review is that they not only let go of people with bad scores. They also let go of people with good scores but who are deemed to have reached their plateau level. So you may still be a great director or GPM but if the system decides the director is not going to make GM or the GPM is not going to make director, then they also see you as a candidate to get rid of.
- the most important problem for the industry I believe is that the system perpetuates the need to create NEW stuff. So for example, why would somebody create Powershell instead of using a perfectly fine alternative from the Linux / Unix world? Well, because that way you are the person who created a NEW thing and not who simply PORTED a solution! Can you imagine the world today if we could use the same commands or patterns of commands in Windows as we do in Linux? Clearly the OS are too different for that to be practical but we cannot argue that the syntax and paradigm could have been more similar.
MS bringing back Services for Unix for real is a somewhat orthogonal issue than coming up with a superior shell.
Specially when they take UNIX way of computing as the only way, without room for any improvement.
I'm a bit of a bash scripting nut, but I've recently had to do some Windows administration via Powershell and actually it's pretty awesome!
I want Windows shell to look like UNIX, to be scriptable exactly the same, and to have a proper SSH remote login.
So install Cygwin.
Apple managed to do this with OS X.
OS X uses a Unix shell. Most of it is based on Unix principles. It wasn't that hard!
Microsoft is denying the reality and substituting it with their own.
Really? It still uses pipes and redirection, has command history and tab completion. You can alias commands, but Powershell has functions which allow for parameters.
The thing is - Powershell is, somewhat surprisingly, more powerful in many ways than bash, especially around variable handling. I'd be pretty happy if it was ported to Linux, which I'm actually rather surprised about!
Your NiH assertion doesn't even remotely make sense. PowerShell is fundamentally different from traditional Unix shells and has many interesting, unique & innovative features. Not liking them or agreeing with the philosophy is entirely valid, but suggesting they've just refused to use an existing shell because of NiH isn't born out by the facts.
Honestly, I'd suggest trying to adapt an existing Unix style shell to Windows as the "official" shell would be an inherently bad idea at worst and extremely difficult at best. Apart from the numerous issues that traditional shells have which PowerShell seeks to address (reliance on string parsing, lack of consistency in commands/parameterss, etc...), traditional Unix shells are very much built around a Unix operating system philosophy, especially wrt. exposing operating system internals, devices, etc... via the file system. That's a great thing, but it's not so much applicable to Windows.
You'd either need to radically re-design large chunks of the system to conform to the Unix philosophy of exposing much of the system via the file system, which let's face it, is unlikely to happen, much less any time soon, or augment the shell with a lot of extra support for Windows specific functionality (e.g. the Registry, WMI, etc...). Things as simple as ACLs on Unix won't even map nicely. Better to have a shell that works well for Windows and fits its administrative model than trying to shoe-horn in a shell designed with a completely different administrative philosophy in mind.
You mention OS X, and yes, they did get it to work. As other commenters have mentioned though, OS X is UNIX. As in, UNIX(R). The userland API exposed by the kernel is based off BSD, as are large chunks of the operating system (although, Apple seems to be replacing them one by one). It's pretty easy to use a nix shell when your operating system is largely based on Unix (at least, from the perspective of userland applications).
I have in my notes:
<pre>Select-String " 23:56.00" -Path file.txt | out-string -width 10000</pre>
better (no headers):
<pre>Select-String " 23:56.00" -Path file.txt | ForEach-Object { Write-Output $_.Line } | Out-File t.txt</pre>
I eventually installed a proper grep and gave up trying to use Select-String.
The hoops you have to jump through to write and run script files are absurd as well, compared to UNIX where you just need to set the executable bit.
I guess PowerShell has a different take on things.
There's a (seemingly) clearly defined road to drive down: do tons of AP classes, extracurriculars etc. Someone set some rules, so people follow them (and game them) with a cargo-cult belief that they will "succeed" (definition unspecified). So now we have kids starting college prep in the sixth grade and taking AP tests in the eighth.
We end up with the kid I gave a First Aid test to a couple of weeks ago. He had memorized the entire first aid field manual. But I described a situation and some symptoms (me having a heart attack) and frankly, if that kid had been around I would have died. I asked him why he didn't look for symptoms of the "hurry cases" and he said, "well you start with the first ones in the book." I asked them why they are called "Hurry cases" and it hadn't occurred to him that they word "hurry" was more than a label. Sadly, probably a third of the kids I test are like this, but now our rules say I have to pass them because they can answer any question in the book.
But the kids who learned to weld at the age of 10 or who take things apart and can't get them back together again or who are argumentative and have deep knowledge on weird topics -- there's no "road" for them.
At least some of them can get to go start companies!
I can believe that one person was dumb enough to put a metric like that somewhere. But how could an organization be filled with people unable to recognize the systemic effect of highlighting that, the perverse incentives it gives?
Marisa Mayer at Google famously had a gaggle of special junior PMs that she shepherded into high ranking roles.
Got some source on that? I'm curious now ...
The US military does same with with commissioned officers (called "up or out"). If you're passed over twice for promotion you leave. See http://en.wikipedia.org/wiki/Up_or_out
Hmm, after looking at that page I see this is quite a common practice. I hope my competitors use it!
I see this end horribly much too often in large companies- focus of the project shifts and manager assigns task which is a bad fit. Employee struggles for 6 months or more (probably within the 1yr 'no transfer' period many companies have). Manager doesn't try to find a better project, reviews slip, employee is warned that perf must improve but by then the manager has it in for them and because of low perf they cannot transfer.
The OP started out with a good manager and a good team.
Then the OP was moved to a bad manager on a bad team.
Stack ranking and "promotion velocity". Therefore, time to leave Microsoft.
It's almost impossible to survive in any job when your direct boss decides he doesn't want you around.
I probably would have had a hard time dealing with what seems to be a youth with a big ego, with a needing behaviour, no idea of how to behave himself and how to balance life and work.
I get it, he was young, still, not the type of person I'd ever want to hire.
That is the mentality the Microsoft metrics-driven management is supposed to encourage. You have to get promoted to be recognised. You have to be seen as better than those around you to avoid being cut in the stack ranking.
Of course, Microsoft always has plenty of recent college graduates eagerly applying every year, so there always are replacements.
When I RTFA, I'm not totally sure what the author did that actually provided significant value, particularly in that final stretch.
> When I RTFA, I'm not totally sure what the author
did that actually provided significant value,
particularly in that final stretch.
Yeah, and that's kind of the point. Human value is not intrinsically quantifiable. You can try and apply objective numbers to human behavior, but usually only with brutal results.She nails that point in the second paragraph with the five step break-down.
Reviews often boil down to a game of "yeah, but what have you done for me lately?"
You generally get railroaded by systems like stack ranking, unless you totally depersonalize your relationship with your peers and directors, and play the numbers game, tallying up petty minutia which may or may not be completely disregarded by the ones who make the rules anyway.
This sort of relationship is biased in favor of firing, rather than maintaining and building loyalty. It's all about negative reinforcement, and keeping your subordinates at arms length, so you can easily replace the ones that burn out, once they've proven useless.
If that's the sort of atmosphere you crave, have fun. It's not the only way.
There is some logic behind always hiring the best you can find and having a process to cull the low performers. It's not like the company's actually shrinking by 10% every year. The problem only shows up when you hit a point of actually having all high-performers, and you're only throwing people away to meet a quota that's become counterproductive.
Even if hires were assigned teams at random, attrition doesn't occur evenly. Bad teams lose good people very fast. Teams with bad managers will have huge rates of churn (people rarely quit their job, they quit their manager). So the end result is to naturally divide into multimodal distributions: Rich get richer, poor get poorer. Since ranking teams is, from an organizational perspective, extremely political, you'll rarely get management to point fingers to the bad teams.
Also, splitting a high performing team rarely works: A team is not a collection of individuals, but also a culture. Dump a great performer on a bad culture, and even if you put him in charge, you do not get a good culture: Instead, you get less out of that person.
If there's anything I've learned, is that we are better off ranking teams, not people. The one reason to look inside a team is for voting people off the island, and that is something that should be started from within a team.
I mean, yeah, that happens.
I really don't see how the announcement of doing away with stack ranking (an abomination) dove tails in with something in 2013.
Note that the news articles of it's demise were in late 2013, and at large companies announcement -> implementation take time.
I doubt the half cycle reviews (late fall/winter) of 2013 fell under the non-stack rank rules, hell, year end is when most of the formal stuff takes place.
Another edit -- stack rank elimination was announced end of 2013, realistically the next review cycle (may/june 2014) it took effect. If I look at the poster of the blog's LinkedIn profile, she lists her leaving in Sept of 2012. So this is a valid comment on the stack rank system -- it was certainly a cancer. That said, the timing and lack of detail makes it a bit confusing as to the fact that stack ranking went away basically in mid 2014.
(edit some more detail)
Redmond (MS headquarter), Finland (Nokia headquarter), Cambridge (research ?) and India (outsourcing ?)
I know of three offices in India -- Hyderabad, Bangalore, and Delhi. These are proper Microsoft divisions, with a hierarchy and all that. Not managed by some other company (At least, Hyderabad/Bangalore aren't; I don't know anything about Delhi)
Some things being worked on here are VS, Office (specific portions), Bing, and Azure.