Ways, methods, techniques, instruments, and potentials to improve human efficiency in software R&D

1 Introduction

Before Huawei's cold air passed, the author was already thinking about and actually combating how to improve the human efficiency of R&D. The goal is very clear: to improve the human efficiency of software R&D. The so-called software human efficiency is simply and crudely defined as delivering software products quickly, high-quality, high-frequency, and safely at the lowest unit per capita cost, and the software products can be finally released in the production environment. It is used inside to create value for customers and users.

There are three points that need to be clarified: production environment, value and design thinking.

One is that a software product can generate value only if it can be used in the production environment. cannot produce final value;

The so-called value includes subjective and objective value and value value; for subjective value, it is easier to understand that an airplane can transport passengers from one city to another, which is the objective value provided by airlines; subjective value is the feeling of users and customers, For example, sending a bouquet of flowers to your girlfriend, its subjective value is far greater than the objective value, and it can make your girlfriend happy and happy!

This requires us to not only deliver functions but also improve user experience in the process of designing and delivering software products. Using design thinking methodology to guide the development of software products often achieves twice the result with half the effort and greatly improves the success of software product delivery. Rate. Specifically, you can read "Application of Design Thinking in Different Situations from the Whole Field of Product Innovation and Management" written by Michael G. Luchs, which perfectly applies design thinking to product design.

insert image description here
Figure 1 Design Thinking Process

Therefore, we will finally deliver around value. Borrowing the product and service value system framework model of ITIL 4, software services or products are to convert user & customer needs or market opportunities into end users through various activities in the service value chain & the value that customers need.
insert image description here
Figure 2 Framework model of product and service value system

The human efficiency of software R&D is to focus on value. With the support of the guiding principles and best practices suitable for the own team, continuous improvement of human efficiency can improve the delivery efficiency of various activities in the service value chain. There is no best but better Well, the end of each ascension is the beginning of the next one, and the end is the beginning! Of course, in the process of improving and improving human efficiency, we must not forget the original intention. We need governance to ensure that we will not deviate from our planned direction and deliver the value [product or service] required by customers on time and in accordance with quality requirements. . So what are the ways, methods, techniques, instruments, and potentials for improving the human efficiency of software development?

Dao, Magic, Artifacts and Positive Aspirations come from Lao Tzu's "Tao Te Ching": Tao is based on direction, law is based on foundation, technique is used to establish strategies, tools are used to accomplish things, and power is used to establish people. "Using Tao to control art" is the gist of Tao Te Ching, that is, morality is used to carry wisdom, and enlightenment is higher than practicing magic. Technique must conform to the law, the law must be based on the Tao, and the best strategy can be made only when both the Tao and the magic are combined, which respectively correspond to the strategy, principle, policy, idea, technical practice and tool platform.

insert image description here

2. The "way" to improve human efficiency in software development

The way is clear. "Tao" refers to the strategic direction. For example, when products are applied to projects, standardized products are extracted from projects, investment and progress in product R&D are increased and rapidly promoted, product projects are integrated with each other, and eventually become the top three benchmark enterprises in the industry within 3 to 5 years.
insert image description here

In the field of software development, doing the right thing is far more important than doing it right. Even if it is a Maxima, if it is in the opposite direction, it will be difficult to reach the goal in the end. Even if the goal is reached, the time spent and the fodder for raising the horse will be multiplied. Never disguise strategic laziness with tactical diligence. Only when the direction is right can we get twice the result with half the effort and greatly improve the value of human efficiency and research and development.

3. The "method" of improving human efficiency in software development

The foundation of the law is the most fundamental declaration, methods, legal principles, principles, ideas, guidelines, etc. for the realization of values. Law is a method found and summarized in the operation of natural rules, and law is the interpretation and summary of Tao.
insert image description here
Similar to the agile manifesto, the improvement of R&D human efficiency also has its manifesto and legal principles that should be followed. The above 5 declarations are the 5 legal principles for improving human efficiency summed up by domestic energy efficiency experts.

From a business perspective, business value is higher than functional goals, and one of the purposes of commercial organizations is to create value for customers through business. The business is based on customer needs, needs and pain points. Functional goals are very important, but the ultimate goal is to deliver business value. As shown in Figure 2 above, delivering value is the end of each round and repeats itself.

