What we should know about software development - 5 guiding questions

Anyone interested in software development will quickly notice: The basic idea may sound simple at first. But even before the first line of program code is written, a wide variety of considerations must be made.

Two hands on a desk with a drawn light bulb

Our five guiding principles

Most companies and departments have been driving digitization forward rapidly, not just since the Corona pandemic. Everyone wants to be prepared for what tomorrow brings. Often, the desire for a custom software to implement the idea comes up within the first brainstorming sessions of the department heads. As a software agency, our day-to-day business is custom software development. Yet, paradoxically, many of the ideas we receive should not be implemented individually.


Naturally, as a software agency, we think about trade-offs and best practices for implementing software ideas. The most valuable thoughts we have on this will be presented in the following text.

  1. How do I recognize potentials for software development?
  2. What distinguishes custom software from standard software?
  3. How do I proceed if I want to develop software individually?
  4. What are the differences between software development providers?
  5. What does custom software development cost?

1. How do I recognize potentials for software development?

Every idea should contribute to future business success. Thereby, every company has multiple potentials to increase success through software. Often, existing processes can be simplified, automated or accelerated to reduce costs. On the other hand, technology trends such as Big Data can expand a company's own business model to increase sales.

Regardless of whether it is cost reduction or revenue increase: The weighing of all possible potentials in the department or in the company should not be neglected. Because in the end, what is worked on is much more crucial than how (see points 2-4). In doing so, one should not focus on moonshot topics only. Although these have the chance to be  very transformative, the road towards them is long, rocky and risky.

Instead, we recommend starting with the “Low-Hanging-Fruits”. These are potentials that are clear and quick to achieve and do not require wasting energy by reaching for the highest branches. For example, this could be automating manual data entry or replacing a much-used Excel sheet with a web application. Such problems have been solved many times and quickly bring clear added value.

On top, the “Low-Hanging-Fruits” create a good foundation for later moonshots: For example, data entered and stored in a structured way by a web application provides a good data basis for future Big Data projects.


2. What distinguishes custom software from standard software?

Once a few of these potentials have been uncovered, it is time to weigh up: Is this a standard topic or is it very company-specific? Some standard topics can already be covered by existing SaaS (Software as a Service) solutions with slight adaptations. These include topics such as project management or a CRM system.

However, other topics can be very specific. Then the question arises whether the development of custom software is worthwhile. In order to be able to assess this, we use the following three aspects to guide our decisions: 

  1. Relevance: The higher the added value of the software solution for the company, the more valuable a custom software development can be. Minor issues can often be solved with standard software and little effort.
  2. Permanency: The longer the software is to run, the more likely it is that custom software will pay off.  While the costs may be high at the beginning, the ongoing license costs are much lower.
  3. Flexibility: This aspect probably requires a more detailed explanation. Consider the following case: A company is highly willing to adapt its own way of working to new software. There are only a few "must have" features that are already known. In this case, the probability is high that a solution for this already exists "off the shelf". However, if functions are needed later that the "off the shelf" solutions cannot cover, the company ends up in a dead end. The more uncertain you are about the feature set you need, the more likely you are to justify custom-developed software.

These different aspects need to be weighed thoroughly. Once the decision has been made in favor of custom software, the next question arises:


3. How do I proceed if I want to (let) develop individually?

The days of hundreds of written pages of specifications are largely over. You may be faced with a case that can offer great added value to the business. In this case, it is advisable to involve people with digital affinity (internal or external) as early as possible and to sketch out a solution together. One thought that comes to mind for many is agile software development. But what does that even mean? If you follow Wikipedia's definition, it refers to "a set of practices intended to improve the effectiveness of software development professionals, teams, and organizations."

Agility is certainly one of those buzzwords that mean everything and nothing. Therefore, the following is an example of how to proceed:

  • After initially getting to know the stakeholders, the service provider gives a rough cost assessment.
  • Together with the service provider, you start a Sprint 0. In this conceptual sprint, the understanding of the problem and potential solution is worked out in detail. The matter is discussed in as much detail as possible with all stakeholders, and at the end a precise implementation plan is worked out. This may include but is not limited to wireframes and a target architecture. After Sprint 0, the cost assessment is specified.
  • If the customer and service provider agree on the implementation, collaboration begins in two-week sprints. At the beginning of each sprint, the results of the previous two weeks are discussed. Subsequently, it is jointly determined which tasks from the implementation plan will be completed in the next two weeks. If new ideas or requirements arise, they can be discussed and prioritized throughout the meeting. Dealing with change efficiently is already the biggest advantage of agile software development. Changes are desired. It is important to have a system for how these can be implemented in the interest of the best result. With traditional specifications, this often leads to a conflict of interest: the service provider must focus on topics from the specifications. The client, of course, wants to incorporate all new ideas directly. Joint prioritization remedies this situation and ensures that the interests of both parties are addressed.


4. What are the differences between software development providers? 

In principle, between two kinds of providers, one can differentiate:

  1. Providers with price differences
  2. Providers with quality and specialization differences


The former are national and international providers who position themselves on various comparison sites (Upwork, etc.). These providers are a good choice if price is the deciding factor. Of course, there is no free lunch in this either: code quality, communication, the trust and security that it will run, objective advice and fluctuation. All these factors are taken into account when determining the price. Cheap is not necessarily bad, however. It is particularly appropriate for software with a short useful life (e.g., Minimal Viable Products).


The latter are providers who primarily focus on a high-quality standard and special know-how. This applies, for example, to the handling of large amounts of data or special security requirements. One should primarily pay attention to the quality and secondarily to the price, if one needs a software that is to be

  • Operated and developed in the long term.
  • Run stable even with large amounts of data or a large user base.

Otherwise, you might pay double and triple. This is because the trade-offs made by low-cost providers often only really become apparent during later operation. If, for example, the software does not have a well-thought-out architecture, it is not built on solid foundations. In this case, problems can only be solved with a lot of effort.


5. What does custom software development cost?

The exact costs for software development are usually difficult to quantify in advance. After all, you don't just put the development of an Android App in the shopping cart and get a fixed price displayed. This is due to the complexity that the software development process entails.

For this reason, most software developers do not commit to fixed prices in advance. Of course, this is a shame for prospective customers, as it makes the calculation of the ROI or the business case more difficult. If a fixed price is demanded, however, most high-quality providers back out. This is because the risk and potential for conflict (see question 3) are too high. Some providers hence work with generous risk buffers on the initial estimate. In this case, a 100% surcharge is common in the market.

As you can see, an exact estimate is in principle difficult. Each service provider has its own process or internal system for estimating expenses.


Conclusion

Most mistakes in maximizing the potentials of new software happen before the first line of program code has been written. Nevertheless, you should bring in people with digital affinity at an early stage and then collaboratively decide which potentials are prioritized and in which way they are implemented. The possibilities are countless, which is both a curse and a blessing.