Having an undergraduate degree in Computer & Information Technology, I found this topic of class discussion very interesting. I’ve always thought that learning programming has always been a backwards idea. The first day of college you’re in there learning to use HTML and making small websites. That’s well and good, but there is so much to learn about how people use websites, that being able to make a website, but not having that knowledge of how people will use it is close to worthless. Yes they could make you a website, maybe even a nice looking one, but understanding how people really think about interacting with websites should influence the structure and presentation of a website down to the fundamental way information is organized.
I see examples of this all the time from people I know, programmers, who are skilled in writing websites, applications, small software packages, etc. but design them the only way they know how, from the system perspective. When they give their “finished” product to the end user, unless this person happens to have an equal amount of systems architecture background as the programmer, there will be so many usability issues that the product is essentially worthless. With even just a little knowledge of how people interaction with websites, what their mental model is, they can design with the mind in mind (see what I did there?).