Custom Software – The Questions You Never Asked
If you’re like the rest of us, I bet there are lots of questions you never asked—never even thought to ask. For instance – Is that needle clean? (at the doctor’s office). Has the pilot been drinking? (as you board a plane). Has that dog ever bitten anyone? (everywhere).
We just assume the basics in life are covered by honest people, laws, and competence through training and repetition. And, for the most part we’re right. That is, we’re safe until life throws one of those surprises at us. Medical offices are sometimes poorly run, pilots are only human and do sometimes drink, and I did look like a deer on a bicycle to that Doberman.
To be honest, it is just easier to trust people than become your crazy aunt wearing the Aluminum foil hat.
But Business Should be Different
But business is different – there’s often a lot at stake. Not only should you be able to ask any question you want without feeling pushy, you need to be smart enough to ask the right questions. And there’s the problem – at least in the world of custom software development. Unless you (or your attorney) know the world of software, you’ll never know which questions to ask. And the questions change continually.
I’ve written my share of software development contracts over the past many years and, to help you out a bit, have assembled several of the questions that I would be asking if I were signing a software contract with a development company. These are based on experience, stories of woe from companies that did not ask the right questions, and my New Jersey upbringing where ‘trust, but get it in writing’ was printed on every high school diploma.
• A Contract and More – A contract is great, but one that just reads ‘If I give you $10,000, you will return a software program in ten weeks or so.’ is not so good. A solid contract spells out all of the business relationships between you and your software vendor. Our name for this document, Master Services Agreement (MSA), is a good indication that this should cover every aspect of your business relationship.
Ask for the MSA and have a good lawyer (definition: thorough but not tedious) take a look at it before you sign.
• Who Owns the Software? – I am always surprised when large, well funded companies find themselves in the spot where their company-‐centric custom software application is owned by the developer. This never ends well.
Make sure you decide whether you need to own the software (including source code) or not. It should never be an unknown. I would suggest you always err on the side of ownership.
• Quality Expectations – All software contains bugs. Well-‐tested software will have little, annoying issues. Poorly tested software will embarrass you in front of your clients and the boss. Your software development company should test the software before you ever see it. It is a given that you, your staff, your brother-‐in-‐ law and your customers will not make good testers – you’ll just test the easy stuff and the complicated stuff will be ignored. And, the guys who write the software are even worse than you are. As one of our developers once said – I didn’t go to four years of college to be a tester. A bug is just a misunderstood feature.
Make one of the MSA criteria for product acceptance be a quality level that you must sign off on.
• Will it be Secure? – If the big guys are getting hacked (i.e., Target, eBay, Facebook), you don’t stand a chance. On the other hand, you should expect reasonable security precautions be implemented. There is no need to open yourself up to a hack from a bored high school kid.
Ask for a report of the security test done on your final, deployed software (note this requirement in the MSA). This is an uncommon request, but it will put your software vendor on notice that you are serious about security.
• Is it Scalable? – Build it and they will come. Most companies have an ultimate goal of growth. Growth often means more application users, larger databases, and significant web traffic. Great news until the new application just gets tired and you’re faced with a rewrite.
Building an application that will scale—meaning it will support future growth—is a lot harder than building a ‘starter’ application. Databases must be designed for volume, process intensive functions need to be smarter, and the choice of an infrastructure must be judiciously made.
There are relatively inexpensive software tools that will exercise your new application with simulated users and operational volume beyond your wildest dreams. Project you future growth, double it and set a performance bar. Set the bar in the MSA.
Hopefully you’ve realized building a custom software application requires a lot more than just defining how it should operate. Two high school grads in a garage can write software – it takes a lot more to surround it with quality.
Still the Wild Wild West
I doubt if there is any technology-‐based industry that is looser or more inconsistent than custom software development.
As you interview a team for you next software development project, make sure you have your act together – ask questions, insist on a comprehensive contract (MSA), and expect a well-structured approach to you project. The ‘good’ companies will become obvious and others will dance.
Picking the right company will make your effort a joy of creation and collaboration. The wrong company will make you older and poorer.
If you want advice, a sample MSA, or to hear about my Doberman encounter, get in touch.