How to select a service provider is complicated. Finding the right development team is essential for the success of your project. Here are 16 tips to help you get the right team.
Tip no. 1
You need to discuss your expectations in an open and honest way. Expectations can break relationships if they are too far apart.
This is especially true for medium and lower development budgets where there are many constraints and strain can cause priorities to shift.
Talk to the provider. Manage and discuss expectations to agree what will and what wont be done. Find a team that you can talk to, that is easy to communicate with. You will need
Tip No. 2
Be aware of implicit requirements, those that are thought to be well known and dont even get discussed. You may not mention signin, loat password or sending scheduled emails. It may be taken for granted that system would cater for editing articles or that it will run in IE6.
These kinds of requirements can often be a source of pain. Ensure you express to the provider and ensure they know what kinds of features you are expecting.
This goes hand in hand with managing expectations in tip 1.
Tip No. 3
The language of software is vast and getting to grips with software vocabulary is a must. Your provider should be willing to communicate and educate you, but of course getting yourself in good knowledge is a means bridging the gap. Being familiar with software development and process terms is a must.
Here are some basic terms.
- Continuous Delivery
- Software Architecture
- Dependency management
- Code refactoring
- User stories
Along with terms, you should also have an understanding on measuring software quality, testing software, licensing (Tip 6) and code ownership (Tip 6 and 7).
Tip No. 4
There are service providers that use a range of technologies. Not all teams use the same tech. Therefore selecting a provider that can utilize technologies that are good for you is important. They may be selecting technologies that are best for them.
The tip, is to get involved and understand the motivations and reasons behind choices. Ensure you understand and question the provider. Not caring what technologies are used could be detrimental. As you know, technologies come and go, do not rely on the service provider to make all the decisions. Be part of the discussion and ensure you learn enough about the technologies to have an informed decision.
Tip No. 5
Its pretty normal to list out everything you need. Its human nature to try to get all your hopes built, but remember that software is in a unique position to faciliate changes and enhancements. In fact, dealing with change is what gives a computer a leg up over other types of developments.
Your software could be built by team A or Team B. Team B is saying that it will cost more. It not merely going for the cheap option as Team B may be a better fit. So think of your requirements as malleable, get the team that fits well. You can always get the right team to add a few more features each month. If you select the wrong team, just because it's cheaper, it may cost you much more in the long run.
Ensure you get full usage and ownership details of the code written for you. Many companies like to maintain copyright and you are actually licensing it. Ensure the provider stipulates the licensing and code ownership exactly.
You must ensure that you can use, reuse and changd the code with another provider if your relationship with the first provider ends.
Tip No. 7
Cost of Ownership
Software is costly. You need to maintain it. Its not a shower and you call the plumber out once or maybe swap the washer once every 5 years. Software is more brittle than that. Software requires upkeep. The worse the code, the cheaper the budget, chances are it may be a little more brittle.
When you get a quote, you must insist on yearly budgets. You should not be hit by unexpected costs. Software can break, things can stop working. Software quality affects cost of ownership.
Request quotes for total cost of ownership, not just how much to build it.
Tip No. 8
Minimal Viable Product
Its important to flesh out the minimal requirements. The core system requires a set of basic functions. Declare these as your minimal solution that makes a viable application. Be very critical of what is really important. Put anything that can wait behind as less important. You can use the MoSCoW method to help prioritize.
Tip No. 9
The software provider should provide access to the output of the development and code. There is no reason why these things cant be shared with you. Insist on seeing the software on a server, browsable by you during the development. The provider should be willing to demonstrate the software and gather your feedback easily and continuously. Do not let them spend months where you are in the dark.
A good provider will also recommend that you bring in more people during test iterations and or provide access to other stakeholders. Its not uncommon to bring in a few willing customers.
The early the feedback, the more chance of catching a mistake or finding an improvement.
Tip No. 10
Select a team where there is a strong technical lead. The lead developer, architect or product owner should be well rounded and versed. Too often projects that use junior developers or a lack of leadership, go awry. You need strong talent AND a good leader.
If its a one man team, ensure they have a track record in dev and design capability.
If its a team of developers, ensure you have a strong technical lead at the helm.
Pay more for the leader. Pay more for the architect. Pay more for better management and technical detail.
Tip No. 11
There are a quite a few stages to business product development which translates into a mindset and vision. Your business is at one of these stages and it influences your needs and how you think.
Identify your vision and objectives. Take special care to identify whether you need a prototype, gain a new market, gain a share in an existing market and what your overarching business objectives for the project are. You need to get a development team that understands your business and can implement a process and software plan that matches it. A good team and a good business can often be misaligned and not be a good collaboration.
Think about your business carefully and know what kind of team would suit it.
Tip No. 12
Freelancer or Company
Be careful when hiring freelancers or a one man band company. Their situations and fortunes change rapidly. We recieve many requests from people to take over from a freelancer who now has a day job or wont return their calls.
This is epidemic in SA right now, mainly due to over zealous cheap pricing when they are in troubled times and then the money is too cheap when they get offered a job for 3 times what you paid them.
There is an air of desperation in the freelance IT sector, so just be careful.
Ensure you are hiring a well established freelancer oe company with long term freelancing projects.
Tip No. 13
Your solution could be built with many technologies. Sometimes though, a technology stands out as the better candidate, but your solutions provider may feel otherwise. You must take their advice on board but be careful of technology bias.
If the company works with .NET, they will automatically suggest. NET. If they work in React, you guessed what they would suggest.
Analysis is required. Find the right tech for your business and application. Ensure you hire a provider that uses what is best for you.
Tip No. 14
It is important that the team you hire has a good set of lifecycles under their belt. The more diverse the lifecycles the better.
They must have experience with planning, testing, coding, refactoring, designing, rewriting, continuous delivery and finite projects.
Projects that are still running in the wild also shows good experience rather than projects that are now defunct. Ensure the team has a full set of experience with all lifecycle aspects.
Tip No. 15
Zero Sum Game
There are still those in business who have to WIN. They do this by trying to get more for less. They will try to push for lower prices, they will try to strongarm and fight for harder work, drive you to break. They want to win and they want to milk every part of their payments to you. They always feel they are done in and want you to push harder whether you are at breaking point or not. Dont be this person.
Your relationship is best when its win-win. Your development team must be driven by quality. Quality is your first port of call. Squeezing your development team will naturally reduce quality. A development team should be treated as a partnership and you need to listen to their side. Be empathetic and find a team that understands your side so they act in your best interest as you do theirs.
Delaying a payment for example, undervalues their contributions and provides undue stress which affects the team. Look for win win partners.
Tip No. 16
Software Design Experience
It is a vital aspect of software. Although design also covers user experience, its more overlooked than that. The architectural design, the design decision maker is often neglected.
When you have a complicated project, someone needs to pull it all together in consistency. Depending on the nature of your project, you will require some or more design work. Ensure your designer is qualified. You wouldn't want to leave your expensive new home build to an amatuer and not all software coders are equal. Look for an architect, lead developer with design experience. Get examples, get references. Lack of design in a large codebase can be expensive to change, refactor and enhance.