作者 | Ben Hoskin

译者 | 弯月

出品 | CSDN(ID:CSDNnews)

首先,我并不是说软件开发人员都是输家,我想说的是,大多数软件开发人员都没能赢得软件开发,他们都被软件开发打败了。

开发人员的痛点在于,他们不知道自己面对的是什么游戏,或者说他们不知道应该采用哪种战术。

你必须知道软件开发是何种游戏,才能在游戏中获胜。

在编写代码的过程中,重点不在于代码是否会出错,而是代码何时会出错,以及如何通过最简单的方法修复错误。

赢家与输家

Charles Ellis曾撰写过一篇文章《Loser’s Game》,他指出,职业网球是赢家的比赛,即选手利用自己的技能主动赢得比赛。而业余选手会使用不同的策略避免自己失误,然后等待对手出现失误,从而自己打败自己。

“在专业网球比赛中,80%的得分是赢得的;而在业余网球比赛中,80%的得分是输掉的。换句话说,职业网球是赢家的游戏,即最终结果取决于赢家的活动;而业余网球是输家的游戏,即最终结果取决于输家的活动。这两种游戏的基本特征完全不同,甚至是相反的。”

—— Charles Ellis

游戏虽然相同,但你需要根据对手选择有效的策略:

“专业网球就是我所说的赢家游戏。赢得分数更多的一方选手获胜,也就是说并不是看哪个选手得到的分数更高,而是看哪个选手赢得的分数更高。Ramo发现业余网球则完全不同。业余选手很少打败自己的对手,但是他们会自己打败自己。在这样的比赛中,得分更高的选手获胜,但他得分更高是因为他的对手输掉的分数更多。”

—— Charles Ellis

软件开发游戏

我从事软件开发工作已20载有余,曾与许多软件开发人员一起从事过许多项目。我认为80%的开发人员都是业余玩家,只有20%的是专业玩家。

我为什么这么说?

业余软件开发人员不喜欢:

  • 标准

  • 单元测试

  • 设计模式/ SOLID原则

  • 学习和设置开发运维和产品生命周期管理(他们喜欢使用)

  • 修复构建

  • 代码审查

  • 代码分析/解决方案检查

如果你想毁掉一个开发团队,那就不要执行上述步骤,因为团队中的大多数开发人员都不是专业人员。

“避免犯错的方法是保守行事,想办法让比赛继续下去,给对手充裕的机会出现失误,从而自己打败自己,因为业余选手玩的是输家的游戏,而且他深陷其中却不自知。”

—— Charles Ellis

大多数开发人员都会低估编写代码的难度,同时还会高估自己的能力。他们以为编写代码非常容易,而且编写好的代码第一次运行就可以成功。

业余玩家

如果大多数开发人员都是业余玩家,那么我们就应该将软件开发视作输家的游戏,竭尽全力减少业余玩家容易犯的错误。

业余开发人员的目标是写代码,其他活动都会降低开发的速度。上述提到的其他步骤就是为了创建简单的代码,更快地发现错误,并注意提高质量。产品生命周期管理/开发运维可以快速地完成部署,而且还不容易出错,从而实现快速反馈。

快速编写代码的最佳方法是专注于质量和减少错误,而不是更快地编写代码。

项目和开发团队的规模越大,为bug和错误所付出的代价就越沉重。大型团队的问题可能会导致很多人的进度延误,而实施上述列表中的活动可以让我们集中精力处理阻碍。

我曾经历过一些项目,直到项目后期才发现的一些bug导致用户失去信心,并给上线带来了风险。

本末倒置

我们的目标不是编写有效的代码,而是花时间避免编写质量低劣的代码和bug,否则就会本末倒置。

“对于你我之辈来说,难得的不是一时的聪明,而是坚持不做蠢事。”

—— Charlie Munger

业余开发人员认为,快速编写代码是最有效的创建产品的方法。如果方法庞大,代码复杂,则代码库会越来越复杂,而且每添加一行代码开发工作就会更加困难。这种方法仅适合只有1~2名开发人员的小型项目。

Bug的成本

从代码编写完成开始,发现bug的时间越晚,修复所需的时间就越长。举个例子,如果你发现了生产中的某个bug,那么首先你必须设法复现bug,并搞清楚bug发生的原因,修复bug,并通过每个环境的部署和测试,最后才能进入生产。

如果在单元测试中发现相同的错误,则可以快速修复,同时还不会影响到其他开发人员和测试人员。

我们可以在开发过程中添加一些简单的步骤来找出bug,在软件开发这个游戏中,bug会浪费大量时间,并消磨掉客户的信任。

如果我们知道大多数开发团队的成员都是业余玩家,他们很容易犯错并导致自己甚至团队的失败,那么我们就更加应该重视防止bug,而不是假定每个人都是专业的开发人员,每个人都可以编写出色的代码。

赢得软件开发这场游戏的关键,不在于第一次就能创建正确的代码,而在于避免失败的各种方式。

“专业人士靠主动赢分获胜,而业余人士靠对方丢分获胜。”

—— Charles Ellis

原文链接:https://thehosk.medium.com/software-development-is-a-losers-game-fc68bb30d7eb

声明:本文由CSDN翻译,转载请注明来源。

