Responsible Software Engineering

Book description

Today's software applications need more than a friendly interface and correct algorithms. They also need to be responsible: to be beneficial for society and not cause harm. In an era of AI chatbots, deep fake images and videos, social media bubbles, expanding privacy regulations, and a rapidly warming planet, it's more important than ever to practice responsible software engineering so your products earn your users' trust and deserve it.

Responsible Software Engineering can help you build better applications that are more ready for real-world situations:

  • Treating people more fairly, regardless of their beliefs, gender, culture, skin tone, and other attributes
  • Operating more safely, to reduce the risk of physical, psychological, or financial harm
  • Better protecting people's privacy, particularly when collecting personal information
  • Incorporating wisdom from the social sciences, law, ethics, and other fields that many engineers may be unfamiliar with
  • Reducing emissions of carbon dioxide (CO2), to address the risks of climate change

Join Daniel J. Barrett, a senior manager at Google and long-time software engineer, to dive into these issues and more, including real-world, large-scale case studies. You'll receive expert advice on how to anticipate the effects of your application on the world and its inhabitants, so you can have more confidence that your products "do the right thing."

Publisher resources

View/Submit Errata

Table of contents

  1. Brief Table of Contents (Not Yet Final)
  2. Preface
    1. What’s in This Book?
    2. What’s Not in This Book?
    3. Conventions Used in This Book
    4. O’Reilly Online Learning
    5. How to Contact Us
  3. 1. Responsible Software Engineering — A Quick Introduction
    1. What is Responsible Software Engineering?
      1. A little help from some specialists
      2. What is responsible engineering not?
    2. A little history
    3. Adopting a responsible mindset
    4. Summary
  4. 2. Incorporate Societal Context
    1. What Is Societal Context?
      1. Issues of Abstraction
      2. Make Your Causal Assumptions Explicit
    2. Mitigating Bias in the Care Management Algorithm
    3. Best Practices
      1. Identify Agents, Artifacts, and Precepts
      2. Create an Inclusive Environment for Exchanging Viewpoints
    4. Case Study: Detecting Toxic Comments
    5. Summary
  5. 3. Anticipate and Plan for Downstream Consequences
    1. Safety and Harm
      1. Types of Harm
      2. Testing for Safety
      3. How Is Safety Related to Ethics?
      4. Common Justifications for Side-Stepping Ethical Behavior
    2. Methods for Anticipating Consequences
      1. Test with diverse users
      2. Co-design with users
      3. Review a list of harms
      4. Practice future regret
      5. Run tabletop exercises
      6. Implement abuser and survivor testing
      7. Stress-test your applications
      8. Try chaos engineering
      9. Educate yourself about other lives
    3. Case Study: Google’s Moral Imagination Workshop
      1. Preparations
      2. Describe your project
      3. Choose the team’s top values from the list
      4. Determine what the four values mean for the project
      5. Apply each value to the project
      6. What next?
    4. Summary
  6. 4. Secure and Respect Users’ Privacy
    1. What is Privacy?
      1. Personally identifiable information
      2. Data collection, trade-offs, and convenience
    2. Privacy from the user’s perspective
      1. No surprises
      2. Transparency
      3. Consent
      4. Control
    3. Privacy from a data perspective
      1. Minimization
      2. Retention
      3. Anonymization
    4. From Tools to Policy
    5. Case study: Doing Privacy Right with Exposure Notifications
    6. Living and working in a privacy-focused world
    7. Summary
  7. 5. Measure and Reduce Your Code’s Carbon Footprint
    1. Measuring Carbon Emissions
      1. Principles of Power
      2. Beyond Direct Carbon Emissions
    2. Controlling Your Code’s Carbon Footprint
      1. Controlling Processor Usage
      2. What about coding for performance?
      3. Controlling the Code’s Location
      4. Optimizing For Time of Day
    3. Getting Involved
    4. Case Study: Cooling a Data Center by AI
    5. Summary

Product information

  • Title: Responsible Software Engineering
  • Author(s): Daniel J. Barrett
  • Release date: September 2025
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781098149161