老程序员总结的16条经验教训

1、从小事做起,然后再扩展

无论是创建一个新的系统,还是添加功能到现有的系统中,我总是从一个简单到几乎没有任何所需功能的版本启动,然后再一步一步地解决问题,直到满意为止。我从来没有妄想过能够一步登天。相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中。

我很喜欢John Gall的这句话:“复杂系统总是源于简单系统的演化。”

2、一次只改变一件事

当我们在开发时,碰到测试失败和功能无效的情况,如果你一次只研究一个问题,那将会更容易找到问题的关键。换言之,就是使用短迭代。必须确保这个问题解决之后,再转移到另一个问题上。这适用于向下提交。如果在你添加新功能之前需要先重构代码,那么先提交重构,然后再添加新的功能。

3、尽早地添加日志记录和错误处理

在开发新系统时,我做的第一件事就是添加日志和错误处理,因为这两者从一开始就非常有用。如果系统不能照常工作,那么你就需要知道程序中发生了什么——这是日志的作用。错误处理也是如此——错误和异常越早处理越好。

4、每一行新代码必须至少执行一次

在你真正完成一个功能之前,你必须对它进行测试。不然,你怎么知道它是不是按照你的想法在执行呢?通常情况下,最好的方法是通过自动测试,但并非总是如此。不过,不管怎么说,每一行新代码必须至少执行一次。

5、在整体测试之前先进行模块测试

先进行部分模块测试可以节省时间。通常说来,我们在整合不同的模块时也会出现问题,例如模块之间的接口不匹配。但是如果我们能够信任各个组件的话,那么跟踪集成问题就会变得简单得多。

6、学习需要一个安全的环境

学习的必要经过是犯错误。在德雷福斯模型中,这意味着,特别是位于高级初级阶段,人需要通过犯错误来学习。但是,当人们觉得犯错会对工作造成坏的影响,会失去同事的尊重或在过程中会伤害到其他人时,那么他们就不会冒犯错的风险。

因为我热衷于教和学,所以我想办法创造了一个安全的失败空间,在这里失败的话,可以通过犯一些基本的错误来学习。

7、每个人都可以成为领导者

我以前写过这个话题的内容,因为这是一个非常重要的观察结果。我看到的一个常见的思维模式陷阱是,人们觉得为了像一个领导,你需要去担任领导的职位。但其实人们可以展示他们的领导力而不论其头衔如何,并且可以通过很多不同的方式做到这一点,只需在没有明确期望或要求的事情上采取行动。

8、架构师去写代码往往能作出最佳决策

在我运行的Tech Lead courses中,我提倡技术领导者至少将他们30%的时间用来写代码。花时间于编码上有助于建立信任,尊重和理解当前的系统。在做架构决策时,不考虑到当前系统的约束条件往往会造成错误的决定。

9、改变需要勇气

我记得曾有人谈论过XP values,其中有一点就是勇气。勇气是领导时所必须的,因为你要冒失败的风险,以及尝试一些新事物的风险/回报。没有风险,往往就不会有很大的回报。

10、自己的户口档案、养老保险、医疗保险、住房公积金一定要保管好。

由于程序员行业每年跳槽一次,我不隐瞒大家,我至少换过5个以上的单位,这期间跳来跳去,甚至是城市都换过3个。还好户口没丢掉,其他都已经是乱了,好几个 城市里,都有交过三金,甚至是一个程序的2个区里交的都有,那些东西,10年后,会变得很重要。你买房子若有公积金,可以取出来,贷款利率也会比较低一 些,有孩子了,还需要上学,生病了还需要医疗保险。

11、不要轻易换笔记本电脑,不要跟潮流,不要买过多的电子产品,不要过于频繁的更换手机。

这 方面我的经验教训也是惨痛的。我大概前后购买过5-6个笔记本,以前的都是1万多元一台,最近买的是一台是1万多给女朋友的,自己买了一台是7500元左 右,手机大概换过接近10个了,这些钱加起来也足够有10万以上了,你可能一不小心就购买了这些电子产品,但是时间长了,你一回过头来想想,你为什么赚得 也不少,但是为什么还是那么穷,是因为你购买这些电子产品花费了过多的金钱了,平时笔记本啥的贵重物品要保护好,我一个同事不小心丢了2台笔记本电脑,接 近2万的损失啊,你净赚2万,不是那么容易的,这个窟窿不是开玩笑的,我曾经也被人偷了一个崭新的笔记本,损失1.5万左右,更糟糕的是最新的代码也丢被 偷了。

