第六十八期:程序员与医生

8月25日

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

程序员与医生

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

职业的诞生

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

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

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

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

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

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

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

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

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

求医问药的套路

改bug就是治病!

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

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

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

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

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

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

  1. 症状

  2. 患病时间

  3. 过往病历

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

  1. 症状

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

  2. 重现问题的步骤

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

  3. 发生问题的时间

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

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

 

程序员与医生

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构与算法】计数、基数、桶 O(n) 不基于比较

冒泡、插入、选择 O(n^2) 基于比较 快排、归并 O(nlogn) 基于比较 计数、基数、桶 O(n) 不基于比较 桶排序–>分区间桶快速排序(归并排序(稳定性))–>取出结果 计数排序(特殊的桶排序)–>分单个桶…

java核心-多线程-Java多线程编程涉及到包、类

Java有关多线程编程设计的类主要涉及两个包java.lang和java.util.concurrent两个包 java.lang包&#xff0c;主要是线程基础类 <1>Thread<2>Runnable<3>ThreadLocal java.util包&#xff0c;主要是线程基础类和并发工具类 <1>基础线程类Callable、Futu…

第六十九期:【学习分享】温水里的程序员,技术将成为温水

张泰峰 7月7日 七月&#xff0c;炎炎的夏日&#xff0c;疯狂的暴雨不分昼夜&#xff0c;侵袭着这座城。早上七点&#xff0c;我骑着摩拜单车出发去往地铁站&#xff0c;誓死如归一般的&#xff0c;挤进地铁。像往常一样&#xff0c;骑车、挤地铁、打卡上班。 相信大家都跟我一…

第七章 假设检验

假设检验的目的是通过收集到的数据&#xff0c;来验证某个想要得到的结论。 假设检验的思想是&#xff1a;小概率反证法思想。 显著性检验是本章的主要内容。下面从实际例子来通俗的理解一下显著性检验。 显著性检验中有几个概念不太好理解。 嫌犯X是否有罪 有这样一个事件…

第七十期:IT技术人员的自我修养

8月4日 以下文章来源于空山新雨的技术空间 &#xff0c;作者空山新雨的技术空间 前言 在IT领域摸爬滚打多年&#xff0c;从一个普通程序员到技术主管&#xff0c;到技术经理&#xff0c;再到技术总监&#xff0c;踩过不少坑、加过不少班&#xff0c;也背过不少锅。 在提升自…

NOI2004郁闷的出纳员

传送门 题目看起来玄乎,但其实只需要一点点小 trick 就可以了. 我们可以用一个全局的 delta 来维护工资的调整记录 对于每一个新加入的员工,先判断是否低于最低工资下限,如果是,直接踢出,不做任何操作,否则,将其插入 Treap 中,不过这时为了不对以后的查询产生影响,我们要插入的…

【数据结构与算法】排序优化

冒泡、插入、选择 O(n^2) 基于比较 快排、归并 O(nlogn) 基于比较 计数、基数、桶 O(n) 不基于比较 总结&#xff1a;如何实现一个通用的高性能的排序函数&#xff1f; 一、如何选择合适的排序算法&#xff1f; 1.排序算法一览表 时间复杂度是稳定排序&#xff1f;是原地排…

第七章 假设检验(2)

接上文。 正态总体均值、方差的假设检验 单个正态总体均值的假设检验、方差的假设检验&#xff1b;成对数据均值的假设检验、两个正态总体方差比的检验。根据检验统计量的分布分别称为:z检验、t检验、卡方检验、F检验。 分布原假设H0检验统计量备择假设H1拒绝域单正态(σ2已知…

第二十二期:动画讲解TCP,再不懂请来打我

TCP 三次握手过程对于面试是必考的一个&#xff0c;所以不但要掌握 TCP 整个握手的过程&#xff0c;其中有些小细节也更受到面试官的青睐。 前言 TCP 三次握手过程对于面试是必考的一个&#xff0c;所以不但要掌握 TCP 整个握手的过程&#xff0c;其中有些小细节也更受到面试官…

【数据结构与算法】二分查找

