Just sharing some of my inconsequential lunch conversations with you... RSS  

Monday, October 16, 2006

Not invented here syndrome

Raise your hands who hasn't seen the not invented here syndrome in action? Anyone? I though so.

Let me tell you a story about an old friend and colleague of mine that had no match in this syndrome. If you're reading this post on my blog, I got his permission to post.

Back in the early 90s, we were developing an office automation product where we built, among others, a Windows client. The client was written in Borland C++ 3.1, and we had the first experience of building a library that supported several applications.

My friend, let's call him 'Mister F', was one of the most brilliant engineers at the enterprise. One of the things that I learned from him was the concept we now call refactoring. Ok, 'Mister F' did refactor with no consideration whatsoever with the rest of the team, or even the product's milestones, but nevertheless, he did refactor, that was more than most of us did back then!

He was mister "Not invented here syndrome" in many aspects. The idea of starting a library was his, so he simply suffixed his initials in the bloody library! We all used and contributed for the library for a decade, and the library was never renamed!

Let me give you another example: in the early days, I extended Borland's TListbox with the ability of drawing an icon left to the text, using the owner draw mechanism. I called it TStampedListbox.

Some time later, 'Mister F' felt the need to have a listbox with multiple columns. So did 'Mister F' extend TStampedListbox? Of course not: he just created a new class, in focus with his ego: TSuperListbox! I was mad as hell, I confess. Why didn't he reuse my code?! Would there be Council of Trent in the library? Not a very good idea, so I gave up my listbox, and ported my applications to TSuperListbox.

But that's not all. One fine day I felt the need to add new functionality to TSuperListbox, but 'Mister F' actively refuse to change or let me change 'his' listbox, as any change would subvert the philosophy of the holy listbox! So what now, I asked? "Do your own listbox", he replied. And so I did.

After some fights with 'Mister F', I manage to convince him to do some minor changes on his class (mainly exposing some data and functions) that allowed me to derive my listbox from his, adding new capabilities. I was angry, so I made a statement, naming it THyperListbox.

In each year that passed, and for each child he had, we all witness his growth as a member of a team, loosing this symptoms of the NIH syndrome.

We no longer work together, but whenever I sense the presence of any of these symptoms in a team member, I recall 'Mister F' story, and hope for the best.

No comments:

Development Catharsis :: Copyright 2006 Mário Romano