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

一个程序员之所以优秀,肯定要具备多维的品质。但如果一定要用一句话来凝练这所有的品质,我把它总结为:自我解决问题的能力

为了阐述它,我分享一个身边的例子。

前段时间,我负责一个web前端项目,其中需要一个“图像编辑器”。

坦率的说,要实现这个功能并不容易,一方面会涉及复杂的算法,另一方面要求对HTML5和JS6有精深的了解,同时还有良好的工程控制能力。因此,如果所托非人,做到最后很可能会烂尾。

于是,我把这个任务交给了团队中最优秀,也是我最信任的工程师小周。告诉他,请他为团队开发一个图像编辑器,具备基本的图形编辑功能,支持常见的滤镜,但不要用任何插件技术(例如Flash),工期一个月。

没错,上面就是我告诉小周的所有需求,没有原型设计,也没有任何文字描述。

这样看起来,我似乎是一个缺乏责任心的leader,但其实不然,我是典型的“看人下菜”。

平时,对那些能力一般的同事,工作过程,我会适当跟的紧一点。但对小周这种优秀的员工,基于以往的良好声誉,我却会大胆放手,让其全权负责。

虽然我的需求很“简单”,但之后暗含的工作却有很多:

  1. 有那些具体功能点?
  2. UI长什么样子?
  3. 采用什么技术?
  4. 是否要引入框架?
  5. 如何设计?
  6. ...

这些都没有人明确告诉小周如何去做,但是一个月的工期后,小周却完美的交付了任务。

整个过程,我俩没有进行过任何具体细节的讨论,我对整个过程的了解只是基于他cc给我的邮件。

小周首先了解到公司的其他产品也有图像处理功能,因此就给对方软件工程师发了一份邮件,询问对方是否能分享下源码。等拿到了源码后,就在此基础上开发了一个“绘图引擎”,直接节省了许多开发量。

然后,他又“把玩”了一些同类的产品,再根据自己对客户需求的理解,列出了一份详细的功能需求。

接下来,他又找到公司的UI设计师,列举了自己的需求,请对方为自己设计一个UI。

接下来就是具体的设计和编码工作。

虽然这只是一个单独的组件,工期只有1个月。但小周还是把这个一个月的时间拆分成4周,每周作为一个小冲刺,然后定时的把工作成果更新到demo服务器上。而我也是通过在线demo了解到更具体的进度。

当然,具体的开发过程中,小周必然需要学习,要进行架构设计,有技术难点需要攻克。但是,这些细节,小周从来没有为外人道过,也没有申请过额外的工期。

...

小周的表现堪称 “自我解决问题能力”的典范。

而一个具备这种能力的程序员,必然是一个优秀的程序员,必然会具备以下优秀品质:

  1. 高度的责任心
  2. 对需求的高度敏感
  3. 良好的沟通能力
  4. 优秀的学习能力
  5. 良好的设计能力
  6. 极强的编码能力
  7. 严谨的时间规划能力
  8. ...

同时,把这些能力整个起来,又会产生一个金子般的能力:领导力

因此还可以说,一个具备“自我解决问题能力”的程序员,必然是一个具备“领导力”的程序员。

大家可以想象一下,如果有升职机会,这样的程序员怎么可能不受到垂青呢?

因此,如果你是一名程序员,在追求优秀的路上,面对太多的说法,感到无所适从,那就请把这句话记在心里:“自我解决问题的能力”。因为它是一切优秀品质的综合投影。

欢迎工作一到五年的Java工程师朋友们加入Java架构师:697558955

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

猜你喜欢

转载自blog.csdn.net/java580/article/details/88575100