程序员所应该掌握的能力

从毕业到现在已经好几个月了,自己以前在学校搞的东西全部是小打小闹,不仅没有深度,连最基本的皮毛都没有粘上,对于知识的把握程度是在太低!到了工作岗位上,才知道自身的不足,当然也就真正地认识到身为一个程序员所应具备的能力!

良好的基础编程

作为程序员的素质之一,编程是我们每天都要面对的东西,可以说不管什么样的算法、想法、架构最终都要落实到具体的程序当中。因此,一个有着良好的编程基础的程序员在这方面会显得得心应手。这点是需要大量的经验以及知识储备才能够做到的。单纯学一门编程语言,其实难度不大,意义更不大。但是要想有良好的编程能力,那么,思维习惯上的锻造显得是很重要的。从开始学习C语言开始,到现在接触到各种形形色色的语言,其中的语法特点都差不多,那为什么还有这么多的语言存在呢??何不统一使用一种语言??原因就是不同语言的思想风格是有所不同的,掌握不同的语言不能只是为了会用,更要知道这个语言想要表达的东西和其他语言想要表达的东西的不同。比如说:C++,就是一种面向对象的体现,我们学习C++不是学习他的类的构造等等语法的问题,而应该知道C+的设计架构以及它所推行的面向对象的思想。不过这一点,我到现在也没有掌握,也是由于编程能力的不足。

良好的算法思维

都说程序员是十分懒惰的人,更说懂的偷懒的程序员才是一个好的程序员。原因就是好的程序员的素质体现在其良好的算法思维上,同样都是任务,如果程序员只是很机械的完成了任务需求,而不管很多细节的优化的话,那么其劳动价值是很低下的!相反,在完成需求的同时,合理的利用良好的算法,提高程序的执行度,从而提高程序的执行效率,这样的一种程序员必然是属于优秀的。不过程序员的算法思维的培养更需要的是逻辑方面的能力,算法的设计和逻辑分析的理解者都是一些较为深层次的东西,而这些东西是脱离了程序本身而存在的灵魂,可以说没有算法的程序是一个没有灵魂的机械执行体而已,不会有算法思维的程序员也只是一个帮助实现程序的机械加工人员。

良好的沟通能力

程序员的形象并不是一个个天才怪童,一个个戴着眼镜埋头苦干的宅男,如果这样理解程序员的话,可能真的有失偏颇。一个好的程序员在拥有良好的编程技能的同时还应该具备良好的沟通能力。这个能力对于一个程序员而言尤为重要,与客户的沟通才能够真正掌握需求,否则闭门造车,造出来也不会有人要。软件开发不是科学研究,可以按照自己的想法一路追寻下去,我们必须通过良好的沟通去规划处程序的框架。不是说人与人之间的沟通真正能相互理解不出偏差的部分是很少的,在沟通中因为每个人看待问题的角度以及个人的思维习惯会导致我们对于一个问题的处理方式和设计思路大相径庭。因此,沟通显得如此重要,如果没有沟通,很难想象出来如何才能完成一个好的软件设计!

强大的扩展学习能力

作为程序员,典型的理科学生,学的是以数学和逻辑为主的学科。但是,在实际工作过程中,我们得接触到很多专业之外的知识,我记得我大学软件工程的老师讲过,我们程序员就是要去做一个自己都不懂的东西给懂的人看。我们必须随机应变,不断的更新自己的知识库,以应对突发而来的需求,而我们本身并不是客户领域的专业。我们所要做的是透过专业之外做专业内的事情。因此,扩展学习的能力是如此的重要。

追求艺术的心

如果说能够做到上面几条的话,那么作为一个优秀的软件工程师足矣,也可以说是一个技术大牛了。但是,任何东西升华到一定层次的时候,都是一种艺术。乔布斯很大程度上就是一个艺术家,他懂得了将苹果这样一款智能手机做成了艺术品。试问有几个人买苹果是为了追求它的功能呢?很大程度上是感觉苹果是一个思维结晶的艺术品。当把一件事当做艺术来做的话,那么做出来的东西才能算是完美的。实现了功能是一个基础,良好的结构是中流砥柱,但是最后还需要精美的修饰,程序员如果能够拥有一颗追求艺术的心,他们在工作之外他还获得了很多的快乐!
作为一个程序员,我所知的实在是少之又少,但是看过很多的优秀的程序员之后,感觉作为一个程序员要拥有者超过程序开发本身所需要的素质和能力,那么才能是一个优秀的程序员。任何事情都是一样,只有以艺术般的追求去塑造它,它才能出类拔萃!


你可能感兴趣的:(程序员所应该掌握的能力)