现在已经有很多的程序员伙伴们已经是非常优秀了,也挺努力学习的,那么你有没有更深入的研究怎么样再上一个台阶呢?
作为工作了好些年的程序员,是否你的思想已经出现升华?目标不再是停留在“优秀”层面,而是打算向更高级别的“伟大”而迈进?现在的你想要让写出的所有程序都遵循自己的理念;现在的你想要成为编程方面的大师——而不是那种碌碌无为,守着.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开发者眼里看对方都会不同。盲人摸象,只有尽可能广泛的去触摸编程语言这头大象,它的形象才会更加完整。
懂得与其它程序员友好相处
程序员是一个奇怪的物种,这里面不乏有疯子,狂人,呆瓜和奇葩,当然你也可能是其中之一。如何和这些人相处是一门挑战,在这里,我推荐卡内基的《如何影响朋友和他人》,这本书很经典。
其实技术这些东西也真是博大精深的,你一不留神它就更新新的技术出来了,所以不断的学习还是非常重要的。
文章来源于:http://www.alqsoft.com/xinwenzixun/qitaruanjiankaifazixun/2014/0725/147.html
相关推荐
标题和描述均提到了“程序员的十层楼”,这一概念主要探讨了程序员在技术能力上的层次划分,旨在通过分析不同层级所需的技术水平,比较中国与西方程序员的能力差异。文章由多核编程专家周伟明撰写,他基于自身丰富的...
【程序员的十层楼】是一个比喻,用于描述程序员在技术成长过程中的不同阶段。这个概念主要是为了分析和比较中国与西方程序员的技术水平。通过设定不同的技术层级,我们可以更清晰地了解程序员所需掌握的知识和技能,...
但从标题“程序员的十层楼”推测,这份文档可能旨在通过一系列编码示例或编程规则来隐喻性地描述程序员的成长过程或者编程技能的不同层次。以下是对该文档中所涉及知识点的解读: ### 一、程序员成长的十个阶段 1....
本书《程序员十层楼》通过对程序员技术能力的细致划分,提出了一个包含十个层次的程序员技能体系,以帮助读者更清晰地了解和定位自己的技术水平。在这一体系中,作者周伟明从自身丰富的软件开发经验和对程序员职业的...
"程序员成长的十层楼" ...在这个道路上,我们需要不断学习和实践,提高自己的技术水平和能力,爬上更高的一层楼。同时,我们也需要互相帮助和学习,携手用思想的碰撞火花放飞心中蕴藏已久的梦想。
标题和描述中提到的“程序员的10+1层楼”实际上是一种比喻,用来形象地描绘程序员技术层次的提升过程。这种层次划分并不是一个官方的标准,而是基于个人见解的一种分类方式,旨在帮助理解和评估程序员的专业技能水平...
### 程序员的十层楼:技术成长之路 #### 第一层:菜鸟阶段 - **定义**:作为程序员职业生涯的起步阶段,菜鸟通常具备基本的计算机操作技能,并且掌握了一门或多门编程语言(例如C/C++、Java、JavaScript等)的基础...
【程序员的十层楼】这个概念是对程序员技术能力的一种阶梯式划分,旨在分析和比较不同层次程序员的技术水平。...无论是中国还是西方,优秀的程序员都需要不断地攀爬这十层楼,以保持自己的竞争力。
在IT行业中,计算机软件水平是衡量一个人在编程和软件开发能力的重要标准,特别是对于初级程序员而言,这标志着他们进入...在学习过程中,结合实际项目练习和不断的技术更新,将使个人在IT领域的专业素养更上一层楼。
通过阅读《C语言高级程序员编程指南》,程序员不仅可以提升自己的编程能力,还能掌握解决实际问题的方法,从而在软件开发领域更上一层楼。无论是在系统编程、嵌入式开发还是大型应用程序的构建中,这本书都将成为...
这本pdg格式的书籍共计十章,内容涵盖了325页的知识点,大小为3.72M,适合那些希望在C语言编程领域更上一层楼的程序员们。 首先,第一章通常会介绍C语言的历史和发展,以及其在现代软件开发中的地位。C语言因其高效...
这篇讨论将深入探讨这些非编码技能,帮助程序员在职业生涯中更上一层楼。 首先,我们需要理解的是,良好的问题解决能力是程序员的基本功。这不仅包括对技术难题的解决,也包括如何有效地分析和定义问题。这需要逻辑...
总的来说,《程序员的思维修炼-开发认知潜能的九堂课》是一本深度挖掘程序员心智成长的指南,它不仅关注技术层面,更注重提升个体在复杂项目中的适应性和创新力,帮助程序员在职业道路上更上一层楼。通过阅读和实践...
在编程世界里,设计模式是解决常见问题的模板或最佳实践,它们被广泛应用于软件工程中,以提高代码的可读性、可维护性和可扩展性。本资源“Windows设计模式...通过深入学习和实践,你将能够在编程道路上更上一层楼。