为何程序员完成最后20%的工作需要的时间跟之前的80%一样多?

2023-11-11


听过行百里者半九十吧。这句话在程序员的工作中同样适用,到底是为何呢?Matija用一个精巧的比喻揭示了个中道理。

其实这就好比在高峰期从郊外开车回市中心。前 80% 的路程很顺,高速嘛,可能两小时就走完了,但是到了城里,就走不动了,红绿灯,人行道,各种环线和菜鸟司机,可能两个小时还不够用的。

编程也是如此。最开始你要设计框架,给整个项目打基础,然后开始开发,几周或者几月之后,你完成了整个项目 80% 的工作,各种关键模块开始起作用了。

但是好戏才刚刚开始,当你准备好好打磨这款产品时,就会发现许多奇怪的 bug 冒出来了。比如:“喂,你知道这个程序在读取文件时拔掉 USB 线会崩溃么?”,“看起来是程序不想下载文件名里有感叹号的文件...”

这个时候,如果管理层下令要尽快搞定这剩下的 20% 的话,开发团队就得弃掉汽车,徒步越过最后几个障碍,只求按期到达地点,把车丢那不管了。也许能够按期完工,但是这种办法并不明智。

简单的说是这样的,软件开发同徒步旅游一样,可能你最初是计划在 10 天内走完 500 公里,但真走起来,你会发现路上碰到的问题层出不穷,每天走的里程数都在递减,团队士气也不太稳定,延期很多时候都是无可避免的。

其实何止是软件开发,做任何一款产品的历程大都如此。硬件项目也是做出原型简单,真正量产时会碰到各种问题,需要你耐下性子一个个解决,有时还得不断返工。魔鬼在细节中潜藏,要想达到尽善尽美,就得花额外的精力去雕琢那最后 10% 的部分。

原文地址: http://blog.sina.com.cn/s/blog_ac95fb6c0101csn4.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为何程序员完成最后20%的工作需要的时间跟之前的80%一样多? 的相关文章

  • 现货白银走势背后的秘密

    现货白银的价格走势是全球白银市场指标价格 很多大型机构 基金公司和专业投资者都会参与其中 普通的投资者作为相对弱势的一群 当然想知道这个品种价格走势背后所蕴藏的秘密 日后在交易的过程中才能主动应对 然而跟现货黄金一样的是 现货白银的价格走势
  • 探索产品研发流程及步骤

    引言 一直想做一篇关于产品研发相关的文章 终于有时间来总结这些东西 说到产品研发 那么不得不说一下产品 书上说产品的5个要素 内涵 形式 外延 理念和终端 但是我认为产品就三个关键点 有用 可用 可行 有用 产品能帮助解决用户某个真实存在的
  • 跟小白学Python数据分析——绘制词云图

    本文继续采用PyEcharts v1 x版本进行绘制水球图 注 PyEcharts分为 v0 5 x 和 v1 x 两个大版本 v0 5 x 和 v1 x 间不兼容 v0 5 x是基于Python2 7 3 4 版本开发的 而v1 x是一个
  • nginx1.21.6配置ssl时升级TLSv1.3的步骤过程和解决遇到的问题

    因为安装TLS 1 3协议是要OpenSSL1 1 1以上的 所以先升级OpenSSL1 1 1 先去官网下载这个这个OpenSSL1 1 1版本的tar安装包 添加链接描述 先查询系统的版本是多少 才1 02 然后上传下载好的tar安装包
  • 01黑马数据结构笔记之动态搭建数组(vector)

    01黑马数据结构笔记之动态搭建数组 vector 1 思路 类似STL的容器vector 动态的开辟内存存放数据 内存不够时以两倍增长 提供相应的增 删 查等函数 主要是利用一个结构体来管理数组 记录数组的成员 typedef struct
  • Pandas之DataFrame对象大总结

    一 什么是DataFrame DataFrame是一个表格型的数据结构 它含有一组有序的列 每列可以是不同类型的值 DataFrame既有行索引也有列索引 它可以被看做是由Series组成的字典 共用同一个索引 数据是以二维结构存放的 类似

