30多年程序员生涯经验总结(成功源自于失败中的学习;失败则是因为容忍错误的横行)

英文原文:Lessons From A Lifetime Of Being A Programmer

  在我 30 多年的程序员生涯里,我学到了不少有用的东西。下面是我这些年积累的经验精华。我常常想,如果以前能有人在这些经验上指点一二,我相信我现在会站得更高。

  1. 客户在接触到产品之后,才会真正明白自己的需求。

  这是我在我的第一份工作上面学来的。只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的。给出一个功能性原型设计远远比一张长长的文字表格要好。

  2. 只要有充足的时间,所有安全防御系统都将失败。

  安全防御现如今是全世界都在关注的大课题、大挑战。我们必须时时刻刻积极完善它,因为黑客只要有一次成功,就可以彻底打败你。

  3. 安全防御是否失败取决于及早规划。

  假设有黑客会彻底破坏你的防御系统,那你就得提前做好准备。这样即便真的让他们侵入了系统,也盗取不了任何有价值的东西,因为你已经对服务器做了安全设置,比如对数据库中的内容进行了加密,并且对每台有可能遭受攻击的服务器进行了隔离。

  记住,再强大的防御都会有它的薄弱之处,关键是要有备无患。

  4. 良好的安全防御系统不要在乎它的费用,因为这是战略投资;不及格的安全防御才是被浪费的资源。

  在我的职业生涯中,经常听到有人抱怨说安全防御是多么多么的复杂和昂贵,他们没有意识到的是,如果防御失败,公司将损失的可能不止几十亿美元。为了节约几块钱而导致企业破产,这种做法毋庸置疑是非常愚蠢的。

  5. 将复杂的东西整理成简单的,是很难的,但是要是把复杂的捣鼓成更加复杂的,那就简单了。

  这一条适用于编程、设计和几乎所有的创造领域中。我一直以来都希望自己的代码能越易于理解越好。如果你的代码过于复杂和晦涩,那十之八九它正常工作的可能性很低。我曾非常有幸地见识到有些程序员费劲千辛万苦,反而让代码更加难以捉摸了。

  6. 成功源自于失败中的学习;失败则是因为容忍错误的横行。

  有很多程序员总是在辩解,说什么“程序这么难,犯错误很正常了,软件变得糟糕也在所难免了”。这种理由听得多了,于是,大家也逐渐接受了这些扯淡的借口。但是我们作为程序员真的不应该让这些借口阻碍我们的进步,应该谨记,错误只能犯一次,要吸取教训。话说是程序员都会希望自己下一次就能一次性搞定代码。但是没有人是完美的,不过至少我们是在朝着这个方向前进的路上。

  7. 唯一不变的是变化本身,这是谁都无法改变的法则。

  计划永远赶不上变化,以为明天的世界和今天一样,这种想法本身就是愚不可及的。尤其是在编程世界里,没什么是永恒的。人不能两次踏进同一条河里。

  8. 永远不要停止学习,一旦你停下来,技术的浪头就会狠狠将你拍死在沙滩上。

  作为程序员立于不败之地唯一方法就是,不断学习、不断进步。因为一旦你松懈下来,你的所有优势都将随风而逝。

  9. 整个软件行业建立在“百家争鸣”的思想上。

  在我的职业生涯中,我看到过很多程序员会对各种事情较真:预估完成时间上较真,规模大小上面较真等等。而且有的人还屡错屡战。有些以前被批判为“行不通”的技术,现在却已经牢牢占据了人们生活的一席之地,并且现今正向着另一个高潮冲刺。

  10. 适合你的不一定适合他。

  在软件项目中我们可做的选择很多很多。有的英明,有的糟糕。但是适合你和你当前情况的选择可能一点都不适用于其他人。我们经常能听到别人说自己又在干什么伟大的创举,但是如果他们说什么这是唯一的好方法时,我会对此嗤之以鼻。

  11. 在这个不断变化的世界中,评估是最为重要的技能。

  这一点有些人可能并不知道。但是如果你愿意认识新事物,看得到他人的努力,比较做事方法之后再择优使用,那么不但是你自己,还有你的团队、你的项目、你的公司,都将受益无穷。但是很多人对此都不擅长,而很多负责人甚至在这方面表现得非常糟糕。照着别人说得做,以及看别人做什么自己也做什么,是非常容易的。但是如果要全方位地看问题然后再基于自己的需要选择对应的最优方向,这就很难很难了。在软件行业中做抉择是必须的,但是如果当你在不得不评价分析的时候头脑一片茫然,那最终的结果只能是随机挑一个或者是盲从随大流。

  12. 不管黑猫白猫,能抓到老鼠就是好猫。

  只要你的软件能实现客户指定的功能,他们才不会关心需要解决哪些问题。系统出问题了,异常情况发生了,硬件坏了,程序猿被女朋友甩了,黑客盗号了:用户永远不会对这些发生兴趣。如果发生意外情况,最好能坦诚说出来,但是你最好要能确保这种情况不会持久,因为你总给将最终的产品交给客户。

  13. 客户的意见决定质量。

  无论你设置了多少指标,检查过多少表单,审核了多少代码,写了多少测试:这都不是关键,除非客户自己亲眼目睹软件运作正常。关于代码质量、性能、设计和可用性,客户的意见才是决定质量的唯一要素。

  14. 对某方面的无知可能会让你一败涂地,因为你在这方面毫无经验。

  即使到了今天我依旧在不断惊叹,有的同行竟然仍然没有收集足够的日志、崩溃报告和使用信息来掌控自己的软件。那些对这方面信息不屑一顾的家伙,大多会高估产品的质量。因为如果你不采取措施和记录结果,浑浑噩噩地混日子,终将会导致你对当前情况一无所知,包括你的客户。我一直反复强调,详细而有用的日志记录、程序崩溃跟踪、评论和意见,反正各种只要能让我尽快了解发生了什么问题的途径和方法,都是可行的。不过,我也知道有很多人认为“这种事和程序员有一毛钱的关系吗?”。

  14. 总有更好的办法,但是时间不允许。

  评估中最难把握的节点是什么时候应该停止头脑风暴开始开工。或许我们会错过那个更好的方法,但是如果要耗费很长时间,那就不值得了。但是这是很难界定的,不过有时候今天的一个小小的选择可能会打败明年那个更佳的选项。Who knows?

  下面两点引用自一名销售人员,他是我很早以前的同事。有些东西我并不是完全同意,不过也能给予我们不同的角度看问题。

  15. 客户要找愚蠢的。

  这是我最喜欢的一句话,这个销售人员就职于一家咨询公司。他认为,要找那种不懂技术但是有足够资本挥霍的金主。聪明的人总是会问很多问题;没钱的人无力购买我们的服务。我很庆幸我是一名程序员,哈哈!

  16. 我的工作是欺骗客户,而你的工作则是支持我。

  第二句话来自于同一个销售人员。他总是喜欢不断地承诺一些不可能的任务,然后当我们终于呕心沥血加班加点赶出来了,他就来收获我们成功的果实。挑战的确让人 exciting,但是每次都是这种不可能的任务未免太痛苦。我的建议是,换一个更好的销售人员!【译者注:这不是传说中的 PM 和程序员之间的“和谐”关系么?】

