I wish I could say these pitfalls rarely happen when choosing a software development company. However, in my 15 years of experience, they are more frequent than not. To give your business the best chance of success you must be aware of these pitfalls. They can cause catastrophic financial problems or leave your software system in a state that is unmaintainable. Below are some of the most common pitfalls when contracting a software development company.
Should a Software Development Company Rewrite Your System?
If you have an existing software system and are contracting a new software development company; beware the rewrite! Rewrites are extremely expensive and produce little business value. You’re essentially paying to create the same value you already have. Software development companies that take over legacy systems LOVE to rewrite software in the technology stack they know best. If the technology stack of your system is not in their wheelhouse; they may recommend a rewrite even when a rewrite isn’t necessary.
No software system is perfect but a complete rewrite is very expensive and time consuming for the business value it produces. You should ask yourself if a rewrite will sell more products, attract more users, or allow you to develop features faster? You want your software development company to focus on the business value. They should not “geek” out over new technologies and build systems for the sake of building them.
How do you know if you need a rewrite?
- Your system’s technology is depreciated (Silverlight, Adobe Flash, etc..).
- The technical debt is so bad that maintaining or creating new features is harder than rewriting the system.
- When it is extremely expensive to host or maintain the system. Rebuilding it will save expenses (moving from outdated servers to cloud hosting).
The most common (partial) rewrite I find acceptable is updating the UI of a legacy system. If your system isn’t usable on a mobile device, it needs to be. You can rewrite the UI without having to rewrite the server or database.
Should Your Software Development Company Select Obscure Technologies?
Should You Own the Code Repository?
You want to own the code repository and have the contracting software development company work from that repository. Your company’s code should never be held hostage by any software development company. You should be able to access your system’s source code at any time. This gives you transparency so that you can see or bring in a third party to evaluate their system if they are looking to change development companies. You don’t want to be in a position where you can’t fix or work on your system. Own your code!
Should You Own Your Hosting/Cloud Account?
The Cloud can host most software types. If your system is going to be on the cloud, ensure you own the account. It doesn’t matter if it’s AWS, Google Cloud Platform, or Microsoft Azure. Without getting overly technical, code repositories, continuous delivery pipelines, web hosting, domain control, managing users, etc. can all reside on the cloud. It could be months of work just to recreate your current system. Setting up in a different account or moving from on-premise to the cloud can be a large undertaking.
Should Your Software Development Company Create Documentation and Artifacts?
As stated in the obscure technologies section it is inevitable that your system will have various developers working on it throughout its lifetime. For developers to efficiently start working on your system they need more than just the code. Documentation explaining how the system works is essential for developers. They need to access common processes and rationales for why certain decisions are made. This is true even if you aren’t changing software development companies because the company itself may have developer turnover. Your system and your business are at risk if documentation is not created. Changing development companies or developers quitting/changing jobs puts your system and business at risk when documentation doesn’t exist.
Contracting a software development company is hard. You are trying to figure out if they are capable and technically competent enough to do the work required. The pitfalls above are issues that most businesses don’t realize until it’s too late. Your software development company should build and maintain software without coupling itself into your software causing your business to depend on their company.