12、这年代外语、学历、职称、驾驶证还是蛮重要的。

想找高薪,外资企业是正确的选择,在同样的打工里,外资企业的收入普遍是高的,我就想不明白,我们的赚钱能力怎么就比不过人家了,社会不断发展,将来可能去外国就像串门一样了,也说不定的,外语好将来的就业机会也会更多更广一些。

13、要能写漂亮的代码

架构师不是高高在上,脱离代码只说不做的人。架构师首先是一个优秀的程序员,要能够编写项目或产品中的核心功能,随时能够卷起袖子去解决项目中的问题。

代码写的不漂亮怎么能拿得出手?怎么能够服人?

所谓漂亮代码不仅仅是清晰、易懂、优雅,更要实现功能,没有Bug或者极少Bug。

其实如果代码简单优雅,一般没什么问题。

写出漂亮代码并不容易,需要思路清晰,有良好的编程基础,有优秀的抽象能力,以及对一门语言的熟练掌握。

14、抽象的能力

抽象思考的能力怎么强调都不为过。

现实的需求纷繁复杂,如果架构师不能够把这些乱无头绪的需求抽象成一些“概念”,在概念的层次进行思考,系统根本就无法设计。

但是抽象出概念以后还不够,还要看看这个概念是不是正交的,能不能独立变化,如果不能,考虑下新的概念抽象。

“正交”讲的是线性无关,非常重要,就像一个点(x,y),在x轴的变化不会影响y,y轴的变化不会影响x,这就是正交。

“正交”威力巨大,(x,y)可以表达二维平面的所有的点,如果增加一个z轴,不但能表达三维空间中所有的点,并且每个轴都可以独立变化。

如果能做出正交的设计,这个系统的开发和维护会非常舒服,以为可以放心大胆的修改其中一个方面儿不会影响其他。

设计模式一直强调的『发现变化并且封装变化』其实就是这个意思。

抽象能力的训练没有捷径,就是经验的积累,勤于思考和学习。例如:学习Android的程序员可以思考下Android是怎么对未知的,纷繁复杂的应用程序进行抽象的?为什么有Activity、Service、BroadcastReceiver、ContentProvider这四大组件?

15、技术领导力

我在IBM学到的重要一课就是:要用技术的影响力来领导人,而不是威权和职位。

换句大白话来说,就是要能让技术人员服你。有了技术影响力,你在团队发出的声音才会被倾听,被尊重。

但是影响力不是很快就建成的,这是个漫长的过程:你解决了一个技术难题,你提出的方案被证明可行….

这样的事情会一点一滴的积累起你在别人心目中的形象,建立你的个人品牌,最终大家会给你贴上一个标签:大牛。

16、时刻关注和了解各种开发工具

现在很多大企业都不断推出各种开发工具,云计算和云平台的发展日新月异,比如华为软件开发云、阿里云、腾讯云等等。不要从心底里抵制创新,活到老学到老的道理,说起来容易,做起来难。如果利用工具可以缩短项目周期,加快项目交付,那公司和领导也会对你刮目相看。

时间: 2024-11-06 13:16:42

老程序员总结的16条经验教训的相关文章

《经验分享收集》 一:10+年程序员总结的20+条经验教训

原文地址:http://www.codeceo.com/article/10-years-20-tips-programmer.html 一:10+年程序员总结的20+条经验教训 开发 1.从小事做起,然后再扩展 无论是创建一个新的系统,还是添加功能到现有的系统中,我总是从一个简单到几乎没有任何所需功能的版本启动,然后再一步一步地解决问题,直到满意为止.我从来没有妄想过能够一步登天.相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中. 我很喜欢John Gall的这句话:“复杂系统总

10+年程序员总结的20+条经验教训

开发 1.从小事做起,然后再扩展 无论是创建一个新的系统,还是添加功能到现有的系统中,我总是从一个简单到几乎没有任何所需功能的版本启动,然后再一步一步地解决问题,直到满意为止.我从来没有妄想过能够一步登天.相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中. 我很喜欢John Gall的这句话:"复杂系统总是源于简单系统的演化." 2.一次只改变一件事 当我们在开发时,碰到测试失败和功能无效的情况,如果你一次只研究一个问题,那将会更容易找到问题的关键.换言之,就是使用短迭代

