Monday, October 5, 2015

In Defense of The System

Roman Republic and Empire was a land of political upstarts. From Gaius Marius to Augustus himself to Diocletian, these men was born into merely middle class family or worse, but rose to eminence. In fact, the Roman had a name, novus homo, for those upstart. After the collapse of the empire, suddenly political upstarts ran away from Europe. Most glaringly, Byzantine empire, as byzantine as it was, continued to host self-made emperor: origin of Heraclius the Elder was so obscure that we continued to puzzle his birth place, yet his son claimed the purple. Meanwhile, Europe must wait for more than a millennium for an upstart to appear, in the person of Napoleon Bornaparte.

Here is the question: why did just about any political player in Medieval Europe need a lineage, while Byzantine emperors apparently did not? We like to think of competition as the gears of meritocracy. If competition is so great, then Western Europe, split into so many states and estates, should have produced tons of political upstarts, while Byzantine empire, with its intricate court and procedure and massive capital, should have frozen its imperial rank. Yet, the reverse happened. And when did upstarts start to appear again? Ah, after France squashed any kind of competition with its central power.

Modern Americans love the idea of chaos and individualism. Meanwhile, they despite the system and bureaucracy. To them, the system virtually always stands in the way. Except when it helps, of course, and they will belittle its power and assert their self-made-ness. As an extension of this, they hate government, bosses, support personnel (who work for the other side; their support personnel is useless without their genius), any team with more than maybe 5 members.

Nowhere is this more prevalent than software engineering. Frankly, I am sick of this question: "assume that you and the smartest guys are in the comfort of your own home, undisturbed by all of those, how long would it take to do foo?" The assumption? Well, bosses and earnings and teammates and geography and finance can only stand in the way. In fact, business dress of any manner generally stands in the way (SHORTS AND TSHIRTS FOR THE WIN). Only "the smart guys" matter.

But, let's be frank, smart guys are (as a rule of thumb) everywhere. Yet they succeeded in highly complicated society of Byzantine, yet failed in the supposedly free (at least freer than Byzantine) societies of Western Europe. Why? Wait, when one thinks really hard, Islam, for most of its history, supported excellence social mobility. Its founder, Prophet Mohamed Himself, started his life as a slave, and Islam spent most of its infancy fighting against richer, more established opponents. And let's not talk about China (the damned culture has almost half of its major dynasties founded by commoners and, gasp, barbarians).

Thus, the question reigns: why can't structure-free societies of Western Europe support "smart guys"? Why did they need to move to Byzantine empire and Muslim empire and China to start their dynasties? Reversely, why did they (and by "they," I meant "the Bornapartes") move back to France right after French royal unified and complicated their own court?

Here is my answer: because Byzantine and Islam and China and modern France have the system, the bureaucracy, and complications that allow smart guys to excel. I don't know if anyone notices, but most of great feats are very hard. They can't be accomplished by a few guys in a garage. Now, I don't mean to belittle a few guys in a garage: they do accomplish certain classes of things. However, building empires, turning business around, or merely crafting a feature-rich-plus-intuitive-plus-pretty-looking software for wildly different classes of customers are not among the things that a couple of guys in a garage can do.

To follow the grand tradition of root cause analysis: why can't a couple of guys in a garage build an empire? Or, less ambitiously (and more in topic), a feature-rich-plus-intuitive-plus-pretty-looking software for wildly different classes of customers? Let's tackle the empire. It's simpler. To build an empire, one needs to be trusted (surprised! Most citizens must tolerant a certain man for such man to be despot). By having a system and bureaucracy and shared culture norms in place, it's easy for one to earn trust, find accomplish (I meant, comrades), build teams, and do amazing feat. After all, those systems and bureaucracy take centuries to perfect, and culture norms take generations to root. Thus, it's easier to found a new dynasty in a well-organized (albeit complicated) society.

How about the aforementioned software? I mean, is the description of the software not enough to explain? A couple of guys in a garage setting excel at sharp focus. Without distraction (aka "support") from everyone, they are free to zero into whatever they deem important. This can produce amazing technical solutions. See the emphasize? Yeah. Technical problems can be solved with focus. However, a successful software is not merely technically superior (QWERTY keyboard debate, start!). It must also excel socially, commercially, and financially. It must woo new users with minimal initial interest. It must keep expert who controls public opinion. These requires way way more than mere technicality. Take, says, Emacs. In my opinion, its technicality is impeccably elegant: instead of trying to solve all problems with text editing, it provides a platform on which different groups can tackle different problems separately. Very smart, very elegant. Fucking hard to learn. Because the solution is so abstract (all good technical solutions are, at least for software), application demands a level of expertise that 99% of users can't supply. Guess what, Emacs is forever cursed as a niche product. An excellent product, but niche nevertheless.

Thus, we need systems. We need business people to pump the money, legal people to ensure our safety, customer service to hear from users, fulfillment center to deliver the goods, and a bunch of bosses to keep of of those out of our hair. Coding is hard. If I need to code while worrying about money and laws and customers' complain and whatnots, sorry, my brain has limits. Everyone's brain has limits. At least those limits are greater than the physical limits, which are extremely limited. Last time I check, I can't talk to customers while looking for laws to screw, I mean to help, them.

And, here comes the bureaucracy. And bosses. And lawyers. And consultants (now, I am about 90% those are truly useless).

Here is my humble opinion: complication don't necessarily make something bad. The world is wonderfully complicated: human species have studied it for way too many years to discover way too little. Yet, the world is not bad. It's wonderful, supportive to all (most of the time anyway). Similarly, bureaucracy and system and bosses ain't inherently bad and counter-productive. Occasionally they are. However, most of the time, they exist for a reason.

An engineer then has 2 choices: either fight them or use them. Which one are you using?

No comments:

Post a Comment