Skip to content

NIHilism and other innovation poison

Is innovation the act of creating something new (as the dictionary claims) or is it building upon the work of others? To me this is a fundamental question that Microsoft as a company and as a culture has gotten horribly wrong. We deal with the consequences every day. It shakes our self-esteem and cripples our ability to innovate.

The right answer is that innovation is enhancing the work of others—nothing is new. Consider what people claim to be innovative—the iPhone, hybrid cars, and Facebook. Are those new? Are you kidding? Not only would those advances have been impossible without the foundational technologies behind them, but almost every aspect of those innovations had been created earlier in some form. The innovation was putting old technologies together into compelling new experiences and successfully marketing them to a broad audience.

This isn’t an indictment of innovation or great advances like Facebook. Quite the opposite—this is a call to acknowledge that innovation is enhancing the work of others. Microsoft culture, in an act of misguided self-mutilation, has connected being innovative with creating something “new” on your own. This has directly led to three crippling consequences:

§  We doubt our innovative spirit as a company.

§  We create disconnected new features instead of compelling new experiences.

§  We reject work we didn’t create ourselves as a company, team, or individual, which impairs our productivity, our intelligence, and, ironically, our ability to innovate (an advanced tragic case of Not Invented Here, also known as NIH).

Why the long face?

We doubt our innovative spirit as a company because much of our work goes into enhancing existing products and services, which in turn were built upon ideas from a wide variety of sources. Microsoft haters out there claim this proves Microsoft isn’t innovative, and we accept that guilt. It sickens me.

Is Apple not innovative because it “borrowed” from Xerox PARC (Palo Alto Research Center)? Is Google not innovative because it enhanced Yahoo? Is Toyota not innovative because it built upon Henry Ford’s ideas of the automobile and lean manufacturing? That’s both stupid and insulting.

Being innovative is all about enhancing the work of others. We enhance our own great work and build upon the great ideas we find around the world in all fields. Yet our self-esteem is shaken, even while every new release is filled with innovation.

Perhaps the problem is that our innovation isn’t as compelling as the iPhone. Why?

Compelling, and rich

We are so eager to promote our own individual new, small ideas that we fail to create compelling new experiences. You can’t market a plethora of disconnected features to a broad audience, so our individual innovations are left unnoticed.

That’s beginning to change as groups realize that customer value comes from designing compelling end-to-end experiences. More and more Microsoft products and services have a consistent feel and a complete story. It started with Hardware and Office, crystallized in Xbox 360, and is making its way into Windows—Windows Vista, Windows Server, Windows Live, and Windows Mobile. We don’t always get it all right, nor do any of our competitors, but each new release shows progress.

Tragically, our company’s culture of individual innovation works against creating compelling end-to-end experiences. You can’t assemble seamless scenarios without selflessly supporting the salient story. You have less unbridled innovation from the individual engineer, but the result is greater innovation from the customer’s perspective.

As any artist knows, constraints often lead to tremendous creativity. However, individual engineers must first let go of their own preconceptions and embrace the constraints of the larger composition before they can innovate in concert like a symphony instead of a soloist.

Our greatest successes both monetarily and in emotional connection came from working together over several years to get the experience right for customers. Some of the ideas may have come overnight, but as Thomas Edison said, “Genius is 1 percent inspiration and 99 percent perspiration.” Those innovative engineers from groups like Office, Developer Tools, and SQL Server, with the patience to iterate, focus on the customer, and bring full experiences together, are the ones who receive the greatest rewards. Yet Microsoft engineers still cling to the notion that working independently from nothing is the secret to success.

I’ll do it myself!

Unfortunately, Microsoft internal mythos is all about the individual hero rewriting the kernel memory protection scheme over a sleepless weekend. We value independence, passion, and boldness over compliance and conformity. I love that about Microsoft, but it needs an update.

The problem is that independence, passion, and boldness somehow became “do it yourself.” If you didn’t invent it, it’s not what you need. If your team didn’t invent it, it will only cause trouble. If Microsoft didn’t invent it, it’s dubious at best. That NIH worldview is not only wrong and shortsighted, but it slows our success and paralyzes our progress.

