Shown here is a snippet of the woot! homepage. I enjoy this little widget particularly because of the way excerpts from the forums are prefixed. The human readability of “[user] would like to know…”, “[user] reports back…”, and “[user] had some troubles with a…” is significant.
Go organic with your Web application’s verbiage, especially in areas where users are likely to be in a hurry. “About two days ago” as a timestamp is wildly more helpful than “53 hours ago” or “2-1-2010 6:00 PM”. While it’s no replacement, widgets and primary listings are great places to use a more natural language.
And tomorrow, when I check my schedule and see my next meeting is in “about 3 hours”, I’ll remember. When I am in a hurry I can throw “[blah blah] 7pm tomorrow” at my calender app and it will just work. It feels comfortable, and it encourages smooth interaction.
Automated Testing
In the spirit of sharing, I’m going to talk a bit about how automated testing has stolen my heart.
I’ve been working with some form of Web development for roughly 7 years now, but have had surprisingly little experience in maintaining a codebase over time. I’ve never liked this fact.
Due to the one-off nature of many freelance projects and personal experiments, there is often little that needs to be maintained or iterated upon after the fact. It’s like a software design utopia; nothing changes. I’ve always been aware of this absurdity and enjoyed it to the fullest, I assure you :)
Now, I work for a company and have a salary and have legacy code to maintain. I also write large amounts of production code, employing nebulous and ever-changing requirements. Sounds more like the software industry, doesn’t it?
This leads me to where I assume many are led: automated testing. I’m learning about unit testing now, but have also touched briefly on integration testing. Most interesting to me so far is the implementation and architecture required to set up test scenarios effectively. Interfaces and DI, oh my! It’s a perfectly well defined example of modular code which feels extremely natural to me.
Coming from a workflow that had me entering data and clicking widgets manually, I actually gain productivity. On top of that, the obvious benefits of overall runtime and structural stability lead to more “confident code”.
Sadly, I still feel resistance from higher-ups regarding unit testing being “too expensive” for small shops, so I am working on compiling citable studies.
Wish me luck :)
Thanks for reading!