Life used to be much simpler for us IT folks when there were two distinct types of software—the custom software you wrote for your own firm had only to meet your company’s unique requirements. For example, if your company only did business in the US, the software you built only had to deal in US dollars and to show screens in English. Product software made by a commercial software company, by comparison, was designed and built to work in multiple languages and currencies, with multiple options and configuration settings to accommodate the thousands of different companies that might one day use their product. So building product software used to be more complicated and involved than building custom software – but that is no longer the case today.
Increasingly today, IT organizations have to view their own internally-developed software with the same eye towards productization as commercial software firms. Why the change? And what is prompting it? We have found that many of our large IT customers are now facing many of the same challenges that our software product customers have been dealing with for years and the solutions that work for these IT customers are the same techniques used for developing product software:
- Planning a Release – With the IT organization supporting an ever-increasing and diverse user base spread around the globe, changes to corporate software have to be carefully planned and timed to avoid helping one department while hurting another. IT customers need to add release management disciplines to their internal IT software using impact analysis, capacity planning and product roadmaps to help make sure that the software upgrades they are planning are managed well and delivered as scheduled.
- Software Build Management – Traditionally, IT organizations were unlike software firms and did not have to worry about how to control multiple versions of their software or coordinate the development of their code across multiple development groups. This is because IT typically only had the current version of the code to manage and just a single, employee-based group of developers to maintain it. But now, with multiple instances of the software running in different organizations around the world and with a team of onshore and offshore resources maintaining the code, the need for tight software build management has increased dramatically. Software product build management skills can help IT organizations bring the same, consistent build environment to their work by using the latest source control and build tools to help them successfully manage the process.
- Regression Testing – As custom IT software becomes more and more complicated, the need for thorough testing has increased. As new releases come out, it is critical to test not only the new features that were added but also the existing features from previous releases to make sure they still work. IT organizations used to just ask their departmental users to “bang on the system” for a while to test it out but now these IT must now approach testing in the same way that software companies do– with a robust test suite of automated regression tests that replays all the existing test scripts to ensure that nothing that used to work has been broken with the new release. There are a number of great tools that can help do this, and we have been introducing them to our IT customers to help them maintain the quality of their software.
- Multi-Tenancy – This is a term that was once unknown to anyone outside the software industry. It’s the concept that lets a software vendor host their customers on a version of their software in the cloud without having to set up a single instance of their product for each and every client. Each customer is considered a ‘tenant’, much like the tenants in an apartment building that have their own space and share common services or amenities. In technical terms, this means that software vendors create their code to be multi-tenant so that each of their clients has access to all the features of the software while sharing some core services across them. For example, the vendor can store all their clients’ individual data in a single, managed database with appropriate security and controls so that no one customer can see or change another customer’s data. IT customers now want to set up a multi-tenant environment for their customers they now support to replace their replicated versions of their software they currently use for each client. They want a single instance of the software, with appropriate configuration settings to handle all clients
With all these new challenges, IT organizations are increasingly blurring the line between custom software and product software, thinking of themselves more as software vendors that design, build and test software for their corporation’s departments around the world. The old methods of building custom software no longer work in today’s modern, distributed economy. Increasingly, IT organizations must think like software product firms in order to compete with effective solutions that work around the globe in different working environments. In order to make sure that they are adopting the most advanced product development principles, IT organizations should turn to experienced software product development vendors with experience of building commercial software for ISVs (independent software vendors) for a solution that will work now and for the futute needs of their business.