java 无可替代

我们都听说过,通过经验来解决错误的唯一途径就是努力敲门。 经验丰富的程序员不会害怕,因为他们以前曾处理过棘手的问题 ,并且他们知道遇到另一个问题时该尝试什么-过去为他们工作的东西,没有的东西,他们看到其他程序员的东西尝试,他们从中学到了什么。

他们已经建立了自己的错误模式和调试模式列表,以及要遵循的清单,工具和技术。 他们知道何时尝试使用快速,肮脏的方法,使用自己的直觉,何时变得有条理,耐心和科学;他们知道如何进行二进制切片以减小问题集的大小。 他们知道如何读取跟踪和转储文件。 他们知道他们正在使用的语言和工具。

需要时间和经验来知道从何处着手,如何缩小问题的范围。 什么信息有用,什么没用以及如何区分。 以及如何快速完成所有这些操作。 我们回到了再次敲击锤子的位置。

但是经验真的有多大的不同?

史蒂夫·麦康奈尔(Steve McConnell)的《代码完成》 ( Code Complete )关乎程序员的生产力:是什么使某些程序员比其他程序员更好,以及所有程序员可以做些什么来变得更好。 他的研究表明,与不知道自己在做什么的程序员相比,顶级程序员可以完成的工作在质量,数量和工作速度上有多达10倍的生产率差异 。

调试是真正显示出这种差异的领域之一,它将男人和男孩分开,将女人和女孩分开。 研究发现,经验丰富的程序员找到没有经验的程序员发现的相同缺陷集所花费的时间之间存在20比1甚至25比1的差异。 那不是全部。 最好的程序员还会发现很多缺陷,并且在进行修复时所犯的错误要少得多。

更重要的是:经验还是好的工具?

在《 应用软件评估》中 ,Capers Jones研究了4个不同的因素,这些因素影响程序员查找和修复错误的效率:

  1. 有调试和维护经验
  2. 代码结构的好坏是多少
  3. 语言和平台
  4. 程序员是否具有良好的代码管理和调试工具,并且知道如何使用它们。

Jones通过测量分配范围 (一个程序员一年可以维护的平均代码量)来衡量程序员的调试和错误修复能力。 他说,普通程序员每年可以维护大约1,000个功能点-大约50,000行Java代码。

让我们看一些数据,以了解经验在修复错误方面有多大的不同。

人员缺乏经验,结构较差,语言较高,没有维护工具

最差 平均 最好
150 300 500

经验丰富的员工,结构差,语言水平高,没有维护工具

最差 平均 最好
1150 1850年 2800

该数据表明,在使用结构错误的代码且没有良好维护工具的团队中,经验丰富的程序员与经验不足的程序员之间的差异约为20:1。 现在让我们看一下好的工具可以带来的不同:

员工经验不足,结构差,语言水平高,工具好

最差 平均 最好
900 1400 2100

经验丰富的员工,差劲的结构,高级语言,良好的工具

最差 平均 最好
2100 2800 4500

使用好的工具进行代码导航和重构,反向工程,性能分析和调试,可以帮助平衡新手程序员和专家之间的竞争环境。

您必须是个白痴,以忽略您的工具( 调试器是为失败者准备的吗?是认真的吗?)。 但是,即使有了当今的优秀工具,经验丰富的程序员仍然会取胜–平均效率提高2倍,从最佳到最差情况提高5倍。

在某些情况下,差异实际上可以无限大。 有一些经验不足的程序员根本无法解决的错误-他们不知道在哪里看或做什么。 他们只是对语言,平台,代码或问题的理解不够,无法使用。 而且,他们通过引入尝试修复某些问题的新错误而不是首先修复该错误,更有可能使情况变得更糟。 甚至要求他们尝试也没有任何意义。 您可以从《 Debug It 》这样的好书中学到很多有关调试的知识! 或代码完成。 但是,在修复错误时,经验是无可替代的。

参考: 修复错误–在Building Real Software博客上,我们的JCG合作伙伴 Jim Bird的经验无可替代 。

翻译自: https://www.javacodegeeks.com/2012/08/fixing-bugs-theres-no-substitute-for.html

java 无可替代

