Characterizing Software Engineering Work with Personas Based on Knowledge Worker Actions
Reviewed by Greg Wilson / 2021-09-07
I've been using learner personas to sharpen my conception of who I'm teaching for almost a decade, but until I read Ford2017 a few years ago it never occurred to me that (a) programmer personas would be just as valuable and (b) they could be empirically grounded in this way. Ford et al adapted a pre-existing taxonomy of knowledge workers' tasks to describe what programmers do, used interviews and surveys to find out how often programmers do them, and then clustered the results to come up with seven personas (all descriptions taken directly from the paper):
- Acantha, the Autonomist Acumen is known for her autonomy and keen abilities to make good judgments when writing code. Her long tenure as a software engineer has supported her decision making abilities. She spends the majority of her time writing code independently on personal projects and also spends a significant amount of time working on internal projects. On average, more than 20% of her time is spent in the Authoring knowledge worker action.
- Lilo, the Continuous Learner is known for her interest in learning and getting adapted to a new team early in her career. She spends, on average, more than 23% of her time in the Learning knowledge worker action. She takes a great interest in watching online lectures to brush up on the latest frameworks and technologies that she may be able to add to a new project. At this stage in her career she is often assigned tasks rather than choosing tasks to work on. Though she may be an entry-level engineer with little professional experience at the large company, she takes an initiative to get caught up quickly on team projects.
- Isabelle, the Investigator is best known for being the top investigator on her team. She spends the most time, over 30% on average, in the Analyzing knowledge worker action. She spends much time in the trenches of projects debugging and making sense of code. Isabelle recently changed from being one of the top experts on her team to being a novice in her new team. However, this has not impeded her success as she was able transition smoothly and adapt the same techniques of connecting with peer developers to ensure success on her new team.
- Cameron, the Communicator is considered to be a communicator because of her ability to distribute her time evenly and early in her career while securing the logistics of her work environment. She is able to spread her time across all knowledge worker actions well. However, since she is so early in her career she also seeks guidance from her program manager and others on how to approach tasks. Cameron spends a lot of time communicating about how to set up and approach her work through emails, meetings, reports, and presentations, but that sometimes gets in the way of writing code.
- Iman, the Interactive is known for her activity with collaborative code writing style but also for her dynamic level of interaction that goes on within her team in terms of the Co-authoring knowledge worker action. Aside from being very helpful in code reviews, much of her tasks to complete come from everyone else. On average, many of her tasks come from management questions, source code from other engineers, and also spontaneous conversations within her team.
- Ava, the Advisor is known for the high value she places on being helpful to others and giving feedback. On average, she spends over 20% of her time offering feedback. She has significantly more professional experience, identifies as an expert, and puts out more fires than others when her team is in need of an emergency product fix. Her professional experience shines through the most as she has more years at her large company than others. Her ability to put out fires and help the team in unplanned emergency situations demonstrates how often she gets interrupted while working.
- Ciara, the Team Coder embodies this idea of being a team coder for her immense amount of time in the Co-authoring knowledge worker action (sometimes over 40%). She spends a significant amount of time producing code for her large company with a team by her side. Her major tasks are to sift through bug reports and fix them with source code check-ins. Ciara does not spend a lot of time in emails, meetings, or presentations because she is busy testing bug fixes.
The authors don't claim that personas or the boundaries between them are fixed: for example, they point out that nobody starts as an expert and say that, "Participants…mentioned…having to switch between modes on a project. Some emphasized that it depends on what project has demanding deadlines at that particular time." Having these personas is still very useful as a way to help people think about why teams are and aren't working and how different individuals' careers might develop.
Ford2017 Denae Ford, Tom Zimmermann, Christian Bird, and Nachiappan Nagappan: "Characterizing Software Engineering Work with Personas Based on Knowledge Worker Actions". 2017 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM), 10.1109/esem.2017.54.
Mistaking versatility for universal skills, some companies tend to categorize all software engineers the same not knowing a difference exists. For example, a company may select one of many software engineers to complete a task, later finding that the engineer's skills and style do not match those needed to successfully complete that task. This can result in delayed task completion and demonstrates that a one-size fits all concept should not apply to how software engineers work. In order to gain a comprehensive understanding of different software engineers and their working styles we interviewed 21 participants and surveyed 868 software engineers at a large software company and asked them about their work in terms of knowledge worker actions. We identify how tasks, collaboration styles, and perspectives of autonomy can significantly effect different approaches to software engineering work. To characterize differences, we describe empirically informed personas on how they work. Our defined software engineering personas include those with focused debugging abilities, engineers with an active interest in learning, experienced advisors who serve as experts in their role, and more. Our study and results serve as a resource for building products, services, and tools around these software engineering personas.