Although I teach very introductory programming classes where the focus is on the basics of how to program, I try as much as I can to share with students other issues that will be useful to them as they mature as programmers. We talk about object-oriented design as much as is possible with the limited knowledge they (and, let’s be frank, I) have. I discuss the importance of debugging and being willing to ditch a program that is poorly structured, even though most of their programs are too small to require such things. And perhaps most importantly I try to discuss how their choices as programmers make using the software they write either much better or much worse. Again, it’s hard to seriously address user interfaces in the classes I teach, but I think making them aware of it is crucial.

It always helps to have examples of poor interfaces, and I’m sorry to say that the systems we have to use at DePaul too often deliver in this regard. Most recently we had to switch from an internally-developed college advising system to a university-wide system. There are many things to hate about the university advising system, but let me just pick two from today:

  1. When I have a student listed on a page and click on a link to see their degree progress I have to re-enter their ID number. This is despite the previous page listing their ID number and the page being dedicated to them.
  2. When making an appointment with a prospective student, I have to know their home zip code to make the appointment. Seriously.
I miss the system my home college had so much. As in, I miss it literally every day. On the other hand, this system will provide me with endless examples of how user-interface designs can make what is otherwise a useful system feel horrible to use. I suppose that makes for many future teachable moments.