Some Suggestions for Strengthening Communication of Software Development Teams

 

Communication is the biggest issue when teams are working together in a distributed manner, and an area where we need to do our best to improve.

 

  • Meeting overhead is minimized. Team members should be able to easily join a conference call or web conference. Web conferencing with shared desktops is very useful. It is also a very good choice to allow each other to see the work whiteboard in a video conference.
  • Tools such as hands-free headsets, webcams, IM clients, application sharing software, and email are all great tools to use to aid communication. The key is to get people into the habit of using them.
  • Appropriate changes may be required in the way teams communicate to support distributed development. Informal oral communication may need to be replaced by more formal written communication. For example, use email or preferably use a task tracking tool to update the status of tasks instead of waiting for other team members to ask. This is especially effective for distributed teams collaborating across time zones because relevant information is available at all times.
  • Make a conscious effort to include remote team members from off-site and have them host the conference call.
  • It is necessary to standardize the format of the meeting. To avoid daily stand-ups becoming lengthy and time-consuming, rules like a parking lot system can be used. Questions raised at the meeting can be put on hold and discussed by relevant personnel after the meeting.
  • Jobs like pair programming can be done with desktop sharing software without having to consider geographic distribution when assigning. Regular code reviews can replace pair programming, or supplement it as needed. Also, code should not be uploaded to the server until it has not been reviewed, and team members should take reviewing seriously.
  • Whiteboards are critical in design meetings. If possible, share the content of the whiteboard via a webcam, or share the brainstorming information via Mind Map , etc. Images can also be taken and shared via the unified wiki . Ideally, a wiki system should be integrated with a tracking tool. continuous system testing, continuous system testing,
  • There is no substitute for face-to-face communication. Especially at the critical moment of the project. Key nodes should focus on the first and last iterations of the project. If the project cycle is very long, it is also very useful to hold meetings at mid-project nodes.
  • Take advantage of overlapping work time between distributed teams. If you are an offshore distributed team with time zones so far apart that there is no overlapping work time, new strategies are needed to facilitate collaboration between different teams. Each sub-team holds its own daily stand-up meeting before the start of each day's work, and one of the sub-teams stays a little later or arrives at the company earlier in the morning to cater for the overall meeting time. Another way is to designate a representative for each team or a representative trusted by both teams, who will communicate when each team begins and ends work. The main purpose of the delegates is to understand each team's situation and to give feedback to each other and to communicate the decisions that took place during the meeting.
  • Asymmetric team distribution structures are probably the most difficult to deal with. For example, suddenly one person dials in during a conference call, and everyone else is in the conference at the time, which may cause everyone to miss some key information. In this regard, everyone should be connected to the conference call first, so that everyone can get symmetrical information. Plus, it's especially difficult to keep in mind that people should occasionally dial down their phones to join a meeting, as opposed to having a meeting in a fixed conference room.
  • Assign a coach to the team and have him help the team stick to practice activities to improve communication. These practical activities are often easily abandoned because they are often not easy to perform. Remember, the coach is not the enforcer of the practice. Their main purpose is to help and remind teams of the value of close communication, even if distributed teams make practice more difficult.
  • Avoid making remote teams " feature-focused " . Such as remote testing teams. This can lead to work being pushed back and forth, which can greatly reduce efficiency and ultimately make the team feel out of place. The focus of the team is to focus on completing the features under their name, rather than focusing on delivering a story . Agile teams often make the most of cross-functional members such as developers and testers.
  • If each team must work independently, designate a representative to be online while each team is working. They will communicate the completed development work to the testers and vice versa to the development of the completed testing work.
  • 不要按地理位置分配开发任务。这样做会随着时间的推移产生负面影响。这样的任务组织架构将会让团队的地理分布变得越来越分离(引述Conway’s Law [1])。团队应该考虑他们的工作是在不添加功能组件的情况下完成用户故事。单个Story相关联的开发任务应当分布到整个团队,而不是按照地域进行划分。这对分布式团队来说是最具挑战性的领域之一,因为它需要团队能跨地域密切合作,但这同时也将会为团队带来一致性的用户体验,并减少各组件之间的功能性差异。
  • 过于特殊的地理位置分布和机构等迹象表明,你的团队会因为迫于分布式团队带来的沟通障碍而对产品进行变更,以此来满足他们的开发,而不是出于对客户需求的真正考虑。
  • 保持耐心。建设一支优秀的团队,并具备融洽关系,良好的工作习惯和节奏是需要时间的。

 

作者:TechExcel公司CEO兼首席软件架构师 周铁人 博士   

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326441922&siteId=291194637