One of the most important jobs of programmers is coding. Coding is just a process. The ultimate goal of coding is to produce valuable software that provides a service.

It doesn’t matter if you’re responsible for back-end coding, producing deployable services, or mobile building an App, maybe front-end, writing pages, etc., maybe class libraries or frameworks, etc. All of these products, if we could sum them up in one word, it would be software

As a programmer, have you ever thought about the value of software?

This week, THIS is the second in a series that continues with my thoughts and analysis on the code approach. The other articles in this series are:

  • The Code Code (I) : The Programmer’s Bible

Why talk about value

Maybe some people think it is a little redundant to talk about the value of software, because software must be valuable, customers need a software, sure it can meet their needs.

So there’s not a lot to talk about here.

This is exactly why I want to write this article, because the stakeholders of software, including customers, programmers, managers, companies and other roles, all have errors in identifying the value of software.

And this kind of error is causing a very important reason for the predicament of the software industry now.

The biggest dilemma in our software industry is the difficulty of producing high-quality software that is easy to maintain

So whether we programmers can clearly understand the value of software is a basis for us to write good code.

Because:

Software has both visible and invisible value

In coding, the key to the frequent occurrence of many problems lies in:

There is a lack of measurable consensus on the unseen value of software

As shown in the figure above, the value of software is clearly divided into two parts. One is the value that is visible and agreed upon by all parties, which is on the surface and WHICH I call business value, and the other is the value that is almost invisible and not agreed upon by all parties, which I call technical value

The business value

It can be seen and all parties can agree on the value

Software has to be valuable to the business. It has to provide some services to some people, and those services bring value.

Business value refers to the value of software on the surface, and any software usually has its own business functions. For example, e-commerce software supports online shopping, and stock trading software enables people to conduct stock trading. The value that is visible on the surface and shared by all stakeholders of the software is the visible value.

Almost every aspect of the interests of the software, for the business value without conflict and inconsistencies, a detailed description of the product requirements book will demand the details of the test case document will describe how to test in our business, and almost all of the management of the project management center of gravity is at the time the business value and guarantee the quality of these business value. In addition, from development to products and customers, there is a consensus on business value, and there is no difference in understanding.

Business value is also measurable, from the number of bugs, or whether requirements are fully met, how the operating experience is, and when features are developed.

Of course, it is very necessary to ensure the timely realization of business value and its quality. There is nothing wrong with this piece of work. The problem lies in the other value of software, which is the technical value, which is invisible and difficult to reach consensus.

Technology value

Values that are invisible and hard to agree on

A closer look at software reveals some hidden, undetectable features:

  1. The quality of the business value does not reflect the quality of the code that follows the implementation of the business value
  2. Most software requires constant iteration or maintenance, but this feature is hard to intuitively feel and lacks consensus

The essence of these features is that software is technically valuable.

But in the actual process, software technology value is difficult to be regarded, and very difficult to measure, lead to this value is almost neglected, and in the business value of repression, namely decision-making often to see the see the business value of technology to sacrifice they understand or don’t understand value, result in the short term looks secure business value, But the actual time a little longer, it is completely harmful to harm the behavior.

Must have some difficulties for many programmers code, the code is hard to continue, bad code quality, and to modify a BUG easily cause a heap of new BUG, add a new function need time more and more difficult to assess and stabilized, business value more and more insecure, the whole team into a vicious circle.

This is the manifestation of the problem of technical value in software, which is very common in software development.

The common problem with technology value is:

  • Non-technical people lack concepts and understanding of code quality and maintainability, and since they are not directly coding people, but often have decision-making power, it is hard to ask such people to pay attention to technical values.
  • While technical people understand technical value, and they themselves know how well or badly the code is implementing, they are often not decision makers and are generally schedule bound, and in many cases they have no choice but to sacrifice technical value.
  • Technical value is almost difficult to measure, it is difficult to use a certain standard to judge the merits of technical value, although there are similar performance tests or code scanning code, but these can almost only reflect one aspect.

Based on the above reasons, although the technical personnel often have a heart, but the essence of the protection of technical value is powerless.

As shown above, I often use Sonar to evaluate analysis code, which is one of the few ways to measure technical value, but it has very limited power. A complete and measurable way of valuing technology seems elusive.

One can imagine the truth is, if the technicians to policymakers suggested: “give me two months time, I to refactor the code, and make it better, but no any change on business functions”, it’s hard to imagine that the decision makers, which is often very technical background, how to understand and agree with this thing.

Maybe one scenario they could imagine is: let the team waste two months and then get nothing?

Software value

Therefore, my definition of software value is:

The value of software is composed of business value and technical value. They cooperate with each other and depend on each other

No business value, no matter how good the technical value is useless, or even become a technical personnel’s narcissism. And without technical value, business value is completely attic in the air, can not be stable and long-term.

Business value and technical value, like the two instruments of tai chi, should be equally important.

Therefore, as a programmer, you have to know the value of the software, and understand what your responsibility is for the value of the software, especially in terms of technical value. Programmers are almost the only group that has the ability to guarantee the value of this piece, and it is impossible to expect products or customers to guarantee the value of this piece.

That is the purpose of this article.

Coding dilemma

As I have summarized above, the two values of software, namely business value and technical value, are interdependent and cooperative, which constitute the real value of software.

In reality, business value is more important because it is visible, measurable, and understood by all parties. On the contrary, technical value is generally despised because it is invisible, immeasurable, ununderstood by non-technical people, and has no consensus value.

The neglect of technical value has become a very important reason for the frequent occurrence of various software problems.

In the next article, we continue to talk about the way of coding, the way of coding (3) : The difficulty of coding, the contempt for the value of technology


Taoofcoding. tech – Spread the word ofcoding with our little power

Visit myDDD – Full stack Domain Driver website: myddd.org