2010年11月18日星期四

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

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

        编者按:原文作者乔纳森·丹尼可(Jonathan
Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务、生物技术、房地产、医疗、保险和公用事业。正如乔纳
森在文中所言,本文适合刚毕业的大学生和刚入门的程序员。如果你已是高级开发人员,或许你在本文中看到自己的身影。





  



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

  我会持续更新这些经验,我可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了。下面就是我至今最难忘的经验。

  1. 估算解决问题所需要的时间。不要怕,承认吧!我曾见过一些程序员为了解决一个特殊问题而坐在显示器前面8小时。为自己定一个时间限制吧,1小时、30分钟或甚至15分钟。如果在这期间你不能解决问题,那就去寻求帮助,或到网上找答案,而不是尝试去做“超级堆码员”。

  2. 编程语言是一种语言,只是一种语言。随着时光推移,只要你理解了一种语言的原理,你会发现各种语言之间的相似之处 。你所选择的语言,你应该觉得“舒服”,并且能够写出有效(而且简洁)的代码。最重要的,让语言去适应项目,反之亦然。

  3. 不要过于注重程序的“设计模式”。 有时候,写一个简单的算法,要比引入某种模式更容易。在多数情况下,程序代码应是简单易懂,甚至清洁工也能看懂。

  4. 经常备份代码。在我年轻时,我就有过因硬盘故障而丢了大量代码的经历,这经历很恐怖的。只要你一次没有备份,就应当像有着严格的期限,客户明天就需要。此时就该源码/版本控制软件大显身手了。

  5. 承认自己并不是最顶尖的程序员 - 知不足。我常想,我对编程了解已足够多,但是总有其他人比你优秀。正所谓,“一山总比一山高”。所以,向他们看齐吧!

  6、学习再学习。正如第5点所说,我经常会在手里拿一本计算机或编程相关的杂志或书(不信,可以问我的朋友)。诚然,总有很多你不知道的技术,你可以从中学习以保持不落后。如果你有一种灵巧的方式来获取你需要的新技术,那你每天都应该坚持学习。

  7. 永恒的变化
对待技术/编程知识,就应像你对待股票一样:多样化。不要在某一特定技
术上自我感觉良好。如果那种技术或语言已经没有足够支持,那你还不如现在就开始更新你的简历,并启动培训新计划。我能保持前行的主要原则是什么呢?至少了
解两到三种语言,所以,如果某种语言过时了,你在学习新技术的时候还可以依靠另一种语言。

  8. 提携新人。协助并且培养初级/入门的开发人员学习优秀的编程方法和技巧。也许你还不知道,在帮助他们向更高一层前进时,你自己也在向更高一层提升,你会更加自信。

  9. 简化算法。代码如恶魔,在你完成编码后,应回头并且优化它。从长远来看,这里或那里一些的改进,会让后来的支持人员更加轻松。

  10. 编写文档。
论是Web服务的API,还是一个简单的类,你尽量编写相应文档。我曾经引以为豪的代码注释,因过度
注释而有人指责。给三行代码加一行注释,只需要你几秒时间。如果那是一个比较难以理解的技术,千万别担心过多注释。如果你能很好做好自己的工作,大多数架
构师、后备程序员、支持组都会感激你。

  11. 测试、测试再测试。我是一名黑盒测试粉丝。当你完成编码后,你“被认可”的时候就开始了。如果你们公司有QA部门,如果你的代码中有错误,那你得到的评论,会比项目经理还多。如果你不彻底测试自己的代码,那恐怕你开发的就不只是代码,可能还会声名狼藉。

  12. 庆祝每一次成功。我见过很多程序员在解决编程技术难题后,会和同伴握手、击掌或甚至手舞足蹈。每个人在生命中都会碰到“顿悟”。如果一个程序员高兴地跑来叫你去看他的非凡代码,也许你已经看过这样的代码100遍了,但你也应该为了这个家伙而庆祝第101次。(编者注:《庆祝成功的九种方式》。)

  13. 经常检查代码。 在公司,你的代码要经常检查(包括自查和其他同事检查)。不要把别人的检查,看成是对代码风格的苛求。应该把它们看作是有建设性的批评。对个人来说,经常检查你的代码并且自问,“我怎样才能写得更好呢?” 这会让你加速你的成长,让你成为一个更优秀的程序员。

  14. 回顾你的代码。
看到自己以前的代码时,通常会有两种方式:“难以至信,这代码是我写的”和“难以至信,这代码是
我写的”。第一种往往是厌恶的语气,并在想如何改进它。你也许会惊叹,旧代码也能复活成为一种更好的程序,甚至是一个完整的产品。第二种通常带着惊奇和成
就感。开发人员应该一到两个自己完成的项目成果,能让众人不禁而立并注目而观的项目。同样,基于你优越的编程能力,你可以把过去的程序或项目拿出来,把它
们更新为更加优秀的产品或想法。

  15. 幽默是不可缺的。在我20年的开发生涯中,我还没有碰到哪位程序员是没有幽默感的。实际上,干我们这行,幽默是一项必备品。

  16. 谨防那些无所不知的程序员,不愿分享的程序员,还有经验不足的程序员。当你遇到这几种程序员时,你自己要谦虚。无所不知的程序员,更想当一个英雄而不是团队成员;保守的程序员则是在编写着他们独享的代码;而经验不足的程序员则会每十分钟就来问你一下,当代码完成后,代码已经是你的,而不是他们。

  17. 任何项目都不会那么简单。
友、家人和同事曾请求我仓促做一些事情,仓促做一个程序或者网站。对于这样的事,应该
从双方做计划,才能做出令两方都会满意的东西。如果某人起初只是需要一个使用Microsoft
Access的、只有有3个页面的网站,但来就很可能变成一个有15个页面的网站,并使用SQL
Server,有一个论坛,还有一个定制的CMS(内容管理系统)。

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

  19. 没有已经完成的软件。曾经有一位程序员告诉我,没有软件是已经完成的,它只是“暂时完成了”。这是明智的忠告。如果客户还在使用你写的程序,并经受了时间的考验。如果有机会,你仍在更新它,这并不是什么坏事,这让你不断地前行。

  20. 耐心是一种美德。
客户、朋友或家庭成员用电脑的时候,他们也许会受挫,进而想砸电脑,或气冲冲地离开。我一直在
告诉他们,“是你掌控电脑,不是电脑掌控你。”对于用作编程的电脑,你要有一定的耐心。一旦程序员知道问题所在后,他们就会站在电脑的角度看问题,并且说
“哦,这就是为什么它是这样做。”

  编者后话

  对本文深有感触!虽然本文没有华丽的辞藻,其中朴实的道理,其实并非只适用程序员,同样可以扩展到其他行业。记得以前练字时,总感觉当时写得很好,但后来回头再看时,也会想“这居然是我写的字!”

  在阅读本文的朋友,不知你是否也有看到了自己的身影呢?欢迎你在微博或评论中和大家一起分享感触。




  本文出处:伯乐在线 - 职场博客
  本文链接:http://www.jobbole.com/entry.php/322

  Via:Jonathan Danylko 编译:伯乐在线 敏捷翻译组 - @关关

  如需转载,但请注明文章来源和超链接等版权信息,谢谢合作!





感谢 jobbole 投递这篇新闻


声明:本文系JavaEye网站发布的原创新闻,严禁任何网站转载本文,否则必将追究法律责任!


新闻来源:www.jobbole.com





已有 56 人发表留言,猛击->>这里<<-参与讨论





JavaEye推荐






"

激发程序员创意的6本书

激发程序员创意的6本书: "

        在之前的一篇博客中我曾提到:程序员成功的秘诀在于创意和原创性思维。








  但是如果你没有创意该怎么办?别担心,并非只有你这样。事实上,你所遇到的大部分程序员都缺乏创意。原因在于,跟编程中客观的逻辑性思维相比,创意需要一种不同的思维方式。

  幸运的是,创新思维是可以学习的。我列出了一个可以激发创意的书籍清单。(注:排名不分先后,有两本书没有相应中文名,应该是没有中文版)


  《Pragmatic Thinking and Learning: Refactor Your Wetware》 - Andy Hunt 安迪·亨特








  这是一本为程序员量身定制的激发创意的书,作者安迪自己也是一名程序员。(他也是《程序员修炼之道》的作者之一)。

  Thinkertoys: A Handbook of Creative-Thinking Techniques - Michael Michalko
  《米哈尔科商业创意全攻略》 - 迈克尔·米哈尔科









  迈克尔·米哈尔科通过带领你解决一些拼图游戏来迫使你改变思维方式。对于那些缺乏创意的人来说这可能往往是一项艰巨的任务。

  Thinkpak: A Brainstorming Card Deck - Michael Michalko迈克尔·米哈尔科








  这并不是一本真正的书。基于从《米哈尔科商业创意全攻略》中学到的技术,迈克尔·米哈尔科做了一副卡片,你可以用这副卡片来激发自己的创意,并将你的创意运用于实际应用中。
 
  Cracking Creativity: The Secrets of Creative Genius - Michael Michalko
  《创意的技术:100位天才的9种思考习惯》- 迈克尔·米哈尔科








  迈克尔·米哈尔科的三本书(资料)中的最后一本。在这本书中,迈克尔着重讲了如何像历史上包括莱昂纳多·达·芬奇和华特·迪士尼在内的创意天才一样进行思考。

  How to Get Ideas - Jack Foster, Larry Corby
  《更多好主意》- 杰克·福斯特 & 拉里·科比







  拥有原创性的想法是有创意的一个表现,但这些想法从何而来呢?这本书会告诉你如何激发产生新的想法,并让你达到更高的水平。

  The Innovator’s Toolkit: 50+ Techniques for Predictable and Sustainable Organic Growth - David Silverstein, Philip Samuel, Neil DeCarlo
  《创新者工具箱: 50+可预见与可持续创新技术》- 大卫·西尔弗斯坦,菲利普·塞缪尔,尼尔·戴卡洛







  创新与科技的发展是相辅相成的。以Apple或Google公司为例,这些公司在不断地创新计算机硬件和软件。Silverstein等人写的这本书对创新者来说是一本非常棒的参考书。要想成为一名成功的创新者,你也必须是一名充满创意的思想者。

  编程是非常简单的,如果你正在读这篇博客,那么你很可能已经掌握了至少一门编程语言。现在你知道了如何才能达到更高的水平:要有创意

  如果还有有其他书籍激励你成为一名有创意的创新者,或者你知道本文中那两本没有中文译名书籍的中文名,请在微博或评论中和大家一起分享。



  本文出处:伯乐在线 - 职场博客
  本文链接:http://www.jobbole.com/entry.php/329

  Via:Repeat Geek 编译:伯乐在线 敏捷翻译组 -牛冬梅

  如需转载,但请注明文章来源和超链接等版权信息,谢谢合作!





感谢 jobbole 投递这篇新闻


声明:本文系JavaEye网站发布的原创新闻,严禁任何网站转载本文,否则必将追究法律责任!


新闻来源:www.jobbole.com





已有 11 人发表留言,猛击->>这里<<-参与讨论





JavaEye推荐






"

深入理解ServletRequest与ServletResponse

深入理解ServletRequest与ServletResponse
2010-02-08 21:49:24
标签:Request Response
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/275586
深入理解ServletRequest与ServletResponse
请求和相应是Web交互最基本的模式,在Servlet中,分别用HttpServletRequest与HttpServletResponse来表示Http请求和响应。这两个类均来自javax.servlet.http包,是J2EE Servlet与JSP规范的一部分,因此,谈及
HttpServletRequest与HttpServletResponse的时候,其实都是和Servlet(包括JSP)有关的。与HTML、ASP、PHP是没有关系的,你也无法在HTML中使用它们。
下面是一个详细过程:
一、ServletRequest
代表一个HTTP请求,请求在内存中是一个对象,这个对象是一个容器,可以存放请求参数和属性。
1、请求对象何时被创建,当通过URL访问一个JSP或者Servlet的时候,也就是当调用Servlet的service()、doPut()、doPost()、doXxx()方法时候的时候,执行Servlet的web服服务器就自动创建一个ServletRequest和ServletResponse的对象,传递给服务方法作为参数。
2、请求对象由Servlet容器自动产生,这个对象中自动封装了请求中get和post方式提交的参数,以及请求容器中的属性值,还有http头等等。当Servlet或者JSP得到这个请求对象的时候,就知道这个请求时从哪里发出的,请求什么资源,带什么参数等等。
3、ServletRequest的层次结构
javax.servlet.ServletRequest
javax.servlet.http.HttpServletRequest
4、通过请求对象,可以获得Session对象和客户端的Cookie。
5、请求需要指定URL,浏览器根据URL生成HTTP请求并发送给服务器,请求的URL有一定的规范:
二、ServletResponse
也是由容器自动创建的,代表Servlet对客户端请求的响应,响应的内容一般是HTML,而HTML仅仅是响应内容的一部分。
相应对象有以下功能:
1、向客户端写入Cookie
2、重写URL
3、获取输出流对象,向客户端写入文本或者二进制数据
4、设置响应客户端浏览器的字符编码类型
5、设置客户端浏览器的MIME类型。
三、GET与POST的本质区别
get请求的参数参数在url里面,不安全,post请求的参数放在请求体中,安全。
四、认识MIME类型
参考资料:
HeadFirst Servlet&JSP

本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/275586

提供 39种样式高亮语法的JQuery插件-Snippet

Snippet jQuery Syntax Highlighter 是一个建立在SHJS的 开源插件,Snippet提供了简单而且快捷的方法,可以方便的为你带来高亮语法的提示.可以在IE 6, IE 7, IE 8, FF 3.6, Chrome 6.0, Safari 5.0, Opera 10.62中运行.



先简单为你讲一讲它的用法.在官方的网站也已经有了详细的介绍,这里就稍微翻译一下它所提供的例子.

1. 在你的HTML中加载Snippet和JQuery

1.
2.


2. 加载Snippet的CSS

1.


3. 重点是这一步,我们要把下面的代码写在

我的简介

杭州, 浙江, China
http://rolyers.appspot.com/