Badass: Making users awesome - Kathy Sierra: Book Review
Date: 2015-03-20 07:30:55

I started reading Kathy Sierra's new book 'http://www.amazon.co.uk/Badass-Making-Awesome-Kathy-Sierra/dp/1491919019/ref=sr_1_1?ie=UTF8&qid=1426809815&sr=8-1&keywords=kathy+sierra[Badass: Making users awesome]' a couple of weeks ago and with the gift of flights to/from Stockholm this week I've got through the rest of it.

I really enjoyed the book and have found myself returning to it almost every day to check up exactly what was said on a particular topic.

There were a few things that I've taken away and have been going on about to anyone who will listen.

image::{{<siteurl>}}/uploads/2015/03/2015-03-20_06-52-51.png[2015 03 20 06 52 51,217]

Paraphrasing, '*help users acquire skills, don't throw knowledge at them*.' I found this advice helpful both in my own learning of new things as well as for thinking how to help users of Neo4j get up and running faster.

Whether we're doing a talk, workshop or online training, the goal isn't to teach the user a bunch of information/facts but rather to help them learn skills which they can use to achieve their '*compelling context*'.

Having said that, it's very easy to fall into the information/facts trap as that type of information is much easier to prepare and present. You don't have to spend much time thinking about how the user is going to use, rather you hope that if you throw enough information at them some of it will stick.

A user's compelling context the problem they're trying to solve regardless of the tools they use to solve it. The repeated example of this is a camera - we don't buy a camera because we want to buy a camera, we buy it because we want to *take great photographs*.

image::{{<siteurl>}}/uploads/2015/03/2015-03-17_23-49-25.png[2015 03 17 23 49 25,238]

There's a really interesting section in the middle of the book which talks about expert performance and skill acquisition and how we can achieve this through deliberate practice.

My main take away here is that we have only mastered a skill if we can achieve 95% reliability in repeating the task within 1-3 45-90 minute sessions.

If we can't achieve this then the typical reaction is to either give up or keep trying to achieve the goal for many more hours. Neither of these is considered a useful approach.

Instead we should realise that if we can't do the skill it's probably because there's a small sub skill that we need to master first. So our next step is to break this skill down into its components, master those and then try the original skill again.

Amy Hoy's 'http://files.alexpcoleman.com/newsletter/2014/04/The%2030x500%20Guide%20to%20Doing%20It%20Backwards.pdf[doing it backwards]' guide is very helpful for doing the skill breakdown as it makes you ask the question '*can I do it tomorrow?*' or is there something else that I need to do (learn) first.

I've been trying to apply this approach to my machine learning adventures which most recently has involved various topic modelling attempts on a How I met your mother data set.

I'd heard good things about the http://mallet.cs.umass.edu/[MALLET] open source library but having never used it before sketched out the goals/skills I wanted to achieve: ~~~text Extract topics for HIMYM corpus \-> Train a topic model with mallet \-> Tweak an existing topic model that uses mallet \-> Run an existing topic model that uses mallet \-> Install mallet ~~~

image::{{<siteurl>}}/uploads/2015/03/2015-03-20_00-11-48.png[2015 03 20 00 11 48,300]

The idea is that you then start from the last action and work your way back up the chain - it should also act as a nice deterrent for http://www.markhneedham.com/blog/2011/12/31/yak-shaving-tracking-the-yak-stack/[yak shaving].

While learning about mallet I came across http://mimno.infosci.cornell.edu/topics.html[several] http://dsl.richmond.edu/dispatch/Topics[more] http://www.perseus.tufts.edu/publications/02-jocch-mimno.pdf[articles] that I should read about topic modelling and while these don't directly contribute to learning a skill I think they will give me good background to help pick up some of the intuition behind topic modelling.

My take away about gaining knowledge on a skill is that when we're getting started we should spend more time gaining practical knowledge rather than only reading but once we get more into it we'll naturally become more curious and do the background reading. I often find myself just reading non stop about things but never completely understanding them because I don't go hands on so this was a good reminder.

One of the next things I'm working on is a similar skill break down for people learning Neo4j and then we'll look to apply this to make our http://www.meetup.com/graphdb-london/[meetup sessions] more effective - should be fun!

The other awesome thing about this book is that I've come away with a bunch of other books to read as well:

* http://www.amazon.co.uk/Cambridge-Expertise-Performance-Handbooks-Psychology/dp/0521600812/ref=sr_1_1?ie=UTF8&qid=1426836426&sr=8-1&keywords=the+cambridge+handbook+of+expertise+and+expert+performance[The Cambridge Handbook of Expertise and Expert Performance]
* http://www.amazon.co.uk/Mindset-How-Fulfil-Your-Potential/dp/1780332009/ref=sr_1_1?ie=UTF8&qid=1426836461&sr=8-1&keywords=mindset[Mindset: How you can fulfil your potential]
* http://www.amazon.co.uk/Power-Habit-Why-What-Change/dp/1847946240/ref=sr_1_1?ie=UTF8&qid=1426836485&sr=8-1&keywords=the+power+of+habit[The power of habit]

In summary, if learning is your thing get yourself a copy of the book and read it over a few times - so many great tips, I've only covered a few.