正如安德森(Marc Andreessen)所说,软件正在吞噬世界,人们对软件的需求与日俱增。尽管专业软件开发人员的数量出现了巨幅增长,但仍然处于短缺状态。为了满足这一需求,我们需要更多高效的软件工程师。
在过去的几十年,人们对理解和提高软件开发人员与团队的生产力*进行了大量的研究。已经有大量关于软件生产力含义的研究成果。其中很多都引入了生产力的定义(非常多!),考虑了与生产力相关的组织问题,并侧重于提高生产力的具体工具和方法。事实上,大多数关于软件生产力的开创性工作都是在20世纪80年代和90年代进行的(如《人件》、《人月神话》和《个人软件过程》等)。
为什么会有这本书
这本书始于在德国达格斯图尔召开的、为期一周的工作坊。本次研讨会的动机是,自20世纪80年代和90年代以来,许多事情都发生了变化,是时候重新审视什么才是使现代软件工程师具备高生产力的根基。
自20世纪80年代和90年代以来发生了什么变化?今天的软件团队和工程师通常面临着全球化的现状,他们跨越国界和时区进行协作,实践敏捷软件开发,常用诸如Stack Overflow和GitHub等社会化协作工具,并且常用笔记本电脑或个人设备进行工作。今天的软件工程师必须处理前所未有的复杂系统,在云上快速构建大型系统,在单个存储库中存储数百万(甚至数十亿)行代码,能够一天多次频繁地发布软件。他们平均使用11.7个沟通渠道,比如网络搜索、博客、问答网站和社交网站;1984年,软件工程师的主要沟通渠道是电话和面对面的会议。人机交互(HCI)和计算机支持的协同工作(CSCW)社区在支持知识工作者提高生产力方面取得了重大进展,相关进展也波及到了软件工程师。此外,收集更大范围的软件开发数据使得对生产力进行精密分析成为了可能。
本次研讨会的目的是重新思考、讨论和解决软件开发中生产力的开放性问题,从中发现如何度量和培养提高软件开发人员生产力的行为。具体来说,研讨会对以下问题进行了集中讨论:
生产力对个人、团队和组织意味着什么?
生产力的维度及其影响因素?
衡量生产力的目的和意义何在?
生产力研究面临哪些重大的挑战?
这本书探讨了生产力对现代软件开发的意义,由达格斯图尔研讨会的参与者(见下图)和其他许多专家联合撰写,旨在总结和传播业界和学界对软件生产力的经验理解和真知灼见。
2017年3月,“重新思考软件生产力”达格斯图尔研讨会全体成员
本书概述
这本书由五个部分组成。首先是一系列概述衡量生产力挑战的文章(“度量生产力:没有银弹”)。接下来,将生产力分解为几个组成部分(“定义生产力”)和识别生产力要素以及如何从不同的角度看待生产力(“生产力的影响因子”)。虽然生产力一般很难衡量,但我们通过一些具体的案例研究度量生产力的某些方面(“实际度量生产力”)。最后,书中通过一系列文章来探讨如何采取干预措施来提升生产力(“提高”生产力最佳实践”)。
第I部分 度量生产力:没有银弹
传闻中某些程序员的工作效率比其他人高十倍,这是真的吗?第1章通过深入研究的数据来回应这个问题。然后,第2章解释单一的生产力指标的本质性错误。第3章描述一个思维实验来说明监测生产力可能产生的副作用。
第II部分 定义生产力
第4章概述过去对生产力的定义方式。第5章描述了一个将生产力分解为三个维度的框架(质量、速度和满意度)以及在考虑衡量生产力时如何应用该框架。第6章描述从特定的视角考虑生产力的重要性。第7章总结生产力的概念并概述相关背景下的生产力研究(知识工作)。
第III部分 生产力影响因素
有许多不同的因素可能会影响软件工程师的生产力。第8章通过一份完整的清单概述这些因素。在接下来的两章中,深入探讨其中的两个因素。第9章概述对打扰的研究。第10章对幸福感和生产力之间关系的研究进行讨论。第11章通过反面教材来思考社会因素对生产力影响的重要性。
第IV部分 实际度量生产力
第12章深入研究开发人员感知生产力的不同方式,以及对程序员自己报告生产力的量化分析。第13章讨论定性研究方法如何帮助人们应对生产力的挑战。第14章概述了使用眼动追踪器和脑电图(EEG)扫描来量化生产力的好处和局限性。第15章讨论了解更大团队(团队认知)中发生的事情对生产力的重要性,以及如何衡量团队认知。第16章概述在仪表盘中展示生产力指标的好处和挑战。
一些组织使用国际标准化组织(ISO)的标准方法进行生产力基准化分析,最后两章对这部分进行了介绍。第17章概述了一种量化方式(COSMIC)。第18章描述了一个关于组织中使用COSMIC基准方法的案例研究。
第V部分 提高生产力最佳实践
本书包含很多提高软件工程师生产力的“最佳实践”,于是我们对不同干预手段进行了介绍,提供多种视角来描述这些干预手段是什么样的。第19章描述如何改变从“提高生产力”到“减少浪费”的思维方式,使生产力的提高变得容易。第20章描述拥有清晰而成熟的流程之重要性。第21章回答了结对编程的参与度问题。
同时,也可以通过工具支持的干预措施来提高生产力。第22章描述工作中对个人生产力进行监测的好处和挑战。第23章提出一个系统来显示何时可以打断软件工程师。在第24章回顾软件开发过程中涉及的人机交互和信息获取等相关技术的发展。最后,第25章聚焦于内在,概述正念在生产力中所起的作用。
软件生产力的未来
虽然这些论文都是由软件工程所专家撰写的,但很难面面俱到。软件开发总是在变化,我们对软件生产力的知识还有很多的欠缺。在达格斯图尔研讨会上,参会者确定了几个开放性问题和重大挑战。三个最主要的挑战分别是:基于我们已具备的知识建立一个软件生产力的知识体系;改进生产力度量方式;通过干预来影响和提高软件生产力。
1. 建立软件生产力知识体系
以下是构建软件生产力知识体系的建议措施。
开发生产力理论框架。
定义类似于软件演进规律的生产力规律或规则。例如,一个更快乐的开发人员同时也是一个更有效率的开发人员;注重参与的团队效率更高。
检查软件开发与其他类型的知识工作中工作者的区别,研究软件开发的独有特性和共性。
建构生产力问题与相关研究方法的映射关系。
2. 改进生产力度量方式
以下是改进生产力度量的建议措施。
收集好的案例。从收集的信息中提炼出见解和指导方针。
开发一种能够随时进行全方位跟踪的方法,包括公司内部的详细数据、个人的生物特征数据及满意度、情绪、疲劳和动机等方面的数据。用这些数据来分析开发工作和生产力。显然,这样的方法很难(如果方法可行)获得隐私信息的授权。
3. 提高软件工程师的生产力
以下是提高软件工程师生产力的建议措施。
了解如何支持和提高生产力。
对不同公司和采取不同干预措施之后的生产力进行大量数据的比较研究。
激动人心的时代即将来临,我们希望你喜欢这本书!
致谢
本书的问世离不开许多人的努力。我们非常感谢各章的作者和Apress出版社,特别是格林(Todd Green)、巴尔扎诺(Jill Balzano)和麦克德莫特(Susan McDermott)等的广博而专业的工作成果。特别感谢达格斯图尔研讨会的组织者和工作人员(网址为https://www.dagstuhl.de,计算机科学家的聚集地),他们主办的独创性会议是这本书的起源。还要特别感谢易(Jaeheon Yi )和费斯膝(Ambrose Feinstein),没有他们,我们不可能留出时间来研究这个课题。
关于主编
凯特琳·萨多夫斯基(Caitlin Sadowski)博士,谷歌(加州山景城总部)工程师,致力于研究和改进开发人员的工作流程。她目前担任Chrome度量团队的主管,帮助Chrome开发人员做出数据驱动的决策。她创建的Tricorder程序分析平台使静态分析在Google被广泛采用,参与创建了工程生产力研究团队,研究开发人员的时间分配以及使他们高效工作的原因。她是顶级软件工程和编程语言研讨会(ICSE、ESEC/FSE、OOPSLA和PLDI)的委员会成员。
她在加利福尼亚大学圣克鲁兹分校做跨学科研究(编程语言、软件工程和人机交互)并获得博士学位。她喜欢和她三岁的纳鲁(Naru,也叫Mr. Wiggles)一起烤面包。
托马斯·齐默尔曼(Thomas Zimmermann)博士,专注于分析数据的微软研究院高级研究员。他目前致力于提高微软软件开发人员和数据科学家的工作效率。他过去主要分析来自数字化游戏、分支结构和BUG报告的数据。他是Empirical Software Engineering Journal的联合主编,并在IEEE Transactions on Software Engineering、IEEE Software、Journal of Systems and Software和Journal of Software: Evolution and Process的编辑委员会任职。他是顶级软件工程会议(ICSE、ESEC/FSE和ASE)的委员会成员,也是ACM SIGSOFT的主席。他编过推荐系统(Springer)和软件工程中的数据科学(Morgan Kaufmann)方面的书籍。他在萨尔大学从事软件仓库挖掘工作并获得博士学位。他喜欢看电影,喜欢在-21℃的天气下踢足球,喜欢收集独角兽。
C***n 2023-05-31 18:50:48
JD购物方便快捷,快递给力