大数据频道 频道

程序员遇代码失误:不要急着给失败下定义!

  【IT168 评论】大多数技术人员的一生都是与bug互相搏斗的过程,甚至经历过因为代码问题而造成的经济或数据损失。近日,外媒JAXenter就该问题采访了IBM Developer Advocate Fernando Cejas,聊了一些程序员与bug相爱相杀的故事。

程序员遇代码失误:不要急着给失败下定义!

  JAXenter:所有(或大多数)软件开发者都免不了编码事故,你遇到过哪些编码故事呢?

  Fernando Cejas:我这有一个很好的例子,我在这个行业工作了20多年,可以说是一名资深的专业人士。大约在10年前,我在为银行写代码时,在代码中添加了一条这样的评论:“请在修改此功能前先给我打电话”。

  因为当时的情况比较复杂,而且还是对稳定性要求较高的银行企业,我们都需要特别小心,尽量提供易于理解的代码,作为一名软件工程师,我需要花费更多时间去阅读和理解代码,而不是编写代码。

  JAXenter:你是如何解决这些问题的? 从中学到了什么?

  Fernando Cejas:作为专业人士,我们需要做的第一件事就是认清我们做错了什么。在一些特殊情况下,没有人运维系统的某一部分,结果就导致发生重大事件时,我们无法立即解决。解决这类问题理论上很容易,比如及时的信息反馈,尽量不要孤立自己,尝试着与他人沟通,并且始终牢记代码是人与人之间沟通的桥梁。然而实际上却很少有人这样做,这就是为什么试图让专业的人员去做专业的事情。

  JAXenter:如果某位程序员曾经发生过重大编码事故,是否就此直接对其给予负面断定呢?在软件行业内,如何讨论这类问题会容易被接受呢?

  Fernando Cejas:我说过,一个从未犯过错误的人是从未尝试过任何新东西的人。(顺便说一下,可能不存在这种人)

  从错误中学习是改进的关键。当然,为了避免灾难,我们也要尽可能的减少错误,但是错误还是避免不了要发生,因为我们是人,多多少少都会犯错误。我们应该以积极的态度看待失败,将失败看成一个不应该再发生的教训。

  在之前的工作中,我曾让公司损失了几千欧元。但是整个过程,我们的团队对我没有一点责备,我们作为一个团队,一个整体,我们第一时间想的是解决问题,并且重要的是我们得到了前所未有的经验。

  JAXenter:事后回顾到底有多重要?会对未来的编程工作有影响吗? Fernando Cejas:在任何一个软件的开发周期中,事后回顾都是非常重要的一部分,因为通过简单的错误,你可以总结经验,讨论失败的原因,以便在未来类似的情况下得到改进。

  JAXenter:软件开发工程师应该如何处理软件交付中的未知问题?

  Fernando Cejas:乐观的情况也是存在的,但我们不能认为一切都会平稳运行。试用新技术,改进代码和交付流程等做法都存在风险,并且这个风险是未知的。

  作为工程师,我们必须始终遵循软件工程中的非常好的实践和原则。如果正在进行面向对象编程或函数式编程,则需遵循SOLID原则,检测反模式等。在编写和交付高质量应用程序时,软件开发过程中还有一些其他事情可以提供帮助:持续集成(尽可能自动化),配对编程,TDD(测试驱动器开发)。编写测试并重构代码是最重要的两部分。 持续改进(检查the Boy Scout Rule)对于保持代码库清洁非常重要。

  JAXenter:软件开发人员如何学习编写或开发更好的软件?

  Fernando Cejas:这在前面的问题中得到了很好的回答,但我要补充一点:无论经验如何,都要懂得分享。 作为专业人士,当我们处理相同的问题时 ,拥有不同的见解,这能够使我们更加灵活,使我们有更多方法去解决燃眉之急。

0
相关文章