作为一名经理,你应该花一半的时间在沟通上,无论是团队沟通,还是一对一的沟通。每天接触团队中不同的开发成员,把脉整个团队的动向,要提前意识到问题的存在。
管理好开发团队本身是一件非常有挑战的事情。由于文化上存在差异、语言上存在障碍,沟通方式也会有所不同,管理者会面临着项目失控的危险。这里,我为大家分享当今最成功的项目管理技巧,来帮助分布式软件开发团队保驾护航,成功管理好项目。
软件开发的关键是人才:保持开源的心态
技巧一:不要吝啬花钱,人才是关键
分布式开发面临着许多挑战,并不见得成本会低多少。但如果你能搞定的话,不管哪里,只要能挖掘到一些顶尖人才,那么优势就无与伦比了。毕竟,我们没办法保证每一个优秀的开发者都能出现在办公区20英里内,但如果你能汇聚不同地方的开发人员,有效的管理他们,那么你的人才储备池就任你来差遣了。
技巧二: 工欲善其事必先利其器
首先最重要的事情是要确保你的工具支持分布式开发,而且要鼓励大家来使用它。确保全球范围内都有权限访问到每一份文档、源代码文件、以及有相应的处理操作。这个说起来容易,做起来难。要实现利用这些工具来远程办公,你一定会被这种难度大吃一惊。在家里工作,测试工具和流程、检查代码、部署等等。有些集成工具可以用来探测一些连续生成的错误,如果你团队的每位开发人员此时都在办公,那就最好了。但最为关键是在不同时区的开发人员具体的工作时间,没有人愿意看到有人会延迟检查错误代码。这里强力推荐Jenkins (aka Hudson)、CruiseControl, 以及Bamboo这三款开发开发工具,它们可能会是你的救星。
技巧三:保持开源的心态
新建一个项目或者子项目。传统的项目很难拆分成子项目来适应分布式开发。但是新项目会提供一些机会,让你充分利用一些工具,这些工具应用到了分布式方法。比如,在低版本系统,比如CVS缺少一个分布式版本控制模型,而分布式版本控制系统GitHub、 Mercurial以及Launchpad,它们可以呈现一个分布式环境。我们致力于提供一个开源的合作水平,即使你的项目不会开源,但我们需要保持一个开源的心态,鼓励更多的人来参与,我们还鼓励大家开发更多的模块,提供更多的基于API的方法,这会让开发人员驾轻就熟,没必要全面了解系统的细节,就可以开发一个项目。
技巧四:保持信息的透明化
对于分布式开发环境,前期的需求收集和验证至关重要。否则,时区上的差异、语言上的差别、功能上的不同会造成分布式项目在运行过程中的风险,偏离预期的规划。书面上的沟通常常会比口头上的表达取得更好的效果。在团队中确定合适的人选,能够提供定期的书面项目更新,标示项目的进展和问题。当然,这里我们觉得更新频率比关注数量更重要。记住,要想帮助大家适应分布式开发,就要保持项目的透明化,而即使要保持小幅度的公开,都需要花很多的精力。
技巧五:合适的数量是最好的
“Lagom är bäst”是瑞典的常用表达式,意思是“合适的数量是最好的。”我们会把这个术语用在MySQL上,来确保模块化。每个项目或者团队都有不同的需求,而一个项目越趋向于模块化,那么就越容易组织团队。在组建团队时,需要考虑不同的技能和时区差异等因素。如果说距离是一个挑战,那么时区就是杀手了。如果说团队中成员所处的地理位置在时区上相隔4个多小时,那么要想安排大家同时在线,就相当麻烦。缩短开发与测试的整合周期,有利于及早发现问题。拖延的话,后续解决就会很棘手。那么整个周期到底要多短呢?“Lagom är bäst”(合适是最好的)。
技巧六: 选择最好的沟通工具
在Zendesk,我们把Trelio和Pivotal Tracker当成Kanban面板,来促进沟通,我们还会使用到一系列的室内沟通渠道:IRC(Internet交互式闲聊程序),Yammer(企业社交平台)、Flowdock(基于Web的团队通讯工具)还有Rypple。
技巧七: 组建小规模的团队
尽量组建小规模的团队,这样你可以每天花15分钟开会。小规模的团队有利于你培养起更好的团队意识和责任感。对于跨时区的团队而言,要确保大家能够相互沟通:利用一些工具比如Skype来聊天。作为一个团队的经理,要提供尽可能多的渠道来预团队成员保持联系,这样就也可以消除开发者联系不到你的风险。
技巧八:沟通、沟通、再沟通
开发者往往会面对各种各样的问题。比如最近的预算申请备有被批准,资源没办法得到。遇到这种情况,最好的解药就是要勤于沟通。作为一名经理,你应该花一半的时间在沟通上,无论是团队沟通,还是一对一的沟通。每天接触团队中不同的开发成员,把脉整个团队的动向,要提前意识到问题的存在。每两周可以花部分时间来演示软件,鼓励开发人员跟进工作进度,缩短开发、测试的整合周期。VNC之类的工具可以让开发人员快速预览到你目前的工作动态。
技巧九: 信息精确
管理跨时区的最大挑战是沟通上的延迟造成了误解。我们正在讨论那个Bug?发生了什么事情?什么模块?实时沟通可以缩短延迟时间,解决这些问题。你需要达到军事精确水平的沟通。确保涵盖所有相关的信息,包括Bug的序列号、JIRA时间或者客户号等。不要假设接受者能收到所有的必要信息,如果不太放心,可以打电话来实时解决这个问题。
技巧十: 涵盖信息全面
不管团队的成员是分散各地还是汇聚一堂,最为关键的指标是要保持高度可见,不管是通过大屏幕的显示器还是通过Web访问。包括Bug的数量、部署状态、服务器的负载、查询性能等,只要对开发者有用的信息。
总之,无论您身处何地,作为一个分布式团队的领导者,希望这十个技巧能为您保驾护航,让您在项目管理上如鱼得水。