Building usable software is hard work. Writing software is an entirely different experience from using software just as cooking is not the same as eating, or writing music differs from listening to music. But, as software developers, we have to experience both. A cook has to taste his own food; A musician has to listen to his own music.
If you’re like me, it gets harder to test out your software later in the day. By late afternoon, I’ve become too close to the software. My perception of what makes sense or feels right is completely biased. Should this feature be here or here? Should we move this function to another screen? Will this make sense? Is this latest tweak really that important? At 5pm, my answers are usually wrong.
However, at 9am, fresh out of bed, tea in hand and window blinds opened, I usually can answer these questions better. I’ve made it a habit to test software early in the day. Before I do any new programming or design, this is the best time to give your software the once-over. In the morning, I’m a good user for my own piece of software.
I haven’t been looking at the same thing for 8 hours
First, I’ve had several hours of not looking at it. It really makes a huge difference. The version of me the night before, having stared tiredly at the same colors and fonts for 8 hours, is gone. I usually find that whatever I hated last night looks fine again. Or, I find it easier to pinpoint what’s wrong.
Not obsessing over the programming nuances
Since I’ve written the software, I know how it works – rather intimately. But, the morning makes me forget some of the copious details of code I may have obsessed about the night before. I’m no longer pre-occupied with the slightly inelegant implementation that made something work. My mind is totally devoted to what I see in front of me rather than thinking about what’s happening underneath.
Seeing the big picture…again
When I test in the morning, I always start from the beginning. I don’t dig into a particular section. I just experience it again. The night before, I may have been working on a piece of functionality that a real user may only use once or twice…or never. In the morning, I focus on the things most people will use most of the time. It’s a much better way to focus on the priorities of your software and focus on what needs fixing first.
Testing your software in the morning, before you open up any IDE or look at any bit of code, is a good way to make sure you’re still making good software.