阅读更多

6顶
2踩

研发管理
引用
你知道吗,我们从来没有发现一个开发人员多年的经验与他的代码质量或生产力之间有直接关系。


关于开发人员经验与生产力关系的研究

最初对于个人编程生产力的研究是在1968年进行的,在这之后的30年间,其他研究人员至少做过8次同样的研究,结果并没有什么不同。他们在研究了一些平均有7年开发经验的专业开发人员后统计出:

  • 开始编码时间比率约20 : 1
  • 调试时间比率约25 : 1
  • 程序执行速度比率约10 : 1
  • 程序大小比率为5:1
他们发现没有一个开发人员的多年经验和代码质量或生产力之间存在直接联系。这说明经验和生产力(即生成代码的能力)之间不存在相关性,也说明经验和软件质量(即最大限度地减少缺陷)之间没有相关性。



上图展示了两个开发人员群体——差的(生产效率、产品质量均低)和优秀的。研究发现,每个群体中都存在开发经验丰富和贫乏的开发人员。该研究只是说明多年的经验并不重要,并没有说明培训指导是否能帮助开发人员提升。

在不考虑合法性的前提下,这意味公司可以辞退掉拥有多年经验、工资高但产出低的开发者,并雇用一些没几年经验但高效高质的开发者。

尽管研究存在缺陷,但是仍显示出好的开发人员和差的开发人员之间存在数量级的差别,而这种差别与经验无关。关于“开发人员之间存在数量级的差异”已经被其他研究所证实。(见英文原文最后的参考文献)

技术越来越先进,而开发者不是


你可能会认为与过去相比,现在我们对软件开发了解得更多,毕竟现在:

  • 我们有更好的计算机语言
  • 我们有更先进的技术
  • 我们有对高效开发模式有更好的研究
  • 我们在大学中有正规的软件专业
上面这些都是事实,但现在开发人员之间仍然存在较大的差异。这意味着有一些X因素驱动着产品开发,X因素可能是开发人员规划并作出正确决定的能力。
引用
坏消息是,如果你不是一个高效、高质量的开发者,那么仅仅是多年的经验可能不会令你变得更好。

学会决策


开发人员每一天都面临着“如何构建自己的代码”的决策。比如如何:

  • 规划代码路径
  • 将函数封装成类
  • 将类封装成包/模块
开发人员面临的编码决策,其中有许多是复杂的,好的开发人员会安排他们的工作,并做出正确的决定。差的开发人员只是“跳过”,他们认为,他们总是可以重写代码或在做出决定后再弥补错误。差的开发人员甚至没有意识到他们的决策过程是糟糕的,他们完全可以通过规划工作来变得更好。

解决方案:可能是PSP和TSP

Watts Humphrey试图通过针对个人的PSP(Personal Software Process,个体软件过程)和针对团队的TSP(Team Software Process,团队软件过程)来让开发人员了解评估、规划开发和决策的价值。但只有很少的组织接受他。Capers Jones已经分析了超过18,000个项目,发现:

  • PSP可以提高生产力21.2%,提高质量31.2%
  • TSP可以提高工作效率20.9%,提高质量30.9%
这些研究,对创建开发团队有一定的帮助。比起拥有平庸开发人员的大型团队来说,拥有高效开发人员的小型团队更为合理,因为他们知道如何规划并作出正确的决定。
引用
PSP和TSP建议:改造一个差的开发人员的最好的方式是教他们如何作出更好的决策。

要知道,随着时间的推移,知识技能、编写高效高质代码的能力是会提升的。

结论

本质上,我们都知道这一点,但只是很难做到。如果公司中的高级管理人员知道这些研究,那么高效高质的开发者会得到更多的报酬,差的开发者可能就需要另谋高就了。这样做不仅降低了构建软件的成本,同时也提高了软件质量。

不幸的是,我们一直都在为各种编程方法、语言和技术辩论、斗争不已。大多数组织中的开发人员的编码方式,正在逐步使“巫毒科学(VoodooScience)”看起来像“科学”。(译者注:指一些不正统的编码方式逐渐成为主流)。

英文原文:NO Experience Necessary!!!
  • 大小: 7.4 KB
  • 大小: 23.2 KB
  • 大小: 61.7 KB
  • 大小: 13.3 KB
6
2
评论 共 18 条 请登录后发表评论
18 楼 dohkoos 2013-05-26 21:59
这个研究结果很好理解。在篮球界,足球界,在任何行业都是这样。

7年级的程序员里评分的话,肯定从1到10分的都有
6年级的评分也是如此
...
1年级的也是如此

引用
在不考虑合法性的前提下,这意味公司可以辞退掉拥有多年经验、工资高但产出低的开发者,并雇用一些没几年经验但高效高质的开发者。


好的公司都是如此做的,甚至他们在开始招聘时就已经把那些“多年经验但产出低的开发者”毙掉了
17 楼 laogao3232 2013-04-01 17:29
ping2010 写道
明显的对比:3年1个工作经验和1年3个工作经验。
3年1个工作经验的人往往只会复制,粘贴。
1年3个工作经验的人注重代码结构,质量。

