Technology projects can be daunting. The complexity, the unexpected issues, and if you’re unlucky, cost overruns. It might be tempting to blame technology - something that is intangible and difficult to explain. But it starts, and ends with people.
Why do you want to start a software development project? To serve the needs of people. How do we know if it’s a successful project? We test it on people.
If we follow this logic, it is easy to see why we need to address the human factors when a project runs over its budget. In our experience, often it happens when the developer(s) did not have the required skill to see it through.
Particularly upsetting are a few recent examples of new tech-startups who have joined forces with extremely enthusiastic, but overconfident programmers, who have consumed budgets and wasted critical time.
I have no delusion that hiring a service provider in the digital space would be a daunting task for our clients. The speed and nature of the industry also means that any sort of professional standards do not stick very well. Time in the industry is also not an indication of quality, as an experienced person can become obsolete faster than a new player can become mature.
To try and overcome this, I’d like to share a popular list of questions and pointers created for the innovation workshops I teach. I hope that armed with these, people can avoid the bad, and help capable software developers win the jobs they deserve.
Questions to consider when choosing a Software Developer
Do they have an attractive and functional portfolio?
Even if the developer has not designed a scrap of the graphical interface themselves, do their app or web projects feel like the favourite ones that you use? Are they smooth or jittery, tight or clumsy? Does anything look out of place?
Do they offer client testimonials?
If they do, great, but go a step further and ask for contact details of the clients from their portfolio. A developer who offers this information willingly shows they have nothing to hide, and you stand a good chance of receiving a similar result compared to their portfolio.
Do they have the capacity to take an interest in your business?
A developer who is generally interested in you and your business will add value to your ideas with relevant suggestions. This is especially true with those who have many years of experience in business themselves or have studied more broadly than the core technology they use.
Do you feel you can establish a long-term relationship with this developer?
Most successful software needs to be honed to become optimally functional and should evolve to stay relevant. Both of these activities take time. Breaking up with your developer could mean restarting from scratch, causing your timeline to be reset. Choose carefully from the start, or date them (figuratively) if you can. Give them small challenges to begin with. For instance, ask them to write a specification for the project; one you can understand.
Don’t shop by price alone
Lowest cost option can be more expensive in the long run. The biggest reason for a failed development is because the developer completely underestimated the scope of work, sometimes to the point of not having the required skills to able to finish the job. This leaves you with an exhausted budget and no app to deploy.
Do they think of the whole package, not just the coding?
If you are extremely successful in finding a good developer you will notice they are obsessed with more than just the code. They will be obsessed with topics like User Experience, and they will bombard you with questions to understand how the app will be used, and what conditions it will be used under.
What might happen in a software development project. Image courtesy of projectcartoon.com
Questions to ask the candidate software developer
What development methodology do you like?
You should expect a mention of either Waterfall / Agile or a hybrid of these. Take the time to read up on the basics if you can, but a complete understanding is not necessary to evaluate a developer. In practice, both have their pros and cons and certain projects suit one more than the other. What you should hope is that your developer knows something about both and can present a case for which one suits your project most.
What is your Quality Assurance (QA) process?
What methods does the developer use to test the robustness and security of your application? If their answer includes the use of Unit Tests to ensure that each build they create will go through a series of automated tests so that they didn’t leave any loose ends untied, this is a good start. At the very sophisticated end, they may even mention some ISO/IEC standards. Be sure to ask them how they conduct usability and interface testing too.
Do you use version control?
An individual developer may feel they have less need for using version control but it is best practice to do so. Ask them which version control system they use, common ones include: Git, Mercurial and Subversion (SVN). While you are at it, set up an account with a source code repository like GitHub or Bitbucket and ask for access to the code. With this you can also see how often they are working on your project.
Do you have a development agreement?
All experienced developers will have one of their own, if they do not have one, this will likely indicate their level of newness to the game. It is within these documents that the ownership of the Intellectual Property (IP) created during the project is defined. Note in Australia: the default legal position is a contractor owns the IP. So if you want to be able to own your future make sure you consider these clauses carefully. The warranty they offer will also be an important indication of how the developer values their own quality.
Have you worked with designers before?
This question will determine if they are effective at working with other people. These designers could be good referees of what it is like to work with the developer. It will also indicate how much importance they place on how an app looks and feels. As a bonus, these designers may also be a good asset to your app team.
Do you have a support agreement?
As mentioned above, software will always require additional attention after its initial release, it is important to know how the developer will assist you into the future and how they will respond and charge. This may be included with their development agreement, otherwise, ask for it.
Warning signs that things are not well
Be wary of an individual who says they can do it all
As development includes several activities such as User Experience, Graphic Design, Interface Design, Databases, Scalability and Server environments (Cloud included), finding a very versatile and talented person who can deal with each of these adequately is possibly quite rare.
They don’t provide a development schedule
If you have been provided a quotation, this developer should also be able to provide you a schedule. After all how did they estimate the fees they need to charge? Commonly, your own availability can have a significant effect on a project. Thus, this schedule should also consider the time it will take you to be able to play your part in the development.
An experienced person can become obsolete faster than a new player can become mature.
Timelines are drawn out
It is not entirely unusual for a project to escape its planned schedule; you should actually expect this as a distinct possibility. However, if when asking your developer for a progress update, you continually receive “we are almost finished”, then you should be concerned. You should expect a revised delivery date and a demonstration of the progress actually been made.
Be concerned if they provide you a budget too quickly
Unless it is an extremely simple mobile app (and if it is you should ask yourself if the idea has enough merit to pursue), a good developer will be very reluctant to pull a figure or time frame out of the air. This demonstrates that they understand the iceberg analogy: there is more complexity waiting under the surface of a simple app idea.
Requests significant amount of budget upfront
It is acceptable for a developer to ask for a deposit, this demonstrates your commitment and also helps them cover some of the time they have spent to properly consider your idea before commitment. After the deposit, ensure that the rest of the budget is broken up into logical payments, which can be attached to the delivery and demonstration of a functional area of the app.
It is hard to get a personal meeting or get them on the phone
No news is good news, unless you are asking for news then the opposite is true. Not being able to get a voice call with your developer from time to time could certainly be a warning sign, even when working with developers in other geographical locations. That said, you should also be sensitive to your developer by giving them room to operate. Too much communication can slow a development down.