There is Such a Thing as Good Enough Software

OpenShift Ninja
May 13 · 7 min read
Image for post
Image for post
Image Courtesy of Max Pixel

I Always Strive for Perfection

Writing software to meet the requirements of my business partners is my job. A lot of people do what I do, to varying degrees of success. Some people write software with the objective of getting the task done and moving on to the next task. In other words, treat it like any job where the goal is to finish all the work in the backlog.

Code Smells and Anti-Patterns

As software engineering became more of a mainstream occupation, a large number of books were written talking about patterns of development. One of the most famous of these was a book called Design Patterns: Elements of Reusable Object-Oriented Software by by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. These patterns were really informative and helped a lot of engineers build better software from the ground up.

General Magic

I think no story exemplifies this better than the story of General Magic — a company that was formed with some of the best talent that Silicon Valley had ever seen (there is a great documentary film that talks about the company in detail). They were founded with a vision of bringing computing to everyone in a form factor that was small enough to carry around in your hand. This is something we take for granted today, but at the time, it was unheard of to have a computer smaller than a briefcase.

Being Agile

In the two decades following the dissolution of General Magic, software has largely gone through an incredible revolution that has made delivering software on time while still striving for perfection much more possible. Instead of writing large business requirement documents and then using waterfall processes to write software, companies have turned to Agile methodologies where teams focus on small bits of functionality that can be delivered in just a few weeks.

Conclusion

Software engineering is a field where we often strive for perfection. Software that is better engineered will generally work better and allow users to be more productive. Engineers have written books about patterns, anti-patterns, and code smells to help other engineers avoid the pitfalls that they have encountered in their efforts to build better software. These are great tools, but striving for perfection can distract us and cause us to fail to deliver a working solution.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store