我从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
分享到:
相关推荐
讲述20条编程经验。编程大牛们的编程经验
电脑教材VB编程经验手册
c++编程经验.txtc++编程经验.txt
《C++编程规范:101条规则准则与最佳实践》中,两位知名的C++专家将全球C++界20年的集体智慧和经验凝结成一套编程规范。这些规范可以作为每一个开发团队制定实际开发规范的基础,更是每一位C++程序员应该遵循的行事...
20.如何获取水平滚动条箭头位图宽度?(Visual C++编程 源代码)20.如何获取水平滚动条箭头位图宽度?(Visual C++编程 源代码)20.如何获取水平滚动条箭头位图宽度?(Visual C++编程 源代码)20.如何获取水平滚动...
ruan_阮工的单片机编程经验集:如何做稳定单片机程序与上位机程序防卡顿,js等经验,
第7条 编程中应知道何时和如何考虑可伸缩性 14 第8条 不要进行不成熟的优化 16 第9条 不要进行不成熟的劣化 18 第10条 尽量减少全局和共享数据 19 第11条 隐藏信息 20 第12条 懂得何时和如何进行...
对有vc编程经验的高手来说,本资源是很好的,它主要是对界面编程的技巧讲解,不拖沓,清晰易懂。
一个致力于labview研究数十年的专家,把自己学习labview的方法,技巧和感受从浅入深地一一叙述,调理清晰,逻辑严密。
VisualC 实效编程 20 图片的伸缩显示VisualC 实效编程 20 图片的伸缩显示VisualC 实效编程 20 图片的伸缩显示VisualC 实效编程 20 图片的伸缩显示VisualC 实效编程 20 图片的伸缩显示VisualC 实效编程 20 图片的伸缩...
《我和LabVIEW——一个NI工程师的十年编程经验》是一本深度解析LabVIEW编程技术与实践的书籍,由一位拥有十年LabVIEW编程经验的工程师撰写。LabVIEW,全称为Laboratory Virtual Instrument Engineering Workbench,...
介绍C编程中的一些经验与教训,在开C程序时应注意的问题
我的世界2d编程源码(免费)
模拟量4-20ma转换程序.zip西门子PLC编程实例程序源码下载模拟量4-20ma转换程序.zip西门子PLC编程实例程序源码下载模拟量4-20ma转换程序.zip西门子PLC编程实例程序源码下载模拟量4-20ma转换程序.zip西门子PLC编程实例...
Vue开发:技术与经验深度解析+编程知识+技术开发+Vue编程技术; Vue开发:技术与经验深度解析+编程知识+技术开发+Vue编程技术; Vue开发:技术与经验深度解析+编程知识+技术开发+Vue编程技术; Vue开发:技术与经验...
一个NI工程师十年的编程经验+labview+pdf
云风将自己十余年的游戏编程经验,包括面对不同时代的技术挑战、与内存空间和显卡的斗争、在网游时代与网速和外挂的斗争等,详尽记录并形成了这本著作。书中不仅有实用的技术经验分享,更传递了研发过程中的理念和...
《C/C++高级编程》是深入探讨这两种编程语言精髓的重要资料,主要针对已经掌握C/C++基础的开发者,旨在提升其在编程领域的专业技能。在这个领域,类的构造与指针的使用是核心且复杂的主题,它们是理解和利用C/C++...
【标题】:“三菱FX-10GM/FX-20GM编程软件”是专为三菱高速定位模块设计的编程工具,旨在帮助用户高效地编写和调试控制这些模块的程序。 【描述】:这款软件适用于三菱的10GM和20GM定位模块,提供图形化的编辑界面...
我和LabVIEW_一个NI工程师十年的编程经验word文档资料: 1.我和 LabVIEW 序言.doc 10顺序结构.doc 11.选择结构.doc 12.事件结构.doc 13.循环结构.doc 14.定时结构.doc 15.缓存重用结构.doc 16.LabVIEW 中的泛型容器....