Rethinking Productivity in Software Engineering
Get the most out of this foundational reference and improve the productivity of your software teams. This open access book collects the wisdom of the 2017 "Dagstuhl" seminar on productivity in software engineering, a meeting of community leaders, who came together with the goal of rethinki...
Uloženo v:
| Hlavní autoři: | , |
|---|---|
| Médium: | E-kniha |
| Jazyk: | angličtina |
| Vydáno: |
Berkeley, CA
Springer Nature
2019
Apress L. P Apress |
| Vydání: | 1 |
| Témata: | |
| ISBN: | 1484242203, 9781484242209, 1484242211, 9781484242216 |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
Obsah:
- Intro -- Table of Contents -- About the Editors -- Acknowledgments -- Introduction -- Part I: Measuring Productivity: No Silver Bullet -- Chapter 1: The Mythical 10x Programmer -- Some Work Time Variability Data -- Insisting on Homogeneity -- Deciding What We Even Mean -- Uninsisting on Homogeneity -- Questioning the Base Population -- It's Not Only About Development Effort -- Are Slower Programmers Just More Careful? -- Secondary Factors Can Be Important -- The Productivity Definition Revisited -- How Would Real People Work? -- So What? -- Key Ideas -- References -- Chapter 2: No Single Metric Captures Productivity -- What's Wrong with Measuring Individual Performers? -- Why Do People Want to Measure Developer Productivity? -- What's Inherently Wrong with a Single Productivity Metric? -- Productivity Is Broad -- Flattening/Combining Components of a Single Aspect Is Challenging -- Confounding Factors -- What Do We Do Instead at Google? -- Key Ideas -- References -- Chapter 3: Why We Should Not Measure Productivity -- Unintended Consequences -- Explaining Productivity -- Dealing with Change -- Managers as Measurers -- Key Ideas -- Part II: Introduction to Productivity -- Chapter 4: Defining Productivity in Software Engineering -- A Short History of Software Productivity -- Terminology in the General Literature -- Productivity -- Profitability -- Performance -- Efficiency and Effectiveness -- Influence of Quality -- An Integrated Definition of Software Productivity -- Summary -- Key Ideas -- Acknowledgements -- References -- Chapter 5: A Software Development Productivity Framework -- Productivity Dimensions in Software Development -- Velocity -- Quality -- Satisfaction -- Lenses -- The Productivity Framework in Action: Articulating Goals, Questions, and Metrics -- Example 1: Improving Productivity Through an Intervention
- Part V: Best Practices for Productivity -- Chapter 19: Removing Software Development Waste to Improve Productivity -- Introduction -- Taxonomy of Software Development Waste -- Building the Wrong Feature or Product -- Mismanaging the Backlog -- Rework -- Unnecessarily Complicated or Complex Solutions -- Extraneous Cognitive Load -- Psychological Distress -- Knowledge Loss -- Waiting/Multitasking -- Ineffective Communication -- Additional Wastes in Pre-agile Projects -- Discussion -- Not All Problems Are Wastes -- Reducing Waste -- Conclusion -- Key Ideas -- References -- Chapter 20: Organizational Maturity: The Elephant Affecting Productivity -- Background -- The Process Maturity Framework -- The Impact of Maturity on Productivity and Quality -- Updating Maturity Practices for an Agile-DevOps Environment -- Summary -- Key Ideas -- References -- Chapter 21: Does Pair Programming Pay Off? -- Introduction: Highly Productive Programming -- Studying Pair Programming -- Software Development As Knowledge Work -- What Actually Matters in Industrial Pair Programming -- Constellation A: System Knowledge Advantage -- Constellation B: Collective System Knowledge Gap -- Constellation C: Complementary Knowledge -- So, Again: Does Pair Programming Pay Off? -- Key Ideas -- References -- Chapter 22: Fitbit for Developers: Self-Monitoring at Work -- Self-Monitoring to Quantify Our Lives -- Self-Monitoring Software Developers' Work -- Supporting Various Individual Needs Through Personalization -- Self-Reporting Increases Developers' Awareness About Efficiency -- Retrospection About Work Increases Developers' Self-Awareness -- Actionable Insights Foster Productive Behavior Changes -- Increasing Team Awareness and Solving Privacy Concerns -- Fostering Sustainable Behaviors at Work -- Key Ideas -- References -- Chapter 23: Reducing Interruptions at Work with FlowLight
- Productivity Goal 1: Improve Productivity at the Individual and Team Levels Through the Introduction of a New Continuous Integration System -- Example 2: Understanding How Meetings Impact Productivity -- Productivity Goal 2: Develop an Understanding of How Meetings May Impact Productivity -- Caveats -- Key Ideas -- References -- Chapter 6: Individual, Team, Organization, and Market: Four Lenses of Productivity -- The Individual -- The Team -- The Organization -- The Market -- Full-Spectrum Productivity -- Key Ideas -- References -- Chapter 7: Software Productivity Through the Lens of Knowledge Work -- A Brief History of Knowledge Work -- Techniques for Measuring Productivity -- Outcome-Oriented Techniques -- Process-Oriented Techniques -- People-Oriented Techniques -- Multi-oriented Techniques -- Drivers That Influence Productivity -- Software Developers vs. Knowledge Workers: Similar or Different? -- Summary -- Key Ideas -- References -- Part III: The Context of Productivity -- Chapter 8: Factors That Influence Productivity: A Checklist -- Introduction -- A Brief History of Productivity Factors Research -- The List of Technical Factors -- Product Factors -- Process Factors -- Development Environment -- The List of Soft Factors -- Corporate Culture -- Team Culture -- Individual Skills and Experiences -- Work Environment -- Project -- Summary -- Key Ideas -- Acknowledgments -- Appendix: Review Design -- References -- Chapter 9: How Do Interruptions Affect Productivity? -- Introduction -- Controlled Experiments -- What Is the Aim of an Experiment? -- A Typical Interruptions Experiment -- How Is Disruptiveness of an Interruption Measured? -- Interruptions Cause Errors -- Moving Controlled Experiments Out of the Lab -- Summary: Controlled Experiments -- Cognitive Models -- What Are Cognitive Models?
- The Cost of Interruptions at Work
- What Can Cognitive Models Predict About the Impact of Interruptions on Productivity? -- Summary: Cognitive Models -- Observational Studies -- Observational Studies of the Workplace -- Benefits and Detriments of Interruptions -- Stress, Individual Differences, and Interruptions -- Productivity -- Strategies for Dealing with Interruptions -- Summary: Observational Studies -- Key Insights -- Key Ideas -- Acknowledgments -- References -- Chapter 10: Happiness and the Productivity of Software Engineers -- Why the Industry Should Strive for Happy Developers -- What Is Happiness, and How Do We Measure It? -- Scientific Grounds of Happy and Productive Developers -- How Happy Are Software Developers? -- What Makes Developers Unhappy? -- What Happens When Developers Are Happy (or Unhappy)? -- Cognitive Performance -- Flow -- Motivation and Withdrawal -- Happiness and Unhappiness, and How They Relate to the Productivity of Developers -- Are Happy Developers More Productive? -- Potential Impacts of Happiness on Other Outcomes -- What Does the Future Hold? -- Further Reading -- Key Ideas -- References -- Chapter 11: Dark Agile: Perceiving People As Assets, Not Humans -- Revisiting the Agile Manifesto -- Agile in Global Outsourcing Setups -- Tracking Work to Increase Productivity -- Daily Stand-Up Meeting to Monitor Productivity -- Stressful Work Environment -- Cost of Productivity -- Open Questions for Productivity in Software Engineering -- Key Ideas -- Acknowledgments -- References -- Part IV: Measuring Productivity in Practice -- Chapter 12: Developers' Diverging Perceptions of Productivity -- Quantifying Productivity: Measuring vs. Perceptions -- Studying Software Developers' Productivity Perceptions -- The Cost of Context Switching -- A Productive Workday in a Developer's Life -- Developers Expect Different Measures for Quantifying Productivity
- Characterizing Software Developers by Perceptions of Productivity -- Opportunities for Improving Developer Productivity -- Key Ideas -- References -- Chapter 13: Human-Centered Methods to Boost Productivity -- Key Ideas -- References -- Chapter 14: Using Biometric Sensors to Measure Productivity -- Operationalizing Productivity for Measurement -- What the Eye Says About Focus -- Observing Attention with EEG -- Measuring Rumination -- Moving Forward -- Key Ideas -- References -- Chapter 15: How Team Awareness Influences Perceptions of Developer Productivity -- Introduction -- Awareness and Productivity -- Enabling Awareness in Collaborative Software Development -- Aggregating Awareness Information into Numbers -- Aggregating Awareness Information into Text -- Rethinking Productivity and Team Awareness -- Key ideas -- References -- Chapter 16: Software Engineering Dashboards: Types, Risks, and Future -- Introduction -- Dashboards in Software Engineering -- Developer Activity -- Team Performance -- Project Monitoring and Performance -- Community Health -- Summary -- Risks of Using Dashboards -- Rethinking Dashboards in Software Engineering -- Key Ideas -- References -- Chapter 17: The COSMIC Method for Measuring the Work-Output Component of Productivity -- Measurement of Functional Size -- The COSMIC Method -- Discussion of the COSMIC Model -- Correlation of COSMIC Sizes with Development Effort -- Automated COSMIC Size Measurement -- Conclusions -- Key Ideas -- References -- Chapter 18: Benchmarking: Comparing Apples to Apples -- Introduction -- The Use of Standards -- Functional Size Measurement -- Reasons for Benchmarking -- A Standard Way of Benchmarking -- Normalizing -- Sources of Benchmark Data -- ISBSG Repository -- Internal Benchmark Data Repository -- Benchmarking in Practice -- False Incentives -- Summary -- Key Ideas -- Further Reading