From a process perspective, global optimization is higher than local optimization. The entire software product life cycle includes but not only collects requirements, business analysis, architecture design, development, testing, operation and maintenance, and operation. It is a highly cooperative and highly detailed process that requires the cooperation of various organizations and departments. Local optimization is the foundation, and at the same time, it is necessary to optimize the entire process at an overall and comprehensive level. As mentioned in lean production, on each pipeline that delivers business value, stagnation or inefficiency of a certain part may prevent or slow down the flow of the entire value chain or even stop the flow. If it is a certain stop flow, this At that time, all the staff on the assembly line will stop their work and solve the problem together. If a certain link or several links are inefficient, systematic thinking and global optimization are required.

From a technical perspective, engineering excellence is higher than tool platforms; tool platforms are the foundation, just as the ancients said, workers must first sharpen their tools if they want to do their jobs well; from the perspective of human efficiency, by applying a series of The tool platform can greatly improve work efficiency and prevent errors in manual activities. At the same time, tools are a means, and the pain points to be solved need to return to improving software quality and speeding up software development progress. Through built-in quality and processes, the thoughts of pursuing quality and energy efficiency can be deeply imprinted in the bones of R&D personnel. Let the thought and action of pursuing engineering excellence be implemented in the daily software development work.

From the perspective of data, data thinking is higher than experience precipitation. For the same event, experience varies with people's cognition; experience is a summary of the past, and data can predict future trends. Past failure or success experience can be applied and guided in current work; as the management guru Drucker said, if you cannot measure it, you cannot manage it [If you cannot measure it, you cannot manage it] . Collect data through measurement, predict the future, reduce risks, and improve the efficiency and quality of software development. For example, by monitoring and observing the application program, if there is an error log, the operation and maintenance personnel will be notified immediately, so that the problem can be quickly and automatically dealt with before the user or customer finds it. For another example, in the agile project development process, by accumulating the average number of user story points delivered in each sprint iteration time box, the work is allocated to avoid everyone's workload balance.

From an organizational perspective, engineer culture is higher than performance management. Performance management is indispensable for improving organizational efficiency and standardizing organizational behavior. It is a top-down management method; software development engineers are the primary productivity of software delivery.

4. The "technique" of improving human efficiency in software development

Combined with the baseline and actual situation of the company's R&D, introduce methods and practices suitable for the company's R&D. For example, introduce DevOps or DevSecOps, introduce agile development methods; for large-scale teams, you can even introduce SAFe development methods. But is it true that the traditional waterfall development model cannot be used? the answer is negative. If the project cycle is very short, and the customer's needs are urgent, and the project scope and requirements are also very clear, at this time, it is also a feasible method to carry out project planning and management according to the previous method. However, if it is for product research and development, and the future direction of the product is not particularly certain and clear, it may not be a good method to apply the Scrum method for product research and development at this time. By formulating important milestones of product development and according to the 28th principle, first pass the product and market through Design Thinking, then sort the importance and priority of functional features, and prioritize the important, high-value, high-priority, and easy-to-implement Arrange it into the product plan in advance, so as to achieve rapid iteration, fast delivery to the market, so as to quickly provide feedback and corrections, and strive to obtain and obtain the fastest market feedback at the least cost. The following is an explanation of the introduction of Scrum found on the Internet Fig . Improving the success rate and cost of product research and development, isn't this a way to improve the human efficiency of research and development?
insert image description here
In addition to Scrum of the agile method, other developed techniques can be introduced, tailored and adopted according to the actual situation of the company.

  • TDD [Test Driven Development]
  • BDD [Behavior Driven Development]
  • Unit Test
  • DevOps/DevSecOps
  • SAFe
  • ITIL
  • Lean
  • TOGAF
  • Scrum Of Scrum
  • other

5. The "tool" for improving human efficiency in software development

If a worker wants to do a good job, he must first sharpen his tools. In the process of software development, if he has a tool in hand, the efficiency of research and development can be greatly improved. For example, through the DevOps/DevSecOps platform or engineering platform, provide a continuous integration and continuous deployment environment and platform, allowing developers to focus on business code development; or introduce some automated code scanning tools, such as SonarQube, to automatically find some problems in the code , so as to help developers save code review time and some problems left over during code review. In addition, in the daily development process, it is necessary to use tools for reuse and standardization, such as scaffolding that automatically generates codes based on database tables, version management and product management of builds through Nexus, etc. A tool for displaying in one dimension.