从清华学霸到资深机器学习专家,大神的书柜里都有哪些编程必读书,4月23日晚上8点,我们邀请到了资深机器学习、机器视觉专家雷明老师,与你一起探索世界读书日程序员最应该读什么,你对机器学习的数学有哪些疑惑?欢迎在留言区写下你最想了解的问题,我们将在CSDN悦读时间直播间请大神为你答疑解惑,参与就有机会获得精美编程书一本哦!
直播间地址:
https://live.csdn.net/room/zxff716/MsCEvcwM

☞腾讯高级研究员博士论文走红,称“计算机终于成了我一生的事业与希望”
☞19 岁华裔天才辍学创业,5 年市值达 73 亿美元
☞大厂竞业协议是“巨坑”?科大讯飞前员工、团队创始人跳槽腾讯被判赔 1200 万
☞库克考虑卸任苹果 CEO,谁会是下一任接班人?
☞纳尼?!波多野结衣要发 NFT 写真集了!

软件开发打败了 80 %的程序员相关推荐

  1. 软件开发打败了80%的程序员

    作者 | Ben Hoskin 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 首先,我并不是说软件开发人员都是输家,我想说的是,大多数软件开发人员都没能赢得软件开发,他们都被软件开发打 ...

  2. 这个有争议的软件开发方法,陪伴一代程序员走过了 18 年

    作者:熊节 / 插画:虎头锤 一.生于滑雪度假村,它的名字叫敏捷 敏捷是一种重视质量.追求快速反馈的软件开发方法. 2001 年 2 月,美国犹他州雪鸟滑雪度假村,"敏捷软件开发联盟&quo ...

  3. python怎么做软件开发有前途吗_Python程序员就业行情以及前景分析

    最近Python大热,就想要分析一下相关的市场需求,看一下Python到底集中在哪些城市,企业对Python工程师的一些需求到底是怎样的,基于此,爬取了国内某招聘平台的相关数据,获取到30000+条相 ...

  4. 总结两年半银行软件开发外包项目历程-JAVA程序员

    记得是2011年3月,但忘记是哪一天咯,和一个要好的同学准备启程去深圳找工作,说实在的,现在想想当时还是蛮有勇气的,自己虽说学习计算机专业的,可大学里面被我混提了,皮毛都没有学到,毕业后竟想要做开发, ...

  5. vc6开发一个抓包软件_惊奇软件[21]:这是一个程序员开发的背单词网站,可好用了!...

    惊奇软件 未经授权禁止转载 正文--------------------------------- 哔哩哔哩小破站的UP主们就是厉害...... 就在前几天,小编我想找一款背单词的软件(某百词用的有点 ...

  6. 80后程序员必须知道的编程语言和它们的创造者

     标题怎么想都没办法写段一点,于是还是这么长吧.程序员的世界里,软件开发领域里有许许多多编程语言.在这里,不断有新的编程语言在诞生,如 Scala.Go.Closure 等,也不断有老的编程语言慢 ...

  7. iPhone开发入门(1)----程序员眼中的iPhone

    自去年 iPhone 面世以来,开创了移动设备内容服务的一种新的模式--程序商店(App Store).它极大地降低了移动设备应用程序开发的成本,即使普通人也能进入这个市场.就像在PC上开发应用程序一 ...

  8. Scrum: 在软件开发中应用80:20规则

    在软件开发中应用80:20规则 我们喜欢简单的经验法则,越简单越好.最有用的经验法则之一是80:20规则: 80%的影响来自20%的原因,80%的影响来自20%的努力. 这意味着 :通过更聪明,更努力 ...

  9. iPhone开发入门(1)—-程序员眼中的iPhone

    http://blog.csdn.net/itudou_2010/article/details/5492272 iPhone开发入门(1)--程序员眼中的iPhone 博主:易飞扬 原文链接 : h ...

最新文章

  1. 信息安全系统设计基础第十周学习总结
  2. ubuntu修改环境变量
  3. information_schema中的所有表和视图
  4. jmeter图片的下载
  5. why is the configuration.js being loaded?
  6. 使用async,await关键字进行API Access Token的获取
  7. html5中表格如何等分,纯css3饼图五等分
  8. CTF-MISC杂项题2
  9. 【数据结构与算法】实验 编写双链表的结点查找和删除算法
  10. C++第五章课后习题13
  11. 【推荐算法】今日头条、抖音推荐算法原理全文详解!
  12. pfSense修改mbuf值
  13. 刀下留人--苹果开发者账号封号前挽救
  14. 完美解决IE11和补丁安装不上方案
  15. RBF神经网络学习及实践
  16. php的ob缓存详解
  17. Word删除指定一页的页码
  18. 但行好事 莫问前程(九月)
  19. NLP 之 jieba (结巴)制作词云
  20. 鼠标测试工具Simple_Mouse_Test

热门文章

  1. 华为开源CTR Benchmark,学术界SOTAs的照妖镜?
  2. 张继平院士:40年北大数学路 | 北大黄金一代是如何培养的
  3. 【IEEE】2020 年AI's 10 To Watch名单新鲜出炉!MIT韩松、方飞、张含望等华人入选!...
  4. 科技互联网公司越来越重视数学了,贾扬清等大牛如是说!
  5. 再发力!Facebook AI何恺明等最新研究MoCo(动量对比学习)第二版,超越Hinton的SimCLR,刷新SOTA准确率...
  6. SAP RETAIL 参考PO创建分配表之二
  7. ERP与GMP结合在药类企业实施及应用
  8. GPT-3:被捧上天的流量巨星,却有重大缺陷,很危险...
  9. SAP MM 盘点流程中上不了台面却很实用的方案建议
  10. 【机器学习基本理论】详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解