The Not Invented Here (NIH) Syndrome is nothing new. If it is true, as I suspect, that part of the nature of people is to worship the work of their own hands, the NIH syndrome is as old as mankind. Regardless, this way of thinking has never been a good idea, and its not a good idea now.
Sure, this way of thinking makes for amusing anecdotes. There was quite a discussion on the subject of re-inventing the wheel on the Midrange Computing Web forums recently. (If youre not participating, point your browser to www.midrangecomputing.com/forums and join the fun.) One participant wrote about a group of System/34 programmers who had a program that read a file in order to count the records. These programmers were blissfully unaware of the ?FA,filename? procedure- control expression.
Another forum participant mentioned a programmer who always created user profiles with QDFTJOBD as the job description (from which the library list is set), *WRKSTN for the output queue parameter, and *NONE for the initial program. He then wrote (from scratch) a new initial program for each user that did three things: set the users library list, assign that users output queue, and call the users initial program. Well, I had a few chuckles, but its really not funny. Building what someone else has provided costs money.
Why We Do the Things We Do
Why do programmers write software that others have already written? Here are a few reasons. (Maybe you can think of others.)
EgomaniaSome people dont consider themselves real programmers until theyve written their own operating system, compilers, communications package, and source code editor.
LazinessIts too much trouble to try to understand another programmers code. Roll your own code so youll know how it works. When you leave, the company will bring in some other programmer who will take a look at your code and roll his own.
EconomicsThe boss wont fork over a few thousand dollars for you to buy new software, so he pays you four times as much to write it yourself. Youre already on the payroll. And never mind the backlog.
IgnoranceJoe Coders got time to check out Dilbert, stock prices, and sports news on the Web, but its too much trouble to visit the Midrange Computing online Yellow Pages (www.midrangecomputing.com/yellowpages) or search the Web to find out what products address the current hot button. Joe ignores the ads in magazines like Midrange Technology Showcase and Midrange Computing. He figures those ads are just there because the writers couldnt think of enough to write about.
Ignorance, Take IITraining is too expensive, so your employer wont send you to seminars, schools, or COMMON. Therefore, you should train yourself. Youll be as good as your instructor.
IndependenceIf you write code yourself, you wont have to pay those yearly support fees or get new license keys when you upgrade to a Model 8XX honker.
Nothings Free
There are two primary reasons why duplicating the effort of others is not usually a good idea. First, homegrown software isnt really free even if it does the same thing as other software on the market. Programmers dont work for nothing, and the hours spent duplicating the efforts of others are hours that cant be spent hacking away at the backlog.
Second, specialization works miracles. If you had to make your own clothes (including shoes), grow and hunt your own food, build your own house, and provide your own transportation, youd live in squalor. However, if different people specialize in producing various goods and services and then exchange the fruits of their labor with one another, everybodys a lot better off.
So, when management decides to put up a Web site, are you going to brew it at home and possibly put the company out of business? (Ive heard tales of that already happening, although I havent been able to verify any of them.) Will you fight the valiant fight, like that AS/400 shop I knew that had homegrown EDI translation software? Or will you aim your resources at the tasks specific to your shop and pay someone who specializes in Web development and hosting to put you on the Web quickly and easily?
All Things Considered
Of course, developing what another programmer has already developed is not necessarily a bad thing. Here are some good reasons to do it yourself. (Please note how much shorter this list is than the first one.)
ExpenseSome software houses are run by people who dont live in the real world. Judging by the license fees and yearly support charges, these people must be living on Mars and importing all the necessities of life from Earth.
ExcessYou need a lawnmower, but the various suppliers sell only tractors with brush hogs and insist that no one can get by with less.
The world (including the world of computing) is getting more and more complex at a faster and faster rate. I believe that the cost of developing what has already been developed rises proportionally. If Im right, then the NIH Syndrome is more costly now than ever before, and leveraging existing resources is more important than its ever been.
LATEST COMMENTS
MC Press Online