Tuesday, September 11, 2007

There are many essays and articles extolling the virtues of becoming a great programmer. You’ll have a sharp mind, great abstract reasoning skills, and a chance to become wealthy by working mere hours a day. This is what you’ve heard, right?

Sadly, no one ever tells you about the ways in which it will adversely affect your life. The physical effects are obvious. You’ll spend most of your time sitting, probably in an uncomfortable chair that doesn’t promote good posture. You’ll fuel yourself with food that is readily available, meaning it’s more than likely processed and full of sugar and you’ll likely choose either coffee or soda to stave off the drowsiness. A coworker once remarked, “If it doesn’t come out of a vending machine, programmers don’t eat it.”

But I’m not particularly interested in the health risks, as I said, they’re obvious. So what am I talking about? Programming changes more than your body. Programming changes the way you think. You might hear a programmer say, “I like python because it matches the way I think.” Or is it really that they’ve learned to think in python? Regardless of the language employed, you think differently when you program. No decent programmer will deny that. This is why it’s often so hard to explain to someone “how you do that” because, as clear as your explanation may be, you simply think differently. It is this change in thinking that can ruin your life.

The application of programming specific processes and habits to the everyday is where peril lies. The same traits that make you a great programmer can make you an awkward, misunderstood and miserable human being.

Programming presents you with a problem and allows you to eventually solve it provided you don’t quit. A solution is out there somewhere. Make enough attempts and chances are you’ll eventually prevail. Aren’t computers great? They afford a large degree of freedom in problem solving. If nothing else, you are able to make as may attempts as you please and it will happily execute each one. This instills in you a sense that failure is not final. Any obstacle can be hurdled. This is not true in the real world. While you may find second chances now and again, the wheels that turn in the big blue room are largely unforgiving. Time marches on in one direction.

When faced with an interesting programming problem your mind will chew it over in the background. Maybe it’s an algorithm you need to develop, maybe it’s a tricky architecture problem, maybe it’s data that needs to be modeled. It doesn’t matter. Your mind will quietly work the problem over in search of a solution. The “ah-ha!” moment will come when you’re in the shower, or playing Tetris. This practice of constant churning will slowly work its way into the rest of your life. Each problem or puzzle you encounter will start it’s own thread; the toughest and most troubling of which will be blocking.

A program is highly malleable. You can make a nearly unlimited number of changes. You can re-implement. You can optimize. You can run the compile-test-debug cycle ad infinitum. Make a change, see a result. Life is not like this. Every action you take is followed by a commit and the transaction cannot be rolled back. You can continue to make changes and optimizations as you move forward but the effects of these will not be immediately apparent. The instant feedback of development is sorely lacking in real life. Furthermore, your changes might simply be ignored. Data will be skipped. Blocks will not be executed. Optimizations will go unnoticed. The world is resistant to your tinkering.

Programmers become obsessed with perfection. This is why they are constantly talking about rewrites. They cannot resist optimum solutions. Perfection requires tossing aside mediocre ideas in search of great ones. A good programmer would rather leave a problem temporarily unsolved than solve it poorly. A good solution takes into account all predictable outcomes and solves the largest number of them in the most efficient way. This mindset prevents you from writing code with limited utility and life span. While it’s a wonderful trait to have in programming, the demons of scope and efficiency will start to assert themselves on your ordinary life. You will avoid taking care of simple things because the solution is inelegant or simply feels wrong. Time to think will no doubt yield a better result, you’ll say.

The obsession with perfection develops a forward-thinking mindset. The ability to anticipate provides a huge advantage because you won’t waist your time implementing solutions that ultimately fail due to short-sightedness or lack of imagination. You will constantly be mapping out flows and running the permutations through your head. Back in the real world, you will find yourself piecing together plans of breath-taking size and beauty that simultaneously resolve multiple problems and fulfill numerous dreams. You will attempt to kill every bird with one stone. The impossibility of actualizing these plans will be agonizing, yet your mind will continue to pour over every detail as it seeks to anticipate every possible outcome and construct the perfect solution.

Everything is now data. Every bit is worthy of attention. Every interaction is worthy of analysis. Your mind has been trained to do this since it is usually the insignificant or subtle bits that have to be rooted out when debugging. You will find it frustrating that everyone else does not collect and analyze data. You will notice details that others simply gloss over. Your penchant for detail and over-analysis will earn you strange glances and confused shrugs. Your decision making process will resemble that of your peers less and less.

The frantic pace of the software world will instill in you a sense of panic and urgency. You must do everything now. Tomorrow is too late. The thought of working constantly will no longer seem foreign or ridiculous. You will spend your free time feeling guilty about not working. But you will be working. Your hands may not be at the keyboard, but your mind will be.

The romanticized story of young upstarts toiling away in a garage to build the world’s next great company is alluring. It’s easy to convince yourself that the dream is there for the taking. But understand that there are many factors you cannot control. Luck and timing being but two. Don’t miss the life you have in the search for the one you think you want. To quote John Lennon, “Life is what happens while you are busy making other plans.” But perhaps Pascal said it best, “We never keep to the present. We … anticipate the future as if we found it too slow in coming and were trying to hurry it up, or we recall the past as if to stay its too rapid flight. We are so unwise that we wander about in times that do not belong to us and do not think of the only one that does; so vain that we dream of times that are not and blindly flee the only one that is… [We] think of how we are going to arrange things over which we have no control for a time we can never be sure of reaching… Thus we never actually live, but hope to live, and since we are always planning how to be happy, it is inevitable that we should never be so.”

Is programming the road to ruin? Or is it that those with a predilection for detail and mental gymnastics find themselves drawn to it. Perhaps it simply exacerbates a pre-existing mindset. There are certainly other traits (stereotypical or not) that most programmers seem to share. I have focused mainly on the negative impacts, but there are certainly positive ones as well. All things listed as bad can be good if simply kept in check. Obsession is dangerous, and anything great requires obsession. Programming is no exception.

