Archive for the ‘Mistakes I Have Made’ category

I May Be A Complete Failure

June 27th, 2010

I have spent the better part of my intellectually conscious life trying to algorithmically “beat the market.” (To be precise, I started around age seventeen; I am now twenty-five.) According to some very well-tested academic theories regarding markets, I am pursuing a fool’s-dream. I have continued to labor this long under the assumption that there is a pretty obvious selection problem when it comes to publishing findings that contradict financial orthodoxy: if you were to find a method that earned out-sized returns, I don’t believe academic prestige trumps monetary gains. It is my perception that people who end up as professors of finance are typically people who had the desire to study markets in order to profit from them, but who never found their holy grail. If they had found something spectacular, I don’t think the incentive to publish is very high. (There are exceptions, but nothing ground-breaking.)

After eight years, I have nothing concrete to show for my efforts. As a consequence of shifting needs, I have learned a lot of computer science (e.g. compiler design, algorithms, and some unnecessarily high number of languages). Obviously, this skill set is valuable, but I have no successful projects to use as credentials. Every few months, I find myself excited over the preliminary results of my increasingly sophisticated simulations, only to be disappointed a few short weeks later to find that I was simply wrong. This has happened so many times that I no longer grow excited when I see positive results — I’ve grown into a hardened, semi-depersonalized skeptic.

My latest iteration of development appears exceptionally promising, but I expect it to bear no fruits. I learn each time, and my understanding of markets (and complex systems in general) is approaching some level of refinement, but I have no way of estimating when I might cross the line into profitability; worse I may be approaching this level asymptotically, with my limitations acting as a ceiling just below my goal. I feel like a modern day Tantalus.

I recognize that “beating the market” algorithmically may be either impossible or simply out of my reach, but I soldier on because I still find it fascinating. I believe that, had I switched course years ago, writing off the project as foolish, I would have probably, or at least possibly, been wealthy by other means by now. (Every time I started pursuing a product development project, I found myself shifting back towards market soon after the initial new project euphoria had faded.) If I could offer advise to my younger self, prior to perusing this path, I’d probably say don’t make the attempt. I have neither ethical nor moral objections to profiting by speculation. I merely believe I could have acquired the satisfaction that comes from achievement a long time ago, instead of bearing the frustration that accompanies not achieving something in spite of my best efforts. Nonetheless, I will not stop trying. I’m not blind to the possibility that I am a smart fool, but I want this more than anything else. I’m not sure where I would draw the line, where I would finally say giving up is the proper thing to do. I hope I never have to make that decision. I hope success finally obliterates the need for that decision.

I’m not sure why I wrote this. To some degree, it might be a warning notice to those who are considering following this path. As I said, I find markets fascinating, but most people (my earlier self included) enter the fray believing it to be a sure and short path to riches; it’s not. There are far less risky paths to wealth, especially for entrepreneurial programmers.

Fetishizing Programming Languages

May 1st, 2010

Learning a new programming language is fun. Different languages take different approaches to solving problems — they follow different paradigms. Learning a new language feels a lot like exploring, and I like exploring.

Exposure to more than one language is a good thing. However, once you are familiar with the broad paradigms, there exists a danger of conflating learning new languages with learning new ways to solve problems. In my case I forgot that programming languages are tools. Learning new languages can be seen as acquiring new tools. Learning a set of very similar languages is of limited utility because your not actually gaining anything new. There is almost no marginal benefit. To make things less abstract, compare the promisculous language learner with a carpenter. Carpenters don’t seem to suffer from the same error of judgement. There might be several brands of hammers offering slightly different features, but they all pound nails into wood.

I still enjoy learning new languages, but I don’t do so with such fervent desperation anymore. I’ve ceased my semi-conscious search for the best one. Instead, I finally realized my time is best spent studying algorithms, learning new programming techniques, and contributing to existing projects. This is much more rewarding than implementing the same software in twenty-three languages.

P.S. This post is a follow up to Consumerism and Programming Polyglots. I wrote Consumerism and Programming Polyglots a while ago. When I reread it today, I was very dissatisfied. It hinted at what I wanted to say, but it was inarticulate — mostly because I didn’t understand what mistake I was making by learning languages promiscuously. I think I get it now. Six month from now, I’m sure I’ll identify an entirely new aspect of my miseducation.

P.P.S. I wrote the title down, remembering someone had said it to me once when critiquing another post, Back to PHP. I searched my email before publishing this post and discovered it was Zed Shaw. This was disheartening. It took me several months since my original post to come to a conclusion that was accurately summed up by his flippant response: “All this fetishizing of technology is kind of pointless.”