Ignorance is bliss! :-)

Friday, May 21, 2010

Tao of Career Management


Don't worry about people stealing your ideas. If your ideas are any good, you'll have to ram them down people's throats.

- Howard Aiken


The book includes the series of dialogs between Steven and his organization, captured by Steven's blogs. These blogs, posted internally on the Microsoft Office SharePoint site to all Microsoft employees (http://my/site/stevesi/blog on Microsoft's network), tell the story of the Windows team as it progresses through the development of both the organization and the product. Given the large size of the organization, Steven found blogging to be a powerful communication tool to provide his perspective and to discuss a broad set of issues in depth, from organization to motivation, and from culture to budgets, especially when used in conjunction with traditional tools such as one-on-ones (1:1s), team meetings, office hours, and so on.

At a college recruiting event last week I was asked, "What career advice would you give a person just starting out at Microsoft?" These questions are always tough - nothing makes you feel older than being asked 'advice' and the pressure to say something really profound is intense. Needless to say, I don't really have anything profound to say, and certainly nothing you haven't heard before. What I can share is not as much advice as much as 7 Rules of Thumb I have tried to do throughout my time at Microsoft (with all due respect to The Tao of Steve):

Be excellent at the job you have. The first and most important thing at any point in your career is to always do a great job in the job you have. This one is of course easy when you love your job and things on the team are going great. But if the team hits a rough spot and that gets you down or you hit a few bumps and slow down it gets tough to do a great job. That is really the best time to gather yourself and stay focused on doing a great job. The hardest time to be excellent at your current job is when you start to convince yourself that the job is wrong, the project is wrong, your manager is wrong, or any other thing is just too wrong for you to do a great job. That is exactly the right time to deliver. That is exactly the right time to overachieve. If you throw in the towel, then you end the job on a sour note. But if you find a way to see some light, then there are twice as many potential outcomes, both positive. One is that you make it through the patch and move on to other things, but do so on an up note. And the possibility, more often than not, is that during the uptick in your performance you realize things weren't as bad as you thought.

Be prepared to go through the 'cycle'. Nothing teaches like experience. Like most 'crafts', software is a profession where even the best make mistakes and so the only way to learn is to make mistakes and learn from those mistakes. Software projects go through the cycle of learning, planning, executing, and feedback. At each step there is an opportunity to make mistakes learn. The real learning happens when you are on the hook to correct your own mistakes. And the mega learning happens when you come full circle and attack the problem, create a solution, and deliver it to customers again. We talk a lot about being a well-rounded employee and often we think about this in the context of 'business' and 'engineering' but an arguably more important way to be well-rounded is to be someone who is an excellent engineer at all phases of a project.

Be attracted to the mainstream. As an engineer there is always a tension between wanting to work on something 'cool' and to work on something 'real', or to work on something 'new' versus something 'legacy' (intentionally chosen to offer the most common hallways discussion). Of course at Microsoft we have a plethora of new projects starting up all the time. Some are clearly on a path and some are clearly incubations working on finding a path. And all the while we have the existing projects that seem so 'mainstream'. This tension is hardly new - going way back to new programming languages, new networking OS, new GUI applications, and of course codenames that we can all recite. My own decision making about what to work on has always been to focus on the mainstream and to make the mainstream deliver those 'new' or 'cool' things from the mainstream. The reason I chose this is because I value highly the learning I got as an engineer from the product cycle and from delivering to lots of customers. I also think in the teams I've been part of we have worked to create the 'new' from within the mainstream and shown how it is possible to be more systematic and predictable in new product development. So on this one you can say that I have been motivated to have the best of both worlds in the job and to focus on doing so for the most customers possible in the shortest time possible.

Be obsessed with the competition. This one is simple. No matter what you work on there is a direct competitor or some software that is really close to what you are developing. You should know it. You should know it inside and out. Every command, every implementation detail, every version, performance, the people that work on it, how it is sold and marketed, what customers who use it say, and so on. I remember once going through all of Lotus SmartSuite and looking at the imports/exports from each DLL to see how much code was really shared (a big deal back then) and seeing how they stored icons in resources for their 'toolbars'. I went through pixel by pixel each dialog from each application. Not only was it super fun, but the experience of doing this was itself educational and served not just me but members of the team well. No matter what your role on the team is, you should be obsessed with the competition.

Be expert on your product. If you work on the mainstream there is a good chance your product involves a few feature teams and you might not be in the code (designs, specs, or tests) for the whole product. That should not be an excuse not to know the sum of the product. Everyone should be able to demo the product they work on. Everyone should know the feature set and usage of the breadth of the product they work on. Just because you work on 'ease of use' is no reason to ignore the administrative features so valued by corporate customers, for example. Just as there should be no stone unturned competitively, you should master your own product. This is knowledge that will last your career.

Be aware of playing the system. No one likes politics. So don't play politics. Of course that isn't an excuse to be rude or to show a lack of respect for people on your team or partnership teams. It is, however, a warning that trying to outsmart the system or to be clever just doesn't really work. For me this means to focus on the core value of making others great, sharing the credit and then some, owning up to mistakes, helping others when you can, and so on. Trying to outsmart the members of your own team through metrics, reports, email gymnastics, or all the things we all know can be done will always come back and return double to you. I promise. Playing the system does not work.

Be Zen about the short term as it all works out in the long term. Finally, we do work as part of a team and part of a company and to do so we have a 'system'. The system is implemented by people, which means it won't be perfect (because people aren't perfect). It means that what is 'right' doesn't always happen right away. But it will happen. You might have done a great job but somehow the recognition didn't come to you this time. Someone you are sure shouldn't have been promoted got promoted. Someone botched a feature but no one noticed. These are all the things that drive us nuts - we think the world isn't fair or we [think] Microsoft isn't fair or we think our manager is a jerk. These are the things that make us want to play the system. These are the things that in the short term seem to benefit the wrong person. Stuff happens. The system doesn't always work. But the system always works over time. As soon as you start trying to play the system, you will find yourself spending more energy on the system than you spend on the work. And that's really when you start to fail. Don't be a victim. Just be Zen. I am confident things work out in the long run. I owe everything with respect to this point to Mike Maples (the original VP of 'Apps'), who on more than one occasion reminded me to stay the course and not stress over the short term.

As you go through mid-year career discussion it might be worth thinking about these points. Maybe they will help frame a good discussion with your manager. Or maybe we can talk about it in the hallway sometime.

What do you think?

- Steven Sinofsky, One Strategy

| RSS | Email