一个程序员之所以优秀,肯定要具备多维的品质。但如果一定要用一句话来凝练这所有的品质,我把它总结为:自我解决问题的能力。
为了阐述它,我分享一个身边的例子。
前段时间,我负责一个web前端项目,其中需要一个“图像编辑器”。
坦率的说,要实现这个功能并不容易,一方面会涉及复杂的算法,另一方面要求对HTML5和JS6有精深的了解,同时还有良好的工程控制能力。因此,如果所托非人,做到最后很可能会烂尾。
于是,我把这个任务交给了团队中最优秀,也是我最信任的工程师小周。告诉他,请他为团队开发一个图像编辑器,具备基本的图形编辑功能,支持常见的滤镜,但不要用任何插件技术(例如Flash),工期一个月。
没错,上面就是我告诉小周的所有需求,没有原型设计,也没有任何文字描述。
这样看起来,我似乎是一个缺乏责任心的leader,但其实不然,我是典型的“看人下菜”。
平时,对那些能力一般的同事,工作过程,我会适当跟的紧一点。但对小周这种优秀的员工,基于以往的良好声誉,我却会大胆放手,让其全权负责。
虽然我的需求很“简单”,但之后暗含的工作却有很多:
- 有那些具体功能点?
- UI长什么样子?
- 采用什么技术?
- 是否要引入框架?
- 如何设计?
- ...
这些都没有人明确告诉小周如何去做,但是一个月的工期后,小周却完美的交付了任务。
整个过程,我俩没有进行过任何具体细节的讨论,我对整个过程的了解只是基于他cc给我的邮件。
小周首先了解到公司的其他产品也有图像处理功能,因此就给对方软件工程师发了一份邮件,询问对方是否能分享下源码。等拿到了源码后,就在此基础上开发了一个“绘图引擎”,直接节省了许多开发量。
然后,他又“把玩”了一些同类的产品,再根据自己对客户需求的理解,列出了一份详细的功能需求。
接下来,他又找到公司的UI设计师,列举了自己的需求,请对方为自己设计一个UI。
接下来就是具体的设计和编码工作。
虽然这只是一个单独的组件,工期只有1个月。但小周还是把这个一个月的时间拆分成4周,每周作为一个小冲刺,然后定时的把工作成果更新到demo服务器上。而我也是通过在线demo了解到更具体的进度。
当然,具体的开发过程中,小周必然需要学习,要进行架构设计,有技术难点需要攻克。但是,这些细节,小周从来没有为外人道过,也没有申请过额外的工期。
...
小周的表现堪称 “自我解决问题能力”的典范。
而一个具备这种能力的程序员,必然是一个优秀的程序员,必然会具备以下优秀品质:
- 高度的责任心
- 对需求的高度敏感
- 良好的沟通能力
- 优秀的学习能力
- 良好的设计能力
- 极强的编码能力
- 严谨的时间规划能力
- ...
同时,把这些能力整个起来,又会产生一个金子般的能力:领导力。
因此还可以说,一个具备“自我解决问题能力”的程序员,必然是一个具备“领导力”的程序员。
大家可以想象一下,如果有升职机会,这样的程序员怎么可能不受到垂青呢?
因此,如果你是一名程序员,在追求优秀的路上,面对太多的说法,感到无所适从,那就请把这句话记在心里:“自我解决问题的能力”。因为它是一切优秀品质的综合投影。
欢迎工作一到五年的Java工程师朋友们加入Java架构师:697558955
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!