很多人问我,你是一个优秀的程序员吗?


我还差得远,但我在朝这个目标努力。


那么,怎样才能成为一个优秀的程序员呢?


优秀的程序员往往具有几方面的特点,这些特点里有的更重要,有的作用略低,我以个人的见解,为这些特点从低到高划分了5个星级。



1.兴趣


漫画:优秀的程序员具备哪些属性?


重要程度:


漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?




毋庸置疑,无论是IT还是其他领域,兴趣都是成功的第一推动力。


或许有人会问了:我对所有正经事都没兴趣,天生就喜欢吃喝玩乐,那我该怎么办啊?


没办法,对自己狠一些吧,想一想努力事业可以赚到钱,赚到的钱可以让你更好地吃喝玩乐。



2.逻辑思维能力


漫画:优秀的程序员具备哪些属性?

重要程度:



漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?



作为一个程序员,逻辑思维主要体现在两个方面:业务逻辑和算法。对于前者,只要用心思考,实现清晰的业务逻辑并不是多难的事情;但算法却不是一朝一夕就能掌握。


不过请放心,如果你不是一名Geek,不是一名算法工程师,不是一名ACM参赛者,那么算法对你而言并不是至关重要。笔者有一位架构师朋友在华为拿着70W+的年薪,我和他聊起快速排序的问题,他居然说不出快速排序的基本原理……



3.记忆力


漫画:优秀的程序员具备哪些属性?

重要程度:



漫画:优秀的程序员具备哪些属性?



漫画:优秀的程序员具备哪些属性?



漫画:优秀的程序员具备哪些属性?



漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?



漫画:优秀的程序员具备哪些属性?



漫画:优秀的程序员具备哪些属性?



记忆力对程序员重要吗?或许有些人会不以为然,其中包括当初的我:编程是一门灵活的学问,怎么能靠死记硬背呢?


当然不是死记硬背,但是记忆力有时候真的很重要。你写过的一行代码,你阅读过的一篇博文,你听过的一场技术分享 …… 都是一笔需要牢记的财富。


有人问了:我天生就记性不好,我该怎么办?


好记性不如烂笔头,只有勤做笔记,用“外存”弥补“内存”的不足吧。



4.自制力


漫画:优秀的程序员具备哪些属性?
重要程度:



漫画:优秀的程序员具备哪些属性?



漫画:优秀的程序员具备哪些属性?



漫画:优秀的程序员具备哪些属性?



漫画:优秀的程序员具备哪些属性?


漫画:优秀的程序员具备哪些属性?



无论做什么行业,自制力都是一项很重要的素质。兴趣固然是第一驱动力,但是人很难对一件事情永远保持着浓厚的兴趣,尤其是这件事变成职业以后(少数大神除外)。


正如最近流行的一句话:业余八小时做什么,决定了你的未来成就。保持良好的自制力,加上好的学习方法,可以让程序员一天天进步。不用太长时间,只需一两年,自制力够好的人就会比一般人高出不止一个档次。



5.运气


漫画:优秀的程序员具备哪些属性?
重要程度:



漫画:优秀的程序员具备哪些属性?



漫画:优秀的程序员具备哪些属性?



漫画:优秀的程序员具备哪些属性?



漫画:优秀的程序员具备哪些属性?



运气重要吗?可能有的人会不屑。笔者认为,对于一个刚出道的新人来说,遇上一个好的工作机会或是一个好的导师,绝对可以让人少走几年弯路。但是,随着人的实力增长,对运气的依赖程度会渐渐下降,直到他自己成为技术大牛以后,此人反而变成了别人的运气。


用金庸的武侠小说举个例子:令狐冲遇上风清扬,对于令狐冲来说是天大的运气,因为令狐冲实力太弱,风清扬可以给予他最好的指点。但设想如果东方不败遇上风清扬,并不会得到多少收获,因为东方不败已经足够强大,反而会看不起风清扬。


漫画:优秀的程序员具备哪些属性?


有人问了,我运气不好,又没有实力,我该怎么办?


请放心,看到这篇漫画的朋友,运气都不会太差。



除了以上总结的五个方面,优秀的程序员还应该具备一定的沟通能力、业务知识、耐心细心、强壮的身体、颜值等等,在此就不逐一阐述了。


关于这几方面的重要性分析,仅仅是笔者的个人看法,诸位有更多的想法,欢迎留言讨论。




—————END—————




喜欢本文的朋友们,欢迎长按下图关注订阅号梦见,收看更多精彩内容

漫画:优秀的程序员具备哪些属性?



原文始发于微信公众号(程序员小灰):漫画:优秀的程序员具备哪些属性?