Jenny T Liang, Maryam Arab, Minhyuk Ko, Amy J Ko, Thomas D LaToza

Publication date 2023/5

Journal Proceedings of the IEEE/ACM 45th International Conference on Software Engineering (ICSE)

Pages 435-447


Description

Decision-making is a key software engineering skill. Developers constantly make choices throughout the software development process, from requirements to implementation. While prior work has studied developer decision-making, the choices made while choosing what solution to write in code remain understudied. In this mixed-methods study, we examine the phenomenon where developers select one specific way to implement a behavior in code, given many potential alternatives. We call these decisions implementation design decisions. Our mixed-methods study includes 46 survey responses and 14 semi-structured interviews with professional developers about their decision types, considerations, processes, and expertise for implementation design decisions. We find that implementation design decisions, rather than being a natural outcome from higher levels of design, require constant monitoring of higher level design choices, such as requirements and architecture. We also show that developers have a consistent general structure to their implementation decision-making process, but no single process is exactly the same. We discuss the implications of our findings on research, education, and practice, including insights on teaching developers how to make implementation design decisions.

Maryam Arab, Thomas D LaToza, Jenny Liang, Amy J Ko

Publication date 2022/4/27

Journal Proceedings of the 2022 CHI Conference on Human Factors in Computing Systems

Pages 1-15


Description

In many domains, strategic knowledge is documented and shared through checklists and handbooks. In software engineering, however, developers rarely share strategic knowledge for approaching programming problems, in contrast to other artifacts and despite its importance to productivity and success. To understand barriers to sharing, we simulated a programming strategy knowledge-sharing platform, asking experienced developers to articulate a programming strategy and others to use these strategies while providing feedback. Throughout, we asked strategy authors and users to reflect on the challenges they faced. Our analysis revealed that developers could share strategic knowledge. However, they struggled in choosing a level of detail and understanding the diversity of the potential audience. While authors required substantial feedback, users struggled to give it and authors to interpret it.


Maryam Arab, Jenny Liang, Yang Yoo, Amy J Ko, Thomas D LaToza

Publication date 2021/10/10

Journal IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)

Pages 1-9


Description

Developers rely heavily on resources to find technical insights on how to use languages, APIs, and platforms, seeking help from Stack Overflow, GitHub, meetups, blogs, live streams, forums, documentation, and more. However, there is one kind of knowledge for which resources are hard to find: strategic knowledge. In contrast to technical knowledge, strategic knowledge provides insight into how to approach problem-solving. Prior work has demonstrated that developers can make use of written strategies to improve their problem-solving. However, there is currently no way for developers to share, curate, and search for this knowledge at scale. To address this gap, we contribute HowToo, a platform for sharing, finding, and using programming strategies. Its key insight is that there are many different approaches to the same problem, and developers may need different strategies depending on their situation. 


Thomas D LaToza, Maryam Arab, Dastyni Loksa, Amy J Ko

Publication date 2020/7

Journal Empirical Software Engineering (ESE)

Pages 2416-2449

Description

Software developers solve a diverse and wide range of problems. While software engineering research often focuses on tools to support this problem solving, the strategies that developers use to solve problems are at least as important. In this paper, we offer a novel approach for enabling developers to follow explicit programming strategies that describe how an expert tackles a common programming problem. We define explicit programming strategies, grounding our definition in prior work both within software engineering and in other professions which have adopted more explicit procedures for problem solving. We then present a novel notation called Roboto and a novel strategy tracker tool that explicitly represent programming strategies and frame executing strategies as a collaborative effort between human abilities to make decisions and computer abilities to structure process and persist information. In a formative evaluation, 28 software developers of varying expertise completed a design task and a debugging task. We found that, compared to developers who are free to choose their own strategies, developers given explicit strategies experienced their work as more organized, systematic, and predictable, but also more constrained. Developers using explicit strategies were objectively more successful at the design and debugging tasks. We discuss the implications of Roboto and these findings, envisioning a thriving ecosystem of explicit strategies that accelerate and improve developers’ programming problem solving.  


Publication date 2017/6/12

Journal 14th Annual IEEE International Conference on Sensing, Communication, and Networking (SECON)

Pages 1-9

Description

In heavily congested urban areas, the rapid growth of population is becoming more and more of an issue. Affected cities quickly demand solutions to areas such as quality of life, waste management, public transportation, and accessibility to main resources. However, since the number of impacted areas of population growth is endless, we focus on public parking. Studies show that drivers spend a large portion of their travel time locating vacant parking spots. For this reason, we present MagnoPark, a crowdsourced approach to identifying unoccupied spots accessible to the general public, who are typically free. MagnoPark is a smartphone based sensing solution that detects empty parking spots using internal sensors of cellphones. While a pedestrian is walking on the sidewalk, we exploit magnetometer changes near metal objects in identifying where cars are located.


Publication date 2015

Journal Image and Graphics: 8th International Conference, ICIG 2015, Tianjin, China, August 13-16, 2015, Proceedings, Part II 8

Pages 147-155

Description

Protein secondary structures such as α-helices and β-strands are major structural components in most proteins. The position of secondary structures provides important constraints in computing the tertiary structure of a protein. Electron cryomicroscopy is a biophysical technique that produces 3-dimensional images of large molecular complexes. For images at medium resolutions, such as 5–10 Å, major secondary structures may be computationally detected. This paper summarizes our recent work in detection of secondary structures using SSETracer, SSELearner, StrandTwister and StrandRoller. The detection of helices and β-strands is illustrated using SSETracer and StrandTwister with a small dataset.