转:10+年程序员总结的20+条经验教训

以下是我作为一名程序员经过10几年时间总结出的一些有关于软件开发的经验规则: 开发 1.从小事做起,然后再扩展 无论是创建一个新的系统,还是添加功能到现有的系统中,我总是从一个简单到几乎没有任何所需功能的版本启动,然后再一步一步地解决问题,直到满意为止.我从来没有妄想过能够一步登天.相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中. 我很喜欢John Gall的这句话:"复杂系统总是源于简单系统的演化." 2.一次只改变一件事 当我们在开发时,碰到测试失败和功能无效的情况

老程序员的忠告:不要做浮躁的软件工程师

老程序员的忠告:不要做浮躁的软件工程师:每天读一遍,思考一下:我是否浮躁? 1.不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么.当你自己想出来再参考别人的提示,就会知道自己和别人思路的差异. 2.初学者请不要看太多的书,那会误人子弟的,先找一本好书系统的学习.很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的. 3.看帮助.不要因为很难,而自己又是初学者所以就不看.帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,或不够直观. 4.不要被一些专用词汇所迷惑,最根本的是

<转载> 优秀程序员必备的24条好习惯

<转载> 优秀程序员必备的24条好习惯 转自 优秀程序员必备的23条好习惯 ,But add some my comments of TerryXia in Green. 编程是一项聪明人玩的游戏,它既是对智力的考验,也是对习惯的考验,智力的好坏取决于父母的基因,人们无从左右,但习惯的好坏却是可以不断培养.一项由美国芝加哥大学国家研究组织进行的综合社会调查,公布了“十大最痛苦工作”排行榜,其中IT主管成了最让人痛苦的职业.程序员如何才能让自己的“痛苦”的职业不那么痛苦呢? 世间少有天才,所谓天

【转】老程序员的忠告:不要做浮躁的软件工程师

老程序员的忠告:不要做浮躁的软件工程师:每天读一遍,思考一下:我是否浮躁? 1.不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么.当你自己想出来再参考别人的提示,就会知道自己和别人思路的差异. 2.初学者请不要看太多的书,那会误人子弟的,先找一本好书系统的学习.很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的. 3.看帮助.不要因为很难,而自己又是初学者所以就不看.帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,或不够直观. 4.不要被一些专用词汇所迷惑,最根本的是

转载 写了 35 年代码的老程序员的最大遗憾

转载:写了 35 年代码的老程序员的最大遗憾 大约不到20年前,我处在人生十字路口上.我的第二家公司当时已经花了5年时间为出版行业打造专业图表制作软件,不过在那互联网即将大热的年代,出版商们已经逐渐向互联网领域转移,我们的业务渐渐枯竭.那时候我已经是一个有 13 年编程工作经验,而且同时有 9 年公司运营经验的综合性人才了. 我不想再同时又干技术又干管理了.我的第一家公司(1985-1987年)的主要业务是打造一款电子表格程序,并有自动发布的功能.当时我一人主导了整个公司的多项事务,与媒体打交道

国外一 名 40 岁 ” 老 “ 程序员 的 反思 | 转文

  本文是国外一位 40 岁“老”程序员对职业生涯的思考,他认为从长远来看,应该多投资一些不容易过期.衰竭期较长的知识领域中.译文大意如下:   我是一名程序员,几个月前刚过完四十岁生日.   某个星期六的早晨,我参加了一个 React Native 技术交流会,演讲者正在竭力说服我们为什么它会成为移动开发领域真正的下一个大事件.但对我来说,它有点像十五年前的 jsp ,将所有的逻辑都放在演示代码里面.但我“老”了,我认为这是因为自己还没有完全理解它.   演讲者展示完 ppt 后,现场进行编码

程序员幽默:66条让你笑爆肚皮的程序员段子

1.程序猿最烦两件事,第一件事是别人要他给自己的代码写文档,第二件呢?是别人的程序没有留下文档. 2.程序猿的读书历程:x 语言入门 —> x 语言应用实践 —> x 语言高阶编程 —> x 语言的科学与艺术 —> 编程之美 —> 编程之道 —> 编程之禅—> 颈椎病康复指南. 3.还没上大学的时候,高三暑假,跑到家那边的图书城想买传说中的C++的书,然后看到一本C#,我一看,嘿,这个++还写得挺艺术的,重叠起来了,于是把C#买了回来…… 4.问:程序猿最讨厌康熙