Sustainability In Tech: The Next Frontier

Introduction

Sustainability is a concept that has been around for centuries. In modern times, the word sustainability has become synonymous with environmental causes. While that association is valid and important, there are other forms of sustainability that need conscious consideration. Simply put, a sustainable activity is one that you can continue to perform indefinitely (without being overwhelmed by any negative effects of the activity). Said another way: sustainability is meeting the needs of the present without making it harder (or impossible) to meet those same needs in the future.

The Three Pillars of Sustainability

There are three widely recognized pillars of sustainability:

  • Environmental sustainability, refers to the protection and preservation of our natural resources. Resource-extraction companies, for example, aren't usually aiming for environmental sustainability
  • Financial sustainability - ensuring sure that businesses are profitable enough to stay afloat without cutting corners on quality. Simply put, keeping good records, and doing profitable activities. Start-ups (tech or otherwise) don't usually aim for financial sustainability. 
  • Social sustainability is concerned with creating a society that is equitable and just for the poor and vulnerable by empowering people, promoting social well-being, building cohesive and resilient societies,  and addressing issues such as poverty, inequality, and social justice by making institutions accessible and accountable to citizens. I'm going to go out on a limb here and say most businesses don't aim for (or even think about) social sustainability.

When we think of sustainability in tech environmental sustainability may come to mind first, but there is a fourth pillar gaining traction that must also be considered when it comes to software development activities. 

The Human Element Building Your Code

The human element of software development is one of the most important factors in creating a product that can be sustained indefinitely. (you should read that article, it's well cited and this one will still be here when you're done)

There is a missing aspect of sustainability focused on the people doing the work. Turnover, burnout, and knowledge silos can all have a negative impact on the continued performance of a development team. Any turnover can lead to a loss of institutional knowledge and a lack of continuity in projects. Burnout can lead to decreased productivity and increased errors. Knowledge silos can lead to a lack of sharing and collaboration within the team [5].

Increment states that empirical evidence increasingly points to human factors as having a more significant impact on code quality than anything else (e.g. programming language). Sleep, workload, and stress are the real driving forces behind performance. Sleep-deprived nurses, for instance, are more prone to make serious mistakes, and most sleep-deprived individuals are unaware of their declining performance. Similarly, call-center employees' quality of service drops after just four hours, and construction crews working 50-60 hours a week see their productivity fall below that of peers working only 40 hours per week.

These findings extend to the software development industry as well. Games produced in "crunch mode" (extended over time) not only exhaust their development teams but also underperform in critical scores, overall sales, and other aspects compared to games developed under more sustainable conditions. Happy developers, on the other hand, solve problems more efficiently. The long-term expense of a stressful workplace is enormous, but it often goes unnoticed in accounting records. This oversight incentivizes companies to harm their employees, which eventually backfires on the organization itself.

Takeaway for Management

When managing a team, it's crucial to consider the human factors that contribute to productivity and code quality. Prioritize pacing schedules, limiting work hours, and creating a supportive environment for employees. For instance, allow for flexible work hours, accommodate parents with sick children, and value each team member's well-being. Plan for turnover with good documentation and by forcing turnover occasionally to ensure it's not too hard to on-board. Encourage developers to think if Engineering-to-Management as a pendulum, not a ladder.

The human mind is a powerful tool, and no programming language, methodology, or trend can supersede its importance in successful software development. By focusing on the well-being of your team members, you'll foster a more productive, resilient, and effective workforce, resulting in higher quality software and long-term sustainable success.

To learn more about how you can implement easy to sustain software, be on the lookout for our next blog. [Spoiler, we talk about frameworks.]

Sources:

  1. https://stripe.com/reports/developer-coefficient-2020
  2. https://www.thoughtworks.com/insights/blog/design-build-and-maintainability
  3. https://www.techrepublic.com/article/the-dark-side-of-being-a-software-developer-what-you-need-to-know/
  4. https://medium.com/@kentbeck_7670/the-three-paths-of-seniority-6c42b6a25f2
  5. https://www.cio.com/article/3267910/why-knowledge-silos-are-dangerous-and-how-to-get-rid-of-them.html

Sandbox

There are some areas of financial sustainability that I think are also neglected (try to make these positive instead of "don't")

If you want to be able to use our software indefiintiely, there are some things you need ot be thinking about

  1. Part-Time Work 
  2. Rails (framework is one of those chapters) 
  1. Before rails it would take three months of onboarding before someone could contribute meaningfully to a codebase 
  2. Java- has tons of frameworks but no standards 
  3. Effects- not many automated tests because no one knows how things work
  4. Rails is one of the only platforms that actually writes tests 
  5. Boiler plate tons of copy paste 

We couldn’t find any rails dev so we hired java instead- we couldn’t find any backhoe operators so we hired a bunch of pick axers instead  

The best products are those that make people feel good about using them. Ideally, they improve They're easy to learn and use, they solve problems in creative ways, and they're fun! These kinds of products are also more likely to be used by a larger audience, because they're more accessible than their competitors' offerings. There is less waste when it comes to manufacturing materials or packaging, which has environmental benefits as well as economic ones (reduced costs).In conclusion, the tech industry needs to prioritize both the development of maintainable and scalable systems, as well as the well-being and growth of its developers. As the industry continues to evolve rapidly, it's important to ensure that we are building technology that can be sustained for the long term, while also creating an environment that is supportive and nurturing for the people who are behind these advancements. By recognizing the importance of this balance, we can create a more sustainable and successful future for the tech industry as a whole

The Impact of Human Element on Software Development

The human element of software development is one of the most important factors in creating a product that can be sustained indefinitely. The way you design your product, how you implement it, and what features you include all affect the user experience. In this article, however, we’re not talking about the human experience as the end user; we’re discussing the human element writing, creating, and testing the code