Monday, September 10, 2007

The usual suspects made the usual speeches on August 15, mouthing the usual pure cant. But the sad fact remains that 60 years after the grasping imperialists left, India has comprehensively under-achieved on all fronts; all that has changed is the skin-colour of the looters.Ten years ago, I was far more optimistic, and wrote about the coming Indian century; today, despite the obvious progress made on the economic front, I am overwhelmed by a sense of disappointment.I have been discouraged by what I have observed in the last 10 years. The loss of heritage. The disdain for indigenous civilisation. The perversion of the discourse in the country by Stalinist 'intellectuals'. The regular terrorist attacks that cheapen Indian lives. The total non-reaction by government to oppression of people of Indian origin abroad.And so I have come to realise that freedom is very different from mere independence. There is no freedom for the common man in India: not freedom from want, nor freedom of expression or thought, nor freedom to aspire to greatness, nor freedom from the ravages of endemic corruption. The State is so feeble that India can fairly be termed a failing State. The Indian State punches so far below its weight that it might as well not exist.The failure is both domestic and global. Individual Indians are shackled, and the blunders of the past 60 years conspire to create a state of permanent slavery for the nation. That is the biggest disappointment of all: Indians aspire to mediocrity. Indians simply cannot imagine that they can recapture their historical primacy as the greatest innovators, the most prosperous nation on earth.The facts are out there for anyone to read: For instance, economic historian Angus Maddison's World Economy: A Millennial Perspective, an official European Union publication, shows that during practically the entire period 0-1700 CE India was the world's richest nation. There is circumstantial evidence, too: The fact that every barbarian, from Alexander the Macedonian, to sundry Central Asians, to random Europeans, all invaded India. People intent on loot do not invade poor countries.India is on the way to economic superpower-dom, according to the dramatic Goldman Sachs reports (Dreaming with BRICs and India's Rising Growth Potential). And indeed, in the last few years, the world has recognised that India will be an engine of the Asian century, hyphenated with China (much, incidentally, to the latter's chagrin).But it is only foreigners who acknowledge India's potential. Indians themselves are still colonised. Having destroyed indigenous education, the colonialists put in place a system designed to suppress creativity and produce drones who would toil for the empire. It drums into the minds of children the idea that everything native to India is worthless.This project has succeeded beyond Macaulay's wildest dreams (see his infamous Minutes) in creating a nation of the terminally confused. Exhibits A and B: India's finance minister opined recently that India was always a poor country; some time ago, his boss, the prime minister, complimented imperialists on the good they did! Aren't these people economists? All they have to do is to read Great Victorian Holocausts: El Nino and the Making of the Third World to understand the appalling war crime, including the genocide of at least 20 million people, perpetrated on India by the imperialists.Yet, in an example of undeserved tolerance towards rapacious foreigners, Indians shut their eyes to the dangers of Economics 101: choosing to only make butter, and no guns. We need guns to protect our butter. Thus the great dangers in the sustained and inexplicable efforts recently to make India for all intents and purposes a nuclear vassal of the United States.Brought up to believe they are worthless, Indians aspire to be second-best. Only Indians go to the Olympics [Images] to be sporting losers, not to win. Nobody else chants the meaningless mantra that what matters is participation; no, Virginia, the only thing that matters is winning. India seeks to play second fiddle to somebody, be it Americans, Chinese, Arabs -- somebody, anybody. This is a disease that may have to be excised by large-scale lobotomies; or perhaps by burning down a certain university that is its epicentre.India has been a hectoring busybody on the global stage, lecturing everybody on morality and virtue. It is also easy prey: A nation that can be induced to commit collective suicide through the expedient of buying off its media and politicians for chump change. The number of fifth-columnists in India has reached record proportions. India has 'friends of America', 'friends of China', 'friends of Saudi Arabia', 'friends of the Vatican' in high places, but hardly anyone is a friend of India.Yes, there is formal independence, but there is no freedom. There is, for instance, no respite from the State religion, some baffling animal called 'secularism', which basically means total apartheid against large groups of people.The State excels in perpetuating the most ridiculous system ever invented: A chimera that combines all the vices of Communism and Capitalism and none of the virtues. The idiocies and inefficiencies of the first and the thievery and inequities of the second; but not the iron discipline and will nor the unshackled flair for getting ahead. The State has interfered in everything it has no business being in: running airlines, hotels, and so forth; and it has been practically invisible in everything it is the one and only provider of: infrastructure, defence, social programs, human rights. Crony capitalism and the license raj run rampant.The State has also failed to provide basic human necessities: the infamous 'bread, clothing and shelter' that every government has promised loudly but never delivered. People in many parts of India are opting for privatized education, water supply and road-maintenance -- fed up with State incompetence, indifference and inefficiency, a testament to how badly the State has performed.It is obvious that wherever the State exited -- or never interfered in, not realizing that here was yet another opportunity to screw up royally -- the native genius of the people has enabled India to thrive: for instance, in telecommunications, in information technology.The Indian State, in sum, is predatory. It preys on the very people it is sworn and duty-bound to protect and nurture.Nor is there democracy in India, other than some strange beast that has the paraphernalia and form, but not the substance of rule of, by and for the people. Instead it is of, by and for the brown sahib, who is only interested in self-aggrandisement.There is little to cheer about 60 years after power has been grabbed by Macaulay's children, the said brown sahibs, almost every one of them a crook willing to sell the national interest down the river. They have perpetrated a crime against humanity by preventing 400 million Indians from climbing out of poverty and by creating a personality-cult-ridden, corrupt, failing State.