One of the big decisions for any new startup is the selection of a development team. Whether you need just one developer or you need a complete team, there are five important things to consider first.
What kind of experience does the development team bring? Is this their first freelance project or have they been in business for several years? Have they ever developed, deployed, and supported a product before? Do they have their own product and understand all of the work that goes into building a business besides coding?
First-time freelancers are often naïve when it comes to using technology to support the business. They may use bleeding edge technology rather than stable technology for core business processes, causing problems after the startup goes live and requiring additional work to reverse the problem.
While estimates are exactly that, an estimate, the more experienced the team the more likely they will have encountered a similar solution in the past and therefore do a better job at estimating the effort require.
Finding a development team with experience in the particular industry or customer focus will determine what kinds of insight, or lack of insight, they will have when it comes time to develop the product.
Experience usually means more expensive, but it also helps to reduce rookie mistakes and increases your chance that the project will end on time. Plus, you will likely spend less time and energy having to communicate constantly to ensure you get what you want and it will likely cost less by the time the project is done.
Also, be sure that your development team has previous experience deploying and supporting a running product. Some freelance developers have only built pet projects or have been part of a bigger team and have never had to construct an application that can be supported in production.
What kind of development process do they subscribe to, if any? Are they willing to adjust their process to fit the needs?
Every startup is different, so every development team will need to adapt their service. Some projects require more up-front coding to experiment and shake out risky approaches or technologies. Others will require more thought up front to ensure the product performs and scales properly.
Don’t expect the development team to have a documented process, as most of the time a process is more of a framework or guideline. Development teams that bring in a process that works for them, with the willingness to bend to fit the project, are likely the best fit.
Planning and Communication
How does the development team communicate? Does their style of communication match your preferred style? Do you need them to assist with planning, or do you prefer to perform the project management tasks?
Great development teams know how to plan. They often have a preferred tool to manage communication. Email communication is convenient, but often becomes difficult to track and lacks authority when one or more people are left out of the email discussion.
Find a development team that has a preferred set of rules for communication. This will often surface when you investigate their overall process, as communication is a large portion of the development process.
Finally, determine if you need them to perform the project management. While you may not need a full-time project manager on the team, at least one developer will need to play the role of a project manager if you will not be doing so. This includes defining the goals of a deliverable, the time line, tracking progress, reporting progress to the team, and dealing with problems as they arise.
Development and Testing
What is the primary technology they enjoy working with and why? Will the technologies they prefer support the needs of your project without too much extra work? What kind of third party libraries do they prefer to help accelerate the product? Do they have their own private libraries that they license to their customers to accelerate development?
As development teams work on more projects, they often become opinionated on what works and what doesn’t for their style of development. This is important, is it prevents them spending valuable time from your project trying to guess on what would work best.
Mature development teams often have an internal library of often-requested features or utilize third-party libraries, which allows them to rapidly develop new features to common problems.
Finally, make sure your development team takes a balanced approach to automated testing. I’ve witnessed some teams that focus on a metric, such as the ratio of test code to production code. While this is a good baseline, your startup should not live and die on this number. Be sure the development team is capable of balancing automated test development by focusing on the areas that are 1) critical to the business, 2) complex, or 3) critical to security. As long as automated tests are being written, new ones can be added as bugs are discovered to prevent them from regressing later.
Sizing and Deployment
How comfortable is the development team with determining the number of servers and configuration? Will they be able to configure the servers and install basic security features, or will you need to bring someone else in to perform those tasks?
Development and deployment are really two different aspects to launching a startup. While some developers think that it is nothing more than scripting a few startup scripts, a lot more goes into product deployment: initial sizing for v1.0 and beyond, configuration of the servers and running software, hardening the servers for security, failover, redundancy, monitoring, and management.
While not all of these steps are needed to deploy to a v1.0, you will likely want to retain your developers after the initial release. You need to be sure that they will grow with your startup, handing the necessary steps as they product matures.
Selecting a development team for your startup is an important process and should not be taken lightly. More goes into development than just writing a check, so look beyond the hourly rates. Find a development team that executes in a complementary way to your business. Find a team that has a bigger purpose other than to take your money. Find a team that is investing in others, not just themselves and their desire to play with new and fun technology. Find a team that works for you.