在我30多年的程序员生涯里,我学到了不少有用的东西。下面是我这些年积累的经验精华。我常常想,如果以前能有人在这些经验上指点一二,我相信我现在会站得更高。
1.客户在接触到产品之后,才会真正明白自己的需求。
这是我在我的第一份工作上面学来的。只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的。给出一个功能性原型设计远远比一张长长的文字表格要好。
2.只要有充足的时间,所有安全防御系统都将失败。
安全防御现如今是全世界都在关注的大课题、大挑战。我们必须时时刻刻积极完善它,因为黑客只要有一次成功,就可以彻底打败你。
3.安全防御是否失败取决于及早规划。
假设有黑客会彻底破坏你的防御系统,那你就得提前做好准备。这样即便真的让他们侵入了系统,也盗取不了任何有价值的东西,因为你已经对服务器做了安全设置,比如对数据库中的内容进行了加密,并且对每台有可能遭受攻击的服务器进行了隔离。
记住,再强大的防御都会有它的薄弱之处,关键是要有备无患。
4.良好的安全防御系统不要在乎它的费用,因为这是战略投资;不及格的安全防御才是被浪费的资源。
在我的职业生涯中,经常听到有人抱怨说安全防御是多么多么的复杂和昂贵,他们没有意识到的是,如果防御失败,公司将损失的可能不止几十亿美元。为了节约几块钱而导致企业破产,这种做法毋庸置疑是非常愚蠢的。
5.将复杂的东西整理成简单的,是很难的,但是要是把复杂的捣鼓成更加复杂的,那就简单了。
这一条适用于编程、设计和几乎所有的创造领域中。我一直以来都希望自己的代码能越易于理解越好。如果你的代码过于复杂和晦涩,那十之八九它正常工作的可能性很低。我曾非常有幸地见识到有些程序员费劲千辛万苦,反而让代码更加难以捉摸了。
6.成功源自于失败中的学习;失败则是因为容忍错误的横行。
有很多程序员总是在辩解,说什么“程序这么难,犯错误很正常了,软件变得糟糕也在所难免了”。这种理由听得多了,于是,大家也逐渐接受了这些扯淡的借口。但是我们作为程序员真的不应该让这些借口阻碍我们的进步,应该谨记,错误只能犯一次,要吸取教训。话说是程序员都会希望自己下一次就能一次性搞定代码。但是没有人是完美的,不过至少我们是在朝着这个方向前进的路上。
7.唯一不变的是变化本身,这是谁都无法改变的法则。