一、什么是二分查找&#xff1f; 二分查找针对的是一个有序的数据集合&#xff0c;每次通过跟区间中间的元素对比&#xff0c;将待查找的区间缩小为之前的一半&#xff0c;直到找到要查找的元素&#xff0c;或者区间缩小为0。 二、时间复杂度分析&#xff1f; 1.时间复杂度 …

第七章 假设检验(3)

关于样本量n的取值 如果希望在控制第I类错误的情况下&#xff0c;同时限制第II类错误的&#xff0c;这个时候就需要考虑样本量。样本量越大&#xff0c;错误概率越低。使用OC曲线。 分布拟合检验 如果不知道总体服从什么类型的分布&#xff0c;就需要根据样本来检验分布的假设…

git 多用户多仓库配置

ssh全称是Secure Shell&#xff0c;即安全Shell&#xff0c;是一种可以进行安全远程登录的协议&#xff0c;在Linux中以OpenSSH为代表&#xff0c;Windows中则有Putty作为实现。ssh的会话建立阶段类似TCP协议的三次握手&#xff0c;里面涉及到利用非对称加密(RSA/DSA)和密码协商…

第二十三期:你用的Windows操作系统是不是盗版?微软知道吗

长期以来&#xff0c;一些小白对于微软操作系统的“正版”“盗版”“原版”的含义不太明确&#xff0c;从根本上说Windows原始版权属于微软&#xff0c;我们没有那个技术去开发盗版操作系统&#xff0c;很多人用的可能是二次修改的版本&#xff0c;而操作系统的激活方式&#x…

[Leetcode][第109题][JAVA][有序链表转换二叉搜索树][分治][快慢指针][中序遍历]

【问题描述】[中等] 【解答思路】 1. 分治 快慢指针 复杂度 class Solution {public TreeNode sortedListToBST(ListNode head) {return buildTree(head, null);}public TreeNode buildTree(ListNode left, ListNode right) {if (left right) {return null;}ListNode mid …

第四十六期:关于云存储的五大优势

5G时代&#xff0c;越来越多的企业开始选择在云上存储数据&#xff0c;对于IT部门来说&#xff0c;了解云存储的优势是很有必要的。今天给大家介绍云存储的五大优势&#xff0c;以及它们如何帮助用户解决一些常见IT问题。 1、可扩展性 传统存储系统以及横向扩展增加的节点&…

leetcode之回溯backtracing专题5

参考链接 http://blog.csdn.net/zhongkeli/article/details/6966805 https://leetcode.com/problems/permutation-sequence/#/description

第四十七期:毕业3年Java程序员,年薪20W,他是如何达到的?

Java架构师&#xff0c;首先要是一个高级java攻城狮&#xff0c;熟练使用各种框架&#xff0c;并知道它们实现的原理。jvm虚拟机原理、调优&#xff0c;懂得jvm能让你写出性能更好的代码;池技术&#xff0c;什么对象池&#xff0c;连接池&#xff0c;线程池…… Java架构师&…

【数据结构与算法】散列表

一、散列表的由来&#xff1f; 1.散列表来源于数组&#xff0c;它借助散列函数对数组这种数据结构进行扩展&#xff0c;利用的是数组支持按照下标随机访问元素的特性。 2.需要存储在散列表中的数据我们称为键&#xff0c;将键转化为数组下标的方法称为散列函数&#xff0c;散列…

第八章方差分析以及线性回归(1)

方差分析 方差分析是由英国统计学家Fisher在20世纪20年代提出的。  方差分析的目的是推断两个或者两个以上的总体均值是否有差异的显著性检验。 单因素方差分析 例子 保险公司为了了解某一险种在4个不同地区索赔额情况是否存在差异。收集了四个地区一年的索赔额记录。这四个…

react树状组件

最近在react项目中需要一个树状组件&#xff0c;但是又不想因为这个去引入一套UI组件&#xff0c;故自己封装了一个基于react的树状组件&#xff0c; 个人认为比较难得部分在于数据的处理&#xff0c;话不多说直接上代码&#xff1a; 下面是tree.js import React, {Component} …