我的位置: 主页 > 青鸟问答 >

优秀的程序员和一般的程序员差别在哪?

2019-10-24 15:30
来源:北大青鸟实力IT教育
[导读]要想成长为一名优秀的程序员,其过程是艰巨的,其道路是漫长的。 不经过悉心栽培,花儿开不出鲜艳的花朵;不经过时间的历练,幼苗长不成参天大树。在软件行业更是如此。如果纯以编码能力来看,程序员可以分为五类,依次是: 01 新手型 当产品有功能需求时,

要想成长为一名优秀的程序员,其过程是艰巨的,其道路是漫长的。

不经过悉心栽培,花儿开不出鲜艳的花朵;不经过时间的历练,幼苗长不成参天大树。在软件行业更是如此。如果纯以编码能力来看,程序员可以分为五类,依次是:
 

01

新手型

当产品有功能需求时,由于经验有限,程序员并不完全知道要如何实现这个功能,需要通过学习、寻找资料等方式来解决问题。

这种情况下的编码过程,程序员的主要目标是“完成功能”,那么很难有多余的心思去考虑边界条件、性能、可读性、可扩展性、编码规范等问题,因此代码bug可能较多,稳定性不高。常常会发生开发花费1个月,改bug却要改上好几个月的事情。

 

02

拷贝型

拷贝型选手就是传说中的“代码拷贝员”了,他们对实现功能几乎没有思路,所作的事情就是从网上或是之前其他团队成员写的代码中拷贝出片段,然后放到项目中,如果运行项目出现了期望结果,则表示任务完成。

这类人只会改代码,却不会写代码。他们大多对编程毫无兴趣,只是希望以此糊口;又或是加入了平庸的团队,无法感受到技术的魅力。

 


 

03

学习型

这类程序员对所在领域的语言已经比较了解,对于一般功能可以有较为清晰的实现思路,给出需求时可以通过自己的思路来实现,并且会一定程度上考虑边界条件和性能问题。

但仅此而已,他们对可读性和可扩展性考虑很少,也没有项目级别的考虑,主要是希望通过实现代码来练手或是学习。

这类程序员最大的表现在于喜欢“创造代码”,即使有现成的实现,他们也希望自己来实现一套,以达到“学习”的目的。他们不喜欢复用别人的代码,看见项目中别人实现了相类似的功能,他们会以“需求不同”的借口来自己重新实现一套。

这类人一般来说对技术有着较为浓厚的兴趣,希望能够通过项目来进行学习;从项目的角度来说,这种做法最大的麻烦在于开发周期可能较长(相比直接使用现成的实现),并且会使得项目代码膨胀,影响未来的维护;但这类程序员由于有兴趣,如果好好培养或许会成为明天的牛人。

 

04

实现型

这类程序员一般有较为丰富的经验,由于写得太多,因此不再追求“创造代码”来进行学习,同时对所在领域可能涉及的很多第三方框架或是工具都比较熟悉,当接受到产品需求时,对功能实现方案已经了然于胸,因此他们可以快速的实现需求,并且对边界、性能都有一定程度的考虑。

因为能够快速实现需求功能,经常会被团队评价为“牛人”。但他们一般仅仅停留在“完成功能”级别上,对代码的可读性、可扩展性、编码规范等考虑较少,对项目总体把握也较少(例如控制项目膨胀、方便部署等架构级别的东西)。

这类程序员最大的表现在于喜欢“开发项目”,却不喜欢“维护项目”。他们产出的代码最大的问题就是维护较为困难,可能过上几个月回头看自己的代码都会晕头转向。因此即使是自己写的代码,仍然不愿意维护,一般会苦了后来人。

因为接口设计的缺乏,当需求变更时,发现代码要改的东西太多,然后抱怨需求变化,却很少认为是自己的代码问题。

这样的项目如果经过长时间的变更维护,最终会变得难以维护(一般表现在需求变更响应时间越来越长)甚至无法维护,最终要么是半死不活,要么是被推倒重来。

 

05

架构型

这类程序员比实现型更进一步,他们经验丰富,对相关框架和工具等都很熟悉,“完成功能”“稳定性”“性能”这些已经不再是他们的追求,更优美的代码、更合理的架构才是目标。

这类程序员接口设计大多建立在对需求变更的预测上,即灵活又不过度设计——可扩展性好;代码细节也尽量多考虑边界情况,性能——稳定高效;代码命名、注释及逻辑分离都恰到好处,语义丰满——可读性较高;

同时在开发过程中他们会不断重构,对代码做减法——保证项目可持续发展;等等。但由于考虑问题较多,单从“实现功能”阶段来看,完成速度不一定会比“实现型”要快。只是到了项目中后期优势才会慢慢体现出来。
 

怎样成为一个优秀的程序员?

1、要懂逻辑。

这点其实挺难达到,很多很不错的程序员其实逻辑能力不行,所以限制了他们更深一层次的发展。或者说限制了他们解决特别复杂问题的能力。一个优秀程序员的思维是清晰的,在写代码时,他的脑海是有一系列详细步骤的,即知道他在做什么,而且写下的每一步他都能清楚的知道在表达什么。

 

2、要有分析能力

这也是解决复杂问题不可或缺的能力。出现问题以后他会详细的先研究问题出在哪里,思考缘由,而非闷头瞎使用printf大法,然后去撞大运,头痛医头,脚疼医脚,因为这样解开了Bug其实连自己都心虚。而优秀的程序员即使解开了Bug,他也会扩展问题,并且思考是否其它部分是否也有类似的问题,只是还未体现,而且他也会详细反思获得的经验。

 

 

3、要会自学

技术发展速度很快,如果没有自学能力会被淘汰的。所以在中国英语要好,不然看不懂最新的技术走向。

 

4、要有良好的工作习惯。

一个优秀程序员的编码习惯是良好的,他的代码读起来是赏心悦目的,若遇到难理解的实现点时,他也会写下清晰的注释来帮助后来人理解,因为他知道代码不仅是让计算机执行,更是需要让别人也理解的,因为项目开发是团队合作,而非单打独斗。与优秀程序员的合作是愉快的,而非觉得难处。
 

 

声明:北大青鸟长沙实力所推送文章,目的在于分享知识,部分内容和图片源自网络,若图片及文字言论涉及版权问题,请联系公众号:csslxuexiao 我们会在第一时间删除处理,谢谢!

相关热词搜索: 推荐
申请免费学习IT技术,参观实力校园环境!
我要预约

我们将在24小时内联系您确定报名信息