I was recently brought in to assess a site that was developed. Though it was supposed to have been custom written to fit the needs of the business, it turns out the local company simply purchased a pre-written (originally from 2004) piece of software but tried to pass it off as custom developed by changing the copyright. Legal action likely pending.
Custom software rather than very old, off-the-shelf software can still suffer from poorly architected and difficult to maintain code, and regardless of how well architected the code might be it still needs to be maintained over time. Even if you’re non-technical there are still steps you can and should take to mitigate the risk as much as possible and to maintain full control over the work you’re paying for.
Ensure They Can’t Subcontract The Work
Make sure the contract has a clause where the work cannot be subcontracted without your authorization. You’re hiring that developer or firm not someone else of their choosing, yet still paying their rates.
These are difficult to verify, as you pretty much need to know them or they have a decent public presence to have earned trust through a referral. But it doesn’t mean you shouldn’t try.
Ensure the Software Is Custom or Built on a Framework With an Appropriate License
There should be a clause that it’s custom in your contract, or based on an open source project with an appropriate license. Software like WordPress is licensed under GPL, which means there’s technically no restrictions on sharing the code that’s developed on top of it. If you have sensitive business processes you don’t want to expose, you’ll want to make sure you trust the developer or have another framework chosen.
Agile or Weekly Billing Instead of Fixed-Cost With a Large Deposit
Using a developer who offers weekly billing means you get to control how things are going and if you’re not happy with the direction, you can stop at any time. Major components can and will take more than a week, but this is still much better than a large fixed-cost project where you’re locked in after giving a 50% deposit and cannot change the direction when you learn more about the needs of your business.
Even if you’re not working with a developer that offers agile development or weekly billing, weekly meetings ensure you can review progress, verify priorities, and answer any questions they have.
3rd Party Audit
Bring in a 3rd party developer like myself who can audit the code at various stages of development, and even interview or work with your developer about their current and future plans to architect the system. Tell the developer you’ll be doing this and if they have a problem with it, this may be a sign that they don’t want you finding something they’re trying to hide.
Ensure You Have Backups That the Developer Can’t Access
If you are paying for the software, you should have full control of hosting and backups. In addition, some backups need to be set up that the developer can’t access in case of a dispute. Keep incremental backups over a period of time of code and your data.
Though the hosting may not set something like this up for you as part of the package, they should be able to guide you through. Before you sign up for hosting ask the hosting company if having separate backups is a possibility. If not, you should find another hosting company, at least during development. You may need to spring for more expensive but fully managed solutions where you can get the support you need by phone or email.
Paying Too Little
If you think you’ll get Etsy or Youtube custom created for the equivalent of a week’s worth of work, you’re mistaken. If you’re getting the software developed on the cheap as an MVP with the realization you’ll likely need to throw it away later after you’ve proved there’s demand for your idea, this might work. Otherwise you’re fooling yourself.
Ultimately you’re responsible for the outcome but I hope these tips can help prevent you from paying a lot of money for software that no one but the original developers will maintain. If you have any questions feel free to get in touch.