Hidden Costs in Software Development
You have just bought a house. It isn’t your dream house. There is some damage to the structure and needs a lot of work. But it basically has what you need. 3 bedrooms. 2 bathrooms. A kitchen. Living room. Laundry room. Some storage. You know that you will have to expand at some point, but it is good for now. You did it! You should be very proud.
To save time, you decide to do the work yourself. After all, you know what you want. You watch DIY on TV. Sure it looks hard, but basically, you tear down some walls and put up some new walls. Viola! A coat of paint. A throw pillow on an ottoman. Some art on the walls. Everything is finished in a couple weeks and 30 minutes of TV time.
But there are always hidden costs. The plumbing needs to be updated. The wall is torn down to expand the bathroom, and there is mold. The claw-footed bathtub that you had your heart set on, won’t fit through the door. There is always something. The advantage of being on a TV show is that often you have an expert that can come in and solve the problem. But what happens when you are on your own. You have bought into something that you are now responsible for.
This should feel very familiar. We have all been tempted by offers for $99 websites. Or free mobile app development software. I can look on Upwork and find someone that can do my job for $3 an hour. What could go wrong? Doesn’t saving money, mean that I can do more? If I save money on software development, doesn’t that mean I can spend more on marketing?
The Hidden Cost of a Security Breach in Software Development
While we all can think of personal examples of software projects that have gone wrong, let’s take a look at a recent story from the news. Last year at this time, Equifax suffered a data breach that impacted over 147 million people. The consumer credit reporting agency was hacked and the accounts of all their clients were exposed. One of the largest data breaches in US history caused us all to look at how we handle our credit information. With over 23 class-action lawsuits totaling in the billions of dollars, it would be hard to find someone who didn’t know someone that was impacted by the lack of security. So this requires us to think of our approach to software development in a different way. While often the focus of our projects has been a cheaper and more efficient business process, this example shows some of the flaws in that thinking. It can cause us to undervalue the data that we are collecting and working with. As we look at saving hundreds or thousands of dollars for our software by cutting corners, we need to remember the cost of exposing our client’s data. In the end, we may find that spending the extra money is becoming necessary.
The Hidden Cost of Badly Designed and Maintained Code
Solving the problems that poorly designed and maintained code can be complex. It isn’t always a matter of using the right tools or development software. It usually comes down to solid software management practices. Norman Guadagno, director of Microsoft’s Visual Studio Team System, states that “The further along a project gets, the harder it is to understand what the original intent was.” This also causes a problem with the quality of the project. If we are going deeper into the project and getting further from the original intent, it often means that we need to make changes to the underlying structure before we can continue. Guadagno continues to say, that a common problem with enterprise applications is that not enough attention is paid to quality. If a developer is unsure of the whole project, there can be a mindset that creeps in. ‘We can work that out later.’ As a project can be driven by financial and time constraints, there isn’t time to work out everything before you start. This often results in a poor product. With the time constraints, how often does a developer have time to go back and fix the code that he was uncertain about. Engineers then are faced with a lot of fixes. Which can be costly in terms of budget and time. Guadagno concludes with, “It is less expensive to build quality in that it is to add quality after the fact.”
The Hidden Cost of Not Including Development in the Design Process
As the Web environment grows to be increasingly more complex, it is becoming crucial to consider the varied ways a Web experience can be interacted with. A designer can provide an ideal representation of what your software can look like. But they must also consider how the interactions will work together. Is that Pop-up going to block a necessary interaction? How is that drop-down menu going to look when it is fully expanded? Designing on an island will require going back to make changes to the design in order for it to actually function. Developing and designing in isolation will cost time in the long run as designs change and developers rework the structure to make everything work together. The most frustrating projects are the ones where the clients don’t understand that front-end development should be involved in the design process. The most rewarding projects are ones where the front-end development is included in the software lifecycle from the beginning. The more we consider the front-end development as we are looking at the design, the more rewarding and successful the project. And that is exactly what we want. Successful projects.
The Hidden Cost of Under-staffed Software Development Teams
If you have a look at the App Store, you will see a million different apps. Many of them are built by small teams. A 3 person team can handle a lot of the tasks related to building an app. But as the project grows, the need for more people becomes more clear. There is no doubt that the small teams have all the abilities of a larger team. They can do all the tasks, of course. But the question that we should be asking is, should they be doing all the tasks? In a small team, is there a place for other opinions. Other ways of doing something. In the end, once you have determined a path, it is up to the work of the small team. While they are working on one solution, production has to be put on hold. The fewer people you have, the fewer resources you have to do the work that you agree needs to be done. Fixes are a part of the projects. You will never avoid bugs. But if you take out ⅓ of your team to fix them, then you are limited your resources in another area. The typical project will take 4 to 6 months and often longer. The smaller your team, the more likely the team members will be focussed on troubleshooting, and not on planning. With a larger team, there is always someone that can come in and add perspective. The team leader will be able to say…”Ok, work on this while we work on this other part.” While you may be hoping to save money on developers in a small team, you will eventually over-pay because of the length of the project.
You might be thinking, “OK, but my project doesn’t need hundreds of engineers.” It’s true that most projects don’t need hundreds of engineers, but most products do need at least a small team of experienced engineers, designers, and product people to produce an end product that is competitive and that will generate true business results. It’s common to have between five to ten people working on a single platform (iOS/Android) app.
As a software company, it is part of our job to point out some of the hidden costs in software development. To anticipate the problems that you will have. To avoid shortcuts in the process and to focus on systems that will pay off in the long run. It is never easy to break up a concrete floor in the basement in order to replace a sewer pipe. That is why you get someone else to do it. It is hard. It is messy. It is also necessary. Meanwhile, you can focus on paint color and the right tile for the bathroom. So you have exactly the house you want. With no compromises.