UX Book List

I frequently get asked by people (especially devs) if I have books that I can recommend for them to gain some UX skills. So this post is my attempt to save this list somewhere.  It is by no means comprehensive, but these are books that I’ve either read or at least skimmed through.  Hope it helps!

This one is still a classic on the basics of UX, in my book. It has a fair amount of practical advice, too.

Bill Buxton’s classic is another good foundational book for thinking about good design, helping people to understand core aspects of design activities and breaking bad habits.

Luke Wroblewski’s book on Web forms is by far one of the most practical, goodness-packed books on of the most common aspects of Web UX.

Stories are a core way to communicate the real life of people who are not us. They can inform and establish empathy. This book provides good guidance on how to leverage them in UX/Design efforts.

If you’re more of an intellectual type, you might like this one that delves more into some of the intellectual and philosophical underpinnings of interaction design. John Kolko’s style is both approachable and intellectually stimulating.

No such listing would be complete without Donald Norman’s Design of Everyday Things, and also, his Emotional Design. Norman’s work is foundational in the field of UX, and he’s still a well-respected thought leader.

Although there is a newer book by Zaki Warfel on software prototyping, which looks promising, I’ve only skimmed it. I have however read this one by Arnowitz. Both books have a foundational section and then a “with this tool” section, so if you mainly want specific pointers on tools, it might be better to get the newer one. However, for a solid education on software prototyping and practical advice on how/when, I can definitely recommend Arnowitz’s book.BTW, shameless plug: one tool not in either book (cuz it’s not quite released yet!) is Indigo Studio–check it out! 🙂

Back on the intellectual/theoretical track, this book is absolutely amazing in laying down foundational Design principles, and it was written with physical architecture in mind.  This is the theoretical underpinnings of Christopher Alexander’s A Pattern Language, which was the foundation for all of the software design pattern work, including the several books and online resources available for these.

Honestly, I could keep adding books all day. There are a ton of good books out there. These are just a few that have stuck with me over the years, and certainly, if one were to read them and internalize their contents, you couldn’t help not being better about designing for good UX.

That said, there’s no substitute for practice.  And I’d also note, that the practice takes a lot of discipline–even the most erudite designer can lose discipline and start just shooting things off from the hip. Sometimes you have to do this, but it should definitely be the exception, especially for core aspects of whatever you’re designing.

If you want some succinct practices, I suggest my “UX for Devs Manifesto” that has some very direct, concrete principles that I’ve found to be central to the practice of good design, based on my own study, learning from other professionals in the space, and practice.

More Fun with Verizon