你没见过1个3年工作经验,复制粘贴都不知道代码什么意思的人?
多了去了。
16 楼 kimmking 2013-03-23 16:40
建议删除。
15 楼 kimmking 2013-03-23 16:40
广告贴啊~
14 楼 syi6 2013-03-23 01:39
好的开发人员依据'天资'会安排他们的工作,并依据'天资'做出正确的决定...
13 楼 syi6 2013-03-23 01:32
误导公众,先去开源社区去调研调研...
12 楼 teasp 2013-03-22 17:29
这个是事实。善于挖坑的人十年经验依然善于挖坑,也许更善于了。
11 楼 ping2010 2013-03-22 17:27
明显的对比:3年1个工作经验和1年3个工作经验。
3年1个工作经验的人往往只会复制,粘贴。
1年3个工作经验的人注重代码结构,质量。
10 楼 sunway00 2013-03-22 16:39
如果3年经验和1年以下的经验比,80%的都会更优秀;
但是如果是10年、5年与3年的比,平均水平能有多少差距呢?
9 楼 zhukewen_java 2013-03-22 16:05
分析的厉害呀
8 楼 xyz20003 2013-03-22 13:41
zhangchang 写道
开发人员不需要掌握业务知识?业务知识掌握不需要时间和经验积累??


理想情况下,开发人员只要关心如何实现需求,不用关心具体业务,但是实际情况下,开发人员要兼任需求调研,测试和实施。

文中只探讨开发能力,是硬指标,不包含梳理业务,陪客户喝酒等软素质。

7 楼 MrLee23 2013-03-22 13:37
赞同。
有的和尚,当一天和尚撞一天钟,有的和尚专心研究佛法,有的和尚专心研究武功。
6 楼 wpf7788 2013-03-21 17:16
工作3年不一定有3年的工作经验,这取决于个人的态度,三年用一个经验工作和一个在一年内不断改进的员工,你觉得那个更好哪?
5 楼 zui4yi1 2013-03-21 15:47
这个嘛,只能说,好的公司环境,培养好的编码质量
4 楼 ansjsun 2013-03-21 15:17
有没有经验,就是看你是否能很自豪的说我不知道...我不会....
3 楼 laogao3232 2013-03-21 11:14
zhangchang 写道
开发人员不需要掌握业务知识?业务知识掌握不需要时间和经验积累??

业务知识与编码质量无关。业务知识顶多能提高编码效率。
你怎么理解编码质量的?无bug?我理解的是面向人,面向程序员的编码。
逻辑清晰,结构严谨的。而不是没有bug的不可读,不可维护的代码。
2 楼 kidneyball 2013-03-21 07:58
引用

坏消息是,如果你不是一个高效、高质量的开发者,那么仅仅是多年的经验可能不会令你变得更好。


