Emad Aghayi

dblp:210/1470 · DBLP profile ↗
← Back
7ranked-venue papers
4as first author
4since 2021 · last 2024
0000-0003-0607-4257ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 5 · 2 first-author · 4 since 2021Human-computer interaction and ubiquitous computing · 2 · 2 first-author
YearPublicationVenuePosition
2024 How many pomodoros do professional engineers need to complete a microtask of programming?
abstract
Microtask programming enables software engineers such as freelancers and part-time employees to contribute to software projects even when they can not spend much time on them. It decomposes software design into small, self-contained specifications. The decomposed specifications enable them to complete implementation and review task in a short time. In this paper, we empirically investigate the time required for software engineers to complete microtasks in an industrial setting and explore their perceptions of microtask programming by investigating two industrial projects using it. The projects were carried out in different companies and differed in the employment of the engineers. One contracted 9 freelancers, and the other asked for 8 part-time contributions from employees at work on other projects. We conducted a survey and a focus group with the engineers. Based on the development data of the case studies, we found that almost all microtasks were completed in less than four pomodoro repetitions, namely about two hours in the pomodoro technique. These data shows that engineers who cannot work full-time on a project can undertake microtasks if they can spare one-third of their work day. We also examine how engineers who are employees experience microtask programming similarly and differently from freelancers.
Shinobu Saito, Yukako Iimura, Emad Aghayi, Thomas D. LaToza
ASE3
2023 A controlled experiment on the impact of microtasking on programming
Emad Aghayi, Thomas D. LaToza
Empir. Softw. Eng.1
2023 What's (Not) Working in Programmer User Studies?
abstract
A key goal of software engineering research is to improve the environments, tools, languages, and techniques programmers use to efficiently create quality software. Successfully designing these tools and demonstrating their effectiveness involves engaging with tool users—software engineers. Researchers often want to conduct user studies of software engineers to collect direct evidence. However, running user studies can be difficult, and researchers may lack solution strategies to overcome the barriers, so they may avoid user studies. To understand the challenges researchers face when conducting programmer user studies, we interviewed 26 researchers. Based on the analysis of interview data, we contribute (i) a taxonomy of 18 barriers researchers encounter; (ii) 23 solution strategies some researchers use to address 8 of the 18 barriers in their own studies; and (iii) 4 design ideas, which we adapted from the behavioral science community, that may lower 8 additional barriers. To validate the design ideas, we held an in-person all-day focus group with 16 researchers.
Matthew C. Davis, Emad Aghayi, Thomas D. LaToza, Xiaoyin Wang, Brad A. Myers, Joshua Sunshine
ACM Trans. Softw. Eng. Methodol.2
2021 Crowdsourced Behavior-Driven Development
Emad Aghayi, Thomas D. LaToza, Paurav Surendra, Seyedmeysam Abolghasemi
J. Syst. Softw.1
2020 Can microtask programming work in industry?
abstract
A critical issue in software development projects in IT service companies is finding the right people at the right time. By enabling assignments of tasks to people to be more fluid, the use of crowdsourcing approaches within a company offers a potential solution to this challenge. Inside a company, as multiple system development projects are ongoing separately, developers with slack time on one project might use this time to contribute to other projects. In this paper, we report on a case study of the application of crowdsourcing within an industrial web application system development project in a large telecommunications company. Developers worked with system specifications which were organized into a set of microtasks, offering a set of short and self-contained descriptions. When crowd workers in other projects had slack time, they fetched and completed microtasks. Our results offer initial evidence for the potential value of microtask programming in increasing the fluidity of team assignments within a company. Crowd contributors to the project were able to onboard and contribute to a new project in less than 2 hours. After onboarding, the crowd workers were together able to successfully implement a small program which contained only a small number of defects. Interview and survey data gathered from project participants revealed that crowd workers reported that they perceived onboarding costs to be reduced and did not experience issues with the reduced face to face communication, but experienced challenges with motivation.
Shinobu Saito, Yukako Iimura, Emad Aghayi, Thomas D. LaToza
ESEC/SIGSOFT FSE3
2020 Large-Scale Microtask Programming
abstract
Crowdsourced software engineering offers many opportunities for reducing time-to-market, producing alternative solutions, employing experts, learning through work, and democratizing participation in software engineering. There are several types of crowdsourced software engineering. One of the oldest and most common is open source software development. Another approach is competition-based crowdsourcing, where platforms such as TopCoder have increasingly become very popular with over 1,500,000 users.
Emad Aghayi
VL/HCC1
2020 Find Unique Usages: Helping Developers Understand Common Usages
abstract
When working in large and complex codebases, developers face challenges using Find Usages to understand how to reuse classes and methods. To better understand these challenges, we conducted a small exploratory study with 4 participants. We found that developers often wasted time reading long lists of similar usages or prematurely focused on a single usage. Based on these findings, we hypothesized that clustering usages by the similarity of their surrounding context might enable developers to more rapidly understand how to use a function. To explore this idea, we designed and implemented Find Unique Usages, which extracts usages, computes a diff between pairs of usages, generates similarity scores, and uses these scores to form usage clusters. To evaluate this approach, we conducted a controlled experiment with 12 participants. We found that developers with Find Unique Usages were significantly faster, completing their task in 35% less time.
Emad Aghayi, Aaron Massey, Thomas D. LaToza
VL/HCC1