20年来我得到的20条编程经验(转)

我从11岁开始编程,并且一直都很喜欢技术和编程。这些是我一直以来获得的经验教训。作为一个程序员,你可能需要这样的忠告。我更希望每个人在获取这些忠告的同时能够学到更多。

我将会不间断地更新这里,我可能会有更多的要写,但是就我这20年来看,我认为没有什么更多的需要加在这个清单下了。:-)

这就是至今为止我印象最深的一些教训。

1、解决问题时估算你所需要的时间。C‘mon,admit it! 我曾见过一些程序员为了解决一个特殊的问题而连续坐在显示器前面8小时,我会像下一个会成为这样的程序员一样感到内疚。为自己定一个时间表吧,每1小时,30分钟,甚至15分钟。如果在这期间你不能找出问题的解决办法, 那么就去寻求别人的帮助,或者在网络上去找答案,而不是尝试去做super-coder.

2、编程语言是一种语言,也只不过是一种语言。随着时间的增长,只要你理解了一种语言是怎么工作的,你就会发现各种不同语言之间有相似之处。你所选择的语言应该让你觉得舒服,并且能够写出有效(而且简洁)的代码。总重要的,让语言本身适合这个项目,反之亦然。

3、不要过头-写“设计模式”的程序。  有时候,写一个简单的算法要比把某种模式引进来容易的多。多数情况下,应该写易懂的代码,做到哪怕清洁工也得读懂。 :-)

4、经常备份代码。在我年轻的时候就有过硬盘坏掉了而丢了许多代码的经历,这让人感到相当烦躁。一次你没有备份你的数据,那就仿佛一次客户有着严格的期限明天就需要他们的东西。(The one time you don‘t back up your data may be the one time where you have a strict deadline with a client and they need it tomorrow. )这时源码/版本控制程序就可以帮你。

5、接受一个事实,你并不是最牛的程序员。我常常想我已经对编程了解的够多了,但是也经常会发现有人明显比我强。所以,向他们学习吧。

6、学习再学习 。像第五条说的,我经常会在手里拿一本计算机或编程相关的书、杂志(我的朋友们可以作证)。真的,你可以从中学到不少技术,这样也可以让你在工作上不会落后。当然如果你有一个更好的方式来接触你需要的新技术,那么你应该每天都学习它。

7、变化是会经常发生的。 你对编程技术的熟悉就好像你对待一支股票一样:是变化的。不要对一门特定的技术感觉良好。如果这种技术或者语言已经得不到足够的支持了,你最好马上开始更新你的简历、开始接受培训吧。我分别的主要的原则就是看这项技术能否让我继续下去。至少了解两到三种语言,这样一旦一种不行了,你还可以在学习新技术的时候依赖另一种。

8、给予新手帮助。 协助并且培养新手/初级的开发者,让他们具有良好的编程技巧。你或许从未意识到...这样你会使很多人成长,并且在培养他们为下一个位置做准备时你也会感到很开心。

9、让算法简单化。代码就像朋友一样,你完成编码以后,应该从头再看一遍并且优化它。代码上这里或者那里一点点的改进,会让后来长期维护的人轻松很多。

10、给代码加注释。 -不管是在注释一个WEB服务的API还是在注释一个简单的类,你尽管做就是。我曾经因过度的代码注释而被人指责过,而这却又是我最引以为豪的事。为三行的代码加一行注释仅仅需要你几秒钟的时间。如果是一个比较难理解的技巧,千万别担心过度的注释。你做你该做的,这就是架构师,编码助理、支撑组都最不会抱怨的地方。

11、测试,测试,测试  我是黑盒测试的拥蹙。当你完成编码的时候,你“被认证”的时候就开始了。如果你们有质量保证部门,那么相对于项目经理对你错误的评论而言,他们会评论得更多。如果你完全不测试你的代码,那么恐怕你开发的就不仅仅是代码了,可能还有你糟糕的名声。

