Three questions about software development
An interview with Thomas Klingenberg about software development
Thomas Klingenberg has been professionally involved in the development of software for over 35 years and everything you need for software development in addition to good developers: Methods, tools and processes, as well as the management of projects and organisations.
In his role as software developer, software architect, project manager and company founder and managing director of t2informatik, he is exactly the right person to answer the following three questions about software development:
Why is software development so expensive?
Thomas Klingenberg:Â That’s a surprising question to start with. Who believes that software development is expensive? Perhaps one or two interested parties are surprised that a rental licence costs 10 euros per month and user, a purchase licence 2,000 euros and individual software development a million euros? In this case, you are comparing apples with oranges, because the price per licence for off-the-shelf software – which obviously does not always fit local needs, otherwise there would be no demand for individual software development – says nothing about the provider’s production costs.
However, cost is indeed a good keyword. In my experience, very few company representatives really know what they need. Although the desired end result is often clear, there are many ambiguities in the details. Even today, unclear requirements are still considered a major cost driver in software development. Do we need feature X or not? What exactly should the feature look like? Who will actually use it and what does this person need? What seems clear and simple at first glance is often not on closer inspection.
We like to agree preliminary projects with our customers. A preliminary project, like the subsequent software development, is something individual and individual work costs money. However, the preliminary project offers the opportunity to carefully gain a common understanding of the specific wishes and content requirements, sensible frameworks, existing ready-made modules and the subsequent implementation. Of course, this is no guarantee that everything will always work smoothly during implementation, but it is certainly an approach that brings the greatest benefit to both partners.
Speaking of benefits: Software development is an investment and, as with any investment, it makes sense to consider the benefits as well as the costs. In the case of software modernisation, i.e. the revision of an existing solution or the development of new software, the benefits can often be derived from past experience. This is less easy when developing completely new software, but many company representatives still have a good feeling about the benefits they expect from software. At the same time, however, they also know that the development of cheap solutions is actually expensive, because high maintenance costs during the service life, which are used to compensate for past errors, are real cost drivers.
How important are expertise and capacity in software development?
Thomas Klingenberg: Expertise and capacity are of course important in software development.
Tom DeMarco told an interesting story about expertise in one of his books, I think it was “The Deadline”Âą. The protagonist of the book is abducted to a fictitious country somewhere in Eastern Europe. There, with the help of 1,000 software developers, he is supposed to turn a company into the largest software provider in the world. And how does he do that? He takes the 5 best software architects and gives the remaining 995 developers tasks so that they are kept busy and the real experts can work in peace.
Of course, this story is exaggerated, but the procedure outlined makes sense. Especially at the beginning of a development project, it is important to set the course for a successful project. An experienced developer knows how to set up an undertaking, select the right techniques, frameworks or patterns and determine the system context. He applies the principles and practices of clean code development, knows projects that have worked and knows why others have failed. In short, he is not afraid of a white editor and can lay down the groundwork for a project.
Interestingly, Tom DeMarco’s story also suggests a correlation between expertise and capacity: At the beginning of a development, the demand for expertise is high, but the demand for capacity to realise an application is still low. As the project progresses, the demand shifts; the further the project progresses, the lower the demand for expertise and the greater the demand for capacity. Usually, experienced employees then take on other tasks as the project progresses, such as carrying out reviews or defining pull requests.
What significance does quality have in development practice?
Thomas Klingenberg:Â Quality is an important topic. It feels like every company expects quality from its suppliers and partners, and if you can believe the marketing statements, every company also delivers quality. In software development, it is perhaps not quite that simple.
Performance, costs and time – these three dimensions define the triple constraint often cited in project management. What needs to be done, how long does it take and what does it cost? The quality dimension is missing. Or it is implicitly included somewhere. However, this is not enough when developing software: Quality should be explicitly addressed here. It makes a big difference whether I am developing a disposable prototype to prove the feasibility of an undertaking or to convince a project sponsor, or whether I am modernising a legacy application that will be used for the next 10 or 15 years.
So quality is about what the customer really needs and what fulfils the intention. Quality is fit for purpose. For example, the code implemented in a disposable prototype does not necessarily have to be “clean”. However, if it is an enterprise application that is used continuously, then the code should of course be easy to read, change, extend and maintain. This is where the values, principles and practices of clean code come into play again.
There is another aspect of quality in development practice. The appropriate question is: Who feels the pain? When a company develops standard software, it is often the support employee who receives the feedback from the users. In the vast majority of cases, however, the support employee will not be the one who has implemented the relevant application code. If, on the other hand, a service provider is developing on behalf of a customer, short feedback loops during the undertaking ensure that the developers involved feel the pain when there are problems. Perhaps the error is in the implementation, perhaps in the user story, either way the organisation learns from it and this also increases the quality in development practice.
Notes:
[1] Tom DeMarco: The Deadline: A Novel About Project Management
Do you have a demand for software development? Then please get in touch with Thomas Klingenberg.
If you like the article or want to discuss it, please feel free to share it in your network.
There are more posts from the t2informatik blog series “Three questions …”:
Michael Schenkel
Head of Marketing, t2informatik GmbH
Michael Schenkel has a heart for marketing – so it is fitting that he is responsible for marketing at t2informatik. He enjoys blogging, likes changes of perspective and tries to provide useful information here on the blog at a time when there is a lot of talk about people’s declining attention spans. For example, the new series “Three questions …”.