As with any other activity, web or software development can be a social activity. If you are a developer or a designer, it is very likely that, at some point, you will work in a team comprised of different people with different habits, motivation, work and coding styles. This article will provide a few simple tips that will make working in teams more efficient and productive.
1. Define team structure
Team structure can be defined in many ways, but the two most common are chief programmer team and egoless programming.
The Chief programmer team consists of at least three people - a chief programmer, a senior programmer and a program librarian. This structure is good for handling simple and straightforward tasks. On the other hand, it is not good for complex tasks, as the communication and task cooperation are very limited.
Egoless programming is usually a decentralized team of ten or fewer programmers. The entire team participates in setting goals and the leadership rotates during different phases of the project. This leads to higher job satisfaction. Also, good cooperation and communication make this structure best for working on complex tasks. On the other hand, the lack of control can result in lower efficiency and productivity.
2. Divide the project into tasks
After defining team roles, the next step is to divide the project into tasks and assign them to team members. It is a good practice to have only one team member responsible for one task. If needed, separate one task into a few smaller ones in order to accomplish this.
3. Schedule the project
After defining team structure and assigning tasks, it is now time to schedule the project. At this stage, you will be determining the priority and order of tasks, as well as the deadlines for each task, thus determining the overall project duration.
This process can be done the old-fashioned way - using a pencil and a piece of paper. However, it is much better to use project management software. Not only will the planning be faster, but there are also a greater number of online tools that enable communication and collaboration across all team members.
The important thing to consider during this phase is the planning fallacy - a tendency to underestimate how long you will need to complete the task. This psychological phenomenon only affects predictions about our own tasks. In a 1994 study, students were asked to estimate the time they need to complete their thesis - the average estimate was 33.9 days, and the average actual completion time was 55.5 days. So, it is good practice to multiply predictions by 1.7 to get a better time estimation.
4. Define coding standards
Different programmers have different coding styles, which leads to less efficient programming and error fixing. Fortunately, this problem is easy to overcome by defining coding standards which everyone in the team will use and obey. It is best not to impose standards, but to make them as a team, according to best industry practices and recommendations.
5. Don't edit existing code
This tip is an addition to the previous tip and is important in circumstances when a coding standard has not yet been implemented. When different coding styles exist in a team and no coding standard is defined, it often happens that one person starts rewriting other persons' code, believing that his/her coding style is the best. This leads to disturbed team relations, lower job satisfaction and wasting hours of work on a task that is not productive. So, advise people not to do that, and mention it again if you suspect or notice that someone is involved in this activity.
6. Consider pair programming
Pair programming is a specific development technique in which two programmers are working at one computer unit. One programmer is the driver, who writes the code, and the other is the navigator, who reviews each line of code. The two programmers switch roles frequently.
Compared to when the programmers are working alone, pair programming has many benefits. The two programmers produce code with fewer bugs, complete work and find solutions to problems faster and provide more design alternatives. Also, pair programming improves productivity, as the programmers working in pairs are less likely to check social network, personal e-mails or surf the web during the work time.
On the other hand, there are some situations which can undermine the effectiveness of pair programming:
- Disengagement (one of the members is not working and is away from the computer).
- One programmer is less experienced that the other - he is always the observer, which leads to disengagement.
- Programmers are not talking to each other. These situations should be closely monitored and avoided.
7. Use version control software
There is a proverb in my country that states, "The one who works makes mistakes." Errors also happen when programming. However, if version control is not being used, the team members could spend countless hours taking the code back to the errorless state. With version control software, this process is almost the same as if you clicked the undo button.
8. Don't add more people to a late project
"Adding manpower to a late software project makes it later". This statement is known as Brooks's law. Or as a more colloquial example, "Nine women can't make a baby in one month". So, why is the project with more team members less productive? The main reason is that new people need some time to become productive. This time is called ramp up time and it involves educating the new member about the previous work and the project goals and details. Senior team members spend time on education, instead of working, which means that fewer resources are focused on project tasks. However, this only applies to projects that are already behind schedule.
9. Don't work overtime
When a project is late, managers usually demand that people stay after regular work hours to finish the tasks. This can result in burnout, lower motivation and less job satisfaction. Also, during late work hours people are less productive. So, instead of working more hours, do the work at the time the productivity is highest. This time is usually not the same for all people, so organize work according to that.
10. Be comfortable while you work
While programming, it is important that your brain works well and is not distracted by anything. Some simple tips such as getting enough sleep, eating or doing a light exercise before working can increase work performance. Also, sit in a good chair, have enough light in the room and avoid distractors.
Happy team coding!