Skip to content

Developing software products: why do we do what we do?

Share on twitter
Share on linkedin
Share on email
Share on whatsapp
Software products

Some time ago, in English class, I had the opportunity to see a talk Simon Sinek gave at TED back in 2009: "How great leaders inspire action". Leaving aside the title, since today we are not exactly going to talk about leadership, nor inspiration, nor action, thanks to this talk I understood the evolution that professionals and companies that are dedicated to developing software suffer (and sometimes, in a masochistic way, even enjoy), in our path of constant improvement, both personally and in what we offer to others.

The evolution

As an engineering, software development is a recent discipline, and therefore not only the tools and technologies, but also their processes have suffered (and continue to suffer) a really fast and unstoppable evolution. For those of us who are in this business, this means a lot of adaptation, a lot of learning, and a lot of need for foresight, to be ahead of what technology is going to offer us as well as the needs of our clients.

If we talk about how companies evolve in terms of their mere adaptation to this recent engineering, there are reference models such as CMMI or Spice that indicate the level of maturity of an organization that is dedicated to software development, which will also determine the quality of the software it develops. But we are not focusing on this either.

For me, the real evolution happens when companies start being the penultimate link in the subcontracting process (that which in the jargon we call "meat", without any mercy), then they move on to develop turnkey projects for the clients they have acquired, and finally, taking advantage of all the experience acquired, they are able to develop products, solutions for the needs of that market that they have started to know in the previous phases.

The questions we ask ourselves along the way

If you have already had the opportunity to see Simon Sinek's talk with which I opened the article, you will have seen that Sinek marks the evolution of companies based on three questions: what we do, how we do it, and finally why we do it.

We see how the evolution I described earlier answers these three questions, and as those of us who like to develop products know why we do things the way we do: why we start a project, why we focus our efforts on new functionality, why we continue to release new versions that are sometimes a new product, and, since every life cycle has an end, why we must let go of our product.

The Developer's Challenge

The life cycle of a software product is different from that of a turnkey project:

 The overall duration of the project is not defined, and neither are more than a handful of requirements. And yet, we will be required to keep the time-to-market as short as possible, but with as many features as possible. The approach to the product will be gradual, and very possibly the final result will have nothing to do with the initial conception. The market and the competition continuously push us to achieve new functionalities, without affecting the existing ones. Commercial needs may mean that the product has to be divided into different modules, or that we have to produce different versions with different scopes. Some customers will want customizations of our product, or functionalities just for them. The market may be global, and therefore the internationalization (i18n) of our product will be required. As opposed to the conception phase, which is always exciting, the evolution and maintenance phase can be particularly absorbing and not very novel, which should be a situation to be avoided.

To help us in all these challenges we have a series of concepts, tools and methodologies (which are not necessarily exclusive to product development), such as

I will continue to develop these and other related concepts in subsequent posts on this blog.

The global challenge

But this jump is not just a challenge for the developers, the challenge is global for the whole company:

  • It is not enough to know our customers, we have to know a whole market of potential customers.
  • We have to speak their language, and possibly incorporate people (or even some of our customers) who know that market into the equation, to get our products on track.
  • It is difficult to know how much will be spent, just as it is difficult to know how much benefit will be gained. You will have to take financial risks, but these risks should be limited.
  • Time takes on a different dimension: while we may not be subject to milestones set by external customers, we have to overcome the temptation to let go. It is also important to be prepared to offer new features or solve problems detected in record time.
  • In addition, it is necessary to know other products of the competition and to look for a differential fact, a different, novel approach, something that attracts to the market. Or look for our market niche.
  • The way to reach the customer can be different: we can offer a product that is taken out of a box and installed at the customer's home, we can offer a product that complements another product, we can offer customizations, we can offer the service instead of the product. We can even give away our product or the associated service, and look for alternative ways of monetization.
  • The commercial strategy must also be different, whatever the format chosen.
  • It is necessary to take care of the image of the brand and the product, to be aware of possible problems and to respond to them.
  • It is precisely for this reason that the quality of the developments becomes even more important.
  • The knowledge of the product, of the market, of that "why", is mainly in the people who form the company, and it is more than important to maintain it.
  • Change, adaptation, even risk, must be part of the company's culture, along with other values such as innovation, self-improvement and excellence.

Why do we develop software products?

Only by knowing why we do what we do can we meet this challenge at the company level. It's not about what we do: that's clear, we develop software, and do what a client asks us to do, of course, as well. It's not about how we do it: the technological challenge is fine, but it's not enough. It's about why: we do it because we know what our clients need, and we offer it to them; we do it because we believe in what we do, and we believe it because we are permanently looking for the best solution.

Share the article

Share on twitter
Share on linkedin
Share on email
Share on whatsapp

A new generation of technological services and products for our customers