Wednesday, 22 February 2017

Some reflections about In Defense of the "Not Invented Here" Syndrome

Just invented here!
Image curtesy of Wikimedia

Some months ago I read an interesting article by Joel Spolsky, written back in the neolithic epoch (2001).

Mr. Spolsky talked about his experience while managing a project for Microsoft. His manager said he never would convince Excel Team to collaborate, 'cause their motto was Find dependencies and eliminate them
Obvisously, Mr. Spolsky explain why Excel guys (an extremely skilled team) were so proud of their "not invented here" syndrome: they find their core business (create a fast, small and portable spreadsheet program) too entangled to many components, so they decided to rewrite many parts. Even the C compiler was rewritten, to meet requirements of small binaries and portable code.
Mr. Spolsky concludes saying you should keep in house your core business activities and get from external sources what you need. This is why you should stop working on your 3D engine and work on what will make your game great (gameplay, artificial intelligence, atmosphere, etc.); or why you should stop to develop that CMS when your web-app will have other fantastic features.
Is this feature part of our Core Business? This question should be asked every time you work on some software, because is very probable somebody already found your problem and solved it.
From Mr. Richard M. Stallman's biography (you can get it for free here), we know he searched a lot for an existing compiler for his GNU operating system. He started GCC because no one was available free as in freedom. A good reason to create a compiler from scratch: existing ones missed Stallman's core business.

A Case Study: Duke Nukem Forever

This post born some days ago when I thought about Duke Nukem Forever's failure. How can it happens? I answered me "3D Realms missed its Core Business".
Duke Nukem 3D was a masterpiece and launched its creators on Videogames Olympus. They felt great responsibility on their shoulder when they started to create a sequel, but they forgot key factor: people didn't felt in love of Duke Nukem 3D for its graphics: everybody loves Duke for its humor, its exaggerations, its big bosses, enigmas on its levels and for all its easter eggs. Everybody remembers "Red-Lights District", "Moon Base" and the tunnel behind a poster in "Death Row".
Convinced that astonishing 3D graphics would be their Core Business, 3D Realms's chiefs pushed for more and more powerfull 3D engines, throwing thousands of line of code away. Like a meteor, they ran faster and faster to get the best graphics available, but burning themselves in the try. They forgot Duke's greatest competitor had a really better graphics and highest technology: but still today we remember both Quake and Duke Nukem 3D.


When we start a new project, we should think What make it different and better than competitors?. That will be our Core Business. Then, during design phase, we should include a checklist about best technologies available and if they help us to focus our forces on core business.
Especially when working alone or on personal project, it's easy to fall in temptation and rewrite already existing code. Well, don't. Think about your core business. That will make the difference.

No comments: