30年程序猿经验总结
文字是从码农网上面看到的。分享给大家。永远不要停止学习,一旦你停下来。技术的浪头就会狠狠将你拍死在沙滩上。每句话都非常有深意值得大家细致去体会。
1.客户在接触到产品之后,才会真正明确自己的需求。
这是我在我的第一份工作上面学来的。
仅仅有当我们给客户展示产品的时候,他们才会意识到哪些是必须的。给出一个功能性原型设计远远比一张长长的文字表格要好。
2.仅仅要有充足的时间,全部安全防御系统都将失败。
安全防御现现在是全世界都在关注的大课题、大挑战。
我们必须时时刻刻积极完好它,由于黑客仅仅要有一次成功,就能够彻底打败你。
3.安全防御是否失败取决于及早规划。
如果有黑客会彻底破坏你的防御系统,那你就得提前做好准备。
这样即便真的让他们侵入了系统,也盗取不了不论什么有价值的东西,由于你已经对server做了安全设置,比方对数据库中的内容进行了加密,而且对每台有可能遭受攻击的server进行了隔离。
记住,再强大的防御都会有它的薄弱之处,关键是要有备无患。
4.良好的安全防御系统不要在乎它的费用。由于这是战略投资;不及格的安全防御才是被浪费的资源。
在我的职业生涯中,常常听到有人抱怨说安全防御是多么多么的复杂和昂贵,他们没有意识到的是,假设防御失败,公司将损失的可能不止几十亿美元。为了节约几块钱而导致企业破产。这样的做法毋庸置疑是很愚蠢的。
5.将复杂的东西整理成简单的,是非常难的。可是要是把复杂的捣鼓成更加复杂的,那就简单了。
这一条适用于编程、设计和差点儿全部的创造领域中。
我一直以来都希望自己的代码能越易于理解越好。
假设你的代码过于复杂和晦涩,那十之八九它正常工作的可能性非常低。
我曾非常有幸地见识到有些程序猿费劲千辛万苦,反而让代码更加难以捉摸了。
6.成功源自于失败中的学习;失败则是由于容忍错误的横行。
有非常多程序猿总是在辩解,说什么“程序这么难,犯错误非常正常了。软件变得糟糕也在所难免了”。这样的理由听得多了,于是,大家也逐渐接受了这些扯淡的借口。可是我们作为程序猿真的不应该让这些借口阻碍我们的进步,应该谨记,错误仅仅能犯一次。要吸取教训。
话说是程序猿都会希望自己下一次就能一次性搞定代码。可是没有人是完美的。只是至少我们是在朝着这个方向前进的路上。
7.唯一不变的是变化本身,这是谁都无法改变的法则。
计划永远赶不上变化,以为明天的世界和今天一样,这样的想法本身就是愚不可及的。尤其是在编程世界里。没什么是永恒的。人不能两次踏进同一条河里。
8.永远不要停止学习,一旦你停下来。技术的浪头就会狠狠将你拍死在沙滩上。
作为程序猿立于不败之地唯一方法就是,不断学习、不断进步。由于一旦你松懈下来,你的全部优势都将随风而逝。
9.整个软件行业建立在“百家争鸣”的思想上。
在我的职业生涯中。我看到过非常多程序猿会对各种事情较真:预估完毕时间上较真。规模大小上面较真等等。
并且有的人还屡错屡战。有些曾经被批判为“行不通”的技术。如今却已经牢牢占领了人们生活的一席之地,并且现今正向着还有一个高潮冲刺。
10.适合你的不一定适合他。
在软件项目中我们可做的选择非常多非常多。有的英明,有的糟糕。可是适合你和你当前情况的选择可能一点都不适用于其它人。
我们常常能听到别人说自己又在干什么伟大的创举。可是假设他们说什么这是唯一的好方法时,我会对此嗤之以鼻。
11.在这个不断变化的世界中。评估是最为重要的技能。
这一点有些人可能并不知道。可是假设你愿意认识新事物,看得到他人的努力。比較做事方法之后再择优使用,那么不可是你自己,还有你的团队、你的项目、你的公司。都将受益无穷。可是非常多人对此都不擅长。而非常多负责人甚至在这方面表现得非常糟糕。照着别人说得做,以及看别人做什么自己也做什么。是非常easy的。可是假设要全方位地看问题然后再基于自己的须要选择相应的最优方向。这就非常难非常难了。
在软件行业中做抉择是必须的,可是假设当你在不得不评价分析的时候头脑一片茫然。那终于的结果仅仅能是随机挑一个或者是盲从随大流。
12.无论黑猫白猫。能抓到老鼠就是好猫。
仅仅要你的软件能实现客户指定的功能,他们才不会关心须要解决哪些问题。系统出问题了。异常情况发生了,硬件坏了,程序员被女朋友甩了。黑客盗号了:用户永远不会对这些发生兴趣。假设发生意外情况。最好能坦诚说出来,可是你最好要能确保这样的情况不会持久,由于你总给将终于的产品交给客户。
13.客户的意见决定质量。
不管你设置了多少指标。检查过多少表单,审核了多少代码。写了多少測试:这都不是关键,除非客户自己亲眼目睹软件运作正常。
关于代码质量、性能、设计和可用性。客户的意见才是决定质量的唯一要素。
14.对某方面的无知可能会让你一败涂地。由于你在这方面毫无经验。
即使到了今天我依然在不断惊叹,有的同行居然仍然没有收集足够的日志、崩溃报告和使用信息来掌控自己的软件。那些对这方面信息不屑一顾的家伙,大多会高估产品的质量。由于假设你不採取措施和记录结果,浑浑噩噩地混日子,终将会导致你对当前情况一无所知,包含你的客户。我一直重复强调。具体而实用的日志记录、程序崩溃跟踪、评论和意见,反正各种仅仅要能让我尽快了解发生了什么问题的途径和方法,都是可行的。
只是,我也知道有非常多人觉得“这样的事和程序猿有一毛钱的关系吗?”。
14.总有更好的办法。可是时间不同意。
评估中最难把握的节点是什么时候应该停止头脑风暴開始开工。也许我们会错过那个更好的方法,可是假设要耗费非常长时间。那就不值得了。可是这是非常难界定的。只是有时候今天的一个小小的选择可能会打败明年那个更佳的选项。
Who knows?
以下两点引用自一名销售人员,他是我非常早曾经的同事。
有些东西我并非全然允许,只是也能给予我们不同的角度看问题。
15.客户要找愚蠢的。
这是我最喜欢的一句话。这个销售人员就职于一家咨询公司。
他觉得,要找那种不懂技术可是有足够资本挥霍的金主。聪明的人总是会问非常多问题。没钱的人无力购买我们的服务。
我非常庆幸我是一名程序猿。哈哈。
16.我的工作是欺骗客户,而你的工作则是支持我。
第二句话来自于同一个销售人员。他总是喜欢不断地承诺一些不可能的任务。然后当我们最终呕心沥血加班加点赶出来了。他就来收获我们成功的果实。
挑战的确让人exciting,可是每次都是这样的不可能的任务未免太痛苦。我的建议是,换一个更好的销售人员。