Taking a software idea from inception, through design and development, ultimately resulting with a completed system can be a rewarding endeavor. The software creation process combines creativity, vision and business acumen with planning and execution, yielding something new and unique that can benefit both niches and the masses. My clients and I enjoy working together because they can expect a successful outcome. However, not all software projects proceed as expected, resulting in delays, buggy releases, cost overruns, missed requirements, and other signs that indicate the need to address a deeper problem. When speaking to people struggling with similar problems, I find they are often struggling with how much of these issues are due to their own shortcomings, vs. the competency of their development team. If you are facing similar issues with your project and not sure what to do about it, read this article because it discusses the causes for many common issues.
- Mockups vs. Prototype: Your development team may have created some mock-ups and maybe documented some workflows, but you never experienced a click-through prototype that simulated the actual user experience. And to make things worse, they began development before all the design work was finished. Professional development teams spend the time needed up front doing detailed mock-ups and turning those mock-ups into high-fidelity prototypes. A high-fidelity prototype looks and feels very much like a real application; however, it is just a very sophisticated mock-up with animation built to look and feel like the finished product. The reason a high-fidelity prototype is so important in the process of designing a software system is because it is extremely difficult to predict how the user experience will feel without clicking through the finished application. A high-fidelity prototype can accurately approximate the user experience. Problems found with the user experience while clicking through a high-fidelity prototype are dramatically easier to correct by updating the prototype, making the design process a highly iterative experience, rather than finding those problems much later in the completed application, resulting in costly code changes which take much longer. All the screen mockups, flow charts, and navigation diagrams in the world can not properly expose potential problems with the current user experience design compared with a high-fidelity prototype. Working with a development team with long experience creating high-fidelity prototypes dramatically reduces the amount of re-work and missed requirements during the development phase of your project because so much of the functionality is exposed in detail.
- Your dev team doesn’t report progress on a consistent schedule: At a minimum, you should expect a weekly status report from your development team regarding the progress they’ve made toward the current milestone. Status reports may come even more often in very early or very late phases of the product development lifecycle. For example, during the design / prototyping phase (assuming the UI is an important aspect of your project) you should expect status reports and status meetings, either online or in person, in which the developer shows the status of the design and requirements documentation 2 or more times a week. Even during development intensive phases that don’t require a weekly status meeting, the minimum you should expect is a detailed status report each week that shows the progress of the development schedule toward completion of each milestone. If all these concepts sound foreign to you, rush to find a professional, competent, and disciplined development team.
- You may get progress reports but rarely see demos that confirm that progress: Maybe you were happy with the mock-ups and the click-through prototype that matched your vision of the product. But now that development is underway, you’re not shown progress often enough. Trust your feelings because they’re probably right. A professional development team should show you progress on a reasonable periodic basis. You should expect to see proof of that progress on a consistent basis, maybe not during every status report but fairly often. You should also get test versions of the app to play with yourself (if appropriate) near each scheduled milestone. Chances are if you rarely see demos and never get to play with the software yourself, your development team may be hiding something from you. Trust yourself if you feel this is the case.
- Your dev team makes too many excuses why they are always behind schedule: Due to the nature of software development, software project schedules are often complicated by items which are unknowable at the outset of the project. However, once development is underway you should be apprised of unknowns as they are identified. Most project schedules include a certain amount of variance to account for these unknowns. A well-developed schedule should not fall dramatically far behind the published project schedule except in rare cases. Trust your instincts if you feel that your software team makes too many excuses for the reasons why they’re late. It may be time to ask yourself some tough questions about the viability of your project if you continue to use your current development team.
- The schedule keeps getting pushed back farther each month: You keep getting delays from the team, but you don’t want to make a rash decision because, let’s face it, changing Horses in the middle of the race is a very painful process. However, months have gone by, the schedule has been pushed back farther and farther, and it seems there’s no end in sight for the completion of your project. The truth is that if you bear the pain and discomfort of switching to a professional development team, you will likely finish the project much faster, even given the time for transition, and you’ll end up with a product that will perform much better. How much is your happiness worth?
- Milestone deliveries are too buggy: It’s not unreasonable for milestone releases to have a lot of bugs. But what’s not okay is to keep stumbling across unexpected bugs during every Milestone release given the fact that your project is late, and your software team never set expectations regarding the stability of the system and which functionality is not yet tested properly. If your team is on time and you can see that the functionality is being completed and built correctly, you can live with buggy milestone builds as long as your team assures you that deep and thorough testing is planned prior to completion of the entire system. It’s even better if your team is good about warning you of known bugs before you do your own testing. However, if you are getting those buggy builds combined with some of the other project symptoms already mentioned earlier, you may be experiencing symptoms of a much deeper problem, especially if you have a feeling that the quality of the system is lacking beyond what you feel is reasonable.
- They keep getting your requirements wrong: Maybe your project is complex and large and maybe you thought those requirements were documented properly (hopefully your requirements are documented). However, if you feel they keep getting the requirements wrong, or they keep forgetting to implement requirements that you know were discussed and documented in detail, then you may be dealing with a team that doesn’t apply the rigor, discipline, and process necessary to ensure those requirements are developed to spec. Teams that don’t enforce a disciplined practice make you feel like the ground you’re standing on isn’t solid. The problem is that ground will never solidify if without engaging a disciplined team that believes in and implements rigorous methods and follows a prescribed process. I can’t stress strongly enough the difference a team like this makes in the outcome and success of a product; and, you know quickly when you’re working with a competent professional team because it just feels different, as though you can finally relax because they are all over the details, so you don’t have to be.
- You feel like you have to become a watchdog: Anyone who has made the commitment to build a system and or start a software business has made a big personal investment to take the time and effort and diligence to complete the system. So, it’s not uncommon to feel as though you have to stay on top of all the details to keep the project moving forward in the right direction. However, you can tell if you’ve been working with a substandard team for any length of time because you’ll feel like you’ve become a watchdog that can never relax for even a minute or things will start to go sideways. If fatigue is beginning to overwhelm you, it’s time to move on and find a professional team that will manage the details for you, consistently report and demonstrate progress, and make you feel like you and your project are being well cared for.
- Fixed Price Projects: They keep increasing the cost: When you’re quoted a fixed price to complete version one of your system, you expected that version one would cost that amount. In some cases, you may have felt the need to expand the scope; hence, increase the cost. However if your software team tells you they have to increase the price for reasons that don’t feel valid, especially if these increases happen more than once before the work originally committed to is complete, you may be working with a team that gave you a low price knowing they would increase the price over time to make up for the low quote. Usually these increases in price come along with extended delivery times, resulting in double the pain. If you’re reading this article, you’re probably at the end of your willingness to be abused and it’s time to look elsewhere for a competent development team that is good for its word.
- Hourly Rate Projects: Effort estimates are always way below actuals: I tried to do most of my projects on an hourly basis because it’s always difficult to accurately estimate the effort needed to complete a large complex system at the beginning of the process when so little is known. My tendency is to estimate high for hourly work because I don’t want my clients’ first experience to be one of disappointment and erosion of trust that low estimates can cause. I don’t feel that’s a fair way to conduct business with my clients. However, not all development companies feel the way I do. If you feel that the company you’re working with continues to estimate work low just to get you to commit to new work with the hope that once you’re deep enough in, you’ll continue to pay until it’s finished, this is a strong indication that it’s time to find a team that with a higher level of integrity. The truth is that the amount of work it takes to complete a particular effort is not going to change no matter whether the estimate is low or high. I prefer being honest rather than saying what my clients are hoping to hear. In the end, honesty develops trust and I become partners with my clients in an effort to achieve mutual success.
Are you a clear and concise communicator?
There are many good, honest, disciplined, and talented software development firms. It’s worth taking the time to learn the difference between a competent firm and ones you really need to avoid. Finding the right firm will save you money, develop quality systems with way fewer bugs, with much less frustration, and can be the difference between a successful venture and one that fails due to cost overruns, huge delays, or poor quality systems that couldn’t keep your business alive. Your success isn’t always dependent on the right development team. It’s usually dependent on you and your ability to drive your business to success. However, a bad team can be one of the reasons it fails. If you’re struggling with a bad team, don’t be under the illusion that you’re stuck with them. Make the change and get your project on the right track today.
If you are struggling with one or more of the items above and would like to get an outside assessment, please feel free to give me a call. It won’t cost you anything. I don’t make a habit of running down other development teams, because most teams work hard to help their clients succeed. I will listen with an objective ear and give you my honest opinion regarding the state of your project including some suggestions, and maybe some language you may be lacking to help guide your project back on track.
However, if you are certain it’s time to bite the bullet and find a new team, call me today. My favorite clients are those who have struggled previously with other less competent software companies, because they can truly recognize and appreciate the difference and professionalism I and my team bring to any project. My clients are always pleasantly surprised at how painless the transition process actually is and how quickly we get projects back on track.