I wrote this to a friend who was interested in programming computers. Silly, perahps, but heart-felt and honest.

Getting proficient at programming computers is difficult. Getting really proficient at programming computers is doubly difficult. Getting really, really, really proficient at programming computers to the extent that you can author a kernel or when you can think in three different languages about the same problem is the work (and joy) of a lifetime, which requires as much dedication (and yields as much pleasure) as mastering solid-state physics, or breaking new ground in chaos theory.

It will take slow years, but they will be memorable years, enjoyable years, boyish, impish, exciting years. You will feel empowered, for as the code that you scripted dashes beneath the motherboard in all the flamboyance that you imagined, you will have complete, absolute, unquestionable power over the machine. You will be the Master, and the machine will serve you. It will bend to your wishes, it will obey you, it will fear you. You will feel like Brahma, creating that which did not exist before. You will feel the world around you disappearing in a route of evanescence. You will feel like God. It is not a feeling easily realisable with other arts and sciences.

Dismiss what those “Teach yourself language X in n days” tell you. Gear up for the long haul… and if you stick to it, it’ll be worth the long hike. Trust me on that one. Remember this, and this is from someone who, though still a hopeless fledgling, knows what the iceberg beneath the tip is like, for I have touched it, I have seen its cold magnificence and the cruel acumen of the mind and body that it demands. Code is not different from life. It is a way to think about problems, about challenges, about life itself. In your darkest hours, it will serve as a lodestar, a powerful torchlight whose battery will not die out as long as you are dedicated to it. It is a medium for meditation — as much about device drivers as it is about metaphysics, aesthetics, life and death beyond. Life and death become mere variables, to be turned on and off at will. Joy and woe become deterministic. You will feel empowered to structure and tackle even the most intractable problems of life. If nothing else, it is a platform for pure intellectual acrobatics.

It is like a demanding, loving wife, and will give you back a thousandfold what you are prepared to give it. But, as with everything, long, hard sacrifices may have to be made if you decide to commit to it. And just as in life, only the most painful sacrifices give the most pleasurable results.

Good luck.

If you take up programming seriously, I’ll rest assured in the conviction that the flame and passion that I once carried (and which is now being threatened for multiple reasons) has been passed on to a worthy comrade.

Regards,
Ramesh

Elsewhere:

Of updates and data loss--The last few weeks have put my time management skills to a brutal test, and I have failed spectacularly. The last few weeks have also put my patience at the very edge of insanity, leaving [...]