What is the difference between custom- and standard-software development?
This document is part of a series of posts which I started in December 2020 to remind myself of experiences and best practices as agile cloud software product owner and manager. I’ll be extending and updating it over time so I would be keen to get your feedback. What are the questions puzzling you?
- Why is balancing desirable, feasible and viable key?
- What is the difference between custom- and standard-software development?
- Why does simplicity take more time?
- Why are organizational debts even worse than requirements gaps or technical debts?
- What are the skills for an enterprise software product manager?
- How to find the right perspective and how to focus on the right requirements?
- How to define & manage a roadmap and convert it into a backlog?
Standard software development ain’t custom development. Don’t fall into the trap to think developing standard software is just custom software development for more users. Developing standard software means to code for thousands of customers with very different usage patterns.
In standard cloud software development you work on 3 releases and a long term roadmap in parallel:
- The productive release which your customers use needs to be kept up and running and sometimes needs correction.
- The release which your are currently developing as the next productive release
- The release you are preparing, for which you capture ideas, designs and check feasibility and viability.
It is paramount to keep your mainline running and with this also your customer base running and vital. Issues with your productive release have the potential to slow down and stop your current development and your preparation for the one to follow and finally your long term roadmap.
You usually have huge assets with your installed base and your platform. But you have to maintain them and this can turn into a limiting factor:
- Your customers determine what can be done. They want you to continue what you started and they use what has been delivered earlier in very different ways. You cannot simply throw that away and start all over again or ask them to work different. Even if the new concept promises to be 10 times better than the old you need to take your customers with you.
- Your reuse components determine what you need to use. Changing or even replacing a reuse component can get extremely expensive and risky.
- Finally your product standards determine what you have to consider. You can’t ignore them for new features, you have to go for the whole enchilada.
Only in rare cases you start on a green field. In majority of cases you start on a brown field as you have customers which use your software in absolutely different ways. Think about the difference between a service-centric and a product-centric business – both use ERP, CRM or HCM but in very different ways and configurations.
Following product standards, reusing components and using a basic solution framework is key for developing a consistent standard software which is continuously integrated in a central mainline system with customer-like configuration and data in the cloud. There are not only obvious reuse options like sharing libraries or a common user interface design but also internationalization, security, data privacy, country specific variations, extension points and integration into complex external frameworks (e.g. for generation of analytics or external integration APIs). Often you also have non-code procedures, configurations, content and data which easily gets overlooked if you just count the lines of code you produce and deploy.
In a custom project you can freely decide to leave out or ignore. There is always a shortcut possible if time is getting short. In standard software development you cannot easily find a shortcut as you are surrounded by efforts which you cannot ignore.
…to be continued
While you are are giving me feedback and propose topics, questions and links to be added here are a couple of links which inspired me. Looking forward to hearing from you either if you like my thoughts or not – as Lenny Leonard said “Everybody makes mistakes. That’s why they put erasers on pencils” ;o)