Specifying Performance

When you design a software product or feature you need to consider not only what the software will do, but also how it will interact with the user. The functional requirements for the software typically refer to what the software does. Nonfunctional requirements clarify the parameters for how the software will meet the functional requirements. […]

The Hard Way is the Easy Way

“As a general rule, in prosperous societies we have been outsourcing more and more of the work that, a generation ago, was done “internally” in the home. It sounds almost quaint by comparison to life now, but in the modest neighborhood in which I grew up, there was a lot of work going on in […]

Software That Can’t Fail

I started working at Microsoft when I was 18 years old. It paid better than the landscaping job I was enjoying at the time. I didn’t know much about writing code, but I was fairly proficient with computers and wanted to learn more. There seemed to be a real opportunity to help make some great […]


Especially with a code base that is mature, assumptions correctly made years ago can be terribly difficult to deal with later when the current and new assumptions reign. Writing code that lasts even 5 years and “is robust” is what everyone wants to do for sure, but the recipe for doing just that is not […]

Metacognitive Miscalibration

A few tweets ago, (I always feel weird referring to Twitter in the past tense) I posted: Why are the unintelligent or uninformed so arrogantly confident while the intelligent and well informed so often unsure and apprehensive? There is something very human to thinking you know more than you really do about a subject or […]


Here’s a blast from the past. As Xcode continues to improve as the default IDE on the Mac and for the iPhone, the majority of Apple’s current developers don’t even how CodeWarrior saved Apple. With the release of the iPhone SDK, I think it’s not far fetched to imagine Apple’s WWDC attendance tripling. Someone sent […]

Heuristically Thinking

You don’t have to understand calculus to appreciate this entertaining story: A teacher, trying to explain what a theory is, asked this question: “If you take a letter half the distance to a mailbox and stop, then start over going half the remaining distance and stop, then repeat the process over and over, theoretically will […]