12、为每一个成功庆祝。 我遇到过的许多程序员在解决完一个编程技术的头痛问题时,常常和他们的同伴握手、击掌、甚至手舞足蹈。每个人在生活中都会碰到“豁然开朗”时候。一个程序员高兴地跑来叫你去看他独创的代码,以你的经历或许你已经看过这样的代码100遍了,但也应该为了这个伙计来第101次庆祝这个成功吧。

13、经常检查你的代码。 无论是项目还是个人,在公司里你应该常常检查你的代码,不要把别人的指责当作打击,而是把它们看作是有建设性的批评。对个人来说,常常检查你的代码并且自问 “我怎样才能让它更好呢” 这会让你更快地成长,使你成为一个更好的程序员。

14、回顾你过去的代码。  看到自己以前的代码的时大家经常会有两种表述:“难以至信,我居然写过样的代码”和“难以至信,我居然写过样的代码”。第一种表述经常是带着厌恶的语气。想想如何去改进它,当你让这些超老的代码重新复苏,成为更好的、正常的程序甚至完整的产品时,你会感到惊喜的。第二种表述常常带着惊奇和成就感。开发者应该完成一两个经得起考验、经得起讨论的工程代码。另外,你可以利用这些代码或者工程把他们作成一个更好的产品或者想法,这就要看你优秀的代码能力了。

15、幽默感是必须的。 我20年的开发生涯中,我从来没有碰到过一个程序员没有相当的幽默感的。确切地说,在我们这个行业,这是必须的。

16、当心那些无所不知的人,不愿分享的人,和经验不足的人。
当你遇到这几种程序员时首先你自己要谦虚。
那些无所不知的人更想作一个英雄而不是一个团队成员,保守的人则是在编写着他们不愿意分享的代码。而那些经验不足的程序员会每十分钟就来问你一下,当他完成开发时,那代码已经是你的而不是他们的了。

17、没有项目是从来就是简单的。我曾被朋友、家人、同事要求忽忙地做一些事情,匆忙地写一个程序或者网站。应该计划能够完成两方都会满意的东西。
开始时可能他只是需要一个使用Microsoft Access 的有3个页面的网站,但是随后就可能变成一个有15个页面的网站且使用SQL Server、一个论坛、一个自定义的CMS(内容管理系统)

18、任何时候不要想当然。假如你接手一个简单的项目,你可能会认为某些部分很容易完成。千万不要这样认为,除非你有一个类、组件、或者一段已经写好的代码并且已经测试通过。

19、没有软件是已经完成的。一个程序员有次告诉我没有软件是已经完成的,它们只是暂时完成了。这是明智的忠告。如果客户还在使用你写的程序,已经忍过了测试的那段时间。还有可能就是你仍在更新它,这并不是什么坏事,它可以让你不断地工作。:-)

20、有耐心是一种长处。 当客户、朋友、或者家庭成员用电脑的时候,他们可能会受挫、想砸掉电脑以至于暴走。我告诉他们,“是你在控制电脑而不是电脑在控制你。”对待用于编程的电脑,你需要有一定的耐心。只要程序员明白他们的问题所在了,他们就又从电脑的角度来看问题了,还说“呃,不就是这样嘛。”

我希望这一摞经验能够启发一些人,又或者让你轻轻一笑。

本文链接:http://www.blueidea.com/tech/program/2010/7628.asp 

http://mr-bug.iteye.com/blog/676335

时间: 2024-11-13 15:06:17

20年来我得到的20条编程经验(转)的相关文章

[转载]风雨20年:我所积累的20条编程经验

原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生物技术.房地产.医疗.保险和公用事业.正如乔纳 森在文中所言,本文适合刚毕业的大学生和刚入门的程序员.如果你已是高级开发人员,或许你在本文中看到自己的身影. 从11岁时,我就一直在编程,并且一直都很喜欢技术和编程.这些年来,我积累了一些艰难又容易的经验.作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友. 我会持续更新这些经验,我可

