
With constantly evolving technologies and customer requirements rapidly changing in response to a rapidly evolving digital landscape, business solutions cannot stand still. Software development has become an ongoing investment, needing to constantly improve and adapt.
Given the ongoing investment needs of software development, selecting a Software Development partner must be approached with the expectation of an ongoing relationship, not a once off delivery.
Selecting a Software Development partner isn't a matter of getting the best quote on a list of requirements. It is a process of finding a partner with whom you can work in a mutually beneficial relationship over a period of time.
The relationship
Engaging a Software Development partner can bring a Project Manager or Product Manager great success or much misery.
Like other relationships, a successful Software Development partnership is based on trust, mutual respect and a bit of compromise when required.
A common understanding and shared expectations are critical in developing the relationship. These must be established at the start and maintained through open and honest discussion as the relationship matures. Assessing your potential Software Development partners Before delving into the specific requirements of the Software Development you are looking to partner on, it is critical to set out your expectations for what you are looking for and how the relationship will work.
Expectations to clarify with yourself first to correctly assess your potential Software Development partner include:
- Who will be responsible for what
- Cost
- Maturity
- Domain knowledge
- Responsibilities
A common cause of frustration, and even project failure, is misaligned understandings and expectations as to who is responsible for what.
It is important for you to be clear on what responsibilities you are looking to retain for the software development and what responsibilities you want your partner to assume.
For example, you may want to retain responsibility for the business concepting, business analysis and specification of requirements, but everything else, including architecture, design, performance and reliability of the solution is the responsibility of the partner.
Alternatively, you may wish to merely augment your existing team with some programmers from a partner, in which case you maintain responsibility for basically everything, including the productivity of the partners programmers.
In determining this, you should critically consider your teams capabilities, capacities and priorities.
Once you have settled on what responsibilities you are looking to retain vs. delegate, you can use this information to help design the selection criteria for your Software Development partner, specifically the services / skills you are looking for. It will also help you in developing the contract between you and the Software Development partner.
Maturity vs. Cost
The more mature and scalable the software development organisation, the more expensive the service.
Your Software Development partner needs to pay wages and make a profit. More mature and scalable businesses engage more senior resources to develop mature offerings and manage larger teams.
Consider your financial resources and manage your expectations to match.
How does the maturity of your partner affect you?
More mature (expensive) Software Development partners will reduce your effort and increase your opportunities for success through greater:
- Communication abilities
- Seniority (experience)
- Specialists (knowledge)
- Quality and productivity management processes
- Support processes
- Responsiveness (commercial and incidents)
The level of maturity that you require will depend on the amount of responsibility you want to delegate and the criticality of the Software Development that you are undertaking.
For example, if you are simply looking to augment your team with some additional programmers, you will not need a mature Software Development partner. But if you are responsible for developing mission critical business applications with complex business integration requirements and you don't have the skills in-house to guarantee your success, will will likely be best served by a highly mature and experienced Software Development partner.
Assessing the maturity of a Software Development partner
Things you may consider in assessing the maturity of a potential Software Development partner include:
- Financial viability
- Organistaion chart
- CV's of key personnel
- Toolchain documentation
- Process documentation
- Service catalog (eg. technologies supported and other offerings)
- Escalation procedures
- Customer service offerings
- Domain knowledge
- Most software developments have an element of specialisation that should be considered.
For example, an e-commerce implementation may require credit card accreditation and ERP integration. An Internet of Things (IoT) development will require processes to support building and testing software integrations with hardware interfaces. These are two very different knowledge domains.
Many projects require two or more very specialised knowledge domains. Options for managing these scenarios include:
- Engage a partner with one or more knowledge domains to stretch to cover the additional knowledge domains
- Engage the above organisation to outsource and manage other partners with the required additional domains of knowledge
- Manage yourself multiple Software Development partners, each with a set of domains of knowledge
- Note that coordinating multiple vendors is a significant job requiring expertise in itself. Consider whether this is something that you want to take on or entrust to one of the vendors.
Note that, due to the ever changing nature of IT, Software Development partners are generally adept at stretching and tackling new areas of specialisation. But stretching your partners skills typically comes at a cost: time, money and/or quality. That cost may or may not be more than the cost of managing multiple vendors.
If it is not immediately apparent what domains of knowledge your development effort requires, a Solutions Architect can help you with this. Assessment of potential Software Development partners needs to categorically cover the knowledge domains you have identified.
Next steps
To recap, the above above allows you to scope what you are looking for in a Software Development partner:
- Who will be responsible for what
- Cost
- Maturity
- Domain knowledge
- These will allow you to have a mature conversation and screen potential Software Development partners before getting onto the specific requirements, which frankly can be a distraction when looking for the right partner.
Once you have identified and screened suitable potential partners, you are then in a much better position to compare vendors based on your specific requirements (which I will discuss in a subsequent blog - sign up to not miss out!).