Linux and the Unix Philosophy
3.4 The First System of man
3.4.1 Man builds the First System with his back against the wall
Usually the developer is under pressure to meet a deadline or satisfy other time-critical demands. This ignites a creative spark within him. Eventually the spark becomes a small flame as he spends hours in intense deliberation, turning the idea over repeatedly in his mind. Work continues. His creative instincts begin to really take hold. The flame grows brighter.
At some point, he becomes aware of aspects of his idea that go beyond simply reaching his goal. He feels as though he has stumbled upon something far more significant. The goal fades somewhat, but not before he has convinced himself that his idea provides the solution.
3.4.2 He has no time to do it right
If he had the time to do it right, he wouldn't be under any deadline pressure. So he has to improvise. But whereas the typical improvisation is one of compromise, this effort roars ahead without compromise—in the wrong direction. At least, that is what his observers conclude. When a developer's back is against the wall without time to do it right, he tends to break all the rules. It appears to his traditional-thinking coworker that he has lost his marbles under the refrigerator.
Critics often rise against him. "He can't get away with that!" they insist. "He doesn't know what he's doing. He's going about it all wrong." His response? "Yeah, it's ugly, but it works!"
The lack of time to do it right forces him to focus on the important aspects of the task and to ignore the nonessentials. As a result, he plans to leave some details to include in later versions. Note that he may never complete any later versions. The belief that he will "fill in the blanks" in the future, however, keeps him from becoming sidetracked and also provides an excuse for any shortcomings in the first version.
3.4.3 Man builds the First System alone or, at most, with a small group of people
This is partly because many people in the mainstream have little appreciation for what he's doing. They have not seen what he has seen from his vantage point, so they have no idea why he's excited. Hence, they conclude that his work is interesting, but not interesting enough for them to get involved.
A second reason that many people avoid working on the First System is more practical: Building the First System involves significant risk. No one knows whether the First System will have the characteristics that lead to the development of the Second System. There always exists a better than 80 percent chance of failure. Being associated with a First System that failed can be "career limiting," in industry jargon. Consequently, some people would rather wait until the idea is proven. (They usually become the developers of the Second System. More about them later.)
An associated risk is the possibility that an uninformed manager may declare the First System a product and turn it over to the marketing department prematurely. This usually results in sales personnel hyping a system that isn't quite ready, and it shows. System crashes are frequent and often occur at the most embarrassing times. Users develop a strong prejudice against the system because they perceive it as being of low quality. Ultimately, system sales suffer.
When a small group builds the First System, it does so with high motivation. Things happen quickly. A kind of synergy infuses the team, resulting in a strong, cohesive unit sharing a common vision and having an intense desire to bring the system to fruition. They understand the goal and toil feverishly to reach it. Working with such a group can be at once exhilarating and exhausting, not to mention very rewarding if the system succeeds.
One thing is certain: The First System is almost never built by a large group of people. Once the team grows too big for daily personal interaction among its members, productivity wanes. Personalities clash. People carry out hidden agendas. Little fiefdoms emerge as people begin to pursue their selfish interests. These occurrences dilute the goal, making it difficult to reach.
3.4.4 The First System is a "lean, mean, computing machine"
It achieves acceptable performance at minimal cost. Its developers had to take the expedient approach in most areas, forcing them to "hard-wire" much of the application code, trading features and flexibility for simplicity and speed. Frills are saved for the next version. Anything orthogonal to the system's goal is left out. The software gets the job done—and little else.
People generally marvel at the First System's performance when they compare it with a more mature system that they're familiar with. They wonder why their system cannot compete with the new kid on the disk block. They bemoan the fact that this little upstart outperforms their favorite on the popular benchmarks. It doesn't seem fair, and it isn't. Comparing a First System to a system in its nth release is inviting an apples-to-oranges comparison. The designers had different goals in mind.
The First System designers are highly focused on trying to solve the problem at hand, to get something going, to get anything going. Later designers usually spend much of their time trying to add new features to meet perceived market goals. When these features are taken as a whole, they often have a negative impact on performance. Yes, the later system can do more, but the new features come at a price.
3.4.5 The First System displays a concept that ignites others' imaginations
The First System causes people to engage in wild flights of fancy of the "what if…?" variety. It whets their appetite for more: more features, more functionality, more everything. People say things like, "Think of the possibilities!" and "Imagine what we could do with this at Gamma BioTech!"
The following list names some conceptual fields and technologies in which innovation is setting peoples' imaginations on fire, spawning many First Systems today:
-
Artificial intelligence
-
Biotechnology
-
Digital imaging
-
Digital music
-
Electronic monetary systems and a cashless society
-
Genetic engineering and cloning
-
The Internet and the World Wide Web
-
Interactive television
-
The Mars landing
-
Miniature machines
-
Nanotechnology
-
Quality (Six Sigma, Total Quality Management, etc.)
-
Virtual reality
-
Wireless technology
The concept that ignites other peoples' imaginations becomes the chief reason the Second System follows the first. If there is nothing exciting going on with the First System, then everyone concludes that it meets one's needs and (yawn!) one has something better to do. Many a First System has died in its infancy because it has failed to inspire its observers to do great and wonderful things with it.
A popular Internet repository for new First Systems is SourceForge (http://www.sourceforge.net). Some of the software presented there triggers lots of activity when people get excited about a new concept or technology. Sadly, though, not everything contributed there meets the criteria for a successful First System. Some of it simply doesn't inspire anyone. And so SourceForge has become a First System graveyard of sorts.