牢记20条编程经验

http://article.yeeyan.org/view/184220/150437 原文作者乔纳森·丹尼可(JonathanDanylko)是一位自由职业的Web架构师和程序员,编程经验已超过20年 1. 估算解决问题所需要的时间.不要怕,承认吧!我曾见过一些程序员为了解决一个特殊问题而坐在显示器前面8小时.为自己定一个时间限制吧,1小时.30分钟或甚至15分钟.如果在这期间你不能解决问题,那就去寻求帮助,或到网上找答案,而不是尝试去做“超级堆码员”. 2. 编程语言是一种语言,只是一种语

风雨20年:我所积累的 20 条编程经验

从11岁时,我就一直在编程,并且一直都很喜欢技术和编程.这些年来,我积累了一些艰难又容易的经验.作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友. 虽然我想我会持续更新这些经验,可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了.下面就是我至今最难忘的经验: 1. 估算解决问题所需要的时间. 不要怕,承认吧!我曾见过一些程序员为了解决一个特殊问题而坐在显示器前面8小时.为自己定一个时间限制吧,1小时.30分钟或甚至15分钟.如果在这

12 条编程经验分享

从小白到入门,从入门到进阶,从进阶到高级,从高级到资深,再从资深走不同到路线.这条路可以说是大多数程序员的发展路线,在这个过程中经验就显得尤为重要,尤其是后期,经验可以占据很大的优势. 1. 从小事做起,然后再扩展 无论是创建一个新的系统,还是在现有的系统中添加新的功能,我总是从一个简单到几乎没有任何所需功能的版本开始,然后再一步一步地解决问题,直到满意为止.我从来没有妄想过能够一步登天.相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中. 我很喜欢 John Gall 的这句话:“

第20章 异常和状态管理20.7-20.13

20.7用可靠性换取开发效率 面向对象编程,编译器功能,CLR功能以及庞大的类库——使.Net Framework成为一个颇具吸引力的开发平台.但所有的这些东西,都会在你的代码中引入你没有什么控制权的“错误点”,如果 OutOfMemoryExcepton等.程序开发不可能对这些异常进行一一捕捉,让应用程序变得绝对健壮.意料意外的异常往往造成程序状态的破坏,为 了缓解对状态的破坏,可以做下面几件事: ●执行catch或finally块时,CLR不允许终止线程,所以可以向下面这样写是Transfe

4.20日第13次作业.,20章战略管理,21章业务流程管理和重组,22章知识管理,高项,29-田哲琦

4.20日第13次作业.,20章战略管理,21章业务流程管理和重组,22章知识管理,高项,29-田哲琦 20章.战略管理1.企业战略的特点有哪些?P420-421 答:1).全局性 2).长远性 3).抗争性 4).纲领性 2.企业战略决策的特点有哪些?P421答:1).决策的对象是复杂的,很难把握住它的结构,并且是没有先例的,对其处理上也是没有经验可循. 2).面对的问题常常是突发性的.难以预料的.所依靠的是来自外部的关于未来如何变化的很少的情报. 3).决策的性质直接涉及到企业的前途. 4)

20年资深程序员编程经验分享

原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生物技术.房地产.医疗.保险和公用事业. 从11岁时,我就一直在编程,并且一直都很喜欢技术和编程.这些年来,我积累了一些艰难又容易的经验.作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友. 虽然我想我会持续更新这些经验,可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了.下面就是我至今最难忘的经验

20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行

20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行命令 20.30 expect脚本传递参数 原文地址:http://blog.51cto.com/12058686/2107915

20.31 expect脚本同步文件 20.32 expect脚本指定host和要同步的文件 20.

20.31 expect脚本同步文件 20.32 expect脚本指定host和要同步的文件 20.33 构建文件分发系统 20.34 批量远程执行命令 原文地址:http://blog.51cto.com/12058686/2108318