Mary Gates Hall, home base my academic career since 2008.

Reflections on a decade of professoring

Amy J. Ko
Bits and Behavior

--

Being a professor is a strange job, partly because it’s so many jobs. Discovery, mentorship, fundraising, teaching, managing, event planning, reviewing, community organizing, technology transfer—every day is different. But in doing all of this work, it’s easy to lose sight of what all of these smaller tasks amount to.

That’s what I love periodic reviews. I know that’s a weird thing to like—who likes to be evaluated every year? But I find it such a helpful way to look all the way back on my career, soberly and personally judge it, and use whatever insights I find to shape my next steps.

This year for my biennial self-evaluation (mandated by our faculty code), I decided to write a retrospective going all the way back to my days in middle school. (Hey, if I have to evaluate, why not dig deep?) Below is what I wrote.

Faculty Self-Review 2018

This is my eleventh academic year as a professor. In some ways, this decade has passed quite quickly. I can still think back to my first month on campus, juggling research and teaching for the first time, and reflecting on my next steps as a scholar. And in other ways, it’s passed quite slowly. My work has spanned so many projects, responsibilities, and people, across so many roles, it’s hard to comprehend how much work I’ve done. And yet I’ve enjoyed (nearly) every moment and can’t wait to do more.

Research

My research career began in 1999, when I first engaged in research as a Freshman in college. Back then, and even now, there was one curiosity that continues to drive my work: how can we help people express their ideas through computation? What’s changed over time has been which people are doing the programming and how I’ve decided to help them.

In the first phase of my career (1998–2008), I was captivated by people who program to get their work done (end-user programmers), such as people using spreadsheets to compute grades or artists writing code to create interactive virtual worlds. My work focused heavily on debugging, which is a hard, disruptive task that causes many end-user programmers to give up. I eventually came to view debugging as a search problem, in which a program executes an unfathomable number of instructions and a programmer tries to find the few that went wrong. This work was a combination of somewhat atheoretical empirical studies that documented why debugging was hard and a series of technical innovations that streamlined this search for defects. This work, which led my formative years as a scholar, was also highly impactful in academia, eventually winning me three most influential paper awards: 1) one for a cognitive theory of how programmers introduce errors into their code, 2) one for a classification of six foundational learning barriers that programmers face when trying to leverage programming platforms, and 3) one for a groundbreaking approach to debugging that involved directly interrogating a program about it’s behavior with “why” questions that were elegantly extracted from the program itself. While I’ll always be fond of this research, and it continues to be the foundation of my academic reputation, in some ways I have always viewed this work as somewhat opportunistic and shallow, failing to lead to a grander theory of debugging, and not engaging with the broader challenges of debugging in practice. Someday I hope to remedy this.

In the second phase of my career (2009–2015), I shifted my focus to professional software developers working in teams. This shift was due partly to interest (I had only dabbled with studying professionals), partly to opportunity (moving to Seattle, a rich jungle of software engineering), and partly to funding (my CAREER grant). This work, which formed the basis of my tenure case, also engaged with bugs in software, but this time with the problem of software teams discovering how software was misbehaving in the world. This included empirical studies of users reporting bugs, how software teams triage bug reports, new tools for reporting and aggregating bug reports, studies of the role of customer support in identifying usability problems occurring in the field, and even studies of how journalists report software failures. This work culminated in co-founding a company with my colleague Jake Wobbrock and Ph.D. student Parmit Chilana, where I had the amazing opportunity to manage a team of engineers and designers, learn to sell software to other companies, and deal with the fascinating challenges of growing a small business. This experience led to a paper analyzing a diary I kept about my three years of startup experiences, which has helped trigger an interest in studying software startups in the software engineering research community. It directly connected me to the vibrant software industry in Seattle. And it also shifted my reputation from one who did rigorous, innovative work to a scholar who takes it into the world.

In the third (and current) phase of my career (2016-present), I shifted my focus from professionals to learners. My second Ph.D. student, Michael Lee, actually triggered this interest, when he came to UW and expressed interests in people learning to code through play. This focus began with Mike’s work on Gidget (helpgidget.org), which led to an NSF Computing Education for the 21st Century grant. Not only did this grant spur a significant thread of research about learning to code online, but it actually introduced me to an unfamiliar community of computing education researchers. I credit NSF program officer Jan Cuny, who has tirelessly built community around computing education research, with helping to persuade me to pivot fully to computing education and help build an evidence base for how people learn and teach computing (in school and out, to both young people and adults). I announced my pivot on my blog, began playing a much more active role in the computing education research community, and after about five years of research in the space, now have a strong reputation in the growing community. My research has begun to develop both theoretical and design foundations for characterizing what knowledge programming requires, including what it means to know a programming language and an API, what it means to know how to code, and how these foundational ideas relate to other popular concepts such as computational thinking and computational literacy. I have also contributed innovative new learning technologies for rapid CS learning, including a way of teaching a programming language’s semantics in just a few hours. In just five short years, my reputation is substantial; I’m an associate editor on a leading journal in the field, I recruit some of the best doctoral students, my work is widely cited and award-winning, and much of the research is already shaping millions of people are learning to code, both in classrooms and online.

