原作者乔纳森丹尼尔科(JonathanDanylko)是一名自由网页架构师和程序员,拥有超过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.没有任何项目如此简单。朋友、家人和同事让我加急一些事情,加急一个程序或网站。对于这样的事情,我们应该从两方面来谋划,才能做出让双方都满意的事情。如果有人最初需要一个使用MicrosoftAccess的3页站点,那么它很可能会变成一个使用SQLServer、论坛和自定义CMS(内容管理系统)的15页站点。18、任何时候都不要想当然。如果你接的是一个简单的项目,你可能会认为某个部分可以轻松完成。不要这样想!除非你有一个已经在现有项目中编写和测试的类、组件或代码段。不要认为这会很容易。19.永远没有完成的软件。曾经有一个程序员告诉我,没有软件是完成的,它只是“暂时完成”。这是明智的建议。如果客户还在使用你写的程序,并且经受住了时间的考验。如果有机会,您仍然会更新它,这不是一件坏事,它会让您继续前进。20、耐心是一种美德。当客户、朋友或家人使用电脑时,他们可能会感到沮丧并想砸碎它或气呼呼地走开。我一直告诉他们,“你控制电脑,电脑不控制你。”您必须对用于编程的计算机有耐心。一旦程序员知道问题出在哪里,他们就会设身处地地为计算机着想并说:“哦,这就是为什么它会那样做。”