随机推荐

  • 【ubuntu】Ubuntu中Android SDK下载跟配置

    1 下载SDK SDK下载网址 2 解压下载的压缩包 android sdk tar zxvf android sdk r24 4 1 linux tgz 3 安装32位库 sudo apt get install y libc6 i386
  • Obsidian 0x06:Obsidian 笔记仓库管理

    文章目录 Obsidian 笔记仓库管理 obsidian 文件夹 trash 文件夹 笔记库设置与插件的迁移 Obsidian 笔记仓库管理 可以根据自己的需要创建不同的笔记库 但要注意 不同笔记库之间的双链是无法访问的 你不能从一个笔记
  • FastDFS 介绍及安装部署

    FastDFS 介绍及安装部署 FastDFS 组成 Tracker Server Storage Server FastDFS上传机制 FastDFS使用场景 FastDFS架构 实验环境 部署 FastDFS 安装依赖 安装服务端 配置
  • 摄像头参数 靶面尺寸 像素阵列 像元尺寸 光学结构

    靶面尺寸 Optical Format 图像传感器的尺寸越大 则成像系统的尺寸越大 捕获的光子越多 感光性能越好 信噪比越低 像素阵列 Pixel Array 对景物中明暗细节的分辨能力 像元尺寸 Pixel Size 像元尺寸是指芯片像元
  • 图片下载功能

    GetMapping flag public void getFiles PathVariable String flag HttpServletResponse response OutputStream os 新建一个输出流对象 Str
  • FZ15S五轴加工中心的自动换刀装置设计(论文+CAD图纸+SW三维图+开题报告+任务书+外文翻译)

    摘要 随着我国国民经济迅速发展和国防建设的需要 对高档的数控机床提出了急迫的大量需求 机床是一个国家制造业水平的象征 而代表机床制造业最高境界的是五轴联动数控机床系统 从某种意义上说 反映了一个国家的工业发展水平状况 长期以来 以美国为首的
  • servlet相关知识整理

    servlet相关知识整理 一 sevlet规范 1 servelet规范中 指定 动态资源文件 开发步骤 2 在servelet规范中 指定http服务器调用动态资源文件规则 3 在servelet规范中 指定http服务器管理动态资源文
  • 微信小程序wxml页面中,背景图片直接引用不显示,其他解决方案

    微信小程序wxml页面中 使用background url 引用图片的相对路径 但是不显示应该咋办 var src images index top bg png let src2 wx getFileSystemManager readF
  • crossdomain.xml在weblogic上的部署

    摘要 Flex API的程序访问ArcGIS Server时 经常遇到安全沙箱的问题 crossdomain xml配置文件可以解决这个问题 在tomcat服务器只需要把这个文件放到webapps根目录下 WebLogic的配置要稍微麻烦一
  • pandas 根据某一列的值修改某一列的值

    在做数据分析时 需要根据某一列的值修改另外一列的值 此时就需要使用pd loc 函数 例子 import pandas as pd x2 pd read csv submit csv x2 假如 我要修改id 800000的isDefaul
  • 光条中心提取方法总结(二)

    传统算法见之前的文章 光条中心提取方法总结 一 视觉菜鸟Leonardo的博客 CSDN博客e 二 深度学习方法 利用深度学习来进行光条中心提取是这几年刚兴起的方法 目前可供参考的论文屈指可数 方法从两个途径切入 1 利用深度学习进行光条图
  • 研一Python基础课程第二周课后习题分享(含代码)

    一 问题描述 共计18道 1 问题1 你买了n个苹果 但是很不幸里面混进了一条虫子 如果虫子每x小时吃完一只苹果 然后开始吃下一个 经过y小时后 你还有几个完整的苹果 分别输入n x y三个整型数值 输出结果 2 问题2 分别输入两个时间
  • javascript 实现Base64加密

    想必大家对base64并不陌生吧 在本文将为大家介绍下Js中的base64加密解密过程 感兴趣的朋友不要错过 html view plain copy
  • 关于存储那些事1-----基础篇

    目录 一 SSD 1 简介 1 1 分类 1 1 1 易失性存储器 1 1 2 非易失性存储器 2 SSD接口 2 1 SATA接口 2 2 SATA Express接口 2 3 SAS接口 2 4 U 2接口 2 5 mSATA接口 2
  • 【解决方案】LaTeX插入svg图片

    LaTeX插入svg图片的解决方案 今天在写论文时 想在论文里插入svg图片 遇到了问题 百度了一下方法 发现LaTeX不支持插入svg图片 在捣鼓了一下之后 发现基本的方法不是失效就是比较麻烦 本文简单总结了两个解决方案 发现都不太行 研
  • 系统及服务器巡检流程图,巡检日常工作流程图

    巡检日常工作流程图 由会员分享 可在线阅读 更多相关 巡检日常工作流程图 1页珍藏版 请在人人文库网上搜索 1 质质检检日日常常巡巡检检流流程程图图 查查看看生生产产交交接接半半成成品品或或成成品品 初初步步确确定定生生产产零零件件 准准备
  • Win10下安装mujuco

    1 背景 安装mujuco之前玩的环境都是些简单的 易处理的环境 就是下面这种 第一张图是移动下面的方块保持杆子立起来环境 第二张图是小车爬山环境 第三张图是给杆子施加力使得杆子保持立起来环境 从图也可以看出 是比较简单的环境 而mujuc
  • 批量文本文件内容替换之Linux sed命令

    文章目录 sed命令简介 需求 sed实现批量替换 sed命令简介 Linux sed命令可以使用shell脚本进行文件的批量处理 如批量替换 修改等等 尤其是在需要对大量文本文件进行批量操作时 使用sed命令会起到事半功倍的效果 关于详细
  • 其他-08-idea配置查询字节码

    1 字节码查询 查看一下idea是否安装了 一般都安装了 编译一下 生成target 点击View下面的Show ByteCode即可 其实你看到的字节码是java加工多的 可以看下这个类 原生都是数字 以 helloWql方法字节码解释
  • 为何程序员完成最后20%的工作需要的时间跟之前的80%一样多?

    听过行百里者半九十吧 这句话在程序员的工作中同样适用 到底是为何呢 Matija用一个精巧的比喻揭示了个中道理 其实这就好比在高峰期从郊外开车回市中心 前 80 的路程很顺 高速嘛 可能两小时就走完了 但是到了城里 就走不动了 红绿灯 人行