Archive for the ‘Uncategorized’ Category

Apply Standards Consistently

In Surely You’re Joking, Mr. Feynman!, which, by the way, is a wonderful read, Richard Feynman explains how the famous gambler Nick the Greek was able to win at casinos. Knowing that casino odds are always in the house’s favor, Nick would instead make side bets with other players. It’s good life advice to avoid […]

Do Not Treat Quality as a Separate Activity

If there is only one thing to know about software quality, it is this: do not separate your efforts into shipping features and improving quality. Code that is resilient to future changes has certain properties: it is easy to understand it has effective test coverage its interfaces have been intentionally designed to deal with expected […]

Manage Causes, Not Effects

It’s practically a tautology: to produce the desired effects, the causes of those effects must be in place. Yet it can be easy to spend less time ensuring that the causes of quality are nurtured and more time reacting to the inevitable negative consequences of poorly-crafted code. Causes and effects are often separated by much […]

Wyatt’s Rules of Software Quality

I’ve been crafting software for a while now so I’ve had the opportunity to see about a dozen software companies from the inside. Over the years I’ve learned some things about managing software quality that I’d like to share. I’ve distilled them into four simple rules: Define quality Manage causes, not effects Do not treat […]

What, Exactly, Is a RESTful Resource?

I was recently looking on the web for a very clear description of what a RESTful resource is. Clear and accurate definitions were few and far between, so I decided I’d write one. What Is a Resource? A resource is: a noun that is unique and can be represented as data and has at least […]

Stop Using Single Point Estimates

Estimating how long it will take to develop software is difficult. Fortunately, as an industry we’ve moved away from big-planning-up-front, exhaustive Gantt charts and toward a more agile approach. Unfortunately, we’ve stuck with single point estimates which have some significant disadvantages when compared to range estimates.

Are You a Good Programmer?

If someone asks you to recommend a good programmer, who comes to mind? Do you consider yourself a good programmer? What criteria do you use to judge?

Please Steal My Startup Idea

Every restaurant menu item in the world is searchable by its ingredients.

The Two-Envelope Paradox

You just finished some yard work for your eccentric neighbor, Mr. Grimes. He prepares some lemonade for you while you rest at his kitchen table.

“Thank you for your help today,” he says as he places two envelopes on the table in front of you. “Both envelopes contain money. Pick one and you can keep the money inside.” As you reach for one of the envelopes he adds, “One envelope has exactly twice the amount of money as the other.”

You pick one of the envelopes and open it. Inside you find a $20 bill. You are about to pocket the money when Mr. Grimes interjects, “I’ll give you a chance to switch envelopes if you’d like.”

Should you switch envelopes?

Streamlining Your Workflow with AppleScript

When developing web applications, I frequently switch between iTerm, TextMate, my browser, and my mail client. So I used AppleScript to streamline my task-switching. I’ll show you how I did this in case you’re inspired to streamline your workflow, too.