Across my career, my research has been recognized as rigorous and impactful. I’ve published over 100 peer- reviewed papers in 20 years, 9 receiving best paper awards and 3 receiving 10-year most influential paper awards. And so my next goals are bigger than publications. I specifically want to shift CS departments and Schools of Education from viewing computing education as a quirky, non-rigorous field of CS to a rigorous, fundamentally important area of discipline-based education research. I plan to do this by doing work that both applies and advances CS, but also applies and advances learning sciences. To do this, I’ve begun collaborating with experts in both, as well as aggressively touring the world, sharing my work with universities who are interested but hesitant to hire in computing education. I’ll know I’ve achieved this goal when my doctoral students are securing tenure-track positions.

Teaching

My career as a teacher actually has much longer history than my research career. I began tutoring in middle school, teaching my peers about math and science, and teaching my mom’s 5th grade students about arithmetic. In high school, I spent all four years tutoring my peers for the SATs, preparing younger students for science and math competitions, and helping middle school students frustrated with math discover its beauty. My proudest accomplishment in high school was teaching my physics teacher how to program with Pascal, so he could create physics simulations for use in our physics classes.

Graduate school, unfortunately, was mostly a break from teaching, aside from the large degree of undergraduate and masters student mentoring I did. Therefore, when I came to UW, I was hungry to teach again, and embrace it not just as a duty, but as an opportunity for innovation and excellence. I inherited the iSchool’s HCI and Design course (INFO 360), bringing a host of active learning methods, and developing a reputation for a patient, encouraging, and passionate mentor. I redesigned our undergraduate capstone, created a new undergraduate software engineering elective, and created one-of-a-kind course on the history and future of user interface software and technology for our MHCI+D students. I eventually developed a reputation around campus a master teacher, mentoring many of my peer and junior faculty about their teaching practices.

On my sabbatical in 2016, as part of my research pivot to computing education, I decided to ground my teaching practices in research, reading hundreds of seminal articles and books on learning and education, but also developing learning materials that explicitly ground my students’ learning in research. This led me to redesign all of my courses using web-accessible, mobile-friendly online textbooks that I have authored myself. These books are now widely cited by my academic peers across the world, shaping their HCI and software engineering courses.

Despite mastering many forms of teaching, I still have much to learn. My most concrete goal in the next three years is learning to teach (and manage) large classes of 150 students or more in ways that continue to be engaging, informative, and impactful to students’ lives. I do not particularly enjoy lecturing for long periods, and so finding ways to minimize it, while still teaching effectively at scale, will pose some fun new challenges.

Service

My service has consisted of all the usual tenure-track service activities, from peer review and program chairing to conference planning and NSF proposal reviewing. I’m regularly invited to participate on my fields’ most prestigious editorial boards and program committees. But the service I am most proud of has been my administration and community building.

I’ve engaged in two administrative roles so far. I’ve chaired our Masters in HCI+Design for one year, negotiating the next five years of resources from the Graduate School, CSE, HCDE, and the iSchool, hiring its excellent director Michael Smith, and securing it a permanent studio space in the former UW Alumni House. After that, I began chairing our undergraduate Informatics program, scaling our admissions process while reducing its implicit bias, developing new partnerships in biomedical and health informatics and data science, and streamlining our internal processes, defining a new vision for our curriculum that is beginning to shape the curricula at other Information Schools, and reflecting these changes on our website.

My second major service effort has been helping to grow the field of computing education research internationally. I have developed a widely used FAQ on the field, which has helped route hundreds of students to doctoral studies in the field. I have written Computing Research Association white papers describing the field. I have attended the CRA Snowbird conference to teach hundreds of CS chairs and deans about the field. I’ve tried to blog weekly about research, practice, and policy issues around computing education. And perhaps most notably, I have positioned myself as the leading expert on CS education in the state of Washington, helping to shape state policy, organize a community of more than 100 CS education champions across K-12, higher education, government, industry, and not-for-profits. This has culminated recently in me being accepted as one of 23 national state leaders across the country, working with the federal government and NSF to inform federal policy. In parallel, I have also have spearheaded many efforts to build the state’s capacity for pre-service teacher education.

My goals in service in the next three years are to continue these state, national, and international efforts. In particularly, I’d like to lobby Washington State to require every high school to offer a computer science class, and help build the infrastructure for staffing those classrooms with excellent CS teachers trained with the best evidence on the teaching and learning of computing, including my own. And in doing so, I’d like to help other states in the U.S. to do the same.

Re-reading my self-evaluation, what’s striking about it is how small everything seems. Every big thing in my professional life that has consumed my professional time, energy, and attention, is inevitably tiny when put in context of time. That’s not to say it’s not important. Think my research is still helping shape how people create (and learn to create) software for the better, and I hope the thousands of students I’ve taught in the past 10 years feel better off having learned from me. And I think I’ve helped the UW iSchool become a better place than it has ever been.

But it’s that smallness of hindsight that motivates me to think and act even bigger. Here’s to another ten years!

--

--

Amy J. Ko
Bits and Behavior

Professor, University of Washington iSchool (she/her). Code, learning, design, justice. Trans, queer, parent, and lover of learning.