Risk Aversion

On second thought, my questions the other day were not so much about crappy coders as they were about risk aversion. Rephrased in such terms, the questions might read more like:

  1. Does risk exist?
  2. Is risk aversion sufficient for goal acheivement?
  3. Can risk aversion inhibit goal acheivement?

After giving it some more thought, my answers to these questions are yes, depends, and yes.

Let’s start with the first question: does risk exist? Sure it does. There are any number of things that can happen that can prevent somebody from acheiving his goals. He could get hit by a bus, forget to complete some critical step, or overlook an important piece of information. If there was no such thing as risk, neither would there be insurance companies.

As for the second question — is risk aversion sufficient for goal acheivement? — it seems to depend on what is included in the list of risks to be averted. I’d guess that most seasoned developers have had a chance to work on a project that came in on schedule, under budget, and meeting all of the stated requirements, but was a piece of crap — the code was a mess, the interface was clunky, the documentation was incoherent, and the customer hated it. (I can’t say for sure, but I’m guessing Microsoft Bob went something like that).

One could argue that the project managers on such projects simply don’t recognize all the risks. If they would look beyond budget, schedule, and requirements, they would be able to avoid the other problems. The problem with this argument is that there is always the risk of not recognizing a risk. Perfect risk avoidance is impossible.

Practically speaking, though, most major risks can be easily identified and dealt with in some way. I’m sure that’s what the Bob developers believed, too.

On the third question — can risk aversion inhibit goal achievement? — definitely. Examples abound. High school boys don’t approach the girls they like because they fear rejection. Software project managers avoid stick to the most fashionable technologies out of fear that they might have to answer for failure with something other than, “We used industry best practices and technology. I don’t know what might have gone wrong.” And I won’t mow the lawn today because it looks like it might rain.

Are We All Crappy Coders?

I posted this on Joel Spolsky’s weblog, Joel on Software.

In the recent thread that asked where all the crappy coders were going, Simon Lucy wrote:

One of milestones on the Road to Enlightenment in the Zen of Software Development is that one is, to use your colourful adjective, crappy.

Having realised that one deals with all the results of being crappy and ameliorates them to the degree where competence is reached.

Simon’s comment has been churning around in the back of my mind since I read it, but the more I think about, the more lost I seem to get. These are some of the questions that have been nagging me.

1. Is every coder, in fact, a ‘crappy’ coder?

2. By avoiding ‘crappiness’, does someone become a great developer? Or merely competent? That is, is crap-avoidance sufficient for greatness?

3. By limiting one’s potential for crappiness, does one also limit his potential for greatness?

Working the System

I am trying out a new stock trading system that I recently developed. It is hardly original, but it keeps me from trusting my gut, and today I took my first profits.

It is a pretty simple system. A buy under two conditions: 1) the stock price trades above the lower Bollinger line for a whole day after previously being below or crossing it, and 2) the stock price is above the 60-point exponential moving average on a 10-minute chart. I sell under two similar conditions: 1) the stock prices has traded below the upper Bollinger line for a whole day after previously trading above or crossing it, and 2) the stock price has fallen below the 60-point EMA on a 10-minute chart.

I tried the system on SMH this week. I bought at 35.15 on Wednesday and sold today, when the price dropped below the 60-point EMA at 36.75. I might have short changed myself. It looks like there might be some rally left in SMH, but I managed to whittle a 4.5% return out of it. Not bad for less than a week, I’d say.

Foiled by Outlook

I had intended to post a screenshot of an amusing survey that MSN Communities is running. Paul, a co-worker of mine, discovered it today, and sent it around the office attached to an email. I, in turn, forwarded it to my Hotmail account, which I access from home using Outlook Express, but when I got home and downloaded the email, the attachment had disappeared.

I managed to download the attachment from Hotmail, but it was sent as file named “winmail.dat”. A little bit of Googling and I found Fentun to decode it. Fentun finds the attachment, but it is unnamed (and half the size of its encoded version).

I have no idea in what file format the image is stored, so I will wait until tomorrow to post the humourous screenshot.

I guess this is just one of the ways that Microsoft aims to win my trust.

Consequence Free

While I was working out at the Waterloo YMCA, the DJs at Kool FM played the Great Big Sea‘s “Consequence Free“. Of all the songs I’ve ever heard, this is the one that I find most offensive (although Nat King Cole‘s “Pretend” is a pretty close second).

The authors of this song want to live in a world where their actions have no harmful repercussions. They want to say whatever comes to mind, but not have anybody be offended by it. They want to slip off the edge and not have to worry about the fall. They want to live in a world where nothing needs to matter: consequence free.

What rubbish. It is the predictability of the physical laws of nature and their consequences that holds the universe together. We live as consequence of eating and breathing. We learn as a consequence of the reactions to our actions from others. We walk as a consequence of the properties of matter. We achieve as a consequence of our desires. Consequences are what make anything possible.

Without consequences, we would never be sure if what went up would come down. We would not be able count on an attraction between electrons and protons, or any force of nature. We would not be able to count on anything, that is, if we could even be at all. To desire existence without consequence is to desire the destruction of the universe.

I find it disheartening that this song was ever written. That it is so popular is a testament to Russell’s adage: Most people would rather die than think; in fact, they do so.

Election time

This Thursday, the province of Ontario is holding an election and I don’t know who to vote for. There are five parties running my home riding of Kitchener-Waterloo.

The Liberal Party of Ontario appears to be leading the polls. The party and their candidate, Sean Strickland, promise to raise taxes and throw it into education and health care. As I understand it, both of these systems are fundamentally broken. There is no reason to believe that more money will alleviate their problems.

The Ontario PC Party and their candidate Elizabeth Witmer want to ban work-to-rule campaigns and strikes by public school teachers. In an otherwise sensible campaign, this just strikes me as ludicrous. As much as I hate unions, this is just asking for trouble. Nothing good can come from people losing their ability to negotiate with their employers for better work conditions and compensation.

The Ontario NDP Party I can dismiss out-of-hand. They are running on a platform called “publicpower”, that is, everything should be run by the government: public health care, public education, public water, public hydro, government-controlled tuition, government-controlled housing, government-controlled pensions, public transportation, and public child care. No thanks.

The Family Coalition Party is also fielding a candidate in this riding, promising persecution to anybody that doesn’t share their “pro-family values”. Ick.

Then there is the Green Party of Ontario. I went to their website looking for something to criticize. I couldn’t find anything I fundamentally disagreed with. It looks like I’ve found my candidate.

More Moralizing on Open Source Software

Yesterday’s post ended with a question: am I robbing a man if I accept from him what he insists on giving me in exchange or nothing? After a night’s rest, I think I have an answer.

No, I am not robbing him. He has his own motives for giving it away. If I reject what he offers because I think he is robbing himself, I am inposing my moral code on him, and denying him the opportunity live by his own. He has chosen to work for free to his own detriment (as I see it), but his welfare is his own concern, not mine.

If he chooses to offer me his work free-of-charge, the criteria for accepting it should be that of any other transaction: is the value of what he offers worth the price that he is asking? On such a basis, I need only refuse his offer if his work is worthless to me, or I can find more value for my money elsewhere.

So it seems to be alright to use Open Source Software. I can go back to using Vim.