Philip Guo (Phil Guo, Philip J. Guo, Philip Jia Guo, pgbovine)

Conversational Programmers: The Trilogy

research paper summary
Perceptions of Non-CS Majors in Intro Programming: The Rise of the Conversational Programmer. Parmit K. Chilana, Celena Alcock, Shruti Dembla, Anson Ho, Ada Hurst, Brett Armstrong, Philip J. Guo. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2015. [Abstract]
Understanding Conversational Programmers: A Perspective from the Software Industry. Parmit K. Chilana, Rishabh Singh, Philip J. Guo. ACM Conference on Human Factors in Computing Systems (CHI), 2016. [Abstract]
Mismatch of Expectations: How Modern Learning Resources Fail Conversational Programmers. April Y. Wang, Ryan Mitts, Philip J. Guo, Parmit K. Chilana. ACM Conference on Human Factors in Computing Systems (CHI), 2018. [Abstract]
(Honorable Mention Paper Award)

People who want to become professional software developers are learning to code. That seems obvious. People such as scientists and designers who want to use programming to assist their main work (called end-user programmers) are also learning to code. Makes sense. People who don't need to write any code in their jobs are now also learning to code. Huh? Why?

Why do non-computer-science majors learn to code?

Back in 2014 when we both just began our careers as assistant professors, Parmit Chilana (now at Simon Fraser University) noticed that many students in management engineering, a popular interdisciplinary major at the University of Waterloo, wanted to learn programming. Given that most weren't on the typical career track to become software developers, she wanted to understand their motivations for learning to code. She recruited my help in designing a case study of an introductory programming course to gauge students' motivations, goals, and perceptions of programming. That seed of an idea sparked a four-year remote collaboration that culminated in a trilogy of research papers. Here's what we discovered from that initial investigation.

We studied 75 first-year management engineering students in an introductory programming course using surveys, interviews, and observations in school computer labs. We learned that roughly half of them saw programming as a tool for improving their technical communication skills and marketability for a variety of jobs that don't actually require them to write any code. The majority (93%) wanted to pursue careers that don't require programming, such as becoming project managers, business executives, entrepreneurs, or management consultants. Yet most (~73%) still wanted to take additional programming courses beyond the required introductory one since they felt like it might be relevant for their future careers.

This perception intrigued us, so we coined a term called conversational programmer to describe these students who wanted to learn programming not to become programmers themselves but rather to facilitate technical conversations with programmers. One student summed up this sentiment well: “If we do anything [in] management we don't want to be standing there talking to someone not having a clue what they're talking about ... I couldn't do your [software development] job but when you're talking to me I [want to] know what you're saying.”

Check out this paper for more details:

Perceptions of Non-CS Majors in Intro Programming: The Rise of the Conversational Programmer. Parmit K. Chilana, Celena Alcock, Shruti Dembla, Anson Ho, Ada Hurst, Brett Armstrong, Philip J. Guo. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2015.
Despite the enthusiasm and initiatives for making programming accessible to students outside Computer Science (CS), unfortunately, there are still many unanswered questions about how we should be teaching programming to engineers, scientists, artists or other non-CS majors. We present an in-depth case study of first-year management engineering students enrolled in a required introductory programming course at a large North American university. Based on an inductive analysis of one-on-one interviews, surveys, and weekly observations, we provide insights into students' motivations, career goals, perceptions of programming, and reactions to the Java and Processing languages. One of our key findings is that between the traditional classification of non-programmers vs. programmers, there exists a category of conversational programmers who do not necessarily want to be professional programmers or even end-user programmers, but want to learn programming so that they can speak in the "programmer's language" and improve their perceived job marketability in the software industry.
@inproceedings{ChilanaVLHCC2015,
  author={Chilana, Parmit K. and Alcock, Celena and Dembla, Shruti and Ho, Anson and Hurst, Ada and Armstrong, Brett and Guo, Philip J.},
  title={Perceptions of non-CS majors in intro programming: The rise of the conversational programmer},
  booktitle = {Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)},
  series = {VL/HCC '15},
  year={2015},
  pages={251-259},
  doi={10.1109/VLHCC.2015.7357193},
  month={Oct}
}

Do conversational programmers exist out in the world?

We were excited by our discovery of conversational programmers in a school setting, so we then wanted to discover to what extent they actually exist out in the professional workforce. To find out, we deployed a survey at a large multinational software company to try to find conversational programmers and understand how and why they were learning programming. We received 3,151 responses from people in diverse roles throughout the company who were both not computer science majors and who rarely/never wrote code in their jobs. Our respondents came from over 40 different college majors ranging from business to psychology to communications.

In particular, 30% of respondents mentioned improving technical conversations as their motivation for learning to code, and 23% mentioned improving their marketability even for non-programming jobs. This means that half of these respondents, who come from a large and diverse survey sample, fit our definition of being conversational programmers.

