Projects come and go, but people stay. Working as a team is more important than hard feelings. Everyone needs to perform to the same degree as their qualifications and if they can, support their colleagues.
I don’t like that man, I must get to know him betterAbraham Lincoln
1. Pair people by personalities
In the programming world building a team can be difficult because programmers learn to write code alone and are required to work in a team. This is why when you build a team don’t pair programmers by their skill, try to pair them by their personalities. You could pair the most skilled programmers in a team and they could be behind the schedule because one wants to do something and the other one disagrees with him because he has a grudge.
2. Create a set of ethics
Decision making process:
When the team is small the best way of making a decision is when everyone takes part in the process.
When the team is larger a good practice is to use an electronic voting poll with everyone and set a minimum number of valid votes for the decision to be made so that the vote is not stuck if someone is inactive for a period of time.
The team needs to be predictable, everyone needs to know everyone’s habits and traits of character. Everyone knows that Joey comes at 10 am so everyone accepts and takes that in consideration when an important meeting is set.
The team needs to be consistent. Joey indeed comes at 10, but he needs to be consistent, he needs to keep showing his face at 10 am sharp. The best way to enhance consistency in a team is:
a) Have everyone set their level of commitment
b) Ask them to set their minimum level of commitment.
Trust the second one!
3. Encourage teamwork
A team is as good as its worst player. Find your players that struggle and help them overcome their obstacles. Maybe Joey has a new born baby and does not get enough sleep at night. Ask him if he wants to lower his work load. You could see an increase in productivity even if you lower the working hours.
It is crucial in a team to encourage delegations. Everyone needs to know everyone’s strengths. Because, if there is something urgent that you don’t have expertise in find your team member that knows how to resolve the issue and ask him how you can help him while he resolves the issue.
The team needs to be connected. Have a very fast way of communication between your team members. This will shave hours of dead time from their daily work. Personally we use Slack to communicate.
4. Prepare for team to team interaction
Here we go a step forward as now there are complex entities that need to work together to accomplish a common goal.
The most important thing is that every team understands the end goal and everyone has the same set of final requirements. If a pink pair of shoes is produced and there are a left and a right shoe team. Both teams need to be given the same nuance of pink color from the start. Don’t let them assume what nuance of pink color they should use. Because the pair shoes will have different nuances of pink.
Choose an optimal period of time to have a meeting to synchronize the teams about what needs to be done. So that everyone can attend the meeting.
Every team needs to choose their speaker. The speaker presents the ideas of their team and receives the feedback. This way everyone has their idea shared with everyone without wasting time.
Balance the workload between the teams. Don’t let dead time appear and settle as an ordinary behavior. If a team struggles at a step in development schedule a meeting with all of the team speakers and decide if there is something to be done.
5. Be ready to work with the customer
Needless to say how important this type of interaction is. This is the money maker, everything needs to be on point. Keep these words in mind when you have to deal with clients: Proper preparation prevents poor performance.
Build a solid project plan about who does what. Take in consideration if someone is missing who can replace that person.
Encourage the team to learn a bit of information about the client too. This will help your team to be familiar with the client’s way of thinking. The developer’s priorities are not the client’s priorities. The truth lies in the middle!
While the meeting is taking place, encourage your team to take written notes. After the meeting is done, make a bullet point list about the main ideas discussed in the meeting. Send it to the client asking if there is something left out from what they had in mind. This way the client can confirm if those are indeed his priorities.
As a best practice, the client should not communicate directly to every team member. The team needs to focus on development, not creating tasks or discussing what should be implemented. This can be easily mitigated if there is a particular person designated for this role. That person will be the bridge between the team and the client.
Teamwork is complex and requires a lot of planning. The team members need to know each other to develop a harmonious working environment and keep it that way. Every team needs to have the same requirements so the end goal can be achieved without any modifications. Not everyone sees pink the same way. When the team meets the client everything must be on point. Proper preparation prevents poor performance.