You can be independent, passionate, and bold while responsibly meeting requirements and enhancing a desired customer experience. You can be independent, passionate, and bold from the advantageous platform of others’ foundational work.

Conversely, if you choose to go it alone you suffer greatly:

§  Your productivity drops.

§  Your intelligence drops.

§  Your innovation drops.

Maybe I could turn this thing into my advantage

When you reject work that was NIH, you lose the advantage of time, effort, bug-fixes, and knowledge that went into that work. Would you write an operating system from scratch to optimize a small application? Of course not. By using an existing operating system you save incredible effort.

The same is true of using existing libraries, services, tools, and methods. The key to gaining advantage instead of hardship from using the work of others is ensuring the things you depend upon are stable. Take a dependency on version n-1, be careful about using the latest and greatest. That goes for libraries, tools, and even techniques. Grief is avoidable.

Eric Aside

When using existing libraries, services, tools, and methods from outside Microsoft, we must be respectful of licenses, copyrights, and patents. Generally, you want to carefully research licenses and copyrights (your contact in Legal and Corporate Affairs can help), and never search, view, or speculate about patents. I was confused by this guidance till I wrote and reviewed one of my own patents. The legal claims section—the only section that counts—was indecipherable by anyone but a patent attorney. Ignorance is bliss and strongly recommended when it comes to patents.

I’m good enough, I’m smart enough

Rejecting work NIH also leads to brain decay. At Microsoft, we hire the brightest engineers available. Are they still the brightest five years later? Well, that depends. Did they learn something new every year, or did they rebuild the same thing over and over again?

If you have to reinvent a build system every time you switch teams, are you smarter? If you have to reinvent a collection class, a threading framework, or a test harness every time you switch teams, are you smarter? If you have to reinvent project management techniques, spec templates, and bug field definitions every time you switch teams, are you smarter?

No, you’re not smarter. You are getting dumber. Congratulations. You don’t get smarter by repeating yourself or by repeating others and their mistakes. You get smarter by building upon the knowledge of those before you.

Those who do not learn from history

Ignoring what others have learned and gained before you, both good and bad, puts you at an innovation disadvantage. As I already mentioned, there’s the productivity disadvantage—going it alone is never as fast as building upon the progress of others. However, there’s also a significant contextual disadvantage.

If you ignore past work, you’re liable to make the same mistakes that people made in the past—avoidable mistakes that cost you time. Sure, you might want to revisit those challenges. Perhaps there’s an opportunity for a breakthrough. But do so knowingly, not like a dolt.

If you ignore past work you’re also liable to unknowingly duplicate what others have already achieved. You’ll feel smart and proud right up to the point that you look like an idiot. Meanwhile, you’ve lost time and accomplished nothing new. NIH results in nihilism. Fitting, I suppose.

If not me, who? And if not now, when?

Microsoft is filled with smart, passionate, and innovative people. We are an innovative company, in spite of ourselves at times. We need to stop thinking of innovation as an individual effort that appears miraculously from the void, and start thinking of innovation as it really is—a culmination of effort focused on thrilling the customer.

Where do your individual ideas fit? They fit within the context of the larger desired customer experience, and build upon the learning we’ve gained as a group. The result is ground-breaking innovation that expands the state-of-art and excites the hearts and minds of our customers.

So when you’re going to work on a new team, project, or great new idea, understand how it makes the customer experience we’ve set out more compelling; and learn what others have discovered about your work. Note that I said “what others have discovered” not “if others have discovered.” There is nothing new. Someone out there has tried something similar and will have work or knowledge you can use. You can ignore that and be slower, dumber, and less accomplished. Or you can take it to the next level and create real innovation.

Eric Aside

