Is Writing a Big App the Best Way to Win?

Software entrepreneurs constantly make the mistake to equate number of features in software with a better chance of dominance in the market. And, if one look at how the market works, there is some justification for this thinking: if a software has a large number of features, then it can attract a larger user base. And, of course, more users means more money. Having a big app, therefore, means that we can get more business streams from the same niche or from related user niches.

However, a factor that is often overlooked is that increasing the number of features in an application may also reduce maintainability. Which means that the company will necessarily take more time to react to changes in the market. Consider classic example of Netscape: they had a web browser with more features than any other, and exactly because of this they were not able to maintain their leadership in the browser arena.

Creating a Proper Foundation

The only way to avoid getting jammed in complexity is to create a strong framework in which to build an application. There are practical examples of systems that were able to grow from very small to very large in a short time thanks to the superiority of the underlying architecture. A case in point is the UNIX operating system, whose basic ideas allowed it to grow immensely without sacrificing the qualities of its core. On the other hand, the Windows OS, which lacks such a strong foundation, has not been so successful in maintaining quality.

A typical response from companies that need to cope with this phenomenon is to throw more developers at the problem. While more developers could give some contribution, it is really hard to fix fundamental problems with an architecture after it is in use for a long time. Also, more developers end up adding complexity to a system, and the end result can be even worse in terms of maintainability.

The Opportunity

While it is a sad thing that applications are generally so badly designed, this state of affairs also present great opportunities for new companies. The goal is to create software that can improve on the legacy system by providing a better foundation for extensibility. If you have a good design for a piece of existing software, that would make it much easier to write and extend. Such a framework can provide a technical advantage that would turn the table to your favor. The framework could be created and deployed in the following way:

  • Create a small app that has the core functionality and is still attractive to a segment of users. It helps a lot if these users are not happy with the existing offers by big vendor. Make sure that your software present users with a good, extensible architecture. This is the factor that will make it easier to add more functionality later.
  • Get even more users interested in your app by adding functionality beyond the core infrastructure.
  • Avoid the costly mistake of adding too many features that would complicate your basic product.
  • Once you get established, make sure you continue to maintain the basic framework. Remember, the core technology of your program is what will make it hard for your competitors to replicate what you did.

Similar Posts:

About the Author

Carlos Oliveira holds a PhD in Systems Engineering and Optimization from University of Florida. He works as a software engineer, with more than 10 years of experience in developing high performance, commercial and scientific applications in C++, Java, and Objective-C. His most Recent Book is Practical C++ Financial Programming.

Post a Comment