Can software be perfect?
Applications, or Apps for short, are pieces of software designed to solve a problem. Whether it increases productivity or breaks boredom, apps are good tools to have. But can they be perfected?
Short answer? No. Software can never be perfected because daily issues continue to increase and change.
Take for instance a fart soundboard app. It might start with a single sound effect. But now users want more fart sounds, so the developers make 10 different kinds of farts. What happens when users want to record their own farts? And what about the ones who aren’t particularly flatulent but want to create a sound to call their own? These ideas are never ending. Most of the time they don’t even start on the user end, but the developer’s end.
How can users increase the volume? How can users sample more farts? How do I make it PERFECT? This is the core of every developer’s drive. Perfection. We all want to make the end-all be-all product. While this chase can be exciting, one must be careful not to get entangled by the idea of a “true” final solution.
In college, I created a program where users enter input, the program manipulates it, and displays output. It was a fairly simple task…one that I spent 30+ hours working on in one weekend. I wanted to be sure that if a user enters erroneous input, the program could warn the user and prompt them to re-enter their information without crashing. This meant searching documentation on the String class in Java, looking at different loops, and a sleepless night on the keyboard.
I figured it out after breaking night to complete the program. However, I lost a lot of sleep and exhausted myself for an A that I could have gotten for a fraction of the effort. My point is, we all want to do our best to create solutions. Instead of worrying about the optimal solution, we should shift our focus to solving problems at a lower level and expand over time.
The amount of time needed for optimal expansion of the software depends on a case by case basis. I believe this approach will help software developers deliver good products while leaving enough room for improvement later down the line.
-CF