Below are suggestions for assigning responsibilities—analogous to the role model used in agile project work—for a software house.

I. Product Owner versus customer project manager

First thesis: The agile approach must anchor the role—and the limitations of authority— of our company’s customer project manager far more strongly than is commonly done in practice.

Risk

Customer requests are implemented individually and destroy the clean structure of my software foundation.

Strategy

My software house must act economically. The solution a customer receives should be implemented by using my software base. This base is expanded gradually—always with a view to my software standard*.

*This refers to: the established development environment, architecture libraries, function libraries up to the user interface— i.e., the results of previous development work. Alongside human capital, these are the most important assets of my company.

My customer owner / customer project manager—insufficiently represented in the author’s view in common agile models— must coordinate proposals for mapping customer requirements in software closely with the development lead / Product Owner.

Otherwise the foundation “frays”: every customer gets a bespoke variant, and second-level support can no longer work efficiently when investigating findings.

Note

Agree with the customer that special requests are specified in such a way that a new module can be delivered to all customers. The authorization concept is used to enable the module for the requesting party. Other customer owners receive the functional description as sales information and assess the value for their customers.

II. Product Owner versus development team*

*Agile development team: A self-organizing, interdisciplinary team that implements work from the Product Backlog and delivers working increments.

Second thesis: The “development lead” role (focus here: Technical Lead – owner of architecture and function libraries) is not defined precisely enough in common agile models.

Risk

Too much freedom is granted to the team or individual contributors.

Strategy

Anyone who has led software development knows the scenario: a smart team member finishes quickly but has introduced new—previously unknown— libraries. Often open-source software with very different license conditions. Free use may be over after an update and can impact cost calculations unpredictably. New libraries also bring new—and often unknown—vulnerabilities.

Note

Given the volume of third-party software, “library management” must be placed in responsible hands. Teams should only use approved components. New components must be requested from the Technical Lead. Whether the Product Owner or a named stakeholder performs this work is secondary—the task must be clearly owned.

III. Interaction design & usability versus agile changes

Third thesis: An interaction philosophy must meet today’s standards and remain consistent across the entire software.

Risk

Different interaction logics in different areas: sometimes context menu, sometimes scattered buttons, sometimes usable only with first-level support. Nobody has time for—or acceptance of—exotic interaction philosophies.

Strategy

Libraries used for user interaction must be validated for usability and aligned with widely adopted standards.

Note

Define the interaction philosophy. Pseudo industry standards are shaped by systems such as Amazon, PayPal & Co. Organize a “customer journey” (usability tests with people who are unfamiliar with the system). Push developers to engage with common standards to avoid creative but exotic custom designs.

IV. Exception handling & stability

Fourth thesis: No developer can anticipate every possible error scenario for inputs, corrections, copy & paste, or back navigation across different browsers.

Risk

The software “gets stuck”; only a hard restart allows work to continue.

Strategy

Provide functional building blocks for exception handling that restore the state before processing when errors occur.

Note

Provide multiple techniques (ideally as code examples): pre-checks, controlled processing, post-processing/result checks. This makes simple functions larger, but it stabilizes complex software systems and creates operational confidence. Every developer must be able to apply these building blocks safely.

Conclusion & recommendations

Success as a software house or in-house IT is achieved when customers can be served appropriately at any time—rather than with individually “cobbled-together” software that only 1–2 people understand.

What is needed are software components designed for adaptability that map customer needs within the function library/domain models (“digital twin”). If gaps exist, extensions must be designed so that they benefit all customers.

In addition, rigorous leadership of teams is required: consistent implementation guidelines (interaction philosophy, libraries, internal coding standards) and clear role accountability—from customer project leadership through Product Owner to Technical Lead.