阅读 814

渣翻:作为终生程序员的一些教训

这是我参与更文挑战的第5天,活动详情查看:更文挑战

原文地址:thecodist.com/article/les…

做了30多年的程序员,我学到了一些东西。这有一些好的建议,我打赌我还可以提出更多。

  • 客户只有看见才能知道他们想要什么

我从我的第一份工作中学到的。直到你可以给顾客展示你的产品,否则,他们是不会意识到自己的实际需求的。功能原型总是胜过冗长的话语介绍。

译者注:虽然我不知道我想要什么,但是你做出来,我就知道我不想要什么了。

  • 只要有足够的时间,所有的安全性都会失败。

当今世界,安全性对于正确性有着极大的挑战。你必须时刻保持完美,然而黑客只需成功一次便可击溃你。

  • 考虑到您的安全性终将失败,后果则取决于你是否提前计划了这种情况。

如果你设攻击者最终会破坏防御,那么就需要计划要发生的情况。如果他们进入系统,单由于你正确地使用了一些安全手段,导致他们无法使用所窃取的东西,例如数据库内通难以辨认,或将服务器彼此隔离,则使这一安全事故上全国新闻的可能性降低。深层防御总会击败一些浅层的攻击。

  • 良好的安全性不是一项支出,而是一项战略资产;差的安全性是资产的昂贵代价。

在我的整个职业生涯中,都会听到人们抱怨正确维护系统安全性是多么复杂或昂贵,但是一旦失败,您可能会损失数十亿美元。 为了节省几美元却输掉你的公司是真的愚蠢。

  • 很难使看起来简单的事物变得复杂,使看起来复杂的事物变得更复杂却是轻而易举的。

在编程,设计和几乎任何创造行为中都是如此。我一直试图编写对我(或其他人)来说尽可能简单的代码。如果你尝试是代码过于复杂或者太聪明,则其正常工作的可能性就很小。当然,我也看到过一些永久代码,程序员为此付出了巨大努力使其变得难以理解。

  • 成功来源于从错误中学习;失败则是认为错误是正常且可以容忍的。

我听到许多人声称,由于编程工作难以持续进行,因此犯错是正常现象,糟糕的软件也是不可避免的。人们还学会了忍受争议,因为他们已经听过很多次了。但是,作为程序员,你不应该接受这一点,并且尝试只犯一次错误。最终你只将它们全部做了一次,现在你也可能只制作没有争议的软件,这是一种期望。没有人是完美的,单至少您需要走在那条路上。

  • 唯一不会变化的即是变化本身,而且你无论如何都改变不了。

为明天的世界做计划,且认为它会像今天一样是非常愚蠢的。尤其是在编程世界中,没有什么是永恒的。勒德派的态度,认为你可以阻止变化,但这一观点是行不通的。

  • 永远不要停止学习,技术的压路机就在你身后,随时等着你停下来。

我最喜欢的比喻是你屁股后面的大滚轮试图压倒你。 这是作为一名程序员维持长久职业生涯的唯一方法,你必须继续前进。 一旦你休息并觉得你知道了一切,你就会在路上被压扁。

  • 整个软件行业都建立在疯狂的猜测之上。

在我的职业生涯中,所有的人都坚持预估一件事情需要耗费多长时间,无论事件大小,然而每个人都总是错误的。 很久以前,错误预言未来的先知被石头打死;如今他们只是进入下一个 sprint

  • 对你有用,但不一定对我或者树后的其他程序员有用。

你在任何软件项目中都可以做出无数技术选择。 它们中的一些更优,一些接受程度高,还有一些最糟糕的。 但是适用于你,你的情况以及你的一系列选择,可能根本不适用于其他人。 听到别人在做什么总是好的,但我一直不喜欢人们坚持认为他们所做的选择是做好某事的唯一方法。

  • 在不断变化的世界中,最重要的事情是评估。

这并非对每个人来说都是显而易见的,但是能够看到新事物,或看到其他人在做什么,或比较多种做事方式,然后为你、你的团队、你的项目甚至你的公司做出最佳选择的能力是非常有价值。 我见过的大多数人都不太擅长这个。 大多数领导人在这方面真的很糟糕。 做别人告诉你应该做的事情,或者你在博客中读到的东西,或者只是做其他人正在做的事情,这很容易。 从各个方面考虑并且结合你的需,然后做出当时似乎最好的选择,这就困难得多。 当然,你必须做出一些决定,人们常常因为不得不评估这往往会导致随机选择或跟随羊群而陷入瘫痪。

  • **给猫剥皮的方法不止一种; 但从猫的角度来看,这无关紧要。 **

客户不在乎你的问题是什么,他们只希望你的软件完成他们需要完成的工作。 如果你的系统出现故障,发生异常,硬件损坏,程序员很糟糕,黑客在进行黑客攻击:用户实际上对它没有任何兴趣。 当事情变得不稳定时诚实是很好的,因为有时的确会发生,但最好在客户看到你的作品之前,确保缺陷不会长期存在。

  • **质量最好由客户衡量。 **

无论你拥有多少指标,检查了多少清单,经历了多少代码审查,编写了多少测试; 除非客户看到你的软件做了它应该做的所有事情并且从不做任何不应该做的事情,否则这一切都不重要。 客户对代码质量、性能、设计和可用性的看法最终是决定质量的唯一因素。

  • **你不知道的东西会害死你,因为你没有打印任何日志。 **

即使在今天,人们仍然没有收集足够的日志、崩溃报告和使用信息来了解他们的软件正在做什么,这让我一直感到惊讶。 不收集此类信息的人总是高估质量。 如果你不测量和记录,你就不会知道。 客户当然会知道。 我一直坚持详细而有用的日志记录、跟踪崩溃、阅读注释和注释以及其他任何我可以在问题发生时立即了解的信息。 然而我知道有人认为这些事情与成为一名程序员无关。

  • 任何事情都会有更好的方法,但是时间在流逝。

评估做什么最困难的平衡点是何时停止寻找。 可能你会错过更好的方法,但是如果花费的时间太长,可能没有其他理由要做所有事情。 这很难做到正确,但有时今天做出较小的选择会胜过明年做出更好的选择。

最后两个是很久以前和我一起工作的销售人员的话。 我不完全同意,这些属于教训。

  • **总是寻找有钱的愚蠢客户。 **

我在咨询公司认识的一位销售人员最喜欢的一句话。 在他看来,找到不懂技术但有很多钱可以烧的人是母脉。 聪明人问太多问题; 穷人付不起你的钱。 我很高兴我是一名程序员!

  • **我的工作是对客户撒谎,你的工作是让我看起来不错。 **

来自同一销售人员的第二个最喜欢的名言。 他喜欢承诺不可能的事情,然后在我们真正做到的时候收获回报。 做有挑战性的事情很酷,但每次都做不可能的事情太痛苦了。 我的建议是找到一个更好的销售员!

文章分类
阅读
文章标签