《代码整洁之道:程序员的职业素养》一一1.2 担当责任

简介:

本节书摘来自异步社区出版社《代码整洁之道:程序员的职业素养》一书中的第1章,第1.2节,作者:【美】Robert C. Martin(罗伯特 C. 马丁),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 担当责任

想必你读过前面的引言了,对吧?如果没有,赶紧翻回去读一遍,因为本书将要讲的内容,都在它塑造的情境里展开。

我曾因不负责任尝尽了苦头,所以明白尽职尽责的重要意义。

那是1979年,当时我是一家叫Teradyne的公司的“负责工程师”,所负责的软件控制着一个测量电话线路质量的小型机系统和微机系统,该系统的中央小型机通过带宽为300波特的拨号电话线与几十台控制测量硬件的外围微机连接在一起,程序是用汇编语言编写的。

我们的客户是各大电话公司的客服经理,他们每个人都负责10万条甚至更多的电话线路。我的系统负责帮助这些服务区经理抢在客户之前发现各种线路故障并及时修复。这可以减少客户投诉率,以免对此做监测的公共设施委员会相应下调电话公司收取的服务费。总之,这些系统极其重要。

每天晚上,这些系统都会运行“夜间例行程序”,即中央小型机会通知外围微机对所控制的电话线路进行检测;每天早上,中央计算机就能获取故障线路清单及其故障特征。根据这些报告,各服务区经理会安排人员修复故障,这样就不会有客户投诉了。

一次,我对几十个客户推出了一版新发布。“推出”这词可真是形象啊。我把软件写在磁带上,就把这些带子“推出”给客户了。客户载入这些磁带,然后重启系统。

这一新发布修复了几个小故障,还增加了客户要求的一项新功能。之前我们曾承诺会在截止日期之前提供那项新功能。我连夜赶工,总算在约定日期前交付了磁带。

两天后,我接到现场服务经理Tom的电话,他告诉我已经有好几个客户投诉“夜间例行程序”没能执行完成,他们没收到任何报告。我不由心头一沉:为了按时交付软件,我没测试例行程序。我测试了系统的其他大部分功能,但测试例行程序要费好几个小时,而当时我又必须交付软件。因为故障修复部分都不涉及例行程序部分的编码,所以我也没担心会有什么不妥。

收不到夜间报告,问题可就大了。修理工们会一时无事可忙但随后又要超负荷工作,而且,有些电话客户也可能会在这期间发现故障并投诉。要是弄丢一晚的数据,某一服务区经理肯定会打电话臭骂Tom。

我启动实验室系统,加载新软件,然后开始对“夜间例行程序”进行测试。几小时后,运行中断。例行程序运行失败!如果我在匆忙交付软件前对此进行测试,就不会发生服务区丢失数据的事了,服务区经理们这时也不会炮轰Tom了。

我打电话给Tom,说我能重现问题了。Tom告诉我其他大部分客户也已经打电话抱怨了,并问我什么时候能解决问题。我说我也没把握,但正在努力。同时我告诉他应该建议客户倒回去使用旧版软件。Tom发火了,说那对客户来说无疑是个双重打击,因为客户不仅为此丢失了一整个晚上的数据,而且还无法使用事先承诺的新功能。

故障排查非常困难,每次测试就要好几个小时。第一次修复失败了。第二次也没能成功。我试了好几次,等我发现问题所在时,好几天已过去了。这期间,Tom每隔几小时就打电话问我问题什么时候能解决,他还把那些服务区经理喋喋不休的抱怨如数传达给我,并一再告诉我让那些客户重新起用旧软件令他多么尴尬。

最后,我终于找出了缺陷所在,重新交付修复了问题的新程序,一切恢复正常。Tom也平静下来,不再提这段插曲,毕竟,他不是我的上司。事后,我的老板过来对我说:“你最好别再犯同样的错误。”我只能默默地点点头。

经过反省,我意识到没有对例行程序进行测试就交付软件是不负责任的。为了如期交付产品,我忽略了测试环节,整个过程中只考虑要如何保全自己的颜面,却没顾及客户和雇主的声誉。我本该早点儿担起责任,告诉Tom测试还未完成、自己不能按时交付产品。那么做绝非易事,Tom一定会不高兴,但客户不会丢失数据,客服经理也不会打电话来轰炸。

相关文章
|
程序员 项目管理
程序员如何做好个人职业规划彻底摆脱焦虑?
程序员如何做好个人职业规划彻底摆脱焦虑?
174 0
|
7月前
|
存储 算法 大数据
程序员的职业素养:技术追求与人文关怀的结合
程序员的职业素养:技术追求与人文关怀的结合
131 2
程序员的职业素养:技术追求与人文关怀的结合
|
程序员 容器
程序员基本素养和特质
程序员基本素养和特质
|
敏捷开发 架构师 测试技术
软技能2:软件开发者职业生涯指南-读书笔记
整书有很多内容,从成为一名软件开发者一直到完整的职业生涯,这里只是记录自己阅读过程中感受最深或者最受用的部分。
|
程序员 数据库
“科班出身”的程序员和“培训出身”的程序员的大型辩论(甩锅)现场
前几天阿粉说阿粉最近换了公司,而且入职之后干掉了公司里面的测试数据库的事情,而接下来的事就比较有意思了,来自“科班出身”的哥们和来自“培训出身”的我的大型辩论(SIBI)现场,也不能说是通俗的甩锅,但是确实有那么点意味。
“科班出身”的程序员和“培训出身”的程序员的大型辩论(甩锅)现场
|
人工智能 安全 Java
【最重要的代码规范】做人做事必须坚守这些原则!
最近某应用上新闻了,时不时也有应用翻车,我们不多猜测,让子弹继续飞一会。
185 0
【最重要的代码规范】做人做事必须坚守这些原则!
|
Java 程序员 测试技术
《代码整洁之道》&《程序员的职业素养》
《代码整洁之道》&《程序员的职业素养》
605 0
|
敏捷开发 程序员 API
最怕程序员学会了隐身术!创业者最应该看的软件开发风险管理
  看到这个标题,我想应该不少人都有苦涩的回忆,我这几年的创业经验中,也碰过几次程序员人间蒸发导致技术开发难以接手的案例,也听说过类似的烂摊子也的确不少,我都有遇过,通常创业者本身不懂技术或是对技术一知半解的状况,就更容易被程序员唬得一愣一愣的。别以为这种事只有遇到外包才会发生,我也看过技术合伙人学会隐身术后就人间蒸发的惨痛案例。   因此,经过去年一年在程序员客栈工作,我都建议每个非技术背景的朋友,可以至少知道一些基础,这样当程序员发生问题的时候,就不致于发生不知道代码、资料库不知在何处的窘境。为了把风险降到最低,以下来谈谈创业者在与程序员合作时需要注意的几个重点。
833 0
团队建设三境界
一、乌合之众,强权政治(新手)   很多新手都会经历这样的过程,新组建的团队冲突不断,大家对当各种制度措施,报以反感。为保证执行力和项目成功,项目经理会选择强权压制,尤其是技术比较好的项目经理。
984 0
|
架构师 Java 程序员
不是所有的程序员都适合转管理,但是领导力可以有套路练就
最近很多小伙伴对技术栈管理的话题比较感兴趣,我们就继续这个话题,本次分享来自一位贴吧的程序员老司机,他亲自尽力过从技术转向管理岗位,我们听听他的分享: 为什么大家想转型做管理? 其实,做程序员挺好的,学会一种新技术或者解决一个技术难题,很容易就能获得成就感。
1110 0

热门文章

最新文章