Building an Agile Team 原文及翻译

Building an Agile Team - 原文及翻译                                            

在网上看见一篇关于敏捷团队构建的文章,正好最近在公司内要准备一次有关敏捷个人的讨论,借着这次机会,将原文翻译出来,供大家学习参考:
至于对于敏捷开发的认识,自己也有一些自己的想法,敏捷是一种态度,并不像想象当中那么神秘。
更多关于敏捷开发的知识,请参阅上一篇日志。
Translated by Frank Lee ,翻译不妥的地方还请各位读者见谅。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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 proneto failure. This article will describe the components of a successful team andhow 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 developersare 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 ateam.

优秀的人

人永远是成功团队最重要的因素。软件开发团队需要天才。经验丰富的开发者用新的技术构建复杂的系统,而构建如此复杂的系统光靠一个人是远远不够的,必须借助团队的力量。因此,团队里的其它开发者必须有一定的能力。

 

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 actcivilly 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 thev alues we felt were critical to success. Codifying the characteristics that we wanted the team to embody was a stark realization for us. One realization wasthat some of the current team members didn't embody the characteristics. Wewent 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 anexisting culture is tough. On one hand, having objective measures of a candidatehelps to quickly filter a candidate pool. On the other hand, purely objectivemeasurements 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-stageprocess. 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 phonescreen, 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, amongother 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 asneeding improvement. This perspective helps keep the team aligned with thestated team characteristics. Another area of process improvement for us hasbeen 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 thepeople that we hire. We have had to find a balance between executing ourexisting 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 await-and-see approach before making any other changes.

流程提升

流程的提升和改善对于一个软件开发团队的构建来说非常重要。这些改善不仅需要用在编写代码和部署当中,而且也需要用在工作优化和雇用新的员工。我们用一项被我们称为“3X3”的机制来提升我们的流程。我们将所有的团队成员聚焦在一起,每个成员必须提出过去三个月当中的积极方面以及负面的影响。每位成员对于每项积极方面和消极的方面有三个投票。调查结束以后,我们会在一个较高的水平上重新认识团队当中的积极因素,以及哪些因素是需要改善的。这些可以帮助团队保持团队的品质。我们团队改善的另一个领域是面试的流程。出于我们对于敏捷开发团队的理解,团队需要的人才不仅仅是技术强的人才,更是能够融入团队的人才。改善过的流程能提升我们对新雇员工的信任。我们必须找到现有的流程和持续改善过后的流程之间的平衡。当我们在实施的过程当中遇到问题的时候,我们就会花一点时间来评估这个问题。如果问题是系统的,我们就会提出改善的方案;如果问题不是系统的,我们就会在针对这个问题进行改变之前观察一段时间。

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 usidentify 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.

总结

在很短的一段时间内,我们了解了一些对于构建成功的敏捷开发团队非常有价值的知识。建立并且保持团队价值可以帮助我们构建成功的团队文化和改善我们的面试流程。促进沟通可以排除许多障碍,这些障碍通常会阻碍团队的发展。改善面试流程能够帮助我们找到高质量的开发人员,并且这些人员能和团队很好的融合。审视现有流程可以在持续的基础上发展团队。

原文地址:https://www.cnblogs.com/frank498/p/3022808.html