The Ultimate Guide To Hiring A Custom Software Development Provider
The Ultimate Guide To Hiring A Custom Software Development Provider
If you're considering outsourcing some or all of your development work, make sure you know what you're looking for in a compatible company.
Join the DZone community and get the full member experience.Join For Free
When we need to repair shoes, we normally go to a professional shoemaker unless we’re shoemakers ourselves. Likewise, if we need custom-tailored software, we can take the long and the hard road of in-house development, or trust a professional software development provider to build a solution for our business-specific needs.
Although some companies choose to go the hard way, the benefits of outsourcing software project development to a specialist provider onshore (within own country) or offshore (overseas) are numerous:
Access to wider talent pools;
Access to devs with relevant skill sets and expertise;
A higher level of professionalism and experience;
Optimizing development budgets and direct cost savings, especially in terms of offshore outsourcing.
Now that you have your mind set on partnering with a bespoke development provider, where do you start? Given that backsourcing is increasingly becoming a common practice, how do you know a particular outsourcing company will successfully see your project to fruition? With this in mind, I have put together the below step-by-step guide to a successful outsourcing partnership.
Step 1: Creating the Shortlist
If you’re a novice in software project outsourcing you will most likely be at a loss on where to look for a relevant company (you need a pool of such companies to eventually choose the one that will meet your criteria). One thing that will probably come to your mind is asking for references. Nothing builds trust like personal recommendations, so peer references will always be one of the best ways to find a software dev partner. If someone within your industry can recommend a company that builds great software solutions, go ahead and put it on a shortlist.
Alternatively, use B2B directories like Clutch to look for software development companies. Check out the lists of top custom software developers on the web. The good news is, the company you’re looking for is also looking for you: by simply asking Google how to hire a good software development partner, you can see it for yourself.
Step 2: Verifying They’re a Good Fit for Your Company
Software development outsourcing is a thriving business, so there are many onshore and offshore outsourcing providers out there. The Internet search will instantly offer you hundreds of relevant web pages. But how do you make sure these companies are close to meeting your standards and are a great partner material?
Check out the company portfolio and read project descriptions. Look for details such as tech stacks, team sizes, delivery timelines, etc. Most importantly, note if the company you are considering as a partner has any experience in developing software for your industry. Large offshore development centers with over 500 developers will have extensive expertise in projects for various industries. Smaller firms will most likely focus on niche industries and products. For instance, the company I'm associated with has over 50 full-time employees and provides custom software dev solutions mainly for FinTech, InsurTech, AI and eCommerce domains. Its small size allows accumulating tribal knowledge and relevant expertise and offers well-polished focused services rather than jack-of-all-trades solutions.
You want to partner with an established outsourcing company with a proven record of successfully developed projects. Ask for case descriptions and client testimonials. Unless company clients come under a non-disclosure agreement (NDA), don’t hesitate to contact them personally and ask how they feel about their collaboration. Do they deem it successful? What were the upsides and the downsides of working with this particular company? Would they recommend it to you as a potential partner?
There are many legal aspects involved in software development, especially if you’re building a FinTech, InsurTech or healthcare solution with access to clients’ classified or sensitive data. For your peace of mind, choose a partner operating under US/EU jurisdiction, so that you could be on the same page as to legal aspects of the product you are developing.
A Network of Resource/Talent Partners
Wider talent pools are the main reason you are negotiating with them in the first place. Global talent shortage dictates the need for companies with a vast network of talent partners. If they don’t have the specialists with the skill sets required for your project, they should know where to find them. Also, make sure that they use innovative recruiting techniques and involve you in the hiring process and candidate interviews.
Start With A Pilot Project
You’ll never know unless you try. Sometimes simply placing a team staffing request and looking at the quality of candidates will help you decide if this potential partner is attention-worthy. Collaborate on a pilot project and see how it goes.
A “test-drive” may be especially important if your outsourcing destination of choice is offshore. Cultural affinity and having the same quality standards are great prerequisites for successful collaboration and teamwork.
Step 3: Choosing the Right Engagement Model
Both onshore and offshore outsourcing companies will let you choose from several engagement models. The tricky part is choosing the right one for your project, although knowing the price formation principle of each model could set you on the right track.
You have a system requirements spec and a fixed budget, and you expect your provider to be 100% responsible for delivery. This model is great for small projects when all functional and non-functional requirements are clearly defined and the scope of the project is known and visible. Any changes to a project are low-risk and predictable and also come at a fixed price, which the parties easily agree on.
Time & Materials (T&M)
This model is similar to a fixed price but has no fixed budget. As the name suggests, as a customer you pay for the time and resources involved in a project. Before you start, you and your development partner must agree on hourly rates, usually based on overall knowledge and developers experience. Although your outsourcing provider still has full responsibility for the quality of the delivery, you have the right to access the required skill sets and resource allocation. This model is best suitable when the scope of the project and the volume of changes are hard to predict.
Dedicated Development Team (aka Extended Team)
Within this model, you retain maximum project management control, the team works under your supervision and you have direct access to each team member. The outsourcing provider does all the recruitment for the project, but the developers get to work only after your screening and approval. The provider is also responsible for all the administrative and infrastructure aspects, so you don’t have to meet any maintenance expenses. What you get is a team fully dedicated to your project with no retention obligations and employer commitments. The team will also comply with your corporate culture, workflow tools, development methodologies, etc.
This model is also recommended for long-term projects with changing scopes or requiring full developer involvement. The price formation for dedicated development team involves monthly payments that will depend on team size. These payments will include developer salaries (including a social tax) and your outsourcing provider's service fee.
If you already have your in-house team working on your business-specific software solutions, you may still use an outsourcing partnership to your benefit. If the developers with the skills required for your project are scarce in your area, hiring software developers nearshore or offshore could help you enhance your team with relevant skill sets. Many software development providers will offer you a Staff Augmentation model granting you access to skilled and affordable talent. Alternatively, a Hybrid Delivery model will help your in-house and offshore teams combine efforts in working on your project. All in all, a good software development partner should be able to offer you an opportunity to set up a remote, mixed or distributed team working on building your software solutions.
Step 4: Choosing a Project Management Methodology
After you have decided on an engagement model, it should be easier to choose the appropriate project management methodology for your project.
One of the legacy methodologies used initially in the manufacturing and construction industries, Waterfall is now considered too inflexible and lacking customer feedback. Its main focus is on the importance of documenting each step of the development process. The idea was that if the developer had to leave the project unfinished, anyone with relevant knowledge could pick up the project after reading the corresponding documentation. Despite its obvious downsides, Waterfall is best suited for projects with clearly defined stages and deadlines, with no anticipated changes and surprises during the development process, where everything is planned out and predictable.
Best suited for projects that are iterative and incremental, Agile methodology is based on the 12 Agile principles outlined in the Agile manifesto. Having emerged as an alternative to Waterfall method, Agile is highly adaptive, involves team collaboration and client input on each stage of development, and is targeted towards constant improvement. Best suited for large-scale complicated projects, it is also fast-paced and places a high emphasis on continuous development (CD).
An Agile methodology that fosters a collaborative approach and is intended for early product releases, Kanban has been around since 1940. Used originally at Toyota factories to streamline car assembly processes, Kanban uses visual cues to create a clear picture of all workflow stages. The cues include a board, a number of task cards and swimlanes helping to track and visualize the workflow. Some of the popular online project management tools like Zenkit or Trello are based on Kanban principles. Kanban is great for personal productivity purposes and, like Scrum, works best with small software development teams.
Just like Kanban, Scrum is another methodology based on Agile principles. It uses distinct roles, events, and artifacts to structure workflow and teamwork. All in all, there are three roles — the Product Owner, the development team, and the Scrum Master — that help allocate responsibility. The Scrum events including regular meetings help streamline and organize the development process, and the artifacts are, basically, the product documentation. A product backlog is the list of all the product specs required by the client, and a sprint backlog is, generally speaking, the list of upcoming tasks. Scrum is a flexible collaborative approach for client-oriented development and will work best with small development teams of up to 7 members.
In a highly competitive environment, companies that deliver best time-to-value gain the upper hand. This creates the demand for continuous development and deployment and accounts for the growing popularity of Agile project management methodologies. However, if you want to refine your existing product as opposed to creating a brand new app from scratch, you may just as well choose tried and true Lean and Waterfall approaches.
Regardless of whether you hire software developers offshore or onshore, the first thing you should focus on is outlining distinct product specifications. Knowing which client problems your software intends to solve, your project roadmap and basic MVP features will help you make informed decisions when hiring a custom software development provider. Clear product vision will be a cornerstone for your success: it will give you something to fall back on when choosing the right company, the engagement model and the management methodology for bringing your ideas to life.
Opinions expressed by DZone contributors are their own.