My Highspeed Connection is Only 80Mbps/2MbpsThis week has been quite the ride with Verizon. So things were looking up after they resolved the two issues mentioned there.  But then, yesterday, the tech was scheduled for 8-12, and he showed up at around 3-3:30p. Fine, sometimes install jobs go long, but the fella was just flabbergasted. He kept telling me how he didn’t have his phone with him today (I don’t know why exactly, but it seemed really important. He didn’t have the right equipment with him–no big deal, what’s another 30 minutes?

So he got the new router installed, and as he was leaving, he was still telling me about not having his phone.  I was like, okay, well, I hope you have a better day tomorrow.

After he left, I get on speedtest.net and test.  And my upload is a 2mbps.  Now don’t get me wrong, that’s plenty fast for a lot of things. I lived quite happily for years with signifcantly slower; I have even lived, shock, without internet access, even with 14400baud modem connectivity. But I am, after all, paying for high speed, right?  I should get what I’m paying for–it’s the principle!

So I figure, hey, it’s newly installed, maybe the router needs a reboot, so I get on live chat just to find out what the default password is (did not get it from the tech–he was too concerned about his phone; I felt sorry for him). The person told me the password, and I was in.  Good, that was easy. He didn’t even ask me to ensure my cables were plugged in or nothing.

After I mentioned the speed issue, he asked if he could help more, and I said well why not.  He wanted to do the Citrix form of remote assistance, and I said okay. I installed it and that was easy enough.

But I watched in horror as the first thing he did was go into Chrome settings and blow away all my history AND COOKIES. Arg! Talk about using a an oliphant to swat a fly! I should have stopped him, but it was like watching an accident–it’s going in slow motion, you can’t move, you can’t tear your eyes away, you just can’t believe it until it’s over.  And frankly, I have no idea why he did that–what bearing would that have on slow upload speeds??

Then he goes to speedtest.net.  Now this is where it got funny.  I was getting about 80/2 (I know.. who’s complaining, right?), and when he started running the test, it was getting like 0.08/0.03. It was painful to watch.  I immediately thought, ah.. this screen sharing software uses Java, and so does the speedtest app, as I recall. Not only that, the screen share app has got to be tying up bandwidth.  So I suggested maybe that’s the case–“yes, of course Mr. Little” comes the reply.  And yet he went to try it again.

At this point, I knew it was hopeless, so I quickly thanked him for his help and said I’d try a few more troubleshooting steps on my own and get back if I can’t resolve it.

Well, I did some tests, rebooted the router, plugged in, yadda yadda yadda.  It is not my side, at least not anything I can fix.  So I get back on chat, and after going through the gauntlet of convincing the rep I’d tried all the usual stuff (he was ready to email me some troubleshooting steps–I was like, what??), he tells me that “you placed the order today, it will take some time to go through.”

I said, “nooo, I placed the order on Tuesday. They scheduled to have the tech come out today, that’s how I have the newly installed router I mentioned that the Verizon tech installed today.”


“Mr. Little, I see that you are on a 25/25 plan.”

“What?? No, I just upgraded. The guy was here today, really.”


“Mr. Little, I am looking into some information for you.”

“Mr. Little, I see that the order needs to be closed by the tech.”

“What does that even mean–‘closed by the tech’?? The guy left three hours ago. How do we get a hold of him to get him to close it?”


“Mr. Little, I am looking into some information for you.”

“Mr. Little, I have spoken with my Network Team. Please right-click on My Computer and click on Properties…”

“Wait, remember I told you I’m on a Mac? What information do you need?”

“Can you confirm your NIC is a gigabit NIC?”

Seriously. You think it’s my NIC, I thought?  Riight..

I assured him this is a late model MacBook Pro, that it isn’t my hardware.  Still, he asked if I had another computer.  I said, “Yes, but none of them are anywhere near as up to date.”  He replies, literally, “Just run the test on the other computer.”

Well fine, if that’s the way you’re gonna be! 🙂 I grab my wife’s old netbook, update Java, and ten minutes later, confirm that no, she is having the same problem. I even go to the trouble to confirm by plugging it in that it’s not its wireless, in case that’s the next question.

After all this, you know what the resolution is?  To send a tech out to my place again. His “Network Team” is telling him that something isn’t “switched to ethernet,” whatever that means. I can only assume there is some Verizon-can-access-only switch that needs flipping or something to enable the switch to the higher speed network. Why didn’t the tech who was just there do that? Anyone’s guess.

So now I have another tech coming out. At least it is Saturday, so I’ll be home anyways, given who knows when they might actually decide to show. 8-12p my big toe.

I keep saying, we techies should get some kind of guild card where we can provide our number and get past the first two levels of desktop support and just talk to someone who knows as much or more than we do about this stuff.

By the way, to be fair, I’m ranting on Verizon only because they have the best internet connections available–no other real players out there in terms of connectivity. I don’t imagine for a second that Comcast/Xfinity’s support is any better. Still, I mean.. really?!? 

UPDATE (20 August 2012): So the techs came out Saturday. One of them was the same fella who came out on Thursday. He was very apologetic. Apparently the phone he kept mentioning is what tells him all needs to be done, so his not having it meant he wasn’t clear on what needed to be done.  He said their printouts are crap. 🙂

Anyways, they had to run Ethernet from the ONT (their box in the basement) to the router to fix the problem (and who knows if they flipped some switches in the meantime).  Anyways, it’s all good now. Amazing speeds for the price!

Verizon Support & Sales – A Mixed Bag

I don’t seem to have good luck with Verizon’s self-service.  Back in April this year, I started getting notified that my contract (for Fios) was expiring, inviting me to come online and look at options.  I followed this, and here’s what I saw.

First, I see this waiting message:

Verizon Loading Message

And after a second or two, I get redirected to this:

Verizon Error Message

The URL in the browser is https://www22.verizon.com/FORYOURHOME/GOFLOW/Common/LocalBusinessOfficeSR.aspx?Message=BTNNQ-CSR.

Now, having been a Web developer for some years, I tried all the normal stuff that I could do on the client–different browsers, clearing cookies, restarting–all to no avail. It is pretty clearly a server-side error.

So I finally caved and reached out to Verizon support (email). Their initial response was basically “why don’t you call in?”  Well, because I like to see the options in black and white in front of me.  And ironically, when I later was talking to a rep, she suggested that I don’t have to make up my mind now–I could go online and see the same options. 🙂

After this, I reached out to the (apparently) only capable folks on frontline Verizon Support, @VerizonSupport. They’ve gotten me out of jams a couple times, when dealing with the regular support folks doesn’t help. And they effectively did help, even if it took a few days.  They got the case to the dev team quickly, and it was resolved in a reasonable amount of time. Great!

Problem solved!?  Well, temporarily, it seems. The other day I saw the ad for “Quantum,” which is the new insanely speedtacular options for Fios.  So I thought I’ll go check those out, and I had deja vu–the same process, same error above.

I reached out to @VerizonSupport (via DM–we’re old pals now), and they’re looking into it.  Will update this post with the result of that (actually I’m posting in part to help them–so they can see the error exactly and pass it on)..

Resolved! 14 Aug 2012: Yesterday I could successfully log in and look at my options.  That did not, in my case, solve it for me, as the online tool wouldn’t let me switch to a no-TV option, but hey, the bug was fixed in short order!

Diversion – Interesting Sales Antics Vol. 1

So I was a little impatient to learn about my high speed options. I’ve also more or less decided (with wifey’s support) to ditch “cable” TV and just go straight internets. This happily coincided with the new speed offerings, so I called into 1-800-VERIZON to ask what my options are. The helpful rep gave me some prices and bundling options–of course, it seems like a better deal to keep Fios TV.  For just $N more, you get a BAGILLION HD channels.  Yeah, well, the thing is, I just don’t use all those BAGILLION channels, and I won’t.  And it’s just more stuff…

Anyhow, I said thanks and that I’d think about the options.  I called back later (this was Saturday), and I talked to a nice fella who was eager to help me change from a TV+Internet bundle to a, get this, more expensive internet only bundle. Can you guess what he said to me?

“I see that you signed up not long ago for a 2-year contract for the TV+Internet bundle. Unfortunately, when I try to remove the TV, it tells me an early termination fee will be incurred ($200+). I can’t seem to get an override…”

What? You mean to tell me that I’m offering to extend my 2-year contract to a more expensive internet only option, and you want to charge me an “early termination” fee?

I don’t blame the rep; it is, of course, “the system’s” fault. But how bass ackwards is that?  I’m currently awaiting his supervisor to get back to me as to whether or not they can override the fee.  Of course, I can keep my TV and upgrade the internet part (which is half the speed and $10 more) no problem.  *sigh*

Resolved! 14 Aug 2012: The supervisor who supposedly was going to call me back didn’t, so I called in again yesterday. The rep I spoke to there had me straightened out in less than 10 minutes. No early termination fee; the plan I asked for. Easy as pie.

The Moral

This isn’t a complete rant. I’ve been a customer on and off with Verizon for at least nine years. In fact, I worked as a consultant for them in Tampa back in 2003 (about the same time I first signed up with them 😉 ). It’s a huge company, with millions of customers, tons of legacy technology. I worked on middle tier services to get the front to talk to the back in a more friendly way.  I’m not going to pretend getting a pondering beast like that to get all the bits and pieces working together in lock step is easy.  So I am somewhat sympathetic.  That said…

I will say that as a software UX and dev professional, this experience leaves a lot wanting. I understand getting unexpected errors, but they really should have a big “get help with this” button on the page, that will start an online support case for me, sending them all the contextual error info they need to resolve it. I mean, I’m online. You have online support. Ne’er the twain shall meet?  You tell me to call?  Really?!?  (What is the “Local Business Office” anyways? You gave me a generic 800 number to call, not the local office.)  And the fact that it was supposedly fixed and showed up again with the same subpar experience…

When people get errors is the time when they’re most frustrated, and so you want to handle that very carefully and smoothly–make getting a resolution as fluid and easy as possible.  Don’t just punt and say “call us!”  Especially for folks who are already online–the context is there, just connect the dots for them.  This could have been an opportunity for Verizon to wow me (and others who are undoubtedly running into it) with how smoothly they deal with failure.  Instead, I get passed around, asking me to do extra work and effort to resolve it. Not good.

And the fact that I get significantly different levels of quality of service from their email support to their Twitter support can’t be good. Twitter is not great for resolving issues–limiting to 140 chars is just not ideal. I can only imagine it’s not ideal for their CS systems to track, either. But if we customers are taught we get better service that way, well, guess who we’ll go to when I need help?

As for the sales thing, I expect them to skip the fee; it’s just a tad wonky that it came up in the first place. I’m sure there’s a perfectly good “reason” why “the system” is acting the way it is. But the bottom line is that it’s broken. It’s not as if I’m asking to leave Verizon for another dealer. I just want to change the shape of the bits that are flowing in and out of my house.

Overall, I’d have to give a C in my quality of experience. The Twitter support is a redeeming factor–that team gets an A, especially given how they work around Twitter’s inherent limitations.

Keep working on it, Verizon.

What is the Medium of Interaction Design?

Pinocchio MarionetteOver the years I’ve observed and participated in several discussions about what is the medium of interaction design. Full disclosure: I am not formally educated in Design–I’ve just learned from my own studies, interactions with educated designers, and working with and under designers, so take this for what it’s worth. 😉  But I think a person can reason about these things without necessarily having such a formal education.  See what you think.

The argument goes, as I’ve seen it, that as interaction designers, we are focused on understanding and designing for humans, and to some extent that design (no matter what it is) is rhetorical, in a very generic sense–it communicates something to a person and tries to convince her to do something, be that changing an opinion, acting in a social context in some way, or simply using the thing designed in a certain way (i.e., affordances). Further, the argument goes, interaction design can be applied to all sorts of materials, so we can’t say that one of them is our medium, as clay is the medium of potter or paint of a painter (and so on). The conclusion is, then, that what we design–what our medium is–is human behavior.

The fundamental problem with this is that it  posits the designer in the position of Fate, as if we have some superhuman power to conform other humans to our will, to shape their behavior according to our desires, making us more powerful even than many concepts of God. I suppose this could get heady and philosophical pretty quickly, depending on your view of human free will. But let’s just assume, for the sake of keeping the discussion manageable, that human beings do have free will–that they have the capacity to choose between options of their own free accord and, thus, shape their own behavior.

Yes, that behavior is influenced by all sorts of things. People are not disembodied, purely rational entities who make completely free, autonomous, uninfluenced decisions. We have plenty of psychology research to show this is true, and we have our own experience that we can reflect upon. Yet all of these do not destroy free will–the fact remains that we have the capacity to act contrary to the influences upon us. We can creatively choose paths that were not even presented to us.

Given this, it seems at least a little bit dishonest with ourselves to say that we design behavior.  Let me offer an example that might make us shy away from making this claim. Consider the recent events in Aurora. There is a direct, admitted connection between the offender’s behavior and the behavior presented in a designed medium (film). One might say that the Batman films, and those like it, are designed in such a way as to make acting the villain to be glorious and powerful.

Following the logic above, in reverse, one could then say that maybe the films were designed to influence people to act in that way, and further, that if behavior is the medium of design, that the offender’s behavior was designed by the filmmakers (ergo, it is the designers of the films, not the individuals acting, who are responsible for the tragedy). But I doubt many of us would admit this. We can argue that such films influence people to behave in certain ways (and that maybe they shouldn’t), but to say that they designed the behavior of the villain of Aurora is, surely, going too far.  Thus, we see that the claim that we designers design behavior is fundamentally flawed.  If people are not free to act of their own accord, they cannot be held responsible for their actions.

So, then, what is the medium of design and, specifically, interaction design–it is whatever materials that we do have control over, to shape according to our vision and will. For most interaction designers, this is software–the application behavior and the interfaces presented to people. Do we use these to influence behavior? Absolutely. When we design, we have certain human desires and behaviors in mind, and we either try to accomodate them or instruct them in order to effectively engage with the software. We could be a little more precise, even, and say it is only the artifacts that the designer herself creates (usually designers are not the ones actually developing the software itself).  In that sense, the media we design are varied, depending on the needs of the team, the app, and our own familiarity with the tools of interaction design. Concretely, the media are things like personas, storyboards, wireframes, interactive prototypes, and other artifacts used to discover and communicate the design of the software.

So let’s stop fooling ourselves into thinking that we are actually designing human behavior. It’s kind of arrogant and presumptuous to say so, when you really think about it. Let’s keep it real. Yes, we are on a mission to (hopefully) better humankind through what we design–the digital and analog worlds are increasingly merging. Yes, we want to influence behavior to greater or lesser degrees (depending on the context), but in the end, what we design is the interface and behavior of software (more generally, some digitally-integrated artifact).