文档章节

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

Jesons
 Jesons
发布于 2014/10/08 11:52
字数 2362
阅读 68
收藏 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

15.客户要找愚蠢的。

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

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

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

译文链接:http://www.codeceo.com/article/a-lifetime-programmer.html

本文转载自:译文链接:http://www.codeceo.com/article/a-lifetime-programmer.html

Jesons
粉丝 33
博文 56
码字总数 47373
作品 0
江北
程序员
私信 提问
加载中

评论(2)

Jesons
Jesons
79不错 换一种思维来思考
张无聊
张无聊
客户在接触产品之后,也不一定能马上明白自己的需求。我会对他说:你说的太好了,我们也早就想过这点,让我记录下来分析一下,过几天再和你讨论一下解决方案!然后过几天之后,有这几个可能:1、客户已经对前面提的想法产生了变化不再坚持“你们以前的方案也不错13”;2、我找到他的漏洞说服了他不改动;3、他提的确实有道理,可以修改,然后可以安排修改的计划
数据挖掘有哪些常见的应用模型?

a.用户基础研究:用户生命周期模型(进入、成长、成熟、衰退、流失)、用户细分模型、用户价值模型、用户活跃度模型、意愿度识别模型、用户偏好识别模型、流失预警模型、用户激活模型等 b.个...

王礼Leon
2017/07/25
0
0
一位 30 多的程序员生涯经验总结

1.客户在接触到产品之后,才会真正明白自己的需求。 这是我在我的第一份工作上面学来的。只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的。给出一个功能性原型设计远远比一张长...

oschina
2014/10/02
7.3K
22
【直播】聊聊中美程序员的基本职业路径,现状和前景

本期饥人谷公开课,为大家特别邀请到一位大牛老师 Alex老师 毕业于卡内基梅隆大学,现任职于亚马逊AWS,从事云计算服务开发工作。有在腾讯,创业公司工作和作为独立开发者从事外包项目开发的...

moling
2018/03/16
0
0
我也 30 了,来谈谈程序员的迷茫年龄

今年三十了,到了传说中程序员最应该迷茫的年龄了,那么我迷茫吗,没的说,按照某司34岁就要劝退的要求,我还有4年的程序生涯。 为什么30岁的程序员就应该迷茫呢? 30岁正是经过了七八年的职...

王练
2017/03/29
14.7K
121
为什么大龄程序员都会选择学习大数据?

01 国内四五十岁的程序员去哪儿了? 中关村,被称为中国硅谷,此间程序员比比皆是。然而一眼望去,大多数一线程序员的年龄均在20至30岁左右,40、50岁的人在这个行业内颇为罕见。相较于国外五...

JAVA丶学习
2018/03/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 Java语法教程 Java语言的跨平台特性

什么是平台 Java是可以跨平台的编程语言,那么首先我们需要知道什么是平台,通常我们把CPU与操作系统的整体称为平台。 CPU大家都知道,是计算机的大脑,它既负责思维运算,又负责计算机中各种...

老码农的一亩三分地
8分钟前
0
0
http传值问题

这两天遇到一个问题 ,与一个渠道联调接口,http请求,展示ptf 的需求,服务方以一个二进制的方式返回。 当时我们在一开始开发的时候,我们按照读取文件的方式处理,本地存一个ptf 的方式 ,...

鬼才王
16分钟前
1
0
【面试】如果你这样回答“什么是线程安全”,面试官都会对你刮目相看

不是线程的安全 面试官问:“什么是线程安全”,如果你不能很好的回答,那就请往下看吧。 论语中有句话叫“学而优则仕”,相信很多人都觉得是“学习好了可以做官”。然而,这样理解却是错的。...

中关村的老男孩
17分钟前
4
0
5.01- Druid数据源配置

1、配置项 配置 缺省值 说明 name 无 配置这个属性的意义在于,如果存在多个数据源,监控的时候 可以通过名字来区分开来。如果没有配置,将会生成一个名字, 格式是:"DataSource-" + Syste...

静以修身2025
21分钟前
0
0
itop4412开发板-Linux内核的编译

本篇文章基于itop4412开发板 5.3.2.1源码目录 Linux 内核源码在光盘“06_源码_uboot 和 kernel”目录下,如下图所示。 5.3.2.2 编译器 内核的编译器和 uboot 的编译器一样,参考“5.3.1.2 编...

书白
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部