这里的“仅仅……可能”是想说:新人中技术最好那一批的代码质量可能会比老人中技术最差那一批要好。这就是研究了30年得出来的结论……
1 楼 zhangchang 2013-03-20 15:48
开发人员不需要掌握业务知识?业务知识掌握不需要时间和经验积累??

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 平民开发者≠技术差,真正发挥平民开发者的创造力,光有低代码还不够

    随着低代码的概念日趋火热,与之相关的“平民开发者”(Citizen Developer,也称公民开发者)也受到了更多人的关注。然而,在大多数语境中,平民开发者会与技术基础差划上等号,甚至以此来推演低代码和无代码在企业...

  • 一家之言:真正发挥平民开发者的创造力,光有低代码还不够

    随着低代码概念日趋火热,与之相关的“平民开发者”(Citizen Developer,也称公民开发者)也受到了更多人的关注。然而,在大多数语境中,平民开发者会与技术基础差划上等号,甚至以此来推演低代码和无代码在企业中...

  • 华为云CloudIDE:下一代云原生应用开发工具重塑开发者生产力

    华为云开发工具和效率首席专家、华为开发工具技术专委会主任王亚伟在主题演讲中介绍了如何基于智能化代码补全技术(SmartAssist)和微服务集群调测技术(CloudDebugger)重塑编码和微服务调测生产力。 华为云开发...

  • 开发者代码审查指南

    开发者代码审查指南 简介 代码审查是除了代码作者之外,其他人检查代码的过程。 代码审查的微观目标是在每次 review 中尽可能获得最佳 CL。宏观目标有两个,一,是确保逐步改善代码库的整体健康状况,二,是提高开发...

  • 慕课软件质量保证与测试(习题集)

    习题汇总0 总目录1 绪论1.1 软件质量保证与测试的产生与发展1.2 软件缺陷,软件错误,软件故障1.3 软件质量保证与测试的意义,原则和挑战1.4 单元测试1.5 课后作业2 软件测试策略2.1 软件测试的模型,过程和生命周期2.2 ...

  • 什么是低代码(Low-Code)?

    本文总结了低代码领域的基本概念、核心价值与行业现状,带你全面了解低代码。 前言 如果选择用一个关键词来代表即将过去的 2020 年,我相信所有人都会认同是“新冠”。疫情来得太快就像龙卷风,短短数月就阻断了全...

  • 修改变量名,简单有效地提高代码质量!

    全文共6633字,预计学习时长13分钟图片来源:pexels.com/@digitalbuggu请快速说出以下代码的功能:很难,对吧?要想对这段代码进行修改或调试,除非知...

  • 《云原生入门级开发者认证》学习笔记之云原生架构总览

    环境标准化,应用随处运行敏捷: 创建速度快,秒级资源弹性提高生产力: 消除跨服务依赖性和冲突 主流的容器技术,如Docker,它是通过内核虚拟化技术(namespace以及cgroups等)来提供容器的资源隔离与安全保障。...

  • 【微服务 Spring Cloud 2】为什么90%的开发者放弃传统的技术架构,而选择微服务?

    四、应用级容灾 应用级容灾即应用级容灾备份,是指在本地或异地建立一套完整的与本地生产系统相当的备份应用系统。在本地数据出现灾难时,备份中心可以接管本地生产系统的业务,并在本地生产系统正常使用后,恢复...

  • 什么是低代码平台 low-code?

    本文总结了低代码领域的基本概念、核心价值与行业现状,带你全面了解低代码。 一 前言 如果选择用一个关键词来代表即将过去的2020年,我相信所有人都会认同是“新冠”。疫情来得太快就像龙卷风,短短数月就阻断了...

  • 编写整洁的并发程序非常难,简单的代码也会变成噩梦?

    “对象是过程的抽象。线程是调度的抽象。” ——James O Coplien[1] 编写整洁的并发程序很难——非常难。编写在单线程中执行的代码简单得多。...最后,我们将讨论与测试并发代码有关的问题。 整洁的...

  • 开发者 发展 6 执行力

    团队管理中最可怕的事:缺乏执行力 说了不去做,做不到位 比如说我们周围路总修不好,对此大概没人认为是个技术问题——偷工减料怎么也不是技术问题。总结之后可能发现,“啊,这和层层转包有关系。应该禁止。”接...

  • 软件测试应对HR时如何反客为主?了解这些就够了!!!

    根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据; 如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷; ...

  • 从入门到精通:分享45个你可能需要了解的Web开发者必备的小技巧

    作为一名Web开发者,日复一日的编码工作无时不刻在驱使着我们的双眼。每天都要处理大量复杂的任务,并且,随着项目的不断推进,我们需要更加灵活,更快捷的解决方案,提升自己的能力水平。而实现这些目标的方式之一...

  • 代码行为异常容错机制与自我调节

    1.5、代码的容错机制与自我调节 2、设计观与方法论 2.1 设计观与代码容错机制、自我调节 2.2 问题是否能够被解决 2.2.1 意识行为是否具有虚拟性 2.2.2 思维是否具有方向性 2.3 问题与问题解决 2.4 软件与问题...

  • 基于Qt开发的截图工具- 支持全屏截图, 支持自定义截图,支持捕获窗口截图,支持固定大小窗口截图,颜色拾取,图片编辑

    基于Qt开发的截图工具.zip 截图工具(QScreenShot) Qt编写的一款截图工具。 特点 - 支持全屏截图 - 支持自定义截图 - 支持捕获窗口截图 - 支持固定大小窗口截图 - 颜色拾取 - 图片编辑 - 图片上传到wordpress 环境 Qt6.2 QtCreate 8

  • 毕业设计&课设_ 校园活动管理系统,优化校园活动组织流程,涵盖多方面功能模块的便捷平台.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

  • 毕业设计基于ASP.NET技术的班级展示网站构建(源代码+论文).zip

    基于ASP.NET技术的班级展示网站构建资源,是一套针对教育机构或学生团体,旨在通过ASP.NET框架开发班级风采展示平台的指导资料或教程。此资源详细介绍了如何利用ASP.NET的强大功能,快速搭建一个功能完善、界面友好的在线班级展示平台。 该资源涵盖了从需求分析、数据库设计、前端页面制作到后端逻辑实现的全过程。通过实例演示,指导用户如何设置班级信息、学生风采展示、活动公告、图片上传与浏览等核心功能模块。同时,结合ASP.NET的MVC架构,实现了前后端分离,提高了代码的可维护性和可扩展性。 此外,该资源还提供了丰富的代码示例和注释,帮助开发者深入理解ASP.NET框架的工作原理,掌握如何运用其强大的数据库操作、用户认证与授权等特性。对于初学者来说,这是一份难得的入门教程;而对于有一定经验的开发者,则是一份提升技能的参考资料。 总之,基于ASP.NET技术的班级展示网站构建资源,是教育机构和学生团体实现班级风采在线展示的理想选择,也是开发者学习ASP.NET框架应用的宝贵资源。

  • 基于springboot的流浪动物管理系统源码数据库文档.zip

    基于springboot的流浪动物管理系统源码数据库文档.zip

  • 基于springboot+vue的实践性教学系统源码数据库文档.zip

    基于springboot+vue的实践性教学系统源码数据库文档.zip

Global site tag (gtag.js) - Google Analytics