Here’s the fourth in my series of notes taken from keynotes at CUSEC 2010, the 2010 edition of the Canadian University Software Engineering Conference. These are from Bits of Evidence: What we actually know about software development and why we believe it’s true, a keynote given by my friend Greg Wilson, the computer science prof we all wish we had. He’s also the guy who gave me my shot at my first article for a developer magazine, a review of a couple of Ajax books in Software Development.

This discover probably won the Napoleonic Wars: the British navy was the deciding factor

As a result of this discovery, British sailors planted lime trees at their ports of call and ate the fruit regularly; it’s how the term “limey” got applied to them, and later by association to British people in general

Lung Cancer

It took a long time for medical science to figure out that controlled studies were good

In the 1920s, there was an epidemic of lung cancer, and no one knew the cause

There were a number of new things that had been introduced, so any of them could be blamed – was it cars? Cigarettes? Electricity?

This quote often has the factor changed – I’ve seen 10, 40, 100, or whatever large number pops into the author’s head

Problems with the study:

The study was done in 1968 and was meant to compare batch vs. interactive programming

Does batch programming resemble interactive programming?

None of the programmers had any formal training in computer programming because none existed then

(Although formal training isn’t always necessary – one of the best programmers I know was a rabbinical student, who said that all the arguing over the precise meaning of things is old hat to rabbis: “We’ve been doing this for much longer than you”.)

What definition of “productivity” were they using? How was it measured?

Comparing the best in any class to the worst in the same class exaggerates any effect

Consider comparing the best driver to the worst driver: the worst driver is dead!

Too small a sample size, too short an experimental period: 12 programmers for an afternoon

The next similar “major” study was done with 54 programmers, for “up to an hour”

Here’s the third in my series of notes taken from keynotes at CUSEC 2010, the 2010 edition of the Canadian University Software Engineering Conference. These are from Beautiful Failure, a keynote given by my friend Reg “Raganwald” Braithwaite, who’s forgotten more about combinators than I will ever learn.

With “monkeypatching”, it’s possible for two different modules to implement Enumerable#sum, and then for someone else to import both modules.

In which case, which version of sum will get called? It depends on the load order of the module

But what if these were written as gems? Then there’s trouble

To solve this sort of problem, I decided to steal extension methods from C# and add them to Ruby [Joey’s note: extension methods are a C# feature that let you add methods to an existing class without subclassing]

The morning keynote was by John Armstrong, who presented Erlang, which today is considered an important language for concurrent programming

The afternoon keynotes was Matz, who presented Ruby, one of the most influential dynamic languages that soon after enjoyed a meteoric rise in popularity

Many people in the room, die-hard Lisp-heads, were shouting them down because their languages didn’t have macros [Joey’s note: Macros are a Lisp feature that smug Lisp weenies often use in the never-ending “Why my language is better than your language” argument]

Four Ugly Failure Modes and How to Avoid Them

Confusing correlation with causation

I think it’s one of the most prevalent diseases in the business world

Ruby is not a silver bullet

Was the success of many Ruby projects [such as Rails and Twitter] because of Ruby the language?

Or was it that smart people who could get things done were picking Ruby at a given point in time?

Agile is not a process

It’s a set of values

Here’s how many companies fail:

They start a little consulting company

They enjoy some successes, which leads to more business

As a result, they hire people and the company grows

But they can’t hire smart people faster than the work is coming in

So in order to hire people to meet the demand, they start hiring people who aren’t as smart

That’s when things go downhill

Who here doesn’t think this isn’t standard for any consulting company?

Toronto Agile User Group recruiting process

In our field, "best practices" are cow patties

I’ve gone to many companies where they combine "best practices" simply by smooshing them together

I’ve been to many Toronto Agile User Group meetings where very few attendees work at companies that even practice agile

The important thing is that the people there are attending because interested in finding a better way of doing their work – those are the people you should be hiring!

The plural of "anecdote" is not "data"

Greg Wilson will talk about this in his keynote later today – listen to him!

Problem: Talks are given by narcissists (or masochists)

When you read something in a blog, see something on TV or buy a book, you’re not getting a large enough sample, and the content is biased

Another problem is that history is written by the survivors

People write about really notable successes or failures

Confirmation bias

"Most of you will be immune to this, because you’re all sensible people"

You might fall victim to confirmation bias if you have an overly-inflated (or under-inflated) ego

Here’s the second in my series of notes taken from keynotes at CUSEC 2010, the 2010 edition of the Canadian University Software Engineering Conference. These are from NSFW, a keynote given by my friend Pete Forde, partner at Unspace and one of the bright lights of Toronto’s tech scene.

