Yesterday, I went to work for the new company for the whole day and held a department meeting when I got off work in the afternoon. When I go home at night, I think about software development team management and process control. I will share some ideas with you. What's wrong, I will accept the bricks ............
As a software company or relevant institution, to make profits, you must improve the quality of software development. But how to improve the quality, I personally feel that many companies still have a wrong concept-making systems that meet customer requirements within the prescribed time. Indeed, this point of view limits many companies and individuals to go further on the technical development path, thus bringing team and company management into a dead end. With the passage of time, this logic will gradually lead to a deadlock at the company's management layer-the high-level is not satisfied with the underlying performance, the bottom layer also complained about the management methods of the senior management.
Software development requires a cycle, while the cycle contains many factors, the instability of one factor is likely to result in a butterfly effect similar to that in the biological field-a butterfly fan of Africa's wings causes a tornado in the American continent. When we find that the effect exists, it is too late. The difficulty of further control will rise sharply, thus forming a vicious situation where the east wall is demolished and the west wall is replaced, this increases the company's business operations, team management time, manpower, and other costs.
How to manage a team? How can we improve the Team's work efficiency? How can we ensure that the system to be developed goes through every stage of the development cycle step by step? How to... a lot of practical problems are put in front of every development team member. This article will share some of the puzzling issues we have encountered during the development cycle with my personal experience.
The basic idea is as follows:
1. How to improve team skills
2. How to improve team collaboration
3. Necessity of team Behavior
4. Several important factors in development process control
5. Can our team cope with large systems?
6. How to improve the flexibility of the system-that is, how to enhance the maintainability and scalability of the system
7. What are the characteristics of team members?
Let's talk about these seven questions separately.
I. How to improve team skills
As a company, to set up a software department, the first problem is to recruit personnel from various channels. After the recruitment, a basic team architecture was formed. However, some people may not be able to do things. People are only a necessary factor to form a team. To form a team in a strict sense, in addition to people, there is also a necessary factor that the members of the team must have some basic skills and skills required for the company's development.
The individual experience of each team member is different, and the breadth and depth of understanding and understanding of various skills are also different. Therefore, even if all the members of a team have the basic software development skills, the temporary research and study in the face of the company's project requirements can indeed solve the problem of rising time costs, however, the project content varies widely, and the customer needs are strange, to some extent, it is a disturbance to the development and management of the team to overcome the technical difficulties brought about by project requirements through a short period of time in the pre-and post-project research phase. In this case, I will summarize the following points based on my own experience. Through these points, we can gradually alleviate the obstacles to team skills caused by project requirements, and gradually mediate difficulties to overcome the time and management conflicts between team skill management and team skill management:
1. Understand the personality of each team member.
The so-called use of people, know its nature. Members are resources, not tools. To fully explore the energy of resources, you must understand the character of each member, to understand the resistance, understanding, and understanding of each member, and other factors related to skill mastery, you even need to understand the Member's character.
Some may say: is it necessary? In my personal experience, the answer is very necessary. This is because only when we understand these factors can we make full use of everyone's personal abilities in the Process of daily team skill management control, this avoids putting the wrong person on the wrong work goal, and avoids the negative impact on future development.
In addition, for individual team managers, by learning more about the skills and skills of subordinate members, you can also learn more about yourself, in addition, some excellent skills are gradually screened and gradually extended to the entire team in the Process of team skill management control.
2. Understand the company's development position.
Any software company is unlikely to include its own business in all industries, so it is bound to have its own industry-specific relevance. Therefore, as the focal point between the company's decision direction and internal development capabilities, it is necessary to understand the company's software development industry positioning at any time. Through the industry positioning of the company's business, we can gradually obtain some technologies used in the development process of corresponding industry systems, and finally plan ahead.
3. Create a communication atmosphere within the team.
As the saying goes: You must have a teacher. The capabilities of anyone are limited. Even if some people have unlimited abilities, I think their personal energy is limited. If you compare the power to the air blowing into the balloon, then the energy is the balloon-the energy is bound to unlimited expansion of the ability. Therefore, to ensure a steady increase in the average development power of the entire team, a communication atmosphere should be formed within the team.
The environment creates people. Some technical points are not difficult for developers to grasp, but because their long-term environment makes developers unable to access these technologies, they "cannot speak to strangers easily ". When every member of the team is good at communicating with others, raising their own doubts, expressing their own opinions, and complementing each other to form a benign competition environment, it helps greatly improve the individual skills of each member in the team. In addition, in regular and irregular forms of daily communication, the communication itself also subtly makes every member of the team work with each other ---- in the habit of thinking, for example, you can view the problem and solve the problem.
Therefore, based on the above three approaches, as a team manager, I learned about the personality of each member and naturally learned what kind of member is suitable for development at the difficulty level, at the same time, by understanding the industry positioning of the company's business direction, knowing what technologies the team should master in the future, and then assisting in gradually strengthening the communication atmosphere, in the communication, members with different personality characteristics focus on the different breadth and depth of different targeted technologies, which can gradually improve the overall skills of the Team and related management level.
2. How to improve team collaboration
The skill improvement of each member in the team means that the team has the basic combat capabilities. However, the current software development has already left behind the era of personal heroism in 1990s. It is difficult for a person to write optimization masters and Foxmail to replace them with collaborative development. As the scale of software systems increases, personal abilities and workshop-style development cannot completely resist the management and control requirements of large-scale development systems for risks and later costs. Therefore, the improvement of the overall skills of team members is only the first step to form an effective team. The next thing to do is to improve the collaboration ability among internal team members.
But how can we improve the collaboration capability between team members? I think anyone who has experience in team management will always ask myself this question at work. Some of my experiences are as follows:
1. Communication can fit the collaboration capability between team members.
As mentioned above, I will not go into details.
2. Maintain a stable level of communication skills among team members.
Each person has a personality factor, and some team members are not good at communication. For such team members, try to make them understand the importance of communication-for the technical team, personal skills development. However, in the face of non-integration, from the management level and the overall development level, we can only choose not to give up or weaken its importance to ensure the stable level of the Communication Ability of team members.
Some people may say: Isn't it just a matter of being honest? It is indeed a kind of wrong intuition. However, this is not the case. As the development of the team, honest character and self-sealing are two completely different concepts. The former usually actively cooperates with the communication atmosphere of the team and strives to move forward towards the development direction of the established team skills. While the latter is mostly satisfied with existing skills and stick to the status quo. Without understanding development, it means a hindrance to the development team. At the same time, this obstacle is often manifested in the obstruction or destruction of the benign competition environment within the team, because some skills are private within the team and within the company, this increases the company's development risks.
As a member of a team, my personal experience and understanding are: Members who prefer to take advantage of a slow response and whose skills need to be improved but know how to cooperate with the team for development, do not absorb a member with high skills but not understanding cooperation or communication. By the way, do not understand the 80% principle of recruitment! :)
Therefore, communication not only improves the overall skills of the team, but also plays a vital role in internal division of labor and collaboration. As project management personnel or team management personnel, do not be self-satisfied. in internal management, you should actively communicate with others in a like-minded manner. However, it is necessary to distinguish it from schedule management. As a team member, you should be brave enough to make your own remarks. When you discover your mistakes through communication, it also means that you are not far from correct.
Iii. Necessity of team Behavior
Friends who like football know that the Brazilian national team in the late 1990s S was named Germany. nelson's player has excellent skills-the ball is in front of you. As long as his two legs shake a few times before the ball, you may not know where the ball is going! Of course it is a little exaggerated, but it is not quite surprising. The purpose of mentioning this world-class star is nothing more than to show that even if the Brazilian national team has such a superb player, however, in the World Cup, Brazil may not be able to raise the power cup with a full victory. It can be seen that personal behaviors and team personalities are two completely different concepts.
The same is true for software development. A person's ability only represents an opportunity for existing team communication-an opportunity to introduce new skills and understand new ideas. However, without team communication, the value of personal skills will be greatly discounted and even completely ineffective within the team.
Therefore, as a team, personal skills should not be overly emphasized because they serve the team. A healthy development team should first look at team behavior, and only good team behavior can meet the development requirements of systems to be developed as the software company grows.
The team behavior mainly includes three aspects:
1. Consciousness: The team consciousness is higher than the personal consciousness. A good sense of collaboration and management in the team should be expanded.
2. Personal Qualities: The team quality is higher than the individual quality. Similarly, good things must be expanded within the team.
3. Technical Thinking: excellent technical ideas in the team should also be popularized in a timely manner.
4. Several important factors in development process control
A team cannot be considered as a real team without overall team skills, overall team collaboration capabilities, and overall team action awareness. More specifically, a team is just a discrete group. When this discrete group has the skills, collaboration, and behavioral awareness of the team, the team is fully capable of developing large-scale systems. Therefore, team management focuses on three aspects: overall skills, overall collaboration capabilities, and overall team action awareness as soon as possible. The goal of team management is to pave the way for process control. Once process control starts, it is necessary to strictly follow the process control rules for supervision and management. The following are some of my experiences in Process Control:
1. People, rather than tools, are important in the development process.
Tools are always tools. The biggest difference between tools and people is that tools have no active thinking ability. Nowadays, many teams focus on tools. In reality, many teams use the big stream standard when selecting tools. Choose to be well-founded, even if "our team only has this tool! There is no way... "such a simple reason is also a very good reason. Therefore, the mainstream is not necessarily correct, and your choice should be adequate. Otherwise, it is easy to mislead and waste unnecessary time and manpower to make the so-called choice.
You may not need to use rose for modeling. If you only need PD, you can use rose. There is no law in the world that stipulates that forward engineering must be used for development, and no legal pattern must be reflected in code by a few percent. Therefore, all the choices should be in the hands of the developers themselves. In fact, the core idea of agile (XP, TDD, and so on), which is currently popular in the industry, is to tell everyone that it is appropriate. It is not necessarily the best in all aspects.
2. The best way to quickly resolve or confirm a problem is to communicate.