Exploring the evolution of software practices

When software products and services are developed and maintained over longer time, software engineering practices tend to drift away from both structured and agile methods. Nonetheless, in many cases the evolving practices are far from ad hoc or chaotic. How are the teams involved able to coordinate their joint development?This article reports on an ethnographic study of a small team at a successful provider of software as a service. What struck us was the very explicit way in which the team adopted and adapted their practices to fit the needs of the evolving development. The discussion relates the findings to the concepts of social practices and methods in software engineering, and explores the differences between degraded behavior and the coordinated evolution of development practices. The analysis helps to better understand how software engineering practices evolve, and thus provides a starting point for rethinking software engineering methods and their relation to software engineering practice.

[1]  Paolo Tell,et al.  Virtual by Design: How a Work Environment can Support Agile Distributed Software Development , 2018, 2018 IEEE/ACM 13th International Conference on Global Software Engineering (ICGSE).

[2]  Sabrina Marczak,et al.  Reporting Empirical Evidence in Distributed Software Development: An Extended Taxonomy , 2015, 2015 IEEE 10th International Conference on Global Software Engineering.

[3]  Yvonne Dittrich,et al.  A conceptual framework to study the role of communication through social software for coordination in globally-distributed software teams , 2015, Inf. Softw. Technol..

[4]  B. Hoey A Simple Introduction to the Practice of Ethnography and Guide to Ethnographic Fieldnotes , 2014 .

[5]  Yvonne Dittrich,et al.  What does it mean to use a method? Towards a practice theory for software engineering , 2016, Inf. Softw. Technol..

[6]  Brian Fitzgerald,et al.  Formalized systems development methodologies: a critical perspective , 1996, Inf. Syst. J..

[7]  Kjeld Schmidt,et al.  The Concept of 'Practice': What's the Point? , 2014, COOP.

[8]  Helen Sharp,et al.  The Role of Ethnographic Studies in Empirical Software Engineering , 2016, IEEE Transactions on Software Engineering.

[9]  Cmmi Product Team CMMI for Development, Version 1.2 , 2010 .

[10]  Pekka Abrahamsson,et al.  An iterative improvement process for agile software development , 2007, Softw. Process. Improv. Pract..

[11]  Davide Nicolini Practice Theory, Work, and Organization: An Introduction , 2013 .

[12]  Wes Sharrock,et al.  Occasioned practices in the work of software engineers , 1994 .

[13]  Jan Stage,et al.  Method engineering: who's the customer? , 1996 .

[14]  T. Schatzki Social Practices: A Wittgensteinian Approach to Human Activity and the Social , 1996 .

[15]  Peter Naur,et al.  Programming as theory building , 1985 .

[16]  Elihu M. Gerson,et al.  Reach, Bracket, and the Limits of Rationalized Coordination: Some Challenges for CSCW , 2008, Theory in CSCW.

[17]  K. Seers Qualitative data analysis , 2011, Evidence Based Nursing.

[18]  Austin Henderson,et al.  Interaction Analysis: Foundations and Practice , 1995 .

[19]  Eirini Kalliamvakou,et al.  The who, what, how of software engineering research: a socio-technical framework , 2020, Empir. Softw. Eng..

[20]  James D. Herbsleb,et al.  Building a socio-technical theory of coordination: why and how (outstanding research award) , 2016, SIGSOFT FSE.

[21]  C. Robson,et al.  Real World Research: A Resource for Social Scientists and Practitioner-Researchers , 1993 .

[22]  Yvonne Dittrich,et al.  How social software supports cooperative practices in a globally distributed software project , 2014, CHASE.

[23]  Björn Regnell,et al.  Evidence-Based Timelines for Agile Project Retrospectives - A Method Proposal , 2012, XP.

[24]  David B. Martin,et al.  'Good' Organisational Reasons for 'Bad' Software Testing: An Ethnographic Study of Testing in a Small Software Company , 2007, 29th International Conference on Software Engineering (ICSE'07).

[25]  Paolo Tell,et al.  From Scrum to Agile: a journey to tackle the challenges of distributed development in an Agile team , 2018, ICSSP.

[26]  M. Engelmann The Philosophical Investigations , 2013 .

[27]  Leon J. Osterweil,et al.  Software processes are software too , 1987, ISPW.

[28]  Dietmar Pfahl,et al.  What are Hybrid Development Methods Made Of? An Evidence-Based Characterization , 2019, 2019 IEEE/ACM International Conference on Software and System Processes (ICSSP).

[29]  Yvonne Dittrich,et al.  When Plans do not Work Out: How Plans are Used in Software Development Projects , 2005, Computer Supported Cooperative Work (CSCW).

[30]  B MilesMatthew,et al.  Qualitative Data Analysis , 2009, Approaches and Processes of Social Science Research.

[31]  Robert Amor,et al.  Understanding Knowledge Management in Agile Software Development Practice , 2017, KSEM.

[32]  Yvonne Dittrich,et al.  Software architecture awareness in long-term software product evolution , 2010, J. Syst. Softw..

[33]  A. Strauss Work and the Division of Labor , 1985 .

[34]  E. Wenger Communities of practice: learning as a social system , 1998 .

[35]  Gabriela Avram,et al.  Sprint-driven development: working, learning and the process of enculturation in the PyPy community , 2007, OSS.