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

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

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

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

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

我从个人第一份工做中学到的。直到你能够给顾客展现你的产品,不然,他们是不会意识到本身的实际需求的。功能原型老是赛过冗长的话语介绍。安全

译者注:虽然我不知道我想要什么,可是你作出来,我就知道我不想要什么了。服务器

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

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

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

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

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

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

  • 很难使看起来简单的事物变得复杂,使看起来复杂的事物变得更复杂倒是垂手可得的。

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

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

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

  • 惟一不会变化的便是变化自己,并且你不管如何都改变不了。

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

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

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

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

在个人职业生涯中,全部的人都坚持预估一件事情须要耗费多长时间,不管事件大小,然而每一个人都老是错误的。 好久之前,错误预言将来的先知被石头打死;现在他们只是进入下一个 sprint

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

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

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

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

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

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

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

不管你拥有多少指标,检查了多少清单,经历了多少代码审查,编写了多少测试; 除非客户看到你的软件作了它应该作的全部事情而且从不作任何不该该作的事情,不然这一切都不重要。 客户对代码质量、性能、设计和可用性的见解最终是决定质量的惟一因素。

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

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

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

评估作什么最困难的平衡点是什么时候中止寻找。 可能你会错过更好的方法,可是若是花费的时间太长,可能没有其余理由要作全部事情。 这很难作到正确,但有时今天作出较小的选择会赛过明年作出更好的选择。

最后两个是好久之前和我一块儿工做的销售人员的话。 我不彻底赞成,这些属于教训。

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

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

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

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

相关文章
相关标签/搜索