If you are looking to get ahead and build upon the great work of others, one of the best places is in the shared source community (internally at CodeBox and externally at CodePlex). By using personal branches, you can customize and enhance code and tools all you like, while still updating with the latest and greatest improvements from others. By submitting your changes to the main line, you advance the state-of-the-art and might even enhance your image too.

Published inUncategorized


  1. Brad Dodson Brad Dodson

    Excellent! I’ve been thinking about exactly these things since I started at MS about 3 months ago.

    The wheel has been reinvented too many times to count in some cases.

    Perhaps a good point to make is that besides using existing work from places like codebox, more groups should look to turn features of their project that are reusable into something they can share on codebox.

    I’m sure there are excellent pieces in some libraries at microsoft to do all sort of interesting things, but they’re all buried in applications, or products we don’t want to take dependencies on (which is fine from a product scheduling argument, but not when the answer becomes "let’s make our own").

    Very few groups (or developers) have incentive to give back code that could help some distant part of the company, and I think we pay dearly for that.

  2. JAvier Luraschi JAvier Luraschi

    I think you have a good point that MSFT needs to improve collaboration and component reuse. However, it’s also VERY important to NOT underestimate the individualism/vision/leadership/cowboy-erism in the innovation process which sometimes means creating from scratch. Specially, in the early steps of innovation (prototyping), developing from scratch can work as a catalyst to the process, the issue is, that sometimes we move the prototypes into shippable products without considering rebuilding them ground-up with the correct architecture. I agree completely that the iPod, or Google where build reusing existing knowledge, BUT it was not just continuing the existing trend; in both cases, great innovators were needed to build the story together. I can’t imagine an iPod being built and marketed without the vision of Steve Jobs and neither the creation of Google with the innovation through the individualism of Larry and Page, just as I can’t imagine the evolution of the PC without the leadership of Microsoft visionaries. Sure, we’ve all used math, computer theory and preexisting hardware to shape our products, but cowboys have followed their own crazy own ideas as in page-rank or our computer in every desktop early vision.

    I believe we can’t talk of being only a do-it-yourself-start-from-scratch cowboy and neither a reuse-everything-follow-the-trend person, there is a balance between the two and is a good skill to be able to leverage the best of both worlds.

    If we believe that the iPhone, hybrid cars and Facebook were already-almost there in some form, why would the innovators get all the credit from their innovation? Under this framework this sounds unfair. They just happen to be the ones to put the next step in the puzzle, building on top of the communal knowledge, right? I believe this is wrong. Some people, do take bigger risks, do put their all their commitment to their work, do become cowboys and do shape the world in incredible ways; and therefore, they must be rewarded proportionally to their contributions. The action of being a lonely cowboy is not wrong per se, it’s inconvenient if we are not comfortable with the risk we are taking or really inefficient if we don’t reuse what others have already build, BUT, as long as we understand this tradeoffs, I’m really glad and I support the cowboys we have in MSFT =)

    I believe if we follow this post can literarily, it might reduce our motivation to take calculated risks on our own. Why? Well, we could translate the iPhone, hybrid cars and Facebook example,  into, hey! The Office 12 Ribbon, the new Windows 7 look and feel, the new video on demand XBOX features, etc… were already there, we were just building on the existent knowledge, which is true, but incomplete. I’ve seen people giving all their passion to shape technologies like those, therefore I find we are underestimating a bit their work and the individual contributor as well. To those crazy-passionate-intelligent cowboys we have around MSFT, I give them BIG kudos!

  3. ericgu ericgu

    I’ve certainly seen a lot of this around at MS, and at other companies.

    Some groups have a very insular culture, and I’ve been surprised at the lack of knowledge about competition and/or common approaches for doing something. If you don’t know what a wheel is, you can’t know if you’re reinventing it.

    I think that is *by far* the biggest problem, and I’ve seen it from individual contributors all the way up to VPs.

    Our reward system awards reinventing the wheel. I’ve seen a number of times where the "lone hero" gets a considerable reward for creating the new wheel from scratch.

  4. asymtote asymtote

    I’m glad to see somebody else thinks the Xbox 360 is a good example of an end-to-end system that provides a superior customer experience (I made a similar comment on Adam Barr’s blog a month ago).

    In the beginning the primary driver of user experience improvement was from the hardware (mainframes, early PCs), then it started coming from software (MS-DOS, Windows 3.1/NT/XP) but these days it’s coming from people who think about the system as a whole (iPod+iTunes, iPhone+3G/2G network, Xbox 360+Live).

    Delivering a compelling seamless system means that there is no room for lone heroes. It also means that engineering is only one of several decision makers on the team responsible for shipping the system (others include marketing, UI design, system engineers and overall project management).

    Change is always hard however and culture eats strategy for breakfast. It doesn’t matter what edicts come down from upon high the mindset of engineers and their technical leads must change. Implementing that change must necessarily be organizationally specific but salary based rewards are one tool. While money is generally regarded as a hygiene factor rather than a primary motivator for engineers it can be used to reinforce a culture change. Stop rewarding the lone heroes but instead reward entire teams that deliver winning systems.

  5. eff Five eff Five

    If you are ever looking for an illustrative example of innovation while depending on the work of others its worthwhile to check out “The Speaking Telephone, Talking Phonograph, and Other Novelties C 1878” by George Bartlett

    In this book there is the full text of 1877 presentation (including slides) by Alexander Gram Bell to the Society of Telegraph Engineers. He takes his audience through his attempts on determining the natural pitch of vowels, to the remote playing of a piano, to attempts at increasing telegraph throughput via parallelization, to finally the telephone. He references at least a half a dozen works of others that played a part in his research. This includes stuff I never heard of prior like C.G. Page’s Production of Galvanic Music, Helmholtz’ Theory Of Tone, and Leon Scott’s ponautograph.

  6. gmv gmv

    Well this article seems to be about not wasting time reinventing ideas or work thats already out there. I think everybody understands that.

    However in some situations it is easy and less expensive to redo parts of another product rather than indulge in lengthy, processy and bureaucratic cross group collaboration trying to integrate or build on them.

    Its always a tradeoff.

  7. Thomas Aqua Thomas Aqua

    I worked at MS for 5.5 years.  In the end I was forced out for various reasons.  I was blessed by my multiple connections to many different groups at MS.  I could see a lot of people that already had the solutions we needed, or could make work for our needs.  I was cursed because of the NIH mentality within the last group I was in.

    In the end I was struggling against the paradox of you have to find create the best solution for the best price where ever it was, as long as you only use our solutions/dev/ops teams.  Of course the solutions wouldn’t support our business needs, the dev’s were already booked solid, as was the ops team didn’t want to work with stuff outside of our team.  Getting consensus from people who didn’t know about or even care about our stuff was way too much fun.  People don’t like it when you rock the boat too much.  

    It won’t stop me from trying to come back, but it is something I will have to work around if I ever do get back.  

  8. Andrew Andrew

    Interesting speech about Microsoft and how innovation is in fact borrowing, however I point your attention to BlueJ ( ) and how Microsoft implemented "object bench" into Visual Studio 2005, a complete rip off of BlueJ, however this doesn’t matter, what matters is the fact that after copying it, Microsoft patented (now retracted after the outcry) this feature.

    If Microsoft stopped at "borrowed" I don’t think anyone would have a problem, but it seems that "borrowed" and "claim as your own" go hand in hand at the corporation.

    It also doesn’t help that the sales pitch calls everything "innovative" even if competitors have had similar products for years.

  9. Brad Eleven Brad Eleven

    Very, very interesting. Refreshing.

    I’m struck by the stark, yin v.  yang contrast to the <a href=>Halloween Documents</a>.

  10. Todd Bandrowsky Todd Bandrowsky

    This is the sort of praise of group think that lead to the ruin of GM and its acceptance bodes well for the ruin of Microsoft.  Individuals and heros made Microsoft into a dominant force in the software industry.  Committees are turning it into another blob.

  11. Henry Wertz Henry Wertz

        Well said!  I’m not a big Microsoft fan (I run Ubuntu and Gentoo), BUT if they did take this to heart, they could certainly still be in the running.  I’ve CERTAINLY noticed signs of this duplication in every version of Windows I’ve used for sure — like "Huh, I’ve seen this dialog box through this other menu too, but it looks a little different" (due to 2 teams reimplementing the exact same dialog rather than collaborating enough to have them both work on and share one).   Reusing code (as long as it’s not horribly written…) is essentially a force multiplier for programmers I think.  If they can already use existing code for some functionality rather than writing it from scratch, they can then spend time working on the new features, or improving the code they borrowed from (debugging, or optimizing the code.)  

        mplayer and mencoder for instance, it’s a VERY complicated piece of software (decoding from almost any video format to almost any format, or playing it on almost any video and audio output, editing, speeding up and slowing down, filters, etc. etc.)  But since it incorporates other projects to do the heavy work, they get automatic bug fixes for a lot of stuff, and it’s been getting faster almost every release.  In the past when I had a K62-450, I put off replacing it for over a year, it’d be too slow to play some video, I’d update mplayer, and bam!  It’s fast enough again.  I’m having the same experience now with HD videos — My Athlon XP 2200+ was too slow, now it’s not.  If Windows, .NET, etc. sped up the way mplayer did… that’d be an incredible coup.

  12. Brian Herdeg Brian Herdeg

    The Microsoft environment is awesome – brilliant, inspired people, who are driven to accomplish their current assignment. Unfortunately, this often results in a hunker down, do it yourself, mentality, that is like a drug to most software developers. In theory, technical PM’s and Dev Leads should look around, seek work to build upon, and drive the innovation. It did not work that way when I was there…

    Let me share my own experience. While at Microsoft, I discovered the work of others and tried to evangelize it across divisions. My management cancelled the project and told me to drop it (not in our groups charter!). I refused – and it cost me my career at Microsoft. The technology I refused to drop saved Microsoft millions on Vista, and now is being promoted in Visual Studio 10 and at PDC08 in Win7. Reading between the lines above, my experience was not unique.

    I believe that the Windows re-org, this post and others like it, will go along way to improving things… but there is still much to be done. Great post Eric!

  13. Joe Joe

    "We value independence, passion, and boldness over compliance and conformity"

    Wow. I was shocked by this. From my point of view (as an MS customer) I would say the opposite is true. I do not see MS as valuing independence, passion  nor boldness at all. For me MS is all about compliance, conformity and dullness… There is a huge disconnect between how you guys view yourself and how I (and I believe many others) view you.

    What is independent/passionate/bold about anything MS has done? I can’t wrap my mind around this.

  14. Rick Keeney Rick Keeney

    One of the things I observe that makes innovators "innovate", is that they are constantly cramming their heads full of the history, current state of the art, competitive situaiton, and anything and everything related to their product and field of knowledge and expertise.  From there, they combine the appropriate prior work and build the "innovativations".

    That process requires getting out of your cube (at least your mind, if not your body) and interacting with people in other groups, other buildings, other companies, other industries.

    It absolutely involves interacting with actual end users and customers of our products.  Because many of the things we make are so widely used, thats pretty darned easy for most of us.  Just ask people you know what they think of the product you work on, and you are likely to get at least one new piece of information to add to your product knowledge expertise.

    Another thought: One of the secrets of what many will call "innovative" products is actually pretty mundane – they are also often high quality products.  Nobody is going to put up with quality or reliability problems just to use the innovation.  All of the boring, non-innovative things have to work right to even be in the game.

    Finally, the innovation doesn’t have to be in the actual end product.  The innovation can be in the process and tools used to create the product.  Being fairly new to Microsoft, one of the biggest opportunities I see right away here is to do a little less NIH and a lot more standardization and leveraging of our processes and tools amngst the groups.  Then, task the team that builds and supports those standardized tools with making them great so all our products can benefit.

Your take?

This site uses Akismet to reduce spam. Learn how your comment data is processed.