Software Planning 101: Part 6/7
The Selection of Technologies for a Solution
Based on the first three software dimensions we do understand what the logic is to be performed, how that is structured in smaller components, and where the different parts of the solution will be executed. Enough to actually to build a solution. The only problem is that still many possible solutions can be created, according to the software plan, and not all of them are good solutions because of the wrong technologies chosen for implementation.
Technology is the application of scientific knowledge for practical purposes. Thus software technology is software developed that performs operations based on some prior theory. The theory of what the different software parts need to do, or how to function, is defined during our plan for the code structure. Thus only after we understand what we need from the software we look into technologies to implement the software solution.
Technology Selection StrategiesThere are many variances and combinations, but in general there are three themes that can make up your technology selection strategy.
Strategy 1: Technology ReuseFor larger companies, many times an in-house technology already exists. To enable code reuse, a shared code base must be developed.
Strategy 2: Off the ShelfAn existing solution can be chosen that is created by a third party. Examples are: Apache Log4j 2, Microsoft SQL Server, Oracle JDK, and Apache Tomcat. The technology can be free or paid, open or closed source, and licenses more or less restrictive in use.
Strategy 3: New DevelopmentNew development is development that is done within the scope of the same software solution development project.
Technology Decision FactorsLet's look into what to consider for a specific implementation technology for your software solution.
Factor 1: MaturityMaturity is the amount of usage of a specific technology, combined with the limitations of architecture, design, implementation and usage of that technology. The more used and the fewer limitations in usage the more mature a technology is. Software can be matured by using the software and removing limitations in usage. Introducing a less mature technology increases risk of ending up with a bad quality solution. You might consider including in-house solutions to contribute to their maturity, and indirectly increasing the quality of the enterprise software.
Factor 2: ResourcesResources stands for the amount of money, time and people that are needed to leverage a technology. That is integrate the specific technology with your software solution and maintain it. The resources to integrate a technology is often easy to estimate. Maintenance is often overlooked. Maintenance of the code part of a technology is done by updating your software solution to use the new releases, and likely rebuild and deploy the solution. For independent services that are part of a technology, new updates must be installed.
Factor 3: LicenseHow a technology can be used is based on a license. Some licenses state that it is completely free to use, others have restrictions that for production environments it can't be used without a service contract, and some don't allow free use at all. Also if you like to modify or distributed the technology as part of your software solution restrictions can apply.
Factor 4: KnowledgeTo make use of a technology specific knowledge is needed. Sometimes technologies can have a long and/or steep learning curve. Also it it can be that this knowledge is already available within your organization. Is the knowledge also generally available outside the organization and maybe supported through service contracts? Ideally a technology can be used without specific knowledge, but most of the time some knowledge is needed and not always is such knowledge easily available.
Factor 5: ControlWhen you choose a technology control over its release cycle is favorable. Can you manage when a release comes out? Or at least can you influence what goes in a specific release? Or is the software open source so you can make your own security and usability fixes? From a control factor only: more control reduces the risk compared.
Factor 6: RunwayRunway is the a relative term of how long, according to your judgement, a technology can benefit you. Maybe if you use a simple technology you have a short runway that leads to a rewrite in 2 months. Maybe you choose another technology that can be leverage for 2 or more years. The more runway, the more suitable a technology is.
ConclusionAs you want to focus on your business, you would like to minimize the amount of non-business logic needs to be written. This means that ideally most of the components of your software solution already exist, or enable you to develop more effectively. This is where you try to leverage Technology Reuse or Off the Shelf technologies vs New Development.
When selecting a technology many factors come into play: Maturity, Resources, License, Knowledge, Control and Runway. How to weight the different factors is less important than realizing what factors exists and making sure they are manageable risks.
And finally be aware that an technology in response to a documented technical need, it is not the start point of your solution.