Tuesday, 26 April 2016

Book review - Don't Make Me Think

If you do a Google search for “best web design books” you will find “Don’t Make Me Think, A Common Sense Approach to Web Usability” by Steve Krug. It’s been on my reading list for a long time. While I’m not a web designer I do build web pages occasionally so it’s good to have some appreciation of the wizardry that is web design. Fortunately Don’t Make Me Think is very easy to read and very concise. I highly recommend it.

What stuck with me the most were the chapters on usability testing. In particular the point that focus groups are not the same thing as usability testing. To quote UX Myths:

Focus groups assess what users say: a number of people gather in order to discuss their feelings, attitudes and thoughts on a given topic to reveal their motivations and preferences.

Usability testing, on the other hand, is about observing how people actually use a product, by assigning key tasks to users and analyzing their performance and experience.

This stuck with me because recently I worked on a project that introduced some significant changes to a web site registration page. I was concerned that some of the elements we changed were not as easy to understand as they were previously. But we had done many many rounds of focus testing which gave me some confidence. However now I understand the distinction between focus testing and usability testing I’m not so confident. In future I will suggest using both forms of testing.

Don't make me think

I read the second edition which is from 2005. I believe all the content is still relevant but I suggest reading the latest edition if you can.

Saturday, 19 December 2015

On side projects...again

Recently I stumbled across an interesting Stack Overflow question:

I don’t program in my spare time. Does that make me a bad developer?

The answer with the most up votes was from a user called red-dirt who makes a number of excellent points. One interesting point in particular is that a professional musician will practice a maximum of six hours day, so spending eight hours a day developing software should be plenty. This point makes sense to me. If you spend a long time doing something you should get better at it, right? By my calculations if you spend five to six years developing software you will hit the theoretical 10,000 hour mark required to become expert at something. But here’s my problem, most software developers with five to six years experience aren’t experts. I have more years experience that this and I don’t consider myself anywhere near an expert. The point I am trying to make is, while I absolutely do not think it makes you a bad software developer if you don’t program in your spare time, in my experience the best software developers I’ve worked with are the ones who have programmed in their spare time. Ultimately, I still think side projects are important.

Why aren’t all software developers experts?

So why aren’t all software developers experts? I have a few theories.

I suspect a big problem is attitude. Some developers don’t love their jobs and simply aren’t interested in learning. They are happy to repeat a single year of experience over and over.

Sometimes the work an employer gives you isn’t very interesting or challenging. Of course with a good attitude you can still learn, or failing that find a new job. But what if that aren’t many great jobs around? I live in the north east of England and while there are a lot of software development jobs, you could hardly compare it to major technology centres like London or San Francisco. There simply aren’t that many great companies to work for near where I live. Or maybe I just haven’t found them.

Perhaps your job is interesting and challenging, but is it interesting and challenging all the time? In my experience this isn’t the case. A significant percentage of work is quite mundane and doesn’t increase your skills. Again, you could argue that a new job would solve this problem, for a period of time at least.

Another problem could be training, on the job and formal. After finishing school I did a computing degree and got a software development job. University was mostly a waste of time and my first job didn’t provide me with a particularly strong set of skills. Don’t get me wrong, I enjoyed my first job and I learnt a lot, but neither the job or my degree made me a good software developer. In hindsight I feel like I stumbled around in the dark for the first four years of my career. Some might say I’m still doing that.

There are several factors that exacerbate the training problem. There is a huge amount to learn, a lot of misinformation and no clear path to becoming a good software developer. It’s not even clear what makes a good software developer! With all these problems I’m not surprised it’s difficult to become an expert in software development.

Conclusion

In conclusion, what I’m saying is that to be a really good software developer I think you need to either:

  1. Be very clever
  2. Land the perfect job with great mentors that consistently challenges you
  3. Supplement your knowledge by putting in hours out of your job

From my experience one and two are in short supply which means the majority of people are left with category three.