`
lovnet
  • 浏览: 6715647 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

翻译未完成:Building an Agile Team

阅读更多

Building an Agile Team

创建敏捷团队

原文链接:http://www.infoq.com/articles/building-an-agile-team

所属社区:Agile

摘要

This article describes the components of a successful team and how we built such a team.

本文介绍了一个成功的团队的构成,以及我们如何建立这样一个团队。

概要

Building an agile software development team is not easy. Many managers and team leads hire technically capable people, throw some form of an agile process at the team, and hope that everything works as well as the literature says it does. This approach is not only unrealistic, but is prone to failure. This article will describe the components of a successful team and how we built this team.

创建一个敏捷的软件开发团队并非易事。许多管理者和团队领导雇佣在技术上有能力的人,然后在团队搞一些敏捷过程的形式,并希望像书里面说的那样一切运转正常。这种方法不仅不切实际,而且容易失败。本文将介绍成功团队的构成,以及我们如何建立这样一个团队小组。

正文

Introduction

Building an agile software development team is not as easy as it seems. Many managers and team leads hire technically capable people, throw some form of an agile process at the team, and hope that everything works as well as the literature says it does. This approach is not only unrealistic, but it is prone to failure. This article will describe the components of a successful team and how we built this team.

建立一个敏捷的软件开发团队并不容易,因为它似乎。许多管理者和团队领导在技术上有能力的人雇用,扔在车队的一些敏捷过程的形式,希望一切正常,以及书籍说它。这种做法不仅是不现实的,但它很容易失败。本文将介绍成功团队的组成部分,以及我们如何建立了这个小组。

Components of a Successful Team

A successful agile software development team is made up of skilled developers , has established team values, has good communication, and is always looking to improve. While having every one of these components isn’t absolutely critical for success, having all of them will make the road to success much shorter.

一个成功的敏捷软件开发团队的构成是:熟练的开发人员,成形的团队价值观,良好的沟通,并一直保持进步。尽管拥有上述的所有构成部分并不能保证一定成功,但这些构成因素都可以使通往成功的道路更短。

Core Principles

Everyone has an idea about what kind of culture they want to establish for their team. Unless a manager is hiring people that he knows well, turning the vision of a culture into reality is very difficult. We recognized early that the characteristics that were important to us included having a customer perspective, collaborating effectively, managing by fact, and focusing on execution. A team that embodied these principles would be well positioned for success. Members of a team that embody these core principles exhibit a number of good behaviors. Some of those good behaviors are asking questions of customers, thinking like customers, being willing to ask for help, being willing to help others, making decisions with concrete facts instead of personal opinions, and striving to ship finished code.

核心原则

创建什么样的团队文化,每个人都有自己的想法。除非管理者对招聘来的人非常了解,否则把团队文化的愿景目标变成现实是非常难的。我们早就认识到一些对我们极为重要的原则,包括:站在客户角度思考问题,有效合作,以事实为依据的管理,以及关注执行力。一个体现了这些原则的团队将获得成功。实践了这些核心原则的团队成员表现一些出良好行为。这些良好的行为有,比如:反映客户的问题,站在客户角度思考问题,不耻下问亦或乐于助人,以事实为依据作出决策而不是个人的意见,努力提交完成的代码。

Effective Communication

Effective communication is critical for success. One of the most effective aspects of communication is to be face-to-face with people. It is much easier to work out ideas when people are located together. Another critical aspect of effective communication is focus. Conversations are not productive if they don’t have a well-defined topic that the participants stick to. A third essential element of effective communication is keeping the conversation focused on facts and ideas. Conversations can quickly degenerate to fights and turf wars when personal opinions take the place of facts and ideas.

有效沟通

有效沟通是成功的关键。沟通最有效的方式之一就是面对面交流。当人们聚在一起的时候比较容易产出好想法。有效沟通的另一个重要方面是重点。如果没有一个明确而且与会者都坚持的主题,谈话是不具有生产力的。第三个有效沟通的基本要素是关注事实和观点。当个人意见取代事实和观点时,会话迅速沦为为野地混战。

Good People

The most important aspect of a successful team is the people. A software development team needs talented people. Skilled developers are required to build complex systems using new technology. Building these complex systems can't be done by one or two people. A team is necessary. Therefore, the developers that are needed must also be skilled in working on a team.

正确的人

一个成功的团队最重要的是人。软件开发团队需要的人才。使用新技术创建复杂系统需要熟练的开发者。这些复杂的系统不可能由一两个人做完成,团队是必要的。因此,熟练的开发人员也必须具备团队工作的能力。

Constant Improvement

We knew that we would fall down a lot as we built a new team and created a new system. The difference between a successful team and a failing team is the learning that happens from these mistakes. Progress can only be achieved by reviewing past failures and making necessary improvements.

持续改进

我们知道,由于我们建立了一个新的团队,创造了新的系统,我们落下很多。一个成功的团队和一个失败的团队的差别在于是不是能从错误中汲取教训。常思前车之鉴并作出必要改进才能取得进步。

Building the Team

Communication Focus

From the inception of our company, we have focused on communication. The physical layout of our office is open. The development team sits in a large open room. Each developer has his/her own desk, and they are grouped in such a way as to facilitate communication. This open environment makes communication much easier because people can't hide out in cubicles and conversations are "public." (It is important that everyone act civilly and professionally so that this environment doesn't become overbearing.)

创建团队

沟通焦点

公司成立之初,我们的重点就放在沟通。我们办公室的布局是开放的。开发团队放在一个大开放的空间。每个开发者都有他/她自己的办公桌,他们以这样的方式分组,以促进交流。这种开放的环境,沟通更加容易,因为人们无法藏在“格子”里面,谈话是公开的。 (重要的是,每个人都要表现的自主和专业从而使这种环境不会咄咄逼人。)

Establishing Core Principles

As we built the team, we realized that we need to codify the characteristics that we wanted the team to embody. We initially thought that day-to-day interaction would infuse the team with the characteristics we were looking for. Capturing these characteristics and socializing them with the team was necessary in making sure all team members had the proper focus on the values we felt were critical to success. Codifying the characteristics that we wanted the team to embody was a stark realization for us. One realization was that some of the current team members didn't embody the characteristics. We went to great lengths to work with these team members to learn and exhibit the characteristics. Some team members responded very positively, and some did not. In some cases, we had to remove people from the team. The second realization for us was that our interview process wasn't filtering the types of people that we wanted. Our early interviewing process focused very heavily on the technical skill set of candidates. Our selection process looked for the most technically skilled people. This criteria brought us very bright and capable developers, but it didn't always bring people that thrived in our team environment.

Interview Process

Finding technically capable people that fit with an existing culture is tough. On one hand, having objective measures of a candidate helps to quickly filter a candidate pool. On the other hand, purely objective measurements don't capture the "soft" skills that help someone function in a team environment. We struggled with how to probe these areas effectively and efficiently. Our current interviewing model is a multi-stage process. The first step in our process is a phone screen. Phone screens give us a quick way to introduce our company to a candidate and to probe the candidate at a high level. In the phone screens, we cover some basic technical abilities, thoughts and understanding on agile development, and some level of personal introspection. By touching on these areas, we can tell if someone will not function in our environment. If the candidate isn't filtered out during the phone screen, we schedule an on-site interview. This interview is broken up into three segments: technical, process, personal. For each segment, we assign at least two team members so that a majority of the team gets to interact with the candidate. The technical portion of the interview focuses on raw technical ability and includes a hands-on programming exercise. The process portion gets into philosophies on testing, problem solving, and pair programming, among other topics. The personal section looks at conflict resolution, personal motivation, and general mental stability. We've found that this process works very well. If we get through all three segments and there is no hesitation about a candidate, the candidate will work well in our team.

面试过程

Process Improvement

Process improvement is key to building a successful software development team. We look at process improvement not just from the processes used to write and deploy code, but also processes used to prioritize work and hire new employees. One mechanism that we use for improvement is what we call a "3x3" review. With the entire team gathered together, each team member must come up with something positive from the past three months, and something negative from the past three months. Each team member then gets three votes each for the positive group and the negative group. Those votes are distributed to each listed item. When the review is done, we have a high-level view of what the team sees as positive attributes and what the team sees as needing improvement. This perspective helps keep the team aligned with the stated team characteristics. Another area of process improvement for us has been the interview process. As our understanding of agile development techniques matured, so did our need to find people that were not only skilled technically, but skilled in functioning on a team. Over the course of about eighteen months, we refined and perfected our interview process to a point where we know we won't pass on a candidate that would not thrive in our environment. This improved process gives us a much greater confidence in the people that we hire. We have had to find a balance between executing our existing processes and continually improving the processes. Whenever we experience pain in our processes, we take a little time to evaluate the pain. If the pain looks systemic, we try to identify incremental changes we can make to improve our process. If the pain is not systemic, we usually take a wait-and-see approach before making any other changes.

Conclusion

Over a short span of time, we've learned some valuable lessons for building a successful agile development team. Establishing team values and adhering to them has helped us build a successful culture and refine our interview process. Facilitating good communication has removed obstacles that hinder many teams. Refining our interviewing process has helped us identify qualified developers that will mesh well with the existing team. Reviewing our existing processes has helped us to improve the team on a continual basis.

时间不长但我们学到了创建一个成功敏捷开发团队的一些宝贵经验。建立团队价值观并坚持它们,帮助我们建立一个成功的团队文化,改进我们的面试过程。促进良好的沟通消除了阻碍了许多团队的障碍。改进我们的面试过程,帮助我们找到能与现有团队密切配合的合格开发者。检查我们的现有的流程,能帮助我们在一个连续的基础上提高团队。

坚强2002和你一起回头再说...
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics