|
|
|
|
|
|
Associate Professor
and Chair Department of
Informatics Email: redmiles [at] ics [dot] uci [dot] edu Detailed Contact
Information (including Courier) |
|
|
|
Computer science is the study of structures and processes. Software Engineering applies that study to the activity of developing computing systems. This activity involves people, tools, methods, conventions, rules of thumb, objectives, languages, and much more. This activity is always a collaborative activity because computing systems are developed in and for a context provided by a community. Thus, it is essential to understand the human dimension in this study. Human-computer interaction is a research field that extends the study of structures and processes to human cognitive abilities especially those involved in using computing systems. Computer-supported cooperative work, broadly construed, is the study of how computers aid people’s working together and how social and organizational phenomena affect their objectives. Although the elements of computer science and software engineering are specialized, their study is a terrific starting point for understanding humanity. When I first started programming large systems as a profession, I became interested in software tools, programs that could simplify routine tasks such as tracking variable usage over many modules. I also developed libraries of components to support complex data representations and to support the easy and consistent implementation of command-line and graphical user interfaces. I used all these to develop an application for metallurgists. However, when I visited the end users of my software system, I learned how far apart software developers’ intentions could be from end users’ understanding of their work and how both could be different from the system’s requirements articulated by domain experts. It was a jolting lesson in human, collaborative activity. The
themes from early in my career emerged repeatedly in my research. In my PhD
dissertation, I focused on a software tool that could support developers’
understanding of component libraries based on examples and multi-media
explanations. In my post-doctoral work my colleagues and I studied how
developers and end-users collaborate, especially focusing on the problem of
mismatched expectations. After coming to The above work ranges from mechanical issues of tool implementation, to cognitive issues of individual end users, and to social and organizational issues of multiple end user collaborations. My group of current PhD students and I continue to work on these themes especially event-based software infrastructures, collaborative software development, and in general supporting creative human collaboration with computing. A final observation: When I wrote my first program, I realized that computers were highly constrained environments but it seemed as if they could be programmed to achieve any imaginable objective. It was an exciting metaphor for human life constrained within a society. However, I have come to learn that although computers are great enablers for human beings, computers are indeed limited to finite possibilities. Therein lies part of the tension between computers and the real world; it is difficult to craft the finite to function in the infinite (or at least much larger) world of possibilities. Consequently, this tension is the source of challenges to computing and software development and in turn the source of “buggy” behavior in software. Perhaps this limitation applies back to the analogy to human social organization. |
|