I was wondering whether the “design” of web sites and software is anything more than “intermediation” (inserting a layer between the user and the raw data), whether “intermediation” is just a synonym for “information architecture,” and whether “design” must therefore be something greater—something that includes the emotional impact of the experience. Or is that last phrase merely another way to say “user-experience design”?
Apparently, it was a day for wondering, because, next, I thought about the many excellent software developers I’ve worked with, and wondered how they would respond to my apparently pointless musings. Then I wondered: would the opinions of my software-development colleagues be informed by their formal education or their work experience, attendance at conferences, or professional development reading? [For me, as a usability practitioner and CUA, it’s all of the above.]
After this, I wondered how much software developers are formally taught about user-experience design and user-interface design, in school.
A quick online search led me to the course lists, summarised in the table, below, for the different program types offered where I live. I’ve highlighted the two courses that specifically mention interface design. There’s no mention of usability, or of the all-encompassing user experience. There is one program at Capilano College that includes user-experience design, and my own course, Fundamentals of user-interface design, is only offered every two years through one of SFU’s continuing studies programs. Also, I’ve noticed an increase in the proportion of software-development students at monthly Vancouver User-Experience events. So change is in the wind.
What’s the situation in your community of practice?
It seems to me there’s a hole in the bucket, but we can mend it. The answer simple. Go back to your school and ask to sit as an industry representative on the academic-advisory committee. The local chapter of your professional association can help open doors. Once appointed to the committee, participate in a curriculum review. This is a slow, formal, and somewhat political process—but it works. It’s a great way for experienced software developers and interaction designers to improve our communities of practice. And it looks good on a resume.
Bachelor degree, Computer science, Simon Fraser University | Certificate, Software systems development, BC Institute of Technology | Certificate, Software engineering, University of British Columbia |
---|---|---|
CMPT310 Artificial Intelligence Survey. CMPT411 Knowledge Representation. CMPT412 Computational Vision. CMPT413 Computational Linguistics. CMPT414 Model-Based Computer Vision. CMPT417 Intelligent Systems. CMPT418 Computational Cognitive Architecture. CMPT419 Special Topics in Artificial IntelligenceComputer Graphics and Multimedia. CMPT361 Introduction to Computer Graphics. CMPT363 User Interface Design. CMPT365 Multimedia Systems. CMPT368 Introduction to Computer Music Theory and Sound Synthesis. CMPT461 Image Synthesis. CMPT464 Geometric Modeling in Computer Graphics. CMPT466 Animation. CMPT467 Visualization. CMPT469 Special Topics in Computer GraphicsComputing Systems. CMPT300 Operating Systems I. CMPT305 Computer Simulation and Modeling. CMPT371 Data Communications and Networking. CMPT379 Principles of Compiler Design. CMPT401 Operating Systems II. CMPT431 Distributed Systems. CMPT432 Real-time Systems. CMPT433 Embedded Systems. CMPT471 Networking II. CMPT479 Special Topics in Computing Systems. CMPT499 Special Topics in Computer Hardware. CMPT301 Information Systems Management. CMPT354 Database Systems I. CMPT370 Information System Design. CMPT454 Database Systems II. CMPT456 Information Retrieval and Web Search. CMPT459 Special Topics in Database Systems. CMPT470 Web-based Information Systems. CMPT474 Web Systems Architecture. CMPT373 Software Development Methods. CMPT383 Comparative Programming Languages. CMPT384 Symbolic Computing. CMPT473 Software Quality Assurance. CMPT475 Software Engineering II. CMPT477 Introduction to Formal Verification. CMPT480 Foundations of Programming Languages. CMPT481 Functional Programming. CMPT489 Special Topics in Programming Languages. CMPT307 Data Structures and Algorithms. CMPT308 Computability and Complexity. CMPT404 Cryptography and Cryptographic Protocols. CMPT405 Design and Analysis of Computing Algorithms. CMPT406 Computational Geometry. CMPT407 Computational Complexity. CMPT408 Theory of Computer Networks/Communications. CMPT409 Special Topics in Theoretical Computing Science. MACM300 Introduction to Formal Languages and Automata with Applications. |
SSDP1501 Systems Foundations 1. Application development, OOP, C#, Java, fundamentals of programming and program design. SSDP2501 Systems Foundations 2. Web-based applications, architecture, web design, principles, HTML, XHTML, CSS. SSDP3501 Systems Foundations 3. Medium and large-scale applications, dynamic web technologies, project management, relational databases, security issues of web applications. SSDP4001 Specialty Topics. Enterprise-scale applications, ASP.net, advanced Java. SSDP5001 Projects. Practical experience with an internal and external software-development project. |
IE535 Software Teamwork: Taking Ownership for Success. IE520 Introduction to Practical Test Automation. IE523 Agile Development Methodologies. IE527 Applied Practical Test Automation. IE507 Object-Oriented Methods: Object-Oriented Modelling and Development with UML. IE526 Principles and Components of Successful Test Team Management. IE503 Requirements Analysis and Specification: A Practical Approach. IE505 Software and System Testing: Real-World Perspective. IE504 Software Architecture and Iterative Development Process: Managing Risk through Better Architecturd. IE510 Software Configuration Management: Controlling Evolution. IE502 The Software Engineering Process. IE506 Software Project Management. IE509 Software Quality Assurance: More Than Just Testing. IE511 Software Team Project. IE525 Strategic Test Analysis and Effective Test Case Design. IE528 Testing for the Global Market. IE508 User Interface Design: Designing an Effective Software Interface. |