Can't quite put your nose on it? Community smells in software engineering
Defining community smells
In this article, you’ll learn about community smells, an aspect of human factors in software engineering, and how you can contribute to community smell research!
#CommunitySmells #SocialDebt #TechDebt #CodeSmells #EmpiricalSoftwareEngineering #HumanFactors #Research
Community Smells
Community smells describe connections between suboptimal socio-technical decisions and their effects on work environments, software development teams, and individual developers.
They were first researched by Dr. Damian Tamburri in 2015. He later expanded on the topic by characterizing 12 smells in an article titled "The Architect's Role in Community Shepherding" in IEEE Software Magazine in 2016.
Fig 1. The first 12 community smells, were published in "The Architect's Role in Community Shepherding" [3].
Characteristics of community smells
The following are some of the characteristics of community smells found in published research [1]. As you will see, community smells can be hard to describe but being in a smell-laden environment is hard to ignore.
They are dynamic and unpredictable because, well, we're people.
They are harmful and have been shown to cause tense social interactions and lower productivity.
They are latent and innocuous. They are slow to show themselves and their effects seem harmless at first.
They serve as warnings to leaders and teammates about an underlying socio-technical issue ready to surface.
They are observable and coincide with increased conflict, misconduct, and software failures.
They sabotage software quality.
The Debt Construct
You've seen this story before but from a different perspective: code smells and technical debt. Technical debt is earned over time due to a series of suboptimal decisions made by the folks pushing code, architecting systems, and their bosses, usually in the pursuit of some short-term benefit.
A company has the option of prioritizing the refactoring of their technical debt to decrease the "interest" on it (eg. quality, maintainability, understandability issues, financial costs) or simply do nothing and let it grow.
Fig 2. Community smells are to social debt like code smells are to technical debt.
Community smells are to social debt as code smells are to technical debt. Social debt is earned by invisible and negative dynamics (community smells) that aren't so easy to find [1]. Research has shown that community smells are most often connected to implicit characteristics of an organization's social structure, and that community smells like code smells, induce additional development costs [4].
All terminology and theory aside, it is likely you've experienced one or multiple of these community smells but you just couldn't put your nose on it back then 😂.
Now that all the fancy terminology is out of the way, let's describe some community smells, paying special attention to Newbie Free Riding, my research area.
Newbie Free Riding Community Smell
Newbie free riding is when newcomer teammates must understand what to do and for whom, which leads to the free-riding* of older employees. This unfriendly work environment adds more pressure to the team and affects people's psychological states [1]. This smell describes the seemingly common "sink or swim" experience of some early career graduate students fresh out of college starting their first new role.
Some lucky devs may land a role with a team that is jointly invested in their ramp-up and success. Others may join a team and it may not be clear who they report to or what they should be working on months after they start.
The scenario in which this employee, without structure or guidance, starts contributing to achieving the team's goals is Newbie Free Riding. The rest of the team invested little to nothing into the new hire and still, they benefit from their contributions to the team.
Since community smells are latent and hard to perceive for a newcomer, a new developer may not realize they are experiencing this community smell until well past the onboarding process.
* "Free riding" is when someone chooses not to exchange a bit of their effort to contribute to a collective goal, but if that collective goal is reached, they still benefit [2].
Fig 3. Two little shetland ponies, innocent and lost looking for someone to lead them.
Some Other Community Smells
🐺 Lone Wolf
A defiant team member who carries out their work irrespective or regardless of their peers and doesn't communicate with their team [1]. They may "steal" tickets from others or make changes to your work without explanation.
⚫ Black Cloud
Organizations don't provide conditions or encourage effective communication between teammates [1]. Knowledge sharing and mentorship are stifled or nonexistent.
😡Code Red
A limited number of developers, i.e. 1 -2 people know how to manage a highly complex system [1]. When this person leaves the organization, the rest of the team may be unequipped to pick up their slack.
The state of community smells in research
In 2023, researchers centralized all community smell research into one resource and provided the latest list of 30 reported community smells and their published causes and effects [3]. For more information and in-depth explanations of all the community smells, I recommend you read this awesome recently published paper "Community smells - The sources of social debt: A systematic literature review" by Caballero-Espinosa, Carver, and Stowers.
Fig 4. Influence of community smells on Cooperation [1]
It is the first secondary study on community smells as the sources of social debt in the context of software engineering and it theorizes on connections between community smells and critical factors for effective teamwork. I plan to write a post or two on that paper soon.
Call to Action
Community smells can create tension in your organization, affect team performance, and decrease software quality. Like technical debt, unhampered community smells may lead to additional project cost. Most importantly, community smells make working folks unhappy and if the last year in tech has shown us anything, it is that human factors in software engineering matter.
Please help further software engineering research on human factors by participating in my empirical software engineering research study through the Seattle University Computer Science Department and advised by Dr. Xin Zhao:
Go to Survey
You qualify for this survey if you:
Are current in OR recently were in the software or IT industry and
Have more than 0 and 5 or less years of experience.
The results of this study will be used to disseminate information about the causes and effects of a particular community smell on early career professionals.
References
[1] E. Caballero-Espinosa, J. C. Carver, and K. Stowers, “Community smells—The sources of social debt: A systematic literature review,” Information and Software Technology, vol. 153, p. 107078, Jan. 2023, doi: 10.1016/j.infsof.2022.107078.
[2] R. Hardin and G. Cullity, “The Free Rider Problem,” The Stanford Encyclopedia of Philosophy. 2020. Accessed: Feb. 28, 2023. [Online]. Available: https://plato.stanford.edu/archives/win2020/entries/free-rider/
[3] D. A. Tamburri, R. Kazman, and H. Fahimi, “The Architect’s Role in Community Shepherding,” IEEE Software, vol. 33, no. 6, pp. 70–79, Nov. 2016, doi: 10.1109/MS.2016.144.
[4] D. A. Tamburri, P. Kruchten, P. Lago, and H. van Vliet, “Social debt in software engineering: insights from industry,” J Internet Serv Appl, vol. 6, no. 1, p. 10, May 2015, doi: 10.1186/s13174-015-0024-6.