I work for the company that is building its own software for the purpose of bringing some value to its users. So, we don’t sell software but we sell what software does.
I noticed that people are regularly throwing overgeneralizations and telling that bringing value is the only important thing. At the end that is not false. What is usually missing is understanding how quality of software that is meant to bring value affects the process of producing the value. By making decisions about the software platform you are inducing heavily the ways you convey the value. You are enabling yourself to communicate some messages but from the other side you are restricting yourself for the others. Most probably lot of technical decisions on the platform will heavily affect how you bring the value to the end user.
Lets dissect overgeneralized Nobody
Most of the people are big generalizators. When they want to say something, it is easier to tell it in more general way, because getting into details need explanations and can remove focus from the point. That works for some cases, but there are cases when we can’t simplify things more than the problem allows.
Nobody in this case means Nobody that is willing to pay for our service cares about how it works in the background until it is satisfying their expectations. In case of web development, simply said Your users don’t care about your software
When does it happen that our users have to care about our software
Lets see, why would our users be forced to care about the software. That usually happens when software starts to get into their way. Lets take one invented example sketch.
Imagine two step process of filling the form on your website. You fill
in the first step, then click
next to go to the next step and fill the in second
step. You did not fill in properly second step and the process returned
you to refill first step again in order to do everything correctly.
Wat!!! Your website just made my day. And the days of lot of other
The history of this feature usually goes something like this:
- Product owner comes with really great idea of multistep form, and with the deadline for yesterday.
- Engineers explain that their framework don’t really support multistep forms, but they will make it work somehow.
- They make it work somehow, exactly as described above.
Here is important to see the relation of the state of this particular software and technical explanation of this problem with the effect on the user. And obviously, user really doesn’t care that your framework doesn’t have expected features and that you don’t really know or have no time to implement it properly.
5 Whys of this problem
Why does user have to go to the first step again?
Because we didn’t have time to properly implement the multistep form behavior.
Why didn’t you have time to implement it properly?
Because our framework didn’t support this option and we had to implement it in a very short time.
Why didn’t you choose framework that has a bit more features?
Because we didn’t really get time to plan properly migration to a new framework. We took someting that we where most familiar with.
Why didn’t you take your time for such an important decision?
Well, there are other things to do, and we just thought this is going to be enough for now and did not think that much about future. We thought that we’ll be able to add features we need, but then we got understaffed and we didn’t find new employees fast so we had to do everything in a hurry ….
Why is that, it looks more like a management and staffing issue
Because, you know, in our company we have attitude that Noboday cares about software, we only care about bringing value to our users
The other part of Nobody
At the beginning we extracted User of our software from the Nobody that we introduced at the start of the story. So, if we said that user doesn’t want to care about our software, what should others in the process than do.
Well, in my opinion that is what building business that is relying on a software product to deliver some user value is all about. Others should care that user can fulfill his goal by using software and not caring about software itself. In fact what user is paying us for is to care about the things he doesn’t want to care. Unfortunatelly, when user starts to feel that software is getting into his way, lack of care for software has probably got too far away to fix in an easy way.
Just to prove my point I have to list some responsibilities of standard roles in a company that produces software of any kind.
Management should care that service company provides is satisfying and that users are not leaving for the competition. They should as well care that software is maintainable with reasonable price because they pay that maintainence at the end, stable and reliable and that it produces more happy than unhappy uses, easy to understand and documented well so they can expand the team fast, people are educated for the position they do so they don’t introduce stupid things into the codebase, environment is optimized for long time work of this kind, motivation is high … mostly non-technical things that make life of people that produce software confortable and make environment in which software is built stable and predictable.
Product owners should care that they can use software as the modeling tool for easy prototyping and trying out new ideas, that quality of the product is not restricted by the software fallacies, that software is not just visible implementation but as well statistics gathering tool through which they can develop business ideas and prove some theories they might have ….
Engineers should do their best to learn and understand the software building and how to produce more quality, maintanability, flexibility and stability with the least effort involved and with lowest resources. We as engineers should as well really understand the domain we are working on and be aware of the environment in which we operate, company strategy and short and long terms goals … and lots of other things.
Goal of listing all of these responsibilities is not to make proper or correct list but to give a glimpse at the fact that lot of them are related to actual state of the software, its health and health of the environment specific for software production.
At the end I come to the baseline of the article. It is my opinion that in a business that is bringing value to the user using software product all we have to do is to make users of our software not care about the software. And the way to achieve this is that you as company that is giving software tool to the users should care about that software so they don’t have to.