What is your Model of Software Company?

Hi everyone!

I just wanted to share with you a simple thought. What is exactly the model for your software company or the software company you are working for?
I think there are many models and sub-models defined by business superexecutives from Business Schools. That's the dark side. From the geek perspective is probable the models are slightly different.

We'll consider four main categories. To illustrate these categories I've chosen a very basic analogy. It can be fun!

Firstly, we have some requirements from an undefined customer. Here we go!

Requirements:

  1. We need to keep humans (from 1 to 5) from rain, sun, wind and other atmospheric events.
  2. The object to be built should be strong enough to not fall down because the wind.
  3. Some light in the inner is required. The object should have  some open holes on walls. However, these holes should be covered with some kind of transparent material. They can be opened and closed.
  4. Hosted humans should be able to burn some fire as a heat source into the object.

Right, let's do it! We have four main options to meet these requirements.

Model 1 (CREATOR). We'll make our bricks, doors and windows. Well, we'll basically need a very skilled and experienced  architect as well as people with the skills to build such elements from basic materials.



Model 2 (INNOVATOR). We'll buy bricks, tiles, doors and windows. We'll still need a pretty skilled architect however. We'll need people with strong skills about building walls, mounting doors, windows, etc as well. It is not that difficult but can be hard without the proper people. Moreover there are many types of bricks! We need to predict what are the best ones to be successful.


Model 3 (ASSEMBLER). We'll buy ready-made elements. Whole walls, panels, etc with already embedded doors and windows. Naturally, bricks can be set in many different ways. So, we need to carefully choose what walls, roof panels, doors and windows we'll buy. We'll need now a not very skilled architect with a simple plan and people with a few skills as all we need is to assemble things each other.



Model 4 (BUYER). We'll buy a house to re-sell to our customer. All we need here is a guy seeing catalogs of products with simple tests.


Some important questions can be made from these categories.

  • What are the benefits for each model?
  • What is the minimal investment for each model?
  • How are we conditioned by the job market?
  • What is the cost?
  • and many others

From my very personal point of view as a geek I always prefer to work or have a software company that is creating technology, new ways and trends. This is not very frequent. On the opposite is difficult to find. The second model is amazing as well. By investigating new products, languages and trends we can also to create new ways of software development.

The funny thing happens when a new requirement is received:

  • We need now to make the object bigger to host from 10 to 20 humans.

I am afraid the buyer model has a serious problem now. Probably they need to convince their customer to buy a different house.
The assembler model depends entirely on their staff. I If they hired poor quality people they are screwed up.  It will depend on the quality and skills of their employees to build an extension in the first built-with-modules house.

In the meantime, new requirements are received:
  1. We need a structure to host cows.
  2. It should have at least 20 cow feeders..
  3. It should have some open sewer system.
I am afraid model 4 and probably 3 are now in serious  difficulties. Will they buy a stable to re-sell it to the customer? Regarding the model 3, the ready-made modules bought for the first project are useless now as they are specific for human houses.

My question is, which is the model with a better adaptation to these changing requirements? What model will be more adapted to a changing market? Who is more capable to integrate new improvements in basic materials? Which model is better to make more money?

Unfortunately most of software companies are mere assemblers or even simple buyers. we can find models 3 and 4 in words like these ones (I swear I've heard them at least a couple of times from guys with some kind of responsibility in a software company):

"We do not want to re-invent the wheel" (model 3)
If we had not re-invented the wheel millions of times in History we still have stone-made wheels in our cars! We need to ask questions about any pre-conceived paradigm or idea, investigate and innovate about what is supposed cannot be improved. This is the very basical principle of scientific thinking.

"Look what I can do with this expensive tool" (model 4)
Well, I like your expensive Splunk dashboard or whatever. Impressive. This is the typical buyer that actually hates innovation. He is the man in the middle to earn a small % of money because... well, he is in the middle! Business will notice soon or later they do not need him.

"This is not in the requirements" (model 3 and 4)
By being strictly glued to the requirements we'll never evolve about anything new. Business is not technological! We need to tell to Business about the technological options and how they can evolve, improve and create new businesses from technical innovations.
This is important because the guys saying this are glued to low-level employees.
The real business high-level thinkers usually are open to innovations and new ideas.

"We only use well-tested technology" (model 3)
This is very related to the buyer model. Actually, he is saying he hates innovation and prefers working in the comfort threshold (e.g. the Spring stack). It is bad, it is slow, not scalable but is extended. What else? Do not be surprise when business will say you are slow and old and they are looking for new options in other companies. Thanks and good bye!

"Our innovation is functional, not technological" (model 3)
Honestly, I need to understand this weird statement. If the innovation is not technological, what the fuck are we doing with it? We deliver software, for the sake of God! Basically, it is not innovation at all. It is just another example of Post-Truth. If you say a lie many time will be true. It is usual as well in buyers and assemblers models.

"Non Functional requirements are not important" (models 3 and 4)
This is the trap we can find with tight schedules and under-estimated deadlines. We need to build scalable, robust, well-tested systems. Then, meet the requirements. This is the key to success in projects, not the opposite. Because we'll never find time to improve the system.

"Tests are not important. 99% of time you work to fix broken tests. It is preferable to provide functionalities to the customer" (we can find this in any model but is specially frequent in model 3 and 4)
This is another hard to understand thing. If you do not include a simple and basic diagnosis mechanism previously to delivery, how do you pretend to deliver anything? However  it is a natural conclusion if you are always implementing software in the same stack/framework (e.g. Spring again) or you are just a buyer.


Well, this is more or less my analogy. My concern is that software development is always an intellectual work and production processes are strictly coupled to this principle.  The model you choose for your software company will open your business opportunities beyond your plans or it will drive you to bankrupt and boredom in a few years.



Comments