Sunday, December 29, 2013

Software low barrier to entry not necessarily good

Generally, in the technology industry, the mantra is that barrier to entry for software is low. There are multiple reasons for this, but the primary reason is that software requires very little physical pieces to get started with and there is a lot of documentation out there. This is unlike other industries such as :

Hardware - which requires hardware components, physical goods, durable materials. Examples: Computers, phones, appliances

Retail - which requires having expensive physical stores built-out to attract customers

Hospitality - which requires having attractive, physical spaces to allow individuals to be entertained/housed at, such as hotels, resorts, and/or cruises.

Because of this belief, generally, it is believed software is a great industry to get into. However, after being in industry for close to three decades (I started when I was 10), I argue that having a low barrier-to-entry is more of a hindrance than advantageous for the software industry. 

In the early days of software, before distribution was easy to do over the internet, there was a premium to buying a physical good, i.e., a software package, for hundreds, sometimes, thousands of dollars, to build out applications on desktop computers. Alongside knowledge and documentation was sparse and hard to find except only in the hands of industry professionals through bookstores and the companies that built the packages. Examples of this include Borland's development tools, Microsoft development tools, middle-wares such as CORBA or EBS, or PowerBuilder. There was no such thing as try before you buy in those days. 

These days, software packages and documentation are easier to acquire across the spectrum, from low quality to higher quality, for free to mere hundreds of dollars to get started. If there's enough interest, intellect, and momentum, almost anyone can pick up a software package and develop software for desktop, web, mobile, or embedded systems.

However, due to the high investment of higher barrier-to-entry industries, there is an incentive to create something that is different, competitive, appealing, and interesting for the consumer.

With lower-barrier-to-entry, as we are now seeing, the level of quality of resources and deliverables in the industry have gotten lower and lower over time. An example is software development tools are not as good as they used to be and, as a result, the software itself has suffered. Games industry is another industry that have become highly fragmented. Very few companies have done a good job in keeping up with the concept of premium and quality, which are those that have a high investment. The companies that do not are the ones that anyone is picking up and using pure short-cuts and non-thoroughness to build what I call crudware. From what I've experienced and seen in the past and today, there is a lot of crudware out there today.

One may argue that low-barrier is better because this empowers those who may not have been able to participate if it was high-barrier. I would say these individuals also do not think through as clearly what they are building which results in lower quality products that beg the question why it was even built in the first place. A lot has to go into quality software, such as UI experience, requirements, understanding what the customer wants, graphical and font elements, and finally consideration of multiple screens (web/mobile,etc).

Finally, we have gotten into a position of "ready, fire, aim", which costs a lot more in terms of time and people resources to get a quality piece of software out that is usable and makes sense on why one would use it in the long term. Most companies get to "Ready, fire" (which are seed/a-round investments", but aim fizzles way. Which in turn, results in consistent low quality and, frankly, as we are seeing, low ROI and waste for 99% of the software technology companies out there. This in turn does not help the investors.

A good metric for that is to look at companies that were mentioned in publications such as TechCrunch, Business Insider, or Gizmodo a year ago, and look now. You will notice most of these companies are not in existence anymore. Lower barrier entry results in lower quality industry.

My suggestion is if you were going to go into software development, instead of seeing what is the minimal you would need for seed, first start with what you would do if you had $2 million investment. And then break it down into iterations of the company. This will put more thought into how you would recoup the $2 million investment over a 3-5 year timeframe. And as VCs, this is what I would recommend looking at. This is what has to be done in high barrier-to-entry industries. If we treat software as a high barrier-to-entry industry, we will get high barrier-to-entry industry quality.

You can not do it all in one iteration, plan what you release and when you release.

Wednesday, December 4, 2013

7 layer burrito architectures and it's drawbacks

As I talk to different companies, there are places that exhibit what I have dubbed the "7-layer burrito" architecture. Of course, this name comes from the 7-layer burrito that Taco Bell sells.

As a food item, it's delicious. As an infrastructure or software architecture, it's not advantageous for an organization.

A 7-layer burrito architecture is an infrastructure architecture that has added layer upon layer of systems because:

1) There was not time to refactor or refactoring was not done completely.
2) There's a new technology that is "cool", so they must have it.
3) A belief that more layers are better - "bigger is better".

7-layer burrito architectures, of course, does not mean exactly 7-layers. But, if any organization goes to 7-layers, it should rethink what they're doing and focus on minimizing.

Personally, I like simple. The lesser the number of layers:

1) The less time spent maintaining and up keeping of each layer as new versions come out. Including testing, debugging, and fixing integrations.
2) More time is available from the team to work on value-added items.
3) The speed to debug and fix production issues is faster because there are less layers to roll through to find the root cause.
4) The speed to process and deliver information is faster.

If any organization does have a 7-layer burrito architecture, they do need to rethink why it is there and find ways to minimize it. Else, the organization can become bloated and slow down throughput tremendously.

At AcceleWeb, our architectures are simple. We have no more then 3 layers of infrastructure to support our sites, and believe that these days, very few organizations need more then 5. As the number of layers increase beyond 5, the architecture gets derailed by complexities in handling each addiitonal layer.

I would love to hear from others their thoughts.