The other half of our respondents mostly wanted to learn to code in order to analyze data or to build prototypes, which is unsurprising for those in roles such as user experience (UX) or product management (PM). However, oftentimes the end goal of these activities was to use data or prototypes to hold more informed conversations with programmers. In other words, even the programming that they end up doing is ultimately in the service of facilitating conversations with others.

Check out this paper for more details:

Understanding Conversational Programmers: A Perspective from the Software Industry. Parmit K. Chilana, Rishabh Singh, Philip J. Guo. ACM Conference on Human Factors in Computing Systems (CHI), 2016.
Recent research suggests that some students learn to program with the goal of becoming conversational programmers: they want to develop programming literacy skills not to write code in the future but mainly to develop conversational skills and communicate better with developers and to improve their marketability. To investigate the existence of such a population of conversational programmers in practice, we surveyed professionals at a large multinational technology company who were not in software development roles. Based on 3151 survey responses from professionals who never or rarely wrote code, we found that a significant number of them (42.6%) had invested in learning programming on the job. While many of these respondents wanted to perform traditional end-user programming tasks (e.g., data analysis), we discovered that two top motivations for learning programming were to improve the efficacy of technical conversations and to acquire marketable skillsets. The main contribution of this work is in empirically establishing the existence and characteristics of conversational programmers in a large software development context.
@inproceedings{ChilanaCHI2016,
 author = {Chilana, Parmit K. and Singh, Rishabh and Guo, Philip J.},
 title = {Understanding Conversational Programmers: A Perspective from the Software Industry},
 booktitle = {Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems},
 series = {CHI '16},
 year = {2016},
 isbn = {978-1-4503-3362-7},
 location = {Santa Clara, California, USA},
 pages = {1462--1472},
 numpages = {11},
 url = {http://doi.acm.org/10.1145/2858036.2858323},
 doi = {10.1145/2858036.2858323},
 acmid = {2858323},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {conversational programmers, non-CS majors, programming literacy, technical conversations},
}

How do conversational programmers learn to code?

To cap off our paper trilogy, we wanted to dig deep into how conversational programmers tried learning to code and what obstacles they faced. To do so, we interviewed 23 conversational programmers across a broad range of professions, including an advertising manager, a bank clerk, a library archivist, a pharmacist, and a medical instructor. (This work was led by April Wang, a Masters student at Simon Fraser University supervised by Parmit.)

Our key discovery was that current learning resources are not well-suited for conversational programmers. In particular, popular instructional formats such as MOOCs, tech blogs, discussion forums, and coding tutorials are optimized for those who actually want to build software, and not those who want to simply be conversant in technical concepts. In particular, conversational programmers mentioned the following common perceptions about learning resources:

  • too much focus on syntax and logic rather than the big picture
  • explanations are not relevant to their needs
  • not enough time to learn since this wasn't their primary job
  • there's so much free content available, but it's hard to assess their reliability
  • feelings of social isolation; resources didn't feel like they were catered to their specific needs
  • too easy to forget details without the chance to directly apply what they learned

But despite the fact that 75% of respondents expressed feelings of failure about their attempts to learn programming, almost all of them wanted to continue learning if they could find resources that were appropriate for their needs. Thus, the question that this study raises is: How can we redesign instructional materials to be more inclusive of the needs of conversational programmers? By doing so, we can further broaden the pool of people who benefit from this valuable skill and get closer to the global ideal of computer science for all.

That caps off the trilogy! Check out this paper for details:

Mismatch of Expectations: How Modern Learning Resources Fail Conversational Programmers. April Y. Wang, Ryan Mitts, Philip J. Guo, Parmit K. Chilana. ACM Conference on Human Factors in Computing Systems (CHI), 2018.
(Honorable Mention Paper Award)
Conversational programmers represent a class of learners who are not required to write any code, yet try to learn programming to improve their participation in technical conversations. We carried out interviews with 23 conversational programmers to better understand the challenges they face in technical conversations, what resources they choose to learn programming, how they perceive the learning process, and to what extent learning programming actually helps them. Among our key findings, we found that conversational programmers often did not know where to even begin the learning process and ended up using formal and informal learning resources that focus largely on programming syntax and logic. However, since the end goal of conversational programmers was not to build artifacts, modern learning resources usually failed these learners in their pursuits of improving their technical conversations. Our findings point to design opportunities in HCI to invent learner-centered approaches that address the needs of conversational programmers and help them establish common ground in technical conversations.
@inproceedings{WangCHI2018,
 author = {Wang, April Y. and Mitts, Ryan and Guo, Philip J. and Chilana, Parmit K.},
 title = {Mismatch of Expectations: How Modern Learning Resources Fail Conversational Programmers},
 booktitle = {Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems},
 series = {CHI '18},
 year = {2018},
 isbn = {978-1-4503-5620-6},
 location = {Montreal QC, Canada},
 pages = {511:1--511:13},
 articleno = {511},
 numpages = {13},
 url = {http://doi.acm.org/10.1145/3173574.3174085},
 doi = {10.1145/3173574.3174085},
 acmid = {3174085},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {conversational programmers, learner-centered design, programming literacy, technical conversations},
}
Related pages tagged as computing education: