在程序员岗位上工作了三十多年,我学到了也明白了一些事情,希望在这里跟大家一起分享:
- 看不到实物,客户不会知道自己想要什么
一个功能性原型系统的展示,能够省下无谓低效的赘述。
- 只要给予足够的时间,任何安全措施都不安全
安全是目前系统运维的重大挑战,我们每时每刻都想方设法来保护系统和数据,但是黑客只要成功一次,我们所有努力就极有可能都付诸东流。
- 系统被攻破后造成的影响,依赖于事前的准备功夫
如果能够预先估计防护系统失效的后果,做足准备措施,例如:把关键数据单独分离存储,对数据进行加密等,那么或许可以减少日后上头条的机会。
- 良好的安全部署不仅仅是开销,而是战略资产,如果吝啬于此,代价将不菲
在工作中,我总会听到人们常常抱怨安全运维是多么的复杂和昂贵,因此,总不时看到某些企业为了蝇头小利,以牺牲安全性来节省开支,最后不得不多吞下N倍的苦果。
- 复杂问题简单化,远比普通问题复杂化困难得多
在任何创造性艺术领域,如:编程,设计,这都是个常见现象。我会尽力把代码写得简单易懂,不论是为了自己还是别人;如果你想展示自己的聪明才干,而故意把代码变得复杂,那么维护会是件可怕的事情。当然从保护知识产权角度来看,这本无可厚非,但或许会失去开源软件的活力与创造力。
- 成功来自对失败的总结学习,如果一再容忍失误,失败与成功注定是两条平行线
当人们对自己的错误习以为常,那么创造出来的可能是毫无价值的产品。我们需要订下目标:只允许自己犯同类型的错,一次。只有严控错误频率,才能不断提高软件开发水平。
- 永远不变的是变化
仅根据今天的情况来制订明天的计划,是不明智的。特别是在编程的世界里,没有亘古不变的死路子。反对技术进步,闭关自守,不接受或尝试新事物,注定是不会成功的。
- 终身学习
我最喜欢的一个说法是:我们背后都跟着一个大滚筒,只要稍微停下,就有可能给绊得人仰马翻,因此,我们必须比它跑得更快,不断前进。当我们自认已掌握一切后,殊不知其实是倒退的开始。
- 整个软件业充斥着野驴猜想
古时候,先知者如果预言失败,会给石头活活砸死;而现在,即使预判失败,专家们都可全身而退,不过去做另外一次预判罢了。因此,野驴猜想盛行,人人都喜欢去预判下论断,一个浮躁的年代。
- 条条大路通罗马,罗马并不在乎你用什么方式到达
客户不会关心你会遇到什么问题,他们只想你的软件能解决他们的问题。系统宕机,硬件损坏,黑客攻击,这些对客户来说毫无趣味可言。如果不幸发生这些囧事,老实交代是较好的做法,特别是被客户清晰知道你将如何解决这些问题前。
- 客户才是最好的质量标准
不论你有多少的测量指标,进行了多少回代码回顾,通过了多少个验收清单,这些其实都是次要的;最关键是我们做到客户所期望的,没有做多余的无用的。记住,客户才是最后把关的QA。
- 无记录,不成功
时至今日,我仍然觉得人们如果不去收集日志,崩溃报告等有用信息,是多么的我伙呆。我一直坚持做的是进行尽可能详细的记录,追踪崩溃情况,阅览复核报告和备注,和其它任何能迅速定位错误的事情。
- 尽管存在更好的办法,但是时间不会停下来等你
在做评估时,最困难的是取得终止和继续之间的平衡。如果终止,或许会失去找出更好办法的机会,但如果这办法需要耗费过长时间,其实没多大价值。这是个艰难的抉择,但有时候今天做出的快速选择,会比明年才得出的好选择更管用。
- 寻找有钱的金主
曾合作过的一名销售人员的观点让我印象深刻:找到一个不懂技术但有很多钱的人,如同找到了一个大金矿。聪明的人会问太多问题,贫穷的人不能给予你回报。我由衷地为自己成为程序员感到高兴!
- 我的工作是对客户撒谎,你的工作是让我看起来是一个好人
还是前述的那名销售人员,他喜欢口头允诺客户完成不可能的任务,并在我们最终完成任务后,捷足先得我们的奖赏与赞誉。尽管挑战难题会很有成就感,但每次的副作用是无尽的痛苦。我的建议是:尽快寻找另外一个更好的销售!
作者简介:
作者Codist(网名),目前从事iPhone 应用开发,拥有10年的Java架构师/开发经验,现已转投PHP;擅长Fortran、Pascal及各种汇编语言包括C、 C++、 SQL、Objective-C、Java、JavaScript、PHP;同时他还是一名Web设计师,专注HTML/CSS/Ajax等领域。
英文出自:Thecodist