Is software people-oriented? Is this a topic worth discussing?
1.Review of "software factory"
So far, I still remember the popular "software factory" movement in China in the middle of two thousand. Cmme, TSP, PSP, RUP, UML, and MDD have become popular in those years. Recruit a bunch of code workers and give them the right tools to manage them with the best processes and methodologies, so they can generate software products that meet the requirements. What a good idea! The company's boss and management staff liked it too much, so many companies joined the "software factory" campaign. With MDD, code can be automatically generated in the near future, and code workers can be banned, so the real "software factory" will be built. At that time, I was also a little panic as a software developer. It was really a bit of fun to do development. This was just a few years of development, and even the work of writing code had to be eliminated.
The software factory defines software development as follows:
1. Software is a product tailored to established needs.
2. software can be assembled by predefined modules, generated by predefined models, or written by code workers. Its ultimate goal is to assemble modules based on predefined models.
3. The most important thing in software is the language, method, process, and tool. Code workers are only resources.
Today, the concept of a software factory has gradually faded over time. However, this idea is still very popular in the market, because its biggest selling point is manageability and predictability, which is very consistent with the characteristics of enterprise management.
Case 1: Customer is not equal to Requirement
Project Manager: "This is the product we developed for you. Please accept it ."
Customer: "Sorry, we cannot accept it. This is not what we want ."
Project Manager: "But we developed it according to the requirement report. You signed it at that time ."
Customer: "..."
Case 2: Development is not equal to resource
Project Manager: "If this business is to be delivered next week, I am afraid it will fail. All resources are occupied ."
Business: "That's one from another business. Time should be enough !"
Project Manager: "I want to try it !"
Development or resources, it is hard to talk about growth. The project manager is still fighting, and the business is still in a mess.
Case 3: Rule or delivery
Project Manager: "This business is delayed for five days because our front-end development resources are in short supply ."
Business: "Can other developers do this ?"
Project Manager: "the front-end group has requirements and you cannot do it yourself! They complained to the boss some time ago, and I am very passive ."
As the company grows, the division of labor is fine, and coordination is difficult. The goals of different departments are inconsistent, satisfying customers and complying with rules conflict, and the process is getting increasingly stiff, making it increasingly difficult for people to exert their power.
Case 4: Difficulties in communication between development and business
Development: "The business has changed again, but this cannot be done. Let's change it. What do they really want? Can't you figure it out first ?"
Developers find the development BOSS: "Boss, are we giving them a demand review ."
Business: "Why haven't the development been developed? How can the business complete the task ."
Find the business BOSS: "boss, do we want them to give development plans and use them to manage them ."
2.People-oriented software
2.1Why is software people-oriented?
In the traditional thinking, we fix it by dealing with communications, people, and changes. Therefore, we try to fix customer needs, work processes, jobs, development models, and management methods. In this process, we constantly set a higher threshold for the changes that others bring to our work. Of course, everyone in software development tries to do this, so we have created appropriate organizations, documents, processes, methods, and tools to avoid communication and cooperation with "people, attempts to reduce reliance on personal abilities and creativity, and attempts to succeed in a simple, repeatable, and easy-to-manage way.
But the time can be fixed? Can changes be fixed? Can a person fix it? CAN communication and cooperation be fixed? Can creativity be fixed?
This is why software is people-oriented. "Person" is the cause of change, and "person" is also the basis for coping with changes.
If I had to redefine software development, I would define it as follows:
1. Software is a product that creates greater value for customers (persons. The customer's understanding of higher value changes over time, and the software must respond to this change.
2. software is the product of collaboration between customers and development teams and people in the development team. Cooperation between individual abilities and teams is critical to successful software development.
3. the main role of languages, methods, processes, and tools is to help individuals and teams exert greater strength, so as to create greater value for customers more efficiently.
People-oriented software will include independent thinking on the following content:
1. How can I improve my personal development and management capabilities? How can we improve our communication skills and influence with others?
2. How to integrate into the team for team cooperation? How to establish a team and promote teamwork? How can we effectively leverage tools (languages, methods, processes, and tools) to help the team improve their personal abilities?
3. How can we better cooperate with our customers to create greater value for them in a shorter period of time?
2.210 years of agility
This is from infoq thinking 2 10 years after the agile declaration. During the ten years of agile development, the agile experts expressed their opinions. Many agile experts believe that agile has not achieved the expected success in the human aspect. They raised the following expectations for the agile community:
1. eager for technical excellence
2. promote personal transformation and lead organizational change
3. manage knowledge and promote education
4. Strive to maximize value in the entire process
People-oriented software seems to be a long-term problem.