概述:本文摘选自国外著名的程序员博客网站blogoverflow.com上的文章.文章指出了到达到比"优秀"更好的程序员应该具备的一些特质.
作为工作了好些年的程序员,是否你的思想已经出现升华?目标不再是停留在“优秀”层面,而是打算向更高级别的“伟大”而迈进?现在的你想要让写出的所有程序都遵循自己的理念;现在的你想要成为编程方面的大师——而不是那种碌碌无为,守着.Net接口苟活度日的书呆子;现在的你认为编程学是一门艺术而不再是科学,而你想要成为程序员中的毕加索,受人尊敬。
言归正传,现在最重要的是如何去实现这个变得“伟大”的目标。
作为资深的程序员,你应当认识到“伟大”区别于“优秀”的地方并不只限于技术方面。其中一个很重要的区别是“伟大”的程序员能够从客户的角度去分析需求,使设计更加人性化。而“优秀”的程序员只会完成既定的功能。当然,如果知道客户的需求,而无法提供有用的技术支持也无法被称为“伟大”。那么我们来看看迈向“伟大”应具备的一些特性吧。
定期清理重复代码
复制和粘贴的程序员不是真正的程序员。如果你发现自己编写的代码行不止一次的出现相同的(或类似的)情形,那么你就该考虑将这些代码片断进行清理整顿了。这种使代码变得更小,更加容易进行维护,出现程序错误概率更低的工作我们称之为代码重构,这是必做的日常工作的一部分。
保持代码简短实用的风格
在你掌握了清理和重构代码的技巧之后,下一步,你要学习保持代码简短实用的风格。想像一下,一篇长的离谱的主程序代码对于维护它的人来说会有多么的恐怖。那么在主程序前加入头文件,将繁琐的主程序进行分块打包,会让程序维护起来简单一目了然,且编译的时间完全相同,我们何乐而不为呢?
了解YAGNI原则和编程的艺术
YAGNI全称为You Ain’t Gonna Need It,即为“你不会需要它”之意。作为程序员,我们常希望自己设计的东西能够涵盖所有基本需求。可事实往往是这样的,最开始客户希望应用程序完成其中的a功能,在你完成后,他们又认为应该加上b和c功能。然后,我们又花上几天时间去完成b和c 功能,毕竟这是客户的需求。这样的需求变更一次又一次,最后会得到一个比计划大很多的代码库和应用程序,而你曾经编写的一半代码都没用。为了减小更改需求带来的影响,让你的解决方案保持灵活性、可定制性和可预见性是工作中的一个非常重要的部分。在这里,编程真的就成为了一门艺术了——没有硬性规定,完全自由的裁量度,灵活性全部由程序员自己决定——这和绘画一样,多一笔少一笔,是轻还是重全由艺术家来权衡。
学会尊重他人
代码审查是将代码提交给有经验的程序员来帮助检查源代码与编码标准的符合性以及代码质量的活动,很多人会以为这就是给代码挑刺的活动,事实上代码审查最重要的并不是去关注技术细节,而是去留意设计理念,设计方法和实现过程,并提出参考性的建议。如果你觉得应该把别人的每个BUG的细节都一一罗列出来,展示别人的代码有多么的糟糕,那就错了。这在无意之间传递了一条错误讯息:我是来找碴的,是来让你难堪的。别人会因此刻意回避与你讨论,而你也将失去一个学习的机会。在这里,你应当学会尊重他人,就算他比你差很多,你也应该抱着这样的心态:“我们是来互相学习的。”
灵活运用设计模式
阅读设计模式的经典书籍常会为你带来灵光突现的时刻——“哈,这就是我解决这个混乱编码问题的方法。”设计模式可以在软件工程的开发中给人们带来便利,但是,往往其结果却是使程序变得更加混乱。这是因为人们在掌握了设计模式这个“锤子”后,往往会把所有的问题都想像成是“钉子”,而不根据实际情况进行具体分析,这样常使结果适得其反。灵活理性的使用设计模式很重要。
对最新的框架和库了然于心
对于最新的框架和库,你可能不会使用它们,但是你得清楚它们能够干什么。这里我举一个自己的例子——在SignalR出现以前,我一直坚信到目前为止还没有方法能够轻易实现网络应用实时通告的功能,我用了许多的代码来完成这项功能,费时又费力。但事实上,pubnub这样的库已经能够轻松实现这样的功能了,只是我不知道而已。因此,如果你无法对所有的框架和库都了然于心的话,在编写程序的时候,难免会干出许多低效率且无意义的事。滴水穿石,聚沙成塔,你要记住,伟大源自不断的积累和坚持。
不要忘记为代码添加注释
这无疑是一个利己利人的好习惯,不要因为它的麻烦而拒绝它忽略它。试想一下,你要对半年以前自己写的程序进行维护,如果没有注释的话,单凭半年以前的零星记忆,要在成千上万条代码行里去寻找你想找的东西无疑是大海捞针。 另外,使用注释也是对设计理念,算法流程的最好保存,当别人问及你算法中“X功能是如何实现的”,你难道 要跑去翻半年前的算法设计图纸或者挨着把程序从头到尾看一遍?添加注释虽然费时但却能为以后的工作省时省力,磨刀不误砍柴工,说的就是这个道理。
重视单元测试
编写测试用例能够确保你的代码能够持续正常工作。通过对用例的单元检测,你可以及时的搞清楚程序的哪一块运行正常,而哪一块与设计的预期不符,并及时更正,而不是等到几天后应用程序出来,只发现有数据异常,却无法及时找出这些异常的所在。另外,你还应当学习TDD(驱动开发测试)。
了解控制反转(IOC)与依赖注入(DI)
控制反转是目前备受争议的一种技术,它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。而依赖注入是其中最流行的IOC类型,其中包含接口注入,设值注入和构造器注入三种方式。如果你仍不了解IOC是怎么一回事,你可以这么想像:把代码比做曾经的对象掌权者,它现在被剥夺了控制权,被排挤出了核心领导层。
学习多种编程语言的精髓
论坛上经常有程序员在争论编程语言的孰优孰差,这其实是没有意义的。在你了解了多种编程语言后, 你会惊奇的发现每种语言都有其可取之处。例如,python的简单易用和ruby on rails在 web应用程序开发的闪光点是硬币的一面。硬币的另外一面是严谨整洁,功能强大的javascript和C++。同样的,硬币两边的c#开发者和Java开发者眼里看对方都会不同。盲人摸象,只有尽可能广泛的去触摸编程语言这头大象,它的形象才会更加完整。
懂得与其它程序员友好相处
程序员是一个奇怪的物种,这里面不乏有疯子,狂人,呆瓜和奇葩,当然你也可能是其中之一。如何和这些人相处是一门挑战,在这里,我推荐卡内基的《如何赢得友谊及影响他人》,这本书很经典。
本文整合编译自What programming concepts I should master to have a deep understanding of my craft?
相关推荐
要成为一位优秀的Java程序员,不仅需要掌握扎实的编程基础,还需要深入理解Java语言特性,熟悉相关的开发框架,以及持续学习和实践。以下是一些关键的知识点和技能,可以帮助你迈向优秀Java程序员的道路。 ### 1. ...
对于程序员来说,不断学习和进步是职业发展的必经之路。一本书往往能够改变一个人的思维方式和职业生涯。程序员必读书单推荐中列举了一系列经典的书籍,涵盖了...这些经典书籍无疑能够帮助程序员在职业生涯中更进一步。
通过阅读和实践这些材料,程序员可以系统地学习编程语言,提升文件操作技巧,并加强算法设计与分析能力,从而在自己的职业道路上更进一步。不过,具体的资源内容需要解压后才能详细查看和学习。
《Delphi程序员成长攻略》是一本专为想要深入学习和提升Delphi编程技能的开发者设计的指南。Delphi,作为一款强大的对象 Pascal 编程...通过实例学习,你可以快速提升Delphi编程技能,从而在软件开发的道路上更进一步。
模板元编程更进一步,允许在编译时进行计算,以达到更高的效率。 异常处理是处理程序运行时错误的关键机制。通过try-catch块,程序员可以在可能出现错误的地方捕获并处理异常,从而保证程序的健壮性。 STL(标准...
程序员是信息技术领域中的核心角色,他们负责编写、测试和维护软件。为了确保程序员具备必要的技能和...无论你是新手程序员还是经验丰富的开发者,这份资源都能提供宝贵的学习和复习材料,助你在职业道路上更进一步。
更进一步,一个全面的学习资源包可能会涉及C/C++的高级主题,如内存管理(指针操作、动态内存分配)、预处理器宏、模板元编程、多线程编程、文件I/O等。这些知识对于成为熟练的C/C++程序员至关重要。 总之,“C_C++...
对于那些有志于在职业道路上更进一步的程序员,建议#12到#15提供了具体行动的指引。认识并克服冒牌者综合征,从现在开始积极主动地寻找和创造机会,勇于承担风险并抓住机遇,以及在面对选择时倾向于说“yes”,都是...
标题中的“程序员新人成长动力(一个项目经理的早年手记...而对于有一定经验的开发者,它也可能提供新的视角和灵感,帮助他们在职业生涯中更进一步。无论是作为参考手册还是启发性读物,这份文档都值得深入阅读和珍藏。
通过阅读《Visual C++程序员成长攻略》并实践书中的源代码,开发者不仅可以巩固已有的Visual C++知识,还能掌握最新的编程技术和最佳实践,从而在职业道路上更进一步。书中的源代码-4566-NEW部分可能是对某一特定...
Rob Murray通过实例代码向读者展示如何在实际项目中应用这些概念,让读者能够举一反三。同时,书中也讨论了如何将项目从设计阶段转移到实现阶段,以及可能遇到的问题和解决方案,比如调试技术、性能优化、代码维护等...
《程序员面试宝典C语言》是一本专门为准备进入IT行业,特别是C语言编程岗位的求职者量身定制的指南。...无论你是初学者还是有一定经验的开发者,这本书都能为你提供宝贵的指导和帮助,助你在程序员的道路上更进一步。
《黑神话:悟空》上线在即,游戏工业化水平更进一步.pdf《黑神话:悟空》上线在即,游戏工业化水平更进一步.pdf《黑神话:悟空》上线在即,游戏工业化水平更进一步.pdf《黑神话:悟空》上线在即,游戏工业化水平...
一份优秀的程序员简历通常包括以下几个部分: 1. 联系信息:确保提供准确的姓名、电话、邮箱地址,便于招聘者联系。 2. 个人简介:简洁地介绍自己的职业目标和核心技能,让招聘者快速了解你。 3. 技能列表:列出...
【标题】:2021程序员个人转正述职报告 ...这两份报告共同体现了程序员的专业精神和进取心,他们在试用期间不仅提升了个人技能,也为团队和项目带来了实质性的帮助,期待他们的未来职业生涯能有更进一步的发展。
参与开源项目,阅读优秀的代码,了解最新的技术趋势(如Java 11、12等新特性),都将助你在Java程序员的道路上更进一步。 这个"JAVA程序员必读"的资料集包含了这些知识点的详细讲解和示例,通过深入学习和实践,你...
更进一步,可以集成社交媒体分享功能,让这份浪漫得以与朋友和家人分享。 在这个过程中,程序员不仅展示了他们的技术能力,也表达了对另一半的用心和关爱。这样的礼物不仅独一无二,而且随着时间的推移,其价值会...