Since the movie from 1966, we’ve all been talking about the good, the bad, and the ugly of every problem. Most people focus on the Clint Eastwoods of a situation: what are the positives? Any why wouldn’t they; we all want to look at the bright side.
Sometimes, however, you have to look at the whole picture. Today, we’ll be riding side-saddle like Eli Wallach and finding out the 7 ugly realities of software development.
1) Simple usually costs more, not less
You would think that the simple version of a product would be the cheapest, but so much goes into making things easy.
Look at Apple: their phones are known for their ease of use. Apple employs thousands of designers and developers to make it so simple. What about a mobile app? Uber seems simple to the consumer, but behind the scenes they spent over $1.5 billion on research and development in 2018.
Simple doesn’t just fall out of the sky, either. Extensive research needs to be done to figure out what exactly needs to be simplified. Your design team will need to take the research and create that simple experience. Finally, a lot of stuff happens behind the scenes, and you’ll need the technical power to do it.
When developing your app, just developers won’t be enough to build simple software. You’ll have to invest in research and design to make sure you get something that looks effortless, but isn’t.
2) Not every project is successful
That’s the risk with innovation: not everything can have a happy ending. While some projects have guaranteed ROI, some will be up-in-the-air. Some projects will take a lot of time, money, and goodwill, all for it to not work out.
However, there are some ways to reduce the risk of loss. You need to make sure everyone involved has a deep understanding of the vision. Not just what it looks like, but also the goals of the project and if those goals are realistic.
Early research is another way to move in the right direction. If you talk to users early on as well as throughout, you’ll be able to recognize problems faster. It’s much easier to fix a problem early than after your software is completed. Research could even lead to something completely unexpected, and you may need to kill the project entirely.
Finally, you’ll want to research what the competition is doing. This way, you can make sure your idea stands out. You’ll also want to see what has been successful for others, and see how you can use that to your advantage.
Sadly, even with all this mitigation, you can’t guarantee success. Nothing is full-proof, and your project may just not be what your organization needs.
3) There is no such thing as bug-free software
Think about the top technology you use: there’s frequently patches and updates to fix bugs, right? This is because no matter the size and complexity of a project, there will be issues to overcome.
The average iPhone app has around 50,000 lines of code. Microsoft Office 2001 had around 25 million lines of code; that’s the equivalent of 450,000 pages of text. For context, the record for most pages in a book belongs to Henry Darger’s In the Realms of the Unreal which is just 15,000 pages. Compared, that’s about 3.4%. It’s easy to see why it’d be hard to write all of that code without at least one mistake slipping through.
Even Microsoft and Apple with over a combined 280,000 employees can’t build bug-free software. No one likes to admit this, but developers will always want to try and fix bugs in their software. Trust their work and ability to solve issues; it’s all a part of the process.
4) Expect that at first you won’t succeed
You could talk to users for hours and do extensive research. You could run both a lean and agile process. Even with all of that, your final product may not be what your users need. When they get a hold of it in the ‘real-world,’ you may realize you need to change a thing or two.
Software is never a one-time investment. Success for a project long-term requires continuous improvement and monitoring.
5) Your application may be dated within 3-5 years after the initial build
You’ve convinced the stakeholders and investors, spent the money, and done everything right. Your software is a big success, but be cautious. In the world of software, things are changing every minute.
Good continuous improvement is necessary; you can’t rush through changes or improve your app in the wrong way. Listen to your users, or else your app might become dated or difficult to maintain in as little as three years.
Which do you think is more expensive: a t-shirt off the shelf from Target, or a custom one straight from a designer? Custom anything will always cost more, and that doesn’t change with software. But costing more doesn’t have to be ‘ugly.’ If your company is trying to solve a specific problem, building a custom software may be exactly what you need.
No matter the size of your business, the cost will be about the same. A large corporation will have to build on a much bigger scale, but they can spread the solution across several employees. A smaller company might find it more difficult to justify that kind of spend. This doesn’t mean it’s impossible, but we have to face facts: custom software won’t always drive a big enough return to justify the cost.
7) Protecting user data is important, but it costs quite a bit
If your project contains PHI, PII, or financial data, it will be critical to protect it in some way. It’s much easier to add security to your front door than it is to add security to your app. Protecting your users requires a large investment in several different areas.
If you cut corners and get low hourly-rate developers, chances are that they’ll be inexperienced or not know what to do security wise. Things in your software will work, but at what cost to your data?
Implementing a scanning software like Veracode during the development process is a great way to identify issues early on. You’ll also want to complete a dynamic scan on any completed code. However, you’ll have to pay for licenses as well as pay your developers to both scan and fix the code.
Encryption is necessary for keeping data secure. Whether it’s sitting in your app or in transit, you should use encryption to keep it safe. As expected, setting this up will take additional time and money.
Depending on what your software is, you may want to add two-factor authentication. While it adds more security to your project, it’s an additional feature which takes increased time and cost.
Your app will need support long term; if you’re serious about security, you’ll want to limit the amount of access to data. A test environment can be created, where data is “scrubbed,” meaning that developers will be looking at fake data instead of sensitive information. Of course, this means creating custom code to do this or licensing a scrubbing software like RedGate or Dataveil, meaning more money.
As you can imagine, the list goes on and on and on. If you really care about security, you’ll need to break out your checkbook.