java 无可替代_修复错误–经验无可替代相关推荐

  1. 南方航空java面试_面试经验 南航面试经历分享

    南方航空面试经历分享 前言 每个人的成功经验都是来之不易的,今天小V的面经写得有点长,为了给大家写的详细一些,参考多一些,也是拼了! 小V的基本情况:小V是一名大三的在校学生,学的还是搬砖的理工科专业 ...

  2. java 防渗透_「java、工程师工作经验怎么写」-看准网

    java.工程师工作经验一 工作时间:2014年10月03日-2019年10月03日 | 行业:计算机软件 | 职位:java.工程师 1. 根据移动端产品需求和逻辑流程提出合理.清晰的API结构. ...

  3. 视频教程-企业微信支付JAVA版_向员工收款-微信开发

    企业微信支付JAVA版_向员工收款 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信息 ...

  4. java程序员求职计划_2017年java程序员面试经验(500字)

    1.数据结构 2.OO.按照他的一段描述建模 3.Java和C++在内存管理的不同之处. 4.JAVA的多线程机制. 5.反射机制的作用,以及在哪些方面使用了反射机制 6.网络 7.DesignPat ...

  5. JAVA入门_多线程_邮局派发信件

    JAVA入门_多线程_邮局派发信件 Postman package cn.campsg.java.experiment.entity;public class Postman {private Str ...

  6. 第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++

    第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++ 准备代码: 第一次编译: 显然需要先配置环境变量: 先找到java.exe和javac.exe所在的文件夹位置: 此电脑-& ...

  7. java 多线程写缓存,Java多线程_缓存对齐

    1.什么是缓存对齐 当前的电脑中,数据存储在磁盘上,可以断电保存,但是读取效率较低.不断电的情况下,数据可以在内存中存储,相对硬盘效率差不多是磁盘的一万倍左右.但是运算时,速度最快的是直接缓存在CPU ...

  8. 复习Java异常处理_异常分类_自定义异常_线程初步了解

    复习Java异常处理_异常分类_自定义异常_线程 主要内容 异常.线程 教学目标 第一章 异常 1.1 异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点 ...

  9. 系统架构设计师面试java架构师 面试经验分享

    一.[java架构师面试经验(广州) - 阿里巴巴] 面试过程: 面试问的技术底层是实现原理,高并发处理经验,工作中遇到的困难,以及计算机基础,网络基础数据结构,操作系统汇编语言计算机指令,消息中间件 ...

最新文章

  1. 戴尔PowerEdge-C服务器新成员
  2. 区块链组织-超级账本(Hyperledger)的简介
  3. Oracle使用imp/exp导入/导出数据库
  4. php如何和c进行数据交换,PHP与 后台c交换数据 | 学步园
  5. HTML5 表单相关
  6. Groovy新手教程
  7. 动态规划入门——第N个泰波那契数(Leetcode 1137)
  8. 苹果官网再度开售iPhone SE:这是在为新品清库存了?
  9. 分配菜品类别: 展开 收起_运营技巧:让产品数据决定菜品的去与留
  10. python调用usb摄像头黑屏_ORB-SLAM2编译安装和USB摄像头例程运行
  11. 扬州大学c语言上机作业答案,扬州大学C语言上机作业1-9整理
  12. 深入浅出python学习
  13. html乱码原因与网页乱码解决方法
  14. 用esp8266开发板制作WiFi Killer
  15. 2022最新whatsapp接收不到验证码解决方法
  16. Mac上使用Emacs
  17. Windows Mobil中解决日期显示不正常的方法
  18. STM32实例-蜂鸣器实验
  19. Titanic 泰坦尼克数据集 特征工程 机器学习建模
  20. codeforces 14E. Camels(多维dp)

热门文章

  1. 简单漏洞复现_网络渗透测试
  2. 综合布线工作组上半年两个技术课题正式进入修改阶段
  3. 关于 树(tree)结构
  4. ###数字形式转换1
  5. excel图表整形:如何提升条形图的颜值
  6. java ui界面美观,JavaFX实现UI美观效果代码实例
  7. uptime、who、w
  8. C++:乘法运算符和取模运算符
  9. 【程序人生】是的,我离职了!
  10. AcWing 168 生日蛋糕【DFS 剪枝 ☆】