http://news.cnblogs.com/n/504482/

时间: 2024-12-10 22:37:00

30多年程序员生涯经验总结(成功源自于失败中的学习;失败则是因为容忍错误的横行)的相关文章

30多年程序员生涯经验总结

在我30多年的程序员生涯里,我学到了不少有用的东西.下面是我这些年积累的经验精华.我常常想,如果以前能有人在这些经验上指点一二,我相信我现在会站得更高. 1.客户在接触到产品之后,才会真正明白自己的需求. 这是我在我的第一份工作上面学来的.只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的.给出一个功能性原型设计远远比一张长长的文字表格要好. 2.只要有充足的时间,所有安全防御系统都将失败. 安全防御现如今是全世界都在关注的大课题.大挑战.我们必须时时刻刻积极完善它,因为黑客只要有一次成

一位 30 多的程序员生涯经验总结

1.客户在接触到产品之后,才会真正明白自己的需求. 这是我在我的第一份工作上面学来的.只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的.给出一个功能性原型设计远远比一张长长的文字表格要好. 2.只要有充足的时间,所有安全防御系统都将失败. 安全防御现如今是全世界都在关注的大课题.大挑战.我们必须时时刻刻积极完善它,因为黑客只要有一次成功,就可以彻底打败你. 3.安全防御是否失败取决于及早规划. 假设有黑客会彻底破坏你的防御系统,那你就得提前做好准备.这样即便真的让他们侵入了系统,也盗取

