微信号:infoqchina

介绍:有内容的技术社区媒体

【争鸣】交付更多功能,无须增加人员

2014-07-17 20:04 InfoQ

随着对软件产品和服务需求的增加,软件企业寻求新的方式来提高其开发能力。企业通常的做法是通过增加人手来提高开发效率。一些人质疑这种做法,并提出其他方法,能够在不增加人手的同时交付更多的软件。


Robert Martin(也就是著名的Bob大叔)在他的文章《新手成群》当中建议让专业人士以小团队的形式开发软件:


我们真的需要大群的新手吗?通过增加一些几乎不能胜任的人员,真的就能更快更好地构建软件吗?软件开发问题从根本上来讲真的是人力资源问题吗?编程就跟砌砖一样吗?泥水匠越多,意味着能码更多砖块,开发人员越多,意味能写更多代码;但我们要的是更多的代码吗?抑或我们要的是更少的代码?用更少的代码实现更多的功能。代码量越少,设计得越好,也就能做更多的事情,是这样吗?


Bob大叔描述了他的驾驶飞机课程。第一次的免费课程里,教练让他操纵飞机飞了一会儿,之后他不断地阅读教材、参加地面学校的课程、做家庭作业。当他在飞机附近时他的教练一直跟在他身边。教练向他解释如何操纵飞机、观察他的行为,并为他记录日志。Bob大叔质疑为什么我们不对软件开发者做类似的事情——把更多的重点放在培训和指导他们上:


我们这个行业在做类似下面的事情吗?诸如为有前途的软件开发者提供免费的课程、称之为飞行员、大批地把他们扔到飞机里,仅仅为了目睹他们撞机、起火。证据相当惊人。在我们的行业里发生了许多起撞机和燃烧的事件。这是因为没人记录日志吗?这是因为我们从未真正在训练他们成为飞行员吗?


Pawel Brodzinski在他的文章《去规模化的敏捷》中描述了我们很少质疑规模化策略的现象:


……它似乎是某种不容置疑的范式,当你打算去反对时,每个人都看着你,仿佛你是一个外星人。铺开一个庞大的计划把敏捷或精益引入到整个组织中,我有时觉得这对于大公司而言是唯一的事情。


他建议了一些以小型团队工作、去规模化敏捷开发的方法:


一种方法是臭鼬工坊。基本想法就是在公司中创建一个团队,独立于其他人而运作。这个团队有机会尝试很多的事情,而这一点在更大的范围内是很难实施的。同时这也营造了一种规模更小的环境。


在大公司里应用精益创业也是同样的道理。在产品开发策略上,我们营造一种自主的、小规模运作的工作氛围。


当公司决定找一个合作伙伴并把一些工作外包给它的时候,做法完全不同。在这种情况下有一点是很容易做到的,即缩减团队规模。困难的地方在于找到合适的合作方,愿意追求正确的价值并采纳适当的实践。但话又说回来,这样的做法也可能是一个可行的去规模化策略。


Janet Choi写了一篇关于《小团队工作效率更高的科学依据》的文章。她解释道,向团队中增加人手有一些缺点:


在召集一群人完成某件事的时候,更多的人意味着更多的各种东西——需要更优秀才能达到卓越,以及更多坏的和丑陋的东西。即使更多的人意味着更大的资源池,他们同样也需要更多的协调和管理,直至规模成为阻碍。


她还提到了关系损失,这是团队越大,个人效率越低的原因:


关系损失即在团队膨胀的同时,你感觉获得的支持越来越少。这包括情感支持,在执行工作和克服挫折时的援助,以及帮助解决问题的信息支持。想想你最糟糕的工作日——而如果没有一个可以依靠的肩膀、或有人帮助你走出困境的话,这又该是多么的困难。


Janet提供了一些方法,可以帮助大团队运作成小团队。 她的一些想法包括:


让团队感到更小:与你的同事相处融洽,并更好地相互了解。节日聚会或一起出去喝一杯听起来像是有点傻,但一起出去玩和出差可以让你建立一个融洽和有乐趣的关系。


完全的透明:透明度帮助阻止诸如游手好闲或者浑水摸鱼一类的行为,因为这样的行为将无所遁形;办公室政治也难以为继,因为人们没法再像个守财奴一样藏私知识。


经常给对方反馈:不要让反馈变成一年两次的管理手段。让团队中每个人都参与到对话当中,以帮助加强每个人的工作成果和业绩之间的联系,这一点在大团队里常常因为缺乏动力而无法做到。


Erwin van der Koogh在文章《缩减敏捷:完美的敏捷设定》介绍了他的“理想团队情况”,并就如何以小团队工作提出了建议:


给大家一个问题,而非一个任务……你会立即释放他们解决问题的创造力。解决问题的自主权也恰好是激励大家并让他们踊跃参与的最好方式。


确保所有必须的人才都在团队里……那些真正能够理解问题、与用户和利益相关方沟通、解析数据、设计客户体验的人,这只是第一步。


给团队以所需的资源。


让团队做试验……通过与利益相关方、用户和客户交谈来降低风险。


两周一个迭代太慢了……有各种工具(多数都是免费的)可以帮助我们做到每日发布,甚至更频繁。


 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 前端工程师简历怎么写 我该如何向非技术人解释 SQL 注入? 『运维自媒体联盟』限时特供学习资源大礼包 搜索引擎(0xFE)--- 用机器学习再谈排序 如何有规律地发布新版 APP?周五效果最好!