This is the first of a series of notes that I took while attending CUSEC, the Canadian University Software Engineering Conference, which took place last week in Montreal. CUSEC is the biggest conference held by and for university students interested in software development. True to the Canadian techies punching well above their weight class (a great tradition started by Alexander Graham Bell), CUSEC manages to pull in big-name and up-and-coming speakers who’ve given talks that have outshined those I’ve seen an thousand-dollar-plus conferences.

His presentation, On Weakness, is about his life on the Dark Side and the lessons he gleaned from it. It’s based on his talk, Crimes Against Humanity, Writ Small, which he gave at FutureRuby last year, but it was good to see it again, and its message is probably even more valuable to students. My notes (which I polished for comprehensibility) and photos from his session appear below:

An Evil Job

How many of you are:

Technical, as opposed to business or arts students?

Engineering students?

Programmers?

Evil?

That’s what this talk is about

One way to describe one of my former jobs is doing “Windows hijinks with Scheme”

He hooked up with rising politicians with the same aesthetic sense, one of whom was Hitler

He started with creating buildings, but then became the Nazis’ chief logistics guy

Later, a leader of the U.S. Air Force said that had he been aware of Speer’s involvement as the Nazi’s chief logistics guy, he would’ve dedicated an entire wing of the Air Force exclusively to killing him

It’s been suggested that Speer prolonged the war by a year or two by running the German forces more efficiently

In the prank, the prankster calls a McDonald’s, gets an employee on the line and says “I’m a police officer. We have reason to believe that there is a thief in your restaurant and we need you to take them into the back and hold them until we arrive.”

They provide a description vague enough so that someone in the restaurant will match it

Once coralled in the back, the prankster starts giving orders to torture and/or humiliate the customer, and many employees have complied

So what does this mean?

The human brain has a remote root exploit in 70% of the installed base

"With or without religion, you would have good people doing good things and evil people doing evil things. But for good people to do evil things, that takes religion." — Steven Weinberg

Nope. Just authority.

There is hope: people who were subjects of the Milgram experiments turned out to be better at resisting authoritative coercion

The Power of Communication

Math: "There are only three reasonable numbers: 0, 1 and infinity"

When Robert Andrews Millikan did his oil drop experiments to determine the charge on an electron, he initially got the value wrong by 30 – 40%

People who repeated the experiment or conducted similar experiments with results close to Millikan’s erroneous number published their results

People who did so but got the correct value – which did not match Millikan’s value – didn;t publish, worried that they’d done something wrong, since their numbers didn’t agree with the number published by the authority on the subject

It’s from sword-making – until they figured out the process of making swords as one-piece, with hand-friendly stuff wrapped around the base so you could hold them, swords often flew off their handles in battle

I’m boarding a Porter flight bound for Montreal, where I’ll be attending CUSEC (Canadian University Software Engineering Conference). I’ll be there from today through Saturday afternoon, watching technical presentation, flying the Microsoft banner, hosting DemoCamp and having a beer (or twelve) with my fellow conference-goers. I’ll be posting notes and photos from the presentations and other goings-on, so watch this space!

Microsoft was a sponsor of CUSEC last year – that’s Canadian University Software Engineering Conference, the premier conference on building software aimed specifically at students. One of the perks of sponsorship was a “corporate speaker” slot, and it was decided that the presentation should be given it to the then-new guy…namely, me.

At the time I got slotted in as the speaker, I’d barely been a Microsoft employee for two months and was still feeling my way around both the company and its technology. By the time I would stand on the podium, I would have just passed my three-month probationary period. If I was going give a talk for forty-five minutes, it would have to be something other than “what it’s like to work at The Empire”.

The presentation was scheduled for the end of Day 2 (it’s a three-day conference), which is a challenge. The audience would be tired and being students, they were likely to be more focused on the big drinkfest that would take place that evening. I decided to go for “offbeat” and built my presentation around the abstract I gave to them, which was:

You’ll spend anywhere from a third to half (or more) of your waking life at work, so why not enjoy it? That’s the philosophy of Microsoft Developer Evangelist Joey deVilla, who’s had fun while paying the rent. He’ll talk about his career path, which includes coding in cafes, getting hired through your blog, learning Python at Burning Man, messy office romances, go-go dancing, leading an office coup against his manager, interviewing at a porn company and using his accordion to make a Microsoft Vice President run away in fear. There will be stories, career advice and yes, a rock and roll accordion number or two.

They recorded my session and unleashed it on the world yesterday. I share it with you below:

If you watched the video, you’ll note that I skipped a couple of stories, namely “learning Python at Burning Man”, “messy office romances”, “go-go dancing” and making a Microsoft Vice President run away in fear. I’ll save those for another presentation. (By the bye, the guy I made run away is a President now.)

I had a blast doing this presentation, and the general consensus of the attendees was that it was one of the highlights of the conference. I’m honoured that I was invited back to host DemoCamp, and look forward to chatting with everyone. See you in Montreal!