As a follow up to the previous article, I took a record number of girls to the U of M Computer Science day this year. One of my grade 12 I.B. Computer Science girls Bailey Smith made arrangements with the U of M Students Association to get U of M Computer Science sweatshirts for all the girls to support women in computer Science. I was thrilled and am so thankful to Bailey in her dedication to Computer Science and being a fantastic student the last three years!
This past Friday (May 25th) marked the 10 year anniversary of the University of Manitoba Department of Computer Science High School day. It was 10 years ago when a then starting instructor contacted me to attend a (then) afternoon programming competition. Ten years later, it has turned into an entire day with schools from all around the province attending, we started a chapter of the Computer Science Teachers association together (see our page here), and that instructor is now the dean of the department. It has been an invaluable 10 years of relationships between myself and the university that has made me a better Computer Science teacher. I have seen students I have brought to this event over the last ten years continue on to the department of Computer Science at the U of M and get bachelor’s degrees and masters degrees in Computer Science. A few of my students have even gone on to be instructors at the faculty. Past posts of this event can be seen here, here, and here.
The user interface (UI) vs the user’s experience (UX) is a very modern “debate” in Computer Science. This can also be summarized as the tension between usability and composability, between software that is user-friendly and software that is programmer-friendly (see this talk by Conal Elliott from Google). Consumers like software that’s easy to use. But programmers like software that’s easy to compose, i.e. to combine in unanticipated ways. Users want applications; programmers want libraries. Users like GUIs; programmers like APIs. It’s not immediately obvious that usability and composability are in tension. Why can’t you make users and programmers happy? You may be able to make some initial improvements that please both communities, but at some point their interests diverge. Looking at it another way, we can look at “operation versus expression” to express the same idea of usability versus composability (see this article by Vivek Haldar). Combining these ideas, we have these contrasts.
|Visual / GUI||Syntactic / CLI|
|Externalize knowledge||Internalize knowledge|
Neither column is necessarily better. Sometimes you want to be in the left column, sometimes in the right. Sometimes you want a stereo and sometimes you want a guitar.
When I file my taxes, I want the software to be as easy to use as possible right now. There’s no long-term use to consider since I’m not going to use it again for a year, so I’ll have forgotten anything peculiar about the software by the time I open it again. But when I’m writing software, I have a different set of values. I don’t mind internalizing some knowledge of how my tools work in exchange for long-term ease of use. Read the original article here