Social Debt: Why Software Developers Should Think Beyond Tech
Just as many other technology companies, Facebook has both a broad view into society as well as a microscopic perspective of individual users’ lives, interests, wishes, and other personal details. Acting upon this knowledge can have social implications that go far beyond Facebook. Whether it is Russia exerting influence over the presidential elections or the dubious activities of Cambridge Analytica, bad actors can mislead and polarize communities. However, traditionally Facebook and other technology companies have focused on building technologies. They were not concerned with social implications. This narrow view is difficult to sustain today. By now, many social networks, mobile applications, and ride hailing services — among others — are mainstream technologies. They are used at scale, and, thus, their social implications will emerge sooner or later for broader populations. If those implications are not resolved immediately, companies will accumulate social debt. That is what happened to Facebook. Social debt is not inherently bad. However, just as technical debt is incurred over time, social debt will continue to build up as well. At one point or another social debt has to be paid back. Otherwise, just as in the case of technical debt, “[e]ntire engineering organizations can be brought to a stand-still under the debt load […].”¹
Many technology companies are currently facing social debt. They came quite a way. Often, they did not grasp the social implications of their technologies initially. Understanding those was — and still is — a learning process; the same is true for users, lawmakers, and society at large. It is a first step to recognize the responsibility and the need to address it. Many companies have policy teams now. However, those are often disconnected from the product development process. I believe there is something to be said for understanding social debt as an inherent part of the software development process. Whether social debt should be accrued, and, if so, when it should be paid back are considerations that belong in the engineering domain as much as they belong in the realm of policy. Thinking about a product’s social implications from an engineering perspective and dedicating development resources to it will prevent uncertainties and surprises in its evolution. Just as it is the case with technical debt, in a given situation it may be perfectly fine to postpone addressing social debt to a later product development stage. However, this decision should be deliberate and cognizant of the consequences of the delay.
Thinking about social debt in the same way as about technical debt is apt in many ways. However, there are also important differences between the two. Most importantly, technical debt is largely the responsibility of the company incurring it. Accumulating social debt and paying it back, however, may involve lawmakers, regulators, activists, and other stakeholders. For example, who should determine the boundaries of free speech on a social network? Facebook does not see itself as a media company or an editor of content. By its very nature, incurring social debt may involve addressing thorny policy and legal questions that could have substantial impact on freedom of speech and other civil liberties. In general, not paying off social debt may substantially impact society. There could be a high price for society when social debt is not cleared. The stakes of accruing social debt can be much higher than for technical debt. We should start considering social implications as first-class citizens of the software development process.
- Ward Cunningham, The WyCash Portfolio Management System, OOPSLA 1992.
- The term social debt is also used in the context of company-internal organization as described by Damian A Tamburri, Philippe Kruchten, Patricia Lago, Hans van Vliet, Social debt in software engineering: insights from industry, JISA 2015.