Improving practices in a small software firm: an ambidextrous perspective

Despite documented best practices and specialized tools, software organizations struggle to deliver quality software that is on time, within budget, and meets customer requirements. Managers seeking improved software project outcomes face two dominant software paradigms which differ in their emphasis on upfront planning, customer collaboration, and product documentation: plan-driven and agile. Rather than promoting one approach over the other, this research advocates improving software management practices by developing the organization's ambidextrous capability. Ambidextrous organizations have the ability to simultaneously succeed at two seemingly contradictory capabilities (e.g. discipline and agility) which leads to enhanced organizational performance. Overall, this study asks the question: How can an ambidextrous perspective facilitate improvement in software practices? Driven by this question, and based on a two year action research study at a small software firm, TelSoft, the objectives of this research are to: (1) Identify dualities involved in improving software practices; (2) Design interventions based on these dualities to improve software practices; (3) Explore the process of becoming an ambidextrous software organization. The resulting dissertation consists of a summary and four papers that each identify and address particular dualities encountered during software process improvement. The first paper asserts that both process-driven and perception-driven inquiry should be used during assessment of software practices, presents a model that shows how this combination can occur, and demonstrates the use of this model at TelSoft. The second paper explicates two theories for understanding and resolving issues in requirements engineering practice–repeat-ability and response-ability–and argues for the need to negotiate between the two. The third paper identifies a tension between managing legacy and current processes and proposes a model for 9 software process reengineering, a systematic process for leveraging legacy processes created during prior SPI efforts. Finally, the fourth paper applies the theoretical lens of ambidexterity to understand the overall change initiative in terms of the tension between alignment and adaptability. The study used a variety of data sources to diagnose software practices, including semi-structured interviews, software process documents, meeting interactions, and workshop discussions. Subsequently, we established, facilitated, and tracked focused improvement teams in the areas of customer relations, requirements management, quality assurance, project portfolio management, and process management. Furthermore, we created and trained two management teams with responsibility for ongoing management of SPI and project portfolio management respectively. We argue that these activities improved software practices at TelSoft and provided a stronger foundation for continuous improvement. Keywords: Ambidexterity, software process improvement (SPI), action research, requirements engineering assessment, action planning, software process reengineering, software management.