Building software is hard to do. Mostly this is because doing so means being successful with a large number of things:
- A clear understanding of the business needs you are trying to address.
- A clear understanding of the business value and return on investment that will be realized and how to measure that success.
- A clear understanding of the information that supports that business need.
- Picking the appropriate information technologies (both digital and non-digital) that address the need.
- Finding competent people with the right skills and experience to build the software.
- Using a software development process that maximizes software project success.
Then you need to:
- Design an accurate and durable information model that will withstand change and from that model construct a database design that correctly captures the information needed.
- Design, code and test the software to address the business need correctly.
- Implement a technical platform that supports your needs for security, privacy and performance .
- Deploy the software and ensure you can monitor its health.
- Measure the business outcomes and adjust as required.
Why not just hire a single developer to do all this? Sure, as long as that developer has the right skills and the system you are trying to build isn’t too complex, you should be OK. Oh by the way, I’m not just talking about coding skill. A great developer running solo also needs business analysis, data modeling, database design, user experience design, technical architecture, quality assurance and testing skills – wow that’s a tall order.
Its like doctors – a GP (General Practitioner) doctor is good at treating general health concerns such as the flu and broken bones, but if I’ve got something wrong with my heart, I’ll want a heart surgeon by my side or if there is some going wrong in my brain, that neurosurgeon will give me a lot of comfort. Each has their place because of the context of the health situation and the skill sets they bring.
The same with IT professionals. With one very important difference. All software systems whether big or small, simple or complex all require varying degrees of the same skill-sets. Its not the same as doctors who actually have very different skills because of what they specialize in – heart vs brain. Treating the brain does not need the requisite skills of a heart surgeon. Creating any type of software system (yes even spreadsheet based systems) needs some measure of all the following skills: business analysis, data modeling & database design, user experience design, technical architecture, quality assurance and testing skills. Sure you could compromise on many of these to varying degrees, but what happens when you do?
Compromise on business analysis skills means that you may not be solving the right business problem or you may not build the right solution or you’ll build a solution which is more than you need. You also may not have a clear understanding of the expected business value you should attain and if and when that value has been reached. Worse still if your clients and customers are the users for your software and your software doesn’t deliver what they need, they will go to another company which gives them what they want.
Compromise on data modeling & database design skills and you may find yourself painted into a corner when you find out that the database you’ve created doesn’t properly store the data you need to capture and process. And fixing it means are faced with more time and cost. It’s like you are building the system twice and you can just imagine how much that’s going to cost. Imagine someone trying to enter some important data but the system has no place to put it (thank goodness for the comment field).
Compromise on user experience design skills and your system will struggle to meet the business objectives intended or make things worse by forcing excessive manual workarounds by users rather than actually improving their daily work – loosing any intended business benefits in the process.
Compromise on technical architecture skills and your new system may not handle the load that comes it way or the sudden spikes of unexpected success. Your system may be exposed to hacking and security risks that bring your business to its knees. Your people might find it difficult to get their jobs done because the system under performs…i t ‘ s s o s l o w…when everyone is using it. Or you may find that your data is trapped, not able to move to other systems in your business without being re-keyed manually – yikes that’s a lot of wasted time.
Compromise on quality assurance and testing skill and your new system could have serious bugs that prevent it from working correctly and more time and cost to fix them while your business struggles with manual workarounds to accommodate the bugs or your customers find other solutions with higher quality.
And finally does your solo developer have a solid process that adapts as requirements become clearer, are corrected or a more important requirement surfaces? In other words are they able to adapt quickly as inevitable change happens?
Whew! I’m exhausted! Here are some good questions to ask your software development candidates:
- What is your track record building software. Is this the first time you’ve built a full scale software application?
- What quality assurance and testing processes do you use?
- How do you measure the quality of what you build?
- How do you create a strong user experience in your designs that ensures I get the business value intended?
- What is the current level of quality of systems you’ve built – for instance, can you tell me the number of bugs classified by severity and how quickly those bugs are resolved?
- Are you coding using test driven strategies that establish a base of unit tests with maximum code coverage that is run regularly? (Say this five time fast.)
- What software development practices do you follow to ensure you can adapt as changes arise?
- How can you demonstrate that you are able to create durable data model and database designs?
- What technical architecture are you recommending based on my business needs and why? What other technical options are available and why have you decided not to use them?
- Are you supporting all the platforms that my users employ and what is the additional cost I’m incurring vs picking a single platform?
- How are you ensuring that my data is protected and secured appropriately?
Use these questions to help you find the right people with the right skills to make your next software development project a success.