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.al0574.com

转载于:https://www.cnblogs.com/yaoshiyou/archive/2010/05/31/1748424.html

[转]20年来我得到的20条编程经验相关推荐

  1. 风雨20年:我所积累的20条编程经验 (转)

    风雨20年:我所积累的20条编程经验 (转) 编者按:原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生物技术 ...

  2. 给入门程序员20条编程经验

    给入门程序员20条编程经验(转) 1. 估算解决问题所需要的时间. 不要怕,承认吧!我曾见过一些程序员为了解决一个特殊问题而坐在显示器前面8小时. 为自己定一个时间限制吧,1小时.30分钟或甚至15分 ...

  3. 我所积累的20条编程经验(乔纳森·丹尼可)

    我所积累的20条编程经验(乔纳森·丹尼可)---与大家分享 原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生 ...

  4. 20年老码农分享20条编程经验,你pick哪些?

    Alex 发自 凹非寺 量子位 | 公众号 QbitAI 一位20年老程序员分享的编程经验突然火了,在Hacker News上,一天之内就收获了467热度. 这位老哥从1999年就开始编程,从早期的B ...

  5. [置顶] 风雨20年:我所积累的20条编程经验

    原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生物技术.房地产.医疗.保险和公用事业.正如乔纳 森在文中所言 ...

  6. 20条编程经验(转)

    编者按:原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生物技术.房地产.医疗.保险和公用事业.正如乔纳森在文 ...

  7. 一位从业20年的程序员分享积累的20条编程经验

    编者按:原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生物技术.房地产.医疗.保险和公用事业.正如乔纳森在文 ...

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

    原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生物技术.房地产.医疗.保险和公用事业.正如乔纳 森在文中所言 ...

  9. 编程20年的20条编程经验---作者乔纳森·丹尼可

    从11岁时,我就一直在编程,并且一直都很喜欢技术和编程.这些年来,我积累了一些艰难又容易的经验.作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友. 我会持续更新这些经验,我 ...

  10. 【观点】风雨20年:我所积累的20条编程经验

    本文由伯乐在线关关译自Jonathan Danylko的网站DCS Media.Danylko是一位资深开发顾问,DCS公司的创始人. 从11岁时,我就一直在编程,并且一直都很喜欢技术和编程.这些年来 ...

最新文章

  1. 求数组最小数平均值和和值
  2. Android JNI的第一步——从HelloWorld开始
  3. r语言没有forecast这个函数_R语言学习日记——时间序列分析之ARIMA模型预测
  4. java mongodb 插入数据_mongoDB 插入数据 用java实现
  5. latex python_怎么在 LaTeX 中排版 Python 代码?
  6. MySQL设置数据格为空白或NULL
  7. STC学习:非易失存储器
  8. 基于Web的在线教师备课系统
  9. JVM Learning Note 4 -- HotSpot JVM Options List
  10. 易辅客栈 从零学辅助_如何从零启动辅助项目
  11. 安卓flash播放器支持Android 12方案
  12. Extended Kalman Filter vs. Error State Kalman Filter for Aircraft Attitude Estimation 翻译
  13. win10定时语音提醒
  14. APM::Rover下GCS_MAVLink的逻辑梳理
  15. 数据库中第一范式、第二范式、第三范式
  16. java中一些常用的英语
  17. 电脑提示ISDone.dll错误怎么办?
  18. ansys workbench中fluent划分网格出现如下错误:The mesh file exporter failed during translation.
  19. 在PHP中怎么解决大量数据处理的问题
  20. 计算机组成原理时序与启停实验,计算机组成原理时序与启停实验

热门文章

  1. 单片机小白学步系列(十五) 单片机程序下载失败总结
  2. 压力测试过负载均衡_性能测试的方法有哪些?
  3. react登录页面_React 实现路由拦截
  4. 只能计算机论文,谈计算机及人工智能技术发展-人工智能论文-计算机论文.docx...
  5. updatechecker.java_解决ehcache的UpdateChecker问题
  6. 工业机器人工具中心点标定的意义_一种利用平面标定板的机器人工具中心点标定方法_2015108676182_说明书_专利查询_专利网_钻瓜专利网...
  7. c语言函数fread的调用形式,C语言的问题,fread和fgets的区别是什么?
  8. Scanner类+Random
  9. 在oracle中使用Trigger
  10. STM32堆栈溢出的问题