8月25日

以下文章来源于崖边小生 ,作者道友留步`

程序员与医生

久病未能成医,然而却悟出了程序员与医生的道理。细想来,程序员和医生这个职业竟如此相似。

职业的诞生

上帝创造了人类,而人类又创造了程序。上帝所创造的人类并不是完美无缺的,他在每个人的身上或多或少的留下了一些缺陷。

这些缺陷就是疾病,有些人很不幸,一出生就有了,有些人很幸运,他健康的生活了很久才出现。

然而不管是前者还是后者,其降临到这个世间的时候就注定了要有这些缺陷。人们虽然很不理解为什么要有这些缺陷,但不甘心被这些缺陷所支配。

于是,医生这个职业诞生了,用以最大程度的解决这些缺陷带给人类的影响。

人类创造了程序。同样,程序也不是完美无缺的,它也存在了各种各样的缺陷。这些缺陷就是bug。

所不同的是,bug是程序员创造的,程序也是程序员所创造的。

你永远无法要求一个程序员创造出没有bug的程序,正如你无法要求上帝创造一个完美无缺的人一样。

上帝在创造了一个人之后,可以毫不负责任的当甩手掌柜,把烂摊子交给医生去处理,而程序员则不能,你在创造了一个程序的时候,就要对其进行负责到底。

如果你不愿意,那么必然也会有另一个苦逼的程序员要对其负责。

求医问药的套路

改bug就是治病!

求医问药的人,向医生哭诉着自己的症状,告诉医生自己的患病时间。而测试(客户或产品)也会拿着程序的症状和发生时间来给你提bug。

有趣的是,程序员定位bug与医生诊断疾病的手法也极其相似。

有经验的医生和有经验的程序员都会根据自己的经验来大体判断问题的所在。然后他们一般会采用排除法,通过一些检查来定位问题的具体位置。

医生也许会让你做一些特定动作,去拍一些片子等,而程序员也会重现一下问题,打一些日志……

了解到以上问题,无论是对于病人还是,一些使用程序的人非常重要,如果你想让医生(或程序员)快速的诊断出问题并解决。

于病人而言,在医生就诊的时候你需要提供几点必要的信息。

  1. 症状

  2. 患病时间

  3. 过往病历

同样,对于使用程序的人,你也需要提供几点必要的信息。

  1. 症状

    这一点是最重要的,你需要详细的告诉程序员,程序的那个模块的那个页面或功能遇到了什么问题。

  2. 重现问题的步骤

    你需要尽可能的详细的提供问题是怎样产生的,如使用哪个浏览器,如何操作……应该如何去重现它。

  3. 发生问题的时间

    如果你不能重现问题的步骤,那么你必须提供问题发生的时间,以便于程序员回溯问题。

在苦逼的程序生涯中,我就常常遇到客户、产品或测试提改过来的不知所云的几句话,甚至几个字。

程序员与医生

即使这个世界上有了医生和程序员,然而我们仍然不得不面对一个残酷的现实——世上有治不了的病,也有改不了的bug。

也许上帝在创造人时,无法做到“尽善尽美”与“雨露均沾”。

有的人也许得到的宠爱多一些,缺陷也相对少一些。有的人也许很不幸,上帝在创造它的时候恰好打了个盹儿。于是很不幸,这群人的缺陷就更多一些,有些更是疑难杂症!

面对这个现实,病人们不应去抱怨上帝的不公平,也不应责怪医生的无能。因为这根本没有什么卵用。

而那个被你责怪的倒霉蛋医生可能也在抱怨:“人又不是我创造的,鬼知道上帝为什么会搞出来这么多的疑难杂症”

程序同样也有解决不了的bug,也许是因为设计之初的不合理,也许是客观条件的不允许……总之,当程序产生的时候,bug也就随之产生了。

也许这个bug并不是某个程序员所创造的,但问题却要由他来解决。我们不能抱怨程序员的无能,正如我们不应该抱怨医生的无能一样。

而程序员也不应该一味的埋怨当初的创造者,因为也许你所创造的程序,正有一个苦逼的程序员在熬夜改bug。

而相对于医生而言,程序员或许是幸运的,医生面对的是生命,程序员面对的只是程序。

医生不能创造一个人,因此无法避免疾病的产生,也无法对人体有足够的了解而治愈疾病。

而程序员很可能是程序的创造者,他可以尽可能的在程序起始,进行详细的调研,采用优秀的设计以尽可能的避免问题。又或是因为自己是程序的创造者,而更轻松的定位与解决问题。

无论是医生还是程序员,无论是病人还是客户。当问题产生之后,尽早尽快的解决才是最应该做的事,抱怨永远不是解决问题的办法。

如果问题不能解决,我们不仅不能抱怨,还必须用愉悦心情让自己去接受它。

因为,每时每刻我们都是幸运的,因为任何灾难的前面都有可能再加一个“更”字!沮丧、忧郁、抱怨的情绪,只会让事情变得更糟糕!

第六十八期:程序员与医生相关推荐

  1. 开发者论坛一周精粹(第六十八期) 如何把ecs转到另外一个账号?

    开发者论坛每周选取精华内容总结,精选论坛优质贴,每周更新一期,方便大家阅读! 如何把ecs转到另外一个账号 _小小黑 摘要:我要把我的个人账号的ecs转到公司,请问怎么可以吗? 解答>>h ...

  2. 十六年开发经验的三十八岁程序员创业十年故事(一)

    俺是一名北漂程序员,今年38岁,从第二次创业到今天已经走过整整十年:闲暇之余,把个人的创业经历整理出来与朋友们分享.见仁见智各有不同. 虽说俺是靠写代码生活,但是,骨子里还是更喜欢讲故事,讲讲自己在创 ...

  3. 第一百二十五期:程序员的自我救赎,使用Python开发性格分析工具

    如此不均衡的贫富差距,各行业的领导者如何能管理好公司,让员工们既努力产出,又能安于现状呢?每个领导者必学的一门课程就是职场心理学.只有你充分了解员工心理与对应的行为表现,才能从容的掌控各类型的人员,从 ...

  4. 第二十九期:程序员们该如何破局!

    我是实打实的程序员一枚,身为一个过来人,我觉得有必要说几点针对程序员们的破局思维,希望能解决不少人的迷茫与困惑. 作者:stormzhang 新读者可能不知道,老读者都晓得,虽说现在转身做了自媒体,但 ...

  5. 十六年开发经验的三十八岁程序员创业十年故事(二)

    经过一年的兼职,2005年迎来毕业,或许是头一年遇上的几个老板业务能力比较强.人脉比较广的原因,也不愿意继续上班,就想自己干.当时的一个老板,他是人大金融专业硕士毕业的,经过尽二十年的奋斗,他的一些同 ...

  6. 第六十八期:做中台找死,不做中台等死?

    今年参加了云栖大会,作为中台的践行者,我也更关注中台架构实施的行业状况,学习了其他公司中台的思想和经验. 作者:谭明智 今年参加了云栖大会,作为中台的践行者,我也更关注中台架构实施的行业状况,学习了其 ...

  7. 雷军 | 我十年的程序员生涯

    文章来源与编辑 深度智能眼 文仅交流侵删 雷军回忆: 最近,和UCWEB同事讨论,怎么才能把我们的UCWEB做到极致.我说,"手机上的平台非常多,如果想做好,需要足够多.足够优秀的程序员.优 ...

  8. 一个十几年程序员给所有新老程序员的忠告

    吉日噶拉(在外企.上市公司工作过,自己也创业失败过,遇到过很多失败挫折,甚至露宿街头,但是最后还是挺过来了),是一个十几年的程序员了,里面介绍了他的相关经历,以及他的一下经验,无论是对刚入门的程序员, ...

  9. COS访谈第十八期:陈天奇

    COS访谈第十八期:陈天奇 [COS编辑部按] 受访者:陈天奇      采访者:何通   编辑:王小宁 简介:陈天奇,华盛顿大学计算机系博士生,研究方向为大规模机器学习.他曾获得KDD CUP 20 ...

最新文章

  1. 插入排序Insertion sort 2
  2. Apollo进阶课程 ① | 带你纵览无人车
  3. LeetCode 1577. 数的平方等于两数乘积的方法数(双指针)
  4. Vue学习--前后端交互
  5. 第二弹!谷歌大脑2017总结下篇:Jeff Dean梳理6大领域研究
  6. 搭建测试环境、面向对象
  7. java自动填写网页表格,excel表格调用网页数据库-如何用Excel自动填写网页数据
  8. java qlv转mp4 代码_怎么将qlv格式转换成mp4?教你快速转换视频格式的技巧
  9. 什么是网络爬虫?爬虫有什么好处?
  10. 简单解析一下,实施MES管理系统后有哪些效益
  11. 基于python/scipy学习概率统计(3):正态分布
  12. Android向服务器发送图片(一)
  13. python自动化测试面试题None is ==详解
  14. 关于对技术群中群友积极参与问答的一点看法
  15. c语言割线法求方程跟,分别用牛顿法和割线法求解方程 x^3-6x^2+9x-2=0在区间[3,4]上的近似根.要求满足精度|x*-xk|...
  16. C++:实现量化Integration积分测试实例
  17. 影响你一生的10句话
  18. Linux中使用iOStream头文件,在Linux中使用gcc链接iostream.h
  19. nltk.download(‘punkt‘)报错
  20. 智云通CRM:报完价后客户没音讯了,该怎么办?

热门文章

  1. 【ATT】Reverse Nodes in k-Group
  2. android平台gallery2应用分析,Android5.1图库Gallery2代码分析数据加载流程
  3. linux 驱动没有设备id,linux不同总线的设备和驱动的匹配过程分析
  4. java jespa_Jespa实际运用的一点心得
  5. 常见窗函数的C语言实现及其形状,适用于单片机、DSP作FFT运算
  6. [poco] 访问数据库
  7. OpenWrt 之 MT7628 移植第三方SPI驱动
  8. React开发(275):dva debugger对应的值
  9. [react] 在React中组件的state和setState有什么区别?
  10. 前端学习(2986):一文理解数据劫持4