In the Software Building business the goal is to build the best possible software.  In some areas there is tremendous competition and it is easy for people to switch from one vendor to another.  In the phone/app world, people jump to the next app/game very quickly.  An app that is hot one month, can be gone the next.  As a developer you challenge yourself to make your application perfect.  But, maybe isn’t that the best way to succeed.

In this pursuit of being perfect, it may delay releasing the application.   In fact some developers in the pursuit of perfection delay over and over again.  This notion it has to be perfect allows for their competitors gain market share, or take market share from them if they already have a version out.  In the “internet age”  we often heard release fast, and fix.   Facebook lives by this motto.   It’s hard to find an example of a company that has failed or lost market share because of this, as few people will admit that publicly.

When I am talking about software being perfect relates to user interface and having every function planned.  My masters is in HCI (Human Computer Interface) now more commonly known as User Experience, and we can be a pain in the ass.  There are UX designers who will go far beyond what is needed for an application to be usable.  I wont go into how UX could be done but reasonably.   Often designers like Alan Cooper and others will do in depth work to come up with the perfect interface and will bring customers.  I will do another post on the 3 pillars of UX another time, but right now the focus is on perfect vs good enough.

Now in internal development (software built to be used by the internal companies) this is where the being perfect could hurt differently.  Applications have to be good, and I even had a boss say “good enough.”  Being good enough gets the application out, and can assist the company in gaining revenue, reducing risk, saving money etc.  Now of course the application had to work, cannot cause issues, but being perfect is not one of them.  Good enough means the applications have to improve whatever process that exists today.  But being perfect costs firms money, perfection delays releases, and delays benefits.  There should be some feasibility thoughts of what would be the cost of building a better interface and more functions vs. getting benefits to the user faster.

Over the past years a new method of project management called Agile.  This is based on building and releasing small increments of functionality.    This fits in with the theory of release fast and fix.  It has been successfully adopted in may companies with varying success.  It is not a panacea, but just the philosophy drives towards what is call a MVP. Minimal Viable Product.    This is something that just has key functionality but not all.  Get it to the users quickly and let them direct the next set of functions and changes.  I use this currently in my job.

So after years of developing internal applications we use the phrase “Perfect is the enemy of good”

Originally posted in March of 2016, Updated December of 2020.

This opinion is mine, and mine only, my current or former employers have nothing to do with it. I do not write for any financial gain, I do not take advertising and any product company listed was not done for payment. But if you do like what I write you can donate to the charity I support (with my wife) Morgan Stanley’s Children’s Hospital or donate to your favorite charity. I pay to host my site out of my own pocket, my intention is to keep it free.  I do read all feedback, I mostly wont post any of them.

This Blog is a labor of love, and was originally going to be a book.  With the advent of being able to publish yourself on the web I chose this path.  I will write many of these and not worry too much about grammar or spelling (I will try to come back later and fix it) but focus on content.  I apologize in advance for my ADD as often topics may flip.  I hope one day to turn this into a book and or a podcast, but for now it will remain a blog.