Start with a team:
What is a team? Here is a more standard explanation: A team is a community composed of employees and management. It makes rational use of the knowledge and skills of each member to work together to solve problems, achieve common goals.
In a software company, a basic team unit is assigned by a Team Leader (or a project manager. A group of people (such as programmers) led by team leader ). In terms of data structure, it is a multi-tree structure. Each node is the leader of the lower-face node. nodes and subnodes form a team. The team leader leaders (project directors or project managers) manage multiple team subnodes (such as development groups, test groups, and art groups ); these teams form a big team, and the supervisor is also the leader of the big team. In other words, each node is the team leader of the bottom node. The title does not affect the role of the leader.
Team type and Selection: (it is important to determine the following factors)
There is no fixed title or standard for the team type. Some team leaders constantly adjust the composition of team members at work. When we reach a mature team model, we will replace some of the things we know in our life (such as the surgical platform type) for your convenience ).
In fact, our predecessors have summarized many mature team composition types for us. For example, the surgical platform type. We are generally familiar with the operation. We use an attending doctor as the main surgeon and other doctors as the assistance to complete the operation. We can easily combine this model with the team composition. In a team, one or two or three programs are dominant, while other programmers are assisting in code development. This mode is often used in domestic game development. The main tool is what we often call the main process (mainly programmers or technical leaders). It is developed with the main process as the core, and other programmers help complete additional functions.
In actual work, I personally prefer the type of Symphony (this is my personal name, because this model is basically the same as that of the symphony team, it is easy for everyone to understand. I made a detailed description and comparison in the "Team Cooperation" section ). In the orchestra, members have their own skills and have a clear division of labor. They can complete their performances under the guidance of command. The command here is our team leader.
There are many types of teams. Here we only list two types that are widely used by everyone. For other types, Please study them by yourself.
What type of team should be selected is a problem that a team leader should solve when setting up a team. Different Team types involve different team members and have different requirements on the skills of team members. What kind of people do you need to recruit? That's why I set the title as "play the cards in your hands. Different team members are like playing cards. You have to organize and fight for them. Divergent thinking can abstract team management into playing cards, where cards are being managed.
Different Team types have different advantages and disadvantages. Such as the surgical platform type, high requirements for the main process. During the development of the entire team, the personal capabilities of the main process determine the success or failure of the entire project. In many cases, the main process also plays the role of the team leader. The main process's personal capabilities make me dislike this mode, because the risks are concentrated. However, in the development of some cutting-edge technologies, surgical platform is often required. The reason is very simple. Of course, top talents are needed. One advantage of this model is that it is easier to recruit appropriate people because it does not have high requirements on other programmers.
Let's talk about the type of the orchestra. This is widely recommended by me. A large part of the reason is that we do not have very sophisticated technologies to implement, and this model can spread risks. However, this mode requires a certain degree of competence for programmers, that is, the specific capabilities of certain aspects (the specific capabilities are divided according to your project needs ). I don't need a lot of things from you. You only need to study specific fields. Or you are interested in a certain field and willing to go on to this field. I need you to concentrate on it, just as everyone in the symphony team has their own musical instrument skills. However, this model also has a disadvantage, that is, it is basically difficult to find a direction to study in the recruitment of junior programmers. After all, they started on the program. However, this problem can be solved through internal training. We will discuss internal training in detail later.
Therefore, the selection of team types depends on the project requirements and team leader experience. Divergent thinking, in fact, in many small companies or informal teams, is also the type of surgical platform used. A team of 3-5 people will work on the shelves, and a technical leader (main program) will work with 2-3 people. This type is easy to build and the cost is low. For the symphony team type, generally there will be more staffing and higher costs. However, for long-term development, the teams of the symphony team are relatively stable and sustainable. If it is necessary to break through technical difficulties, the teams of the surgical platform are more suitable to overcome difficulties.
Agile development is also a type of team that has been tried, discussed, and analyzed. I also tried to switch back to the orchestra mode. Here is a brief introduction to agile development. Advantages, fast development, fast! Very fast! Weaknesses: According to the agile development theory, there should be no weaknesses. Everything seems so beautiful and agile development, but many failed operations. The main problem is that agile development requires too high average quality for developers. It is difficult for small and medium-sized companies to achieve this average quality level. This is also the cause of my failure.
Team Cooperation: (don't tell me that you will cooperate with the team, and you are fooling around)
Team cooperation varies depending on the team type. This is why I mark the importance behind "Team type and selection. If you do not have a clear understanding of the functionality of the team type, you will have vague opinions on many of the following questions. So I suggest you spend some time figuring out the composition patterns of different team types. For example, you can imagine how doctors work together during an operation, and how they work together during a concert.
Teamwork is not a group of people working together, but they do their own things without conflict. Through my observation at work, I found that many people hold this idea. The root cause is that we have never received team training since we were young. Even though we will know that we need to work together when we get into the community, the teacher will remind us. However, the image in our minds is that a group of people work together to work together. Working with everyone without conflict is only a basic work attitude. If you cannot do this, you are not prepared to do things at all.
If you want to ask me what is teamwork. I can only give you a literal explanation: Teamwork refers to a group of competent and confident people in a specific team, support the process of cooperation for a common goal.
You cannot understand the meaning of the word. This is just an idea, not a specific operation. I will explain how to do this. But remember that the cooperation methods and implementation of different team types are different. In this way, there will be many different ways of cooperation, because there are many different types of teams. If you say that you understand teamwork, isn't it just fooling yourself? It would be nice to understand one or two ways of teamwork. Here, I would like to mention agile development. Agile development is another method for cooperation, which obviously requires a high level of cooperation quality. Many people do not even know the basic cooperation methods of the two teams, so they need to jump directly to the cooperation mode of agile development. Do you want to avoid failure?
Next I will explain how the team works and why it works through the performances of the symphony orchestra. Here is just a type of cooperation, I mainly open your understanding of teamwork in the symphony team type. Other types will be explained later.
A orchestra is composed of many Members and can be divided into string groups, wood canal groups, copper tube groups and percussion groups (such as development and testing groups ). For example, a string group is also a violin family, including Violin, violin, cello, and bass violin (such as front-end and back-end in the development team ). It is not difficult to find that the division of labor and functions of the orchestra are clear. By the way, there is another command (team leader). Ignore it first. If you don't have the command, You just care about yourself. You pull your cello, I play my dual-Reed, and he gets his long horn. In this way, only noise can be played. Maybe you can talk about it. After I finish playing the cello, you are playing the dual Reed. That's good. This is a solution. It seems that there is no command. For example, in a group dance performance, this is the process of starting my next performance by observing whether other people's performance event points are completed or at a certain state point; the event of the previous person is used to trigger the event of the next person. However, one drawback is that you need to deal with a large number of context events (the previous person ended the performance, or a trigger point ). Once an error (exception) occurs in the middle, it will lead to the overall error of the following people, because you cannot capture or handle the exception. In addition, such a performance has a high requirement on the individual qualities of the performers, and requires a high level of tacit understanding and the ability to handle complicated and uncertain exceptions. We can see from the beginning that there are many uncertainties that cause exceptions. So how can we solve and simplify this problem? Return to our Symphony Orchestra, where a conductor (which plays the role of a team) appears.
Leader role ). Currently, members of the symphony team do not need to observe the complex context environment, but focus on their own skills and observe command gestures (commands) to trigger the playing (execution) switch. In this way, the problem becomes simple and controllable, because the command can take a look at the global situation and play the role of exception handling. Once an exception occurs to a member, the conductor can immediately capture the exception and handle it with experience. without interrupting the performance, the team members do not have to worry about any exceptions. Everyone has their own unique functions. They only need to wait for command calls. Is the problem much simpler? However, the importance of a person is highlighted here, that is, command. In fact, many people do not understand the command and think that the command is actually no big deal, that is, to wave your hands on it. It is a simple and easy-to-use role. It is important or technically high for non-instrument players. You can perform well without any exceptions. If you think so, it is because you do not understand the importance of command and the essence of teamwork. If you are a team member, you will not trust your command
Leader ). When an exception occurs, the playing may be interrupted and crash. Because you do not trust your command, when an exception occurs, you will use your personal abilities to determine how to do it. At this time, the command will not work for your call, so this will cause an exception that cannot be handled. This is why many teams fail. It can be seen that the Team Leader handles exceptions throughout the performance. (Divergent thinking: According to this process, we can easily track the accident source. Check whether there is a problem with the team leader exception handling method or an exception call. The specific details are not the focus of this article, but it is easy to locate the responsible person through exception judgment .)
Teamwork requires the team leader to control and lead. For a team member, you only need to clearly execute the instructions of the team leader, and you will have a cooperation. But this does not mean that you will cooperate with the team. For the essence of team cooperation, both the team leader and the team members should have a clear understanding. Otherwise, you cannot generate trust and there will be no cooperation. After my observation and communication with others, I found that the biggest problem in the team is distrust. But what is the cause of distrust? The most fundamental reason for the constant extraction and discovery of this problem is that you do not know what teamwork is.
Back to the orchestra team, we can find that the programmer trusts your leader and completes the leader's instructions on you. This is the collaboration of the symphony team. Is it easy? I hope you understand it. Remember the keyword "trust.
To put it simply, the surgical platform type team cooperation mainly helps you understand the cooperation differences between different types of teams. Surgical platform: programmers need to help your main journey (in fact, the main journey is your leader ). Note that the keyword here is "tacit understanding" rather than trust. In the surgical Platform Mode, the success or failure is completely determined by the main process. programmers can not trust the main process. However, it is necessary to have a tacit understanding with the main process. When the main process needs something, it will immediately provide corresponding assistance.
In fact, there is also a common feature of each type, that is, the team leader you want to trust your team members. I will not focus on it because if you do not trust your team members, you will not use them. The basic premise of employing people is: no doubt, no use.
The leader needs to understand the skills of each of your team members, and you also need technology. Basically, the leader of the symphony orchestra is developed from senior programmers. The surgical platform type is actually a vague concept of this type of leader. If you are divided into the master and team leader, the team leader does not need any technical skills. In this way, the team leader will be a little redundant, so the main process in many teams is the leader. The success or failure of such an organizational structure lies in the hands of a person. If it is not for technical difficulties and core technology development, I personally do not recommend setting up such teams.