Select An Agile Software Development Partner
It is not unusual for businesses to turn to third-party companies when they want help to achieve their goals without increasing internal overhead.
This type of outsourcing is especially common for projects that require tremendous amounts of effort or specific skill sets [1].
Time constraints are often a supplemental driving factor.
Partnering up with another business to help meet your needs is a viable and widespread solution [2]. It often makes sense for businesses to try to tackle a massive software development project while focusing on the current needs of their clients.
Evaluation
A professional and planned approach greatly improves the odds of success for the partnership:
- Identify Decision Criteria
-
Decide on your internal team, which helps with making and supporting the decision. Put together a must-have checklist for the capabilities required from a software solution company.
Research different approaches and methodologies to discuss with your potential business partner. For instance, will you use Agile and should your partner need to practice it as well? Should you emphasize corporate governance or technology agility?
Think about the services your business will need in the next few years. Will you require an entire development team, including help with product support?
Consider the types of roles required to build your solution and note those you can fulfill with your internal staff. Which positions will you need to fill with experts or dedicated people provided by your new partner? - Evaluate Candidates
-
Ultimately, you want to choose a partner with the right experience to help you achieve your goals[3]. Avoid choosing a company just because they work with trendy technologies or because they list tons of services on their website.
The length of time they have been in business can be important. The length of time they have worked with their own clients can be more telling of the level of expertise they provide.
- Evaluate Costs, Processes, and Tools
-
You may be tempted to select the lowest cost option but be cautious. The software company with the lowest bid might not be the most cost-effective. You risk choosing a partner that will go fast but make mistakes, or complete chunks of the work and then need to redo them to match your standards.
Do not risk quality and reputation for a good price. Ask about change orders. Many companies will underbid a project and later add on new charges throughout the project. It results in a dramatic increase in the overall cost of development.
It is true that aspects of your project will change during the development process. Experienced software development companies should help you understand how they will handle changes while protecting both your budget and your timeline.
Discuss the thorny aspect of scale up and down your external development team.
What are the consequences for you and your partner? - Consider the Location
-
Where will you want your external development partner to be [2]?
If it is important that they can integrate with your team and frequently work on site, you might want to only look at local software companies. Evaluate travel time and not the distance to your partner offices.
If you are open to working remotely with an onshore company, hold early conversations using the potential conferencing, documentation, and chat systems. You want to ensure your development team can provide help by video as much is lost in exclusively email team communications.
Remember to account for travel in your budget if you shall expect it from your software development team. If you are thinking of offshoring the work, be sure you consider how you will handle the difference in time zones and communication styles. Many companies offer low-cost solutions that include working with offshore teams to handle services like the help desk, product support, and simple development.
- Start Searching
-
Remember to keep track of your search as you go. Create a document that records potential companies, their attributes, who you are talking to, what you have learned, and any decisions you have made.
- Ask Tough Questions
-
Learn what challenges they have faced with previous clients and what they did to overcome them. If there is something you are particularly worried about, ask about their experience dealing with your prospective challenges to helping their other clients with similar solutions in the past[7]. Ask about their best clients and the ones that did not stick around.
Be sure they have clearly outlined what you can expect from working with their team, how you will measure progress, and how they help define success.
Be wary of any potential development partner that struggles to answer these questions or does not provide stories of failure or follow them up with concrete ways they have adapted to ensure future success for their clients.
Evaluation Criteria
You shall implement a clear and founded evaluation approach:
-
Research, learn, classify.
-
Characterize why you need a software development partner.
-
Shortlist the companies you can find to be promising.
-
Assess the company experience in your industry.
-
Evaluate the adaptability of your potential partner to your future needs.
-
Think about cultural compatibility and communications skills [5, 6].
-
Think about time zone differences.
-
Check for technologies and knowledge.
-
See how cost-effective they work.
-
Consider and evaluate the future of your relationships.
-
Meet the employees that will be working with you.
Checklist
Here is our checklist we use to discuss a potential partnership:
Hosting and Operations
-
How and where are the servers hosted? Self-hosted or external providers have an impact on the applicable legal context. Update policy and monitoring shall be compatible with corporate governance.
-
Where are the server instances physically located?
-
Backup and restore policy including location of backup and how they are protected.
-
DevOps aspects: monitoring, alarming, logging, audit logs, security policy. Is the deployment on the various staging areas automated? How is the process of deploying a new version?
-
How is the process of updating a productive application when security alarms are issued?
-
Document your decisions with a formal SLA document.
Software Development
-
Where are the team members located? Are they collocated, in the same area, in the same timezone, distributed over multiple timezones?
-
Which training or certification do they have in the technical stack, programming languages and used tools?
-
Which training or certification do they have in agile and Scrum approaches [4], [5], [6]?
-
Which training or certification do the senior developers and architects have to perform their work?
-
Which languages are the team members proficient in?
-
Which approaches are used for source code management?
-
Where are the source artifacts stored?
-
Can our collaborators have read access to all artifacts under source code management?
Governance and Methods
-
Which approaches are used for insuring the quality of the written source code?
-
How is the technical documentation such as installation scripts, design decisions, component documents written and managed?
-
Could you provide your coding guidelines and documentation guidelines?
-
Are modern approaches such as domain-driven design, unit testing, acceptance testing, continuous integration, continuous delivery in place?
-
How can involved people have read access to all artifacts?
-
How do you trace requirements to deliver versions of the product?
-
How do you upgrade an application to a newer version of the technology stack or newer libraries?
-
Which approaches do you use to continuously improve?
Build Partnership
-
What is your understanding of a partnership?
-
How would you like to start the partnership between your company and ours?
Lessons Learnt
Respect your partner [7, 8]. You will work together for years. Both parties shall be interested in improving the delivered solutions and increasing product success.
Challenge yourself and your partner to improve the quality and efficiency of delivering digital solutions.
All involved companies and people shall harvest the fruits of success.
Agile approaches are the process for developing software products in the twenty-first century. Your organizations shall be proficient with agile, lean approaches. These frameworks are the most successful approaches for software product development.
Links
-
[1] Technical Interviews Marcel Baumann. 2023
-
[2] Agile and Nearshore Development Marcel Baumann. 2022
-
[3] Evaluate Technical CVs. Marcel Baumann. 2022
-
[4] Scrum Master Formation. Marcel Baumann. 2021
-
[5] Product Owner Formation. Marcel Baumann. 2021
-
[6] Scrum Developer Formation. Marcel Baumann. 2021
-
[7] Detecting Agile Bullshit. Marcel Baumann. 2019
References
[1] R. C. Martin, Clean Agile. Prentice Hall, 2020 [Online]. Available: https://www.amazon.com/dp/0135781868
[2] A. Cockburn, Agile Software Development, Second. Addison-Wesley Professional, 2006 [Online]. Available: https://www.amazon.com/dp/0321482751
[3] N. Forsgren, J. Humble, and G. Kim, Accelerate: The Science of Lean Software and DevOps. IT Revolution Press [Online]. Available: https://www.amazon.com/dp/B07B9F83WM
[4] D. Farley, Continuous Delivery Pipelines. 2021 [Online]. Available: https://www.amazon.com/dp/B096YGZVZ9
[5] J. Appelo, Management 3.0. Addison-Wesley, 2011 [Online]. Available: https://www.amazon.com/dp/0321712471
[6] H. Hamel and B. Breen, The Future of Management. Harvard Business Review Press, 2007 [Online]. Available: https://www.amazon.com/dp/1422102505
[7] M. Ballé and F. Ballé, Lead with Respect. Len Publishing, 2014 [Online]. Available: https://www.amazon.com/dp/1934109479
[8] J. Badaracco, Leading Quietly. Harvard Business School Press, 2002 [Online]. Available: https://www.amazon.com/dp/B005DI8XSK