Updated: Feb 25, 2019
You are a non-technical entrepreneur with strong domain knowledge and limited cash, and you have an idea for scaling and automating your business. You realize that your technology needs to be custom-built, it’s a lot more than a blog, an online store, or an event listing.
So, you are looking to hire a freelancer to build your vision - here are some ways to tell if you're talking to someone who can deliver.
...is almost always a mistake. I understand the fear so well. You have a fixed budget, and if you run out of money, your startup is done. You intuitively understand that your project is complex, and the fear is making you push all that complexity onto the developer.
If you follow this fear, one of the following may happen:
An experienced (one that has been burned by this before) freelancer will quote you double the price it would cost them to make it to account for the risks.
An unprofessional studio will deliver the product for a low price, but it will start falling apart when you begin to use it.
Your product will not do what you want it to do, and you will still be on the hook for the money.
Instead, a developer that is not only experienced, but one that has your best interests in mind, will make the arguments above in a confident manner and protect you from the lure of project-based work. Yes, it's scary to commit to Time & Material work but it will force you to make better decisions about your critical path to MVP and, partnered with a trusted and experienced developer, will end up saving you money in the long run.
Developers and teams that do poor work tend to not have repeat clients (ideally). Those developers try to expand the scope of your project because the bigger the scope, the more it's going to cost and the more money they're going to make off of you. Frequently, not maliciously, inexperienced developers will get over-excited about your plans and try to build out the grand vision without resistance. You will both waste a lot of time and money before realizing that sometimes shortcuts are more appropriate.
A good developer will keep trying to reduce scope - not because they don't want to do the work, but because they have your MVP in their best interests. There's always the next version and the next version for teams that do good work.
You, the entrepreneur, should be thinking, "what's the minimum that we can build that will get us to revenue?" and your developer should be pushing you to think that way. As they learn more about the business, they'll make thoughtful suggestions about delivering a project in stages. They will offer equally thoughtful responses to yours.
A project is usually started by a grand vision, and tempered by reality over time.
The key difference between commodity projects such as wordpress blogs, and innovative ones like yours is that neither you nor your team know ahead of time how long things will take and whether they will will work as expected. Good teams and developers will create an iterative design upfront and volunteer and explain concerns about untried technologies, scalability, ease of development and maintenance, security, testability, capacity to monitor and determine root-cause of failures and other things you, as the non-technical entrepreneur, don't really need to be thinking about. They will propose a sequence of deliverables that will shed light on those risks, let you revise your plans if necessary, and build confidence in the project as the risks are addressed.
Unqualified developers and teams tend to be opaque about these sorts of discussions and even get defensive when they're raised. Whether it's on this topic or any other, any time a team or an individual developer is not being transparent about their thought process or approach, that's a big red flag.
I am upfront with all my clients that I am a Python devotee, and if they hire me, that’s what they’ll get. I know my tool’s limitations and communicate them to clients. Other developers may know more technologies, but that breadth sometimes comes at the expense of depth.
Within a language and ecosystem, there are many options for frameworks and technologies, and most developers, myself included, gravitate to their favorites. The choices developers make at this point have long-term consequences and most founders, even technical ones, can't evaluate and vet all of them.
Some of these choices can cost months of work to undo, can hold up clients, revenue and future versions, or can force a rebuild of your entire application if the company pivots even slightly.
If time and money is not a concern, tell me your secret! Otherwise, you can find yourself stuck with the choices developers make for years to come. As an entrepreneur, you can try to make the best choice you can by asking multiple developers for the reasons they would use particular technologies. But as a developer, I prefer the guidance of a CTO-level technologist who has a much broader experience than I do with multiple tools and tech stacks. That way, I know that my customer has a foundation for long-term growth.
Managing a software project is a special skill that takes time and experience to learn. Over time, you develop an intuition for risk and complexity, and learn to have increasingly deep and productive conversations with your developers. One of the best ways to ensure the success of your project and to learn is by hiring a developer who is experienced in building startup MVPs, and a part-time CTO-level advisor to outline the right foundation for your project.
Anatoliy is a developer skilled in everything Python, including machine learning engineering, web apps in Django and ETL, and and is a blog contributor and friend of FastCTO. Unlike agencies and staffing companies, FastCTO does not make a profit from developers. The best way to work with Anatoliy and expert developers like him is by contacting FastCTO and having a conversation about your company.