Monday, July 6, 2009

Working on the first lesson of my TDD video course

Hi there, allow me to introduce myself, I'm - and I have the pleasure of being - one of the ThinkCode.TV co-founders (together with Antonio and Marco). My area of expertise relates to Agile Software Development in general and Extreme Programming in particular; I consider myself to be a software development "generalist". These days I spend most of my time on code bases written in a mix of Java (mostly), Ruby and JavaScript.

I'm working on one of the screencast series that will be available for our official launch date: A Guide to Test-Driven Development (TDD). For those of you who are not very familiar with the concept, TDD is a powerful engineering practice that's at the core of Extreme Programming. As its name implies, it is a software development discipline in which development is guided by tests, one at the time. Right now I'm in the process of editing and mixing together various content for the first lesson, which will initially be available in Italian and shortly thereafter be released in English. The bulk of it is recording a programming session in Eclipse, which then gets mixed with explanatory “panels” in the form of slides.

Lesson 1 is about TDD's so-called microcycle. This is the cycle of programming activities that comprise the basis of TDD. The emphasis is on rhythm and speed; my intent is to show how a progression of "easy to define" tests can guide the development of an algorithm that could otherwise quickly lead to the usual mess of ifs and loops. To avoid running into this situation, I'll show you how the resulting code can be both clean and concise.

It's worth noting that in this lesson we will only scratch the surface of different TDD aspects. Viewers of this screencast will have to be patient and wait for subsequent lessons in order to tackle other aspects like evolutionary design, dependency injection, mock objects, etc.

I'm really looking forward to releasing this course to the public as soon as we have everything ready for the launch. Stay tuned!

Wednesday, July 1, 2009

Don't make them think

Usability is the art and science of assessing and improving the ease of use of user interfaces. In other words, its primary goal is to detect and eliminate elements that confuse a given user base. It's a field where paying attention to detail is fundamental, and assumptions can be a very dangerous thing. The title of an excellent book on the subject, Don't Make Me Think, clearly summarizes the main idea behind usability.

Our first usability mistake relates to our newsletters. ThinkCode.TV is going to have two catalogs of programming videos, one in English and another in Italian. As such it makes sense to have different newsletters that cater to the two different audiences. It's also safe to assume that the number of Italian hackers who understand English is much higher than the number of non-Italians who speak Italian. Thusly we intend to announce products from the Italian and English catalog within the Italian newsletter, whereas on the other hand, we'll only announce English courses and individual screencasts in the English one. Italian programmers can join the Italian newsletter and non-Italians can join the English one. Makes sense, right?

Initially we'd had a verbose explanation about this on the sign-up forms, but we didn't really like the wall of text it created, so we got rid of it. After all, we'd put "English" and "Italiano" links at the top of the page, and assumed that the majority of Italians would just click on their beloved flag and sign up for our Italian newsletter. That assumption proved to be entirely mistaken.

Yesterday alone we had ten Italian people join our English newsletter, instead of the Italian one. We are talking about hackers here. People who are typically fluent enough to fill out a basic form in English, which meant that most of them didn't bother to click on "Italiano", as they assumed (we're guessing) that both languages would lead them to the same newsletter. No one can blame them. It was a genuine usability mistake on our part.

To partially fix this issue we switched "English" into "English Newsletter" and "Italiano" into "Newletter Italiana". Initial stats from today show a huge improvement (only one person decided to join both). All thanks to a small detail that took five seconds to change. Within our first email campaign we'll mention that Italian speakers should switch to, or at least join, the Italian newsletter as well.

If we wanted to take things one step further we could choose what form to show based on the IP or the language of the user's browser. Even more drastically, we could consider merging the two newsletters together and sending out emails that contain an Italian translation at the bottom. But we'd like to be able to communicate with the two groups independently and we feel that English customers may not want to be exposed to the Italian side of things (after all ThinkCode.TV is a Canadian startup).

The moral of this story is that paying attention to detail and usability, can make a huge difference. And with this little tale, we wish you a very happy Canada day!