insert image description here
The above only lists a small number of tools and ideas. In the actual R&D project, you can use the company's own observations and characteristics to develop and customize your own tools or platforms. Of course, the premise is that the R&D can be greatly improved after the application of the tool platform. efficiency. It is enough to make the cost of researching applicable tools far less than the improvement in R&D efficiency it brings.

It should be pointed out that the requirements for information protection in all walks of life are getting higher and higher, and the country and the government are paying more and more attention to it. Therefore, DevSecOps has become popular in recent years and has gradually been promoted in China. For example, Dr. Zhou Jihai's new book "DevSecOps in Action" is the first book in China to share DevSecOps. Overall, DevSecOps tool support is divided into the following four categories:

  • Software Composition Analysis (Software Composition Analysis)
    commercial version: BlackDuck, Veracode

  • Static Application Security Test (SAST)
    commercial version: Forfify, AppScan, CheckMarx
    Open source version: FindSecBugs, Brakeman, PMD

  • Dynamic Application Security Test (DAST)
    commercial version: WebInSpect, Burp, AppSpider, NetSparker
    Open source version: Zap, ZapProxy

  • Interactive Application Security Test (IAST)
    commercial version: Contrast, Seeker

6. The "potential" of improving human efficiency in software R&D

Momentum sets people apart, and technical thinking is constantly changing, which requires our team to be able to continuously learn and reflect on themselves. Summarize good experience to promote, sum up bad experience to avoid making the same mistakes in the future and find ways to improve it. At the same time, it is also required to carry out organizational changes at an appropriate time. According to the law of consulting, any problem is ultimately a human problem. Therefore, educating and training the team and carrying out organizational changes at an appropriate time to eliminate the resistance to improving R&D human efficiency, sometimes there will be unexpected effects of improving R&D human efficiency.

Changing people's thinking is far more difficult than changing people's behavior. Organizations, management and employees are the main actors in implementing human efficiency practices. Everyone has their own comfort zone and their own mindset based on their previous worldview. Principles, actual combat, and standard boots need to guide management and employees out of their own mindset. Education and training are indispensable links. one. Internal colleagues training is useful and effective in most cases; considering that internal colleagues get along too long, or there are various conflicts of interest, external third-party training is sometimes very beneficial full complement.

After education and training, it is also a necessary and sufficient condition to make appropriate and correct organizational changes. In most cases, according to the theory of human nature management, managers in certain key positions are the resistance to the implementation of human efficiency improvement. The reason is very simple. If the implementation of the new human efficiency improvement plan and best practices achieves many achievements and results, it will actually be a direct blow to the previous leader in charge; if the previous leader in charge is open-minded, actively embraces changes, accepts them with an open mind, and implements them in a down-to-earth manner, everyone will be happy; Otherwise, the existing conservative leaders would like to see the implementation fail, watch jokes, or even add insult to injury. There is an unwritten consulting rule in the consulting industry, never change more than 10%, if it exceeds 10%, it will be implemented quietly. There are currently many methods and practices for organizational change, among which ADKAR [Awareness, Desire, Knowledge, Ability, Reinforcement] is a recommended method.

  • Awareness:
    Whether actors are aware of the planned change, and the necessity and importance of the change.
  • Desire:
    whether the actor has the will to change, what is expected of the change, support or opposition.
  • Knowledge:
    Does the actor have the knowledge necessary to carry out the change.
  • Ability:
    Whether the actor has sufficient capacity to lead, implement and complete the change.
  • Reinforcement Consolidation:
    Whether actors have measures to consolidate the state, habits and achievements formed after the change.
    insert image description here

7. Summary

The past serves the present. Although Lao Tzu's "Tao Te Ching" has gone through thousands of years, the wisdom of its sages is like the shining stars in the sky, guiding and guiding our production and life, and of course, including guiding and improving the human efficiency of software developers. From strategy to method to tool to culture, combine the company's actual R&D situation at all levels, explore and find a way to improve human efficiency in software R&D that suits your team from top to bottom and bottom to top. Software changes life. We hope that the improvement of human efficiency in software R&D can reduce R&D waste, balance work and life, and reduce meaningless overtime caused by strategic laziness, so that the life of software R&D personnel will be better, and software products or applications will be better. liked by customers.

Guess you like

Origin blog.csdn.net/chancein007/article/details/127480832
Recommended