Your customer has a specific challenge and wants to have it solved by means of software. They ask you as a software/solution architect to advise them on this topic and they want to be able to choose a solution based on your advise by the end of next week (we're not talking about something as large as a government tender). How can you approach this challenge? When using a formalized approach, although usually thorough, you will probably not make it by next week and thus you are forced to make some shortcuts.
It boils down to establishing a set of prioritized requirements and evaluating them against potential solutions. In this blog post I'll provide a general outline of a 'quick and dirty' (not so formal) product selection process which can be done relatively quickly. I'll start with identification and classification of stakeholders. Next I'll suggest several topics to talk to the stakeholders about in order to determine and prioritize requirements. Ending with several suggestions on how to obtain possible candidates for the solution and compare them.
Disclaimer
There is probably overlap with existing approaches to accomplish the same. Please inform me so I can cross check this, learn and add references. I've used CMMI-DEV as an inspiration among others. The below approach is not a company standard. It is an approach I've personally tried and have good experiences with.
Stakeholders
Determine stakeholders
In order to obtain requirements from the customer, you need to know your customer. In a small company this is relatively easy since you know who the people are who make the decisions and spend the money. In larger companies, this could not be so straightforward.
Usually there are several stakeholders in larger companies for IT related solutions. Think for example of the following people;
- the people who have to implement the solution
- the people who will have to test it
- the people who will have to integrate with it
- the people who will have to use it (your (usually business) customer)
- the people who will have to monitor it
- the people who will have to do maintenance on it
- the people who will have to pay for it (for implementing, operational costs, licenses)
- the people who are concerned with the quality of the solution (think topics like security, performance, maintainability, reliability (from ISO-5505))
Determine sources for requirements
Requirements can come from various sources. You can talk to your customer about these in order to determine if and in what way they are relevant. Below are some examples;
- Customers vision
We want to grow to a SaaS business so only SaaS solutions are acceptable
We are a large organisation and we want our products to be supplied by another large organisation who understands our processes, who will not go bankrupt quickly, who can be counted on for continuity - Customers financial situation
CAPEX vs OPEX. An on-premises solution might require a large upfront investment should you not already have the infrastructure and platform in place, while a cloud solution likely has higher operational cost. - Life cycle of the solution
Should it be a throwaway solution or should it continue to be valuable for the company for many years to come? In the second case, you hope your customer allows you enough time to perform a thorough selection process. You can look at the supplier and product in more detail. For example, references / reputation, financial situation, company size, market share. Which products does the supplier consider strategic? For example Oracle, Microsoft have several solutions for the same problem not usually only a specific solution is strategic and others are considered legacy. Strategic solutions tend to stick around longer. - Implementation time
Do you need to have it up and running tomorrow or does your customer allow an implementation time. - Customers history / current hardware & software landscape / existing licenses
We have everything Microsoft so we want Microsoft because it goes nicely with the other Microsoft things we have and know how to work with the Microsoft stack / have good experiences with it.
We own a large datacenter and want to use the resources we pay for so we will not go for external cloud solutions. - National and international legislation
Think GDPR but also the US CLOUD Act if you use cloud services of companies based in the US (for example Google, AWS, Microsoft, Oracle) - Government constraints / regulations
For government agencies. Think VIR, BIO in the Netherlands (security related guidelines) - Customer, implementation partner or preferred supplier strategic partnerships and contracts
My strategic implementation partner specializes in Oracle and we have negotiated a deal that we can hire x consultants at a rate of x per hour if we use them. Oracle products are thus prefered. - Product experience available at the customer, partner and in the market and the expectation on how this will develop in the future
You don't want to start and create a new COBOL application. Also you might not want to jump on the hype train of the latest and greatest new programming language because it has an uncertain future and a relatively small community. Not many people have experience with it yet and it still has to proof itself in large scale implementations. - Constraints due to certifications
Think for example ISO-27001 for security (processes). A certifications can be a requirement to do business with certain parties. - Do you need support? If you do, who will provide it? The implementation partner, the software vendor, the 'community', people at the customer? Will you go for an open source solution or a commercial solution? Do you need a contract / an SLA (Service Level Agreement) to provide certain guarantees?
- Reuse and adapt existing components in your software landscape, buy something pre-build (COTS) or create your own custom software.
Usually it is financially beneficial to first look for a solution which fits requirements based on re-using existing assets, next look at buying pre built solutions and if that is not viable, for example for a startup who provides a new and innovating product, to develop it yourself. It can help to make a business case for several more concrete scenario's and compare them. - Architectural constraints
Enterprise Architecture, a reference architecture or... hopefully provide you with principles / guidelines to direct the above. Maybe even already is a template for a product selection process you can use.
No comments:
Post a Comment