【转】10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告

从电驴上看到的一篇文章,写的挺对味的.摘下来,共勉.说的挺对的. 展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们. 01. 自己的户口档案.养老保险.医疗保险.住房公积金一定要保管好.由于程序

30 岁: 程序员心中永远的痛?

软件业有这样一个笑话,"说起编程,博士不如硕士,硕士不如本科生,本科生不如专科生,专科生不如高中生--"."三十而立",然而在中国程序员这个团体中,很多到了30岁,或者还没有到30岁的幵发者对以后的发展便感到了盲目. 笔者由于工作关系,曾经广泛接触我们的程序员.对于他们,笔者发现,"程序员30岁话题"包含的不仅仅是30岁以后做什么?它需要程序员.软件企业 甚至整个软件产业一起来回答:"我们的软件业发展需要怎样的职业化程序员?投身软件业的

程序员生涯之我见 找到自己的兴趣所在

程序|程序员 在海外有很多中国人在从事程序员这个职业.我认识很多这样的朋友,发现许多人并不快乐,只是将这个工作当成养家糊口的工具.还有许多人工作努力而不能入门.我曾经在很长一段时间内也有过困惑,但最后终于走了出来.在这里谈谈自己的看法,希望对大家有一些启发. 俗话说"兴趣是最好的老师".这话很有道理,但运用在事业上往往并不是这么一回事.在学生时代你可以追随兴趣天马行空,为未来作各种各样的设想.坚韧不拔而又有些运气的在后学生时代仍可在预设的道路上跋涉前进,甚至一帆风顺.而绝大多数同仁们则

展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告

走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们. 01. 自己的户口档案.养老保险.医疗保险.住房公积金一定要保管好. 由于程序员行业每年跳槽一次,我不隐瞒大家,我至少换过5个以上的单位,这期间跳来跳去,甚至是城市都换过3个.还好户口没丢掉,其他都已经是乱了,好几个城市

20年资深程序员编程经验分享

原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生物技术.房地产.医疗.保险和公用事业. 从11岁时,我就一直在编程,并且一直都很喜欢技术和编程.这些年来,我积累了一些艰难又容易的经验.作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友. 虽然我想我会持续更新这些经验,可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了.下面就是我至今最难忘的经验

程序员的10大成功面试技巧

我遍览群书,发现关于程序员的面试技巧,好的建议其实并不多. 我们也发现,很多很有才华的程序员在面试的时候总是掉链子,这大概是因为他们把大多数时间都用来搞技术开发,而忽略了学习面试技巧的重要性. 这何尝不是一种悲剧.有效的面试技巧能让你成功得到工作,即使你对那个领域也并不是非常熟悉. 1.给自己写一份非常专业的简历 我的建议是,如果你想增加自己的入选机会,那最好还是花点钱制作一份专业的简历.相较于你将来可能得到的巨大收获,这真的只是一个小小的投资. 2.研究面试官 当我联系程序员来面试的时候,我总

程序员破解iPhone:成功安装Android系统

北京时间4月23日上午消息,据国外媒体昨日报道,一位.Net和Android应用开发者成功将谷歌(Google)Android手机系统安装到苹果iPhone上,并能正常进行网络浏览.收发短信和接打电话等普通操作. 这位名为大卫·王(David Wong)的程序员在一段视频里展示了整个破解过程.他使用一款被称作"OpeniBoot"的程序执行双重引导操作,使iPhone在重启后能加载并运行Android系统.视频里用来演示破解是的第一代iPhone,不过他表示把"OpeniBo