Programmers do not ordinarily work in isolation. Although an individual programmer may find herself assigned the task of writing a program, even then she has other programmers to whom she may turn for help — and who, at the same time, may be turning to her.

Limited Time Offer

Premium members can get their quote collection automatically imported into their Quotosaurus collections.

each program has an appropriate level of care and sophistication dependent on the uses to which it will be put. Working above that level is, in a way, even less professional than working below it. If we are to know whether an individual programmer is doing a good job, we shall have to know whether or not he is working on the proper level for his problem.

Programs, like any other human-made objects, are designed — or should be designed — with a definite lifespan and scope of application in mind. Like the “Deacon’s Masterpiece,” which was “built in such a logical way it ran a hundred years to the day,” a program should have neither over-designed or under-designed parts. Yet it is an occupational disease of programmers to spend more time on those program parts that present, for some reason, the most intellectual challenge rather than on those that require the most work.

One typical computing example of social fixation is the adoption of one programming language by an installation. Once the language has been adopted, a new language has more difficulty making an entry, because with most of the people using the old language, advantages accrue to following the beaten path.

PREMIUM FEATURE
Advanced Search Filters

Filter search results by source, date, and more with our premium search tools.

When we do read code, we find that some of it gets written because of machine limitations, some because of language limitations, some because of programmer limitations, some because of historical accidents, and some because of specifications — both essential and inessential.

Or, suppose you want to motivate your managers to ship products on time, so you conspicuously promote each manager whose product goes out the door on schedule. All goes as planned until the situation arises in which one of your managers has a project where the testers are reporting numerous problems. Because managers who have shipped products on time have been promoted, this manager thinks, I want that promotion so I need to ship this on time, but those bug reports are getting in the way. I know what I'll do! I'll put the testers on another project until the developers have a chance to catch up.

In the army — old-fashioned style — every foot-soldier was considered interchangeable with every other. The hierarchical organization, then, was conceived as the structure that could give the fastest and most direct coordination between these interchangeable parts. But a programming project is not a battle, regardless of appearances. There is no need for quite the speed of communication which is necessary under field conditions, nor are the things to be communicated so simple that they can be barked over a two-way radio with shells bursting in the background. What is needed in a programming project is slow, careful communication among teams of people doing very different, highly specialized tasks.

Enhance Your Quote Experience

Enjoy ad-free browsing, unlimited collections, and advanced search features with Premium.