我在一个中等规模的团队(20多名开发人员)工作,我相信团队成员之间的沟通并不尽如人意.
像大多数团队一样,我想,我们有几个系统可以构建和维护.我们还在工作中使用了许多不同的工具,如Visual Studio 2008,Subversion,Resharper,Tibco,TeamCity等.
我们也使用"敏捷"方法进行开发......我把它放在引号中,因为它看起来更像是"赶紧尽快获得这个功能......我们将在一周内为您准备好规范......现在就开始研究它,但一定要对它进行单元测试,然后由某人审查代码".
正因为如此,我们的系统设计很差,因此难以维护....所以我们最终会有一些人作为"大师",他们非常熟悉他们创建的系统.
此外,由于整个IT行业的步伐,我们经常需要使用新技术和我们开发的最新版本的工具.
我的观点是不要抱怨并说"噢,我的事情很困难"......而我的担心是,除非我们的团队开始更好地沟通,否则我们将陷入困境.
让我试着用更好的沟通来解释我的意思......
最近我们刚刚从VS2005升级到VS2008 ......这在我看来很棒,因为我喜欢使用最新的技术.我们也从CruiseControl.Net转移到了TeamCity ......这一切都很好.
......但......我们从未真正接受过VS2008的任何培训或C#3.0的新功能......甚至没有关于TeamCity的备忘录......作为IT人员,我们似乎有望适应和学习走.
现在显然我可以通过阅读博客并关注我使用的工具的最新消息来找到这些信息......我做了......但是团队中的每个人都没有实践持续学习的实践,所以你最终人们使用新功能而不真正了解它们......
此外,我们的团队最近已被指示开始进行代码审查......但没有任何关于这意味着什么的指导....目前它只是意味着将代码交给某人......任何人......在团队中并让他们看看你的代码......无论是两秒还是两小时,它在整个团队中都没有真正建立或统一......如果他们甚至完成了......
编写单元测试也是如此...我们一直鼓励他们编写它们......但它并没有在团队范围内进行沟通,编写它们的最佳方法是......所以一些开发人员尝试编写它们,找到它们这很困难,要么写不好的单元测试,要么放弃并决定单元测试是一个坏主意......
我提出的帮助改善情况的想法是组织一系列会议作为开发者论坛......在这些会议中,团队成员将提出一个不同的主题,剩下的时间用于讨论开发人员.
一个星期的主题可能是C#的一个高级新功能和围绕它的推荐最佳实践....下一个可能是关于代码评论和寻找什么......而下一个可能是对一个模糊遗产的介绍系统......然后开发人员可以使用讨论来分享他们的经验和问题.最终目标是建立一个可以在开发人员之间自由分享想法和信息的地方.
我得到了我的经理和我的几位开发人员的支持以获得一些信息...但我被告知这样的想法之前已经尝试过并最终消失了.
我希望这个想法能够取得成功,而不是在我最终离开这家公司的时候,我会全力以赴地把它弄死.
那我怎么能鼓励我的团队更好地沟通呢?我对开发者论坛的想法听起来像个好主意吗?我该怎么做才能防止它消失?
有没有更好的东西我可以做而不是我没想到的?
不仅仅是开始一系列会议......我如何鼓励和影响我的团队开始团队表演?我真的很喜欢我的工作,并且相信我正在与一群优秀的开发人员合作......但我也非常想在一个我认为目前有点缺乏的领域为团队增值.我该如何有效地做到这一点?
团队精神很难逼迫.大多数让人们一起工作的尝试更好地适得其反.它需要得到培育和发展.
而不是一系列的会议,一个月左右的团队午餐(在公司上)怎么样.非正式的东西,不会影响工作时间.没有什么正式的,但人们有机会互相交谈和"联系".如果人们能够,晚上喝几杯或打牌可以提供帮助.重要的是它是自愿的和非正式的.
结对编程可以帮助传递知识,帮助人们相互了解和理解,因此可能值得考虑.
然而,贵公司的管理风格似乎与事情有关.
"赶紧尽快获得这个功能...我们将在一周左右的时间内为您制定规范......现在就开始研究它,但一定要对它进行单元测试并让某人对其进行审查".
这让事情在空中留下了很多.有人读过开发团队应该做的事情,但是不愿意把时间(也就是钱)用来做正确的事情.这将使开发人员被剥夺权利和动力,这会伤害团队.
在我看来,您的团队缺少一名技术主管。
这个人会接受管理层的指导,并将其转化为团队其他成员可以使用的实际步骤。
例如:
您提到您在团队中使用了许多产品,有时会在没有向团队提供注释或培训的情况下更新这些产品。
技术主管将记录产品以及如何使用它们,最好是在 wiki 上,以便其他人可以做出贡献,并且拥有新产品的经验,这样他们就可以在需要时为任何人提供帮助。
技术主管还将提供有关如何使用新产品的指导,无论是电子邮件、文档、维基文章等。
在与管理层、高级开发人员等会面后,此人将提供有关如何进行代码审查的指导。
对于任何新的开发或主要功能要求,技术主管将参与设计,从而进行同行评审,并且知识将在团队中传播。
所有这一切的关键是让每个人的工作变得更轻松、更高效。这个人是谁可能很清楚,因为他们将是最受尊敬的成员,每个人碰壁时都会去的。需要给那个人一些时间来扮演这个角色。
不幸的是,如果那不是你,那么你可能不会有太多运气说服人们改变他们的工作方式。
此外,每月一次的非正式午餐、足球或其他可以让团队成员建立非正式联系的活动也有很大帮助。