很多人都觉得编程是一个比较特殊的职业,整天的加班,想不起来陪媳妇或陪老公。还整天自嘲为码农,屌丝等等。这是传统意义上的一个程序员的真实写照,但优秀的程序员都具备什么特质那?
对编程特别喜欢,听到说编程的坏话就会急眼
真正的编程的高手,从骨子里是非常认可编程这份职业。而且中间不会有转行业这个想法,而且会作为一辈子的事业忠诚的对待。别看他们自嘲为码农或者搬运工,但是你真要说编程这个职业不行,真会给你急眼。会以工匠精神对待这份职业,都会的认真对待遇到的每个知识点,兢兢业业,持之以恒。
之前在看到一个帖子,有个学美术的自称学了半年就能独立做游戏,由此这结论编程也就这么回事。结果引起了一群高手的狂轰滥炸,在追问下这哥们就是利用cocos2d-x游戏引擎做的开发,被大家一顿讽刺,最后直接不说话了。有个好心的哥对美术哥指出。大家之所以喷你是因为你没有站到尊重别人的角度去思考问题。有的人是真的对编程充满了热爱,你的话相当于侮辱了他们,换位思考,如果别人侮辱你,侮辱你热爱的行业,你会不会生气。如同别人说你家孩子这也不好,那也不好,你能受得了?
基本上都有职业病,眼疲劳,颈椎病是最常见的
任何一种职业都存在不同程度的,对身体的损伤。程序员由于整天盯着电脑,长期坐着。职业病就该出来找你麻烦了,水平越高,职业病表现的越明显。水平的高低和付出的时间是成正比的。所以建议热爱这份职业的或者为了养家糊口进入编程行业的,多去参加一些户外的运动,特别是羽毛球,对颈椎的恢复效果不错。
因为热爱所以即使会得这么多的慢性病,但从未想着转行,毅然选择坚守,是真爱。
极其注重提炼编程思想,语言以工具对待
编程是一个认知知识技能的过程,对同一个事物的理解,随着知识层次的提高感受又不同。目前存在各种的编程语言,各种项目千差万别。所以想靠一种语言打天下或者掌握一个项目技巧就想一通百通很难。而编程思想就能概括一些场景,就能以抽象模型的方式提炼出来。
特别一些架构师,未必真是什么语言都懂但是能通过抽象模型,提炼融合成一个系统,让这个系统能经得住各种环境的压力测试,并且能够真正转化为到用户手里能用的产品,这仅仅是靠掌握几种语言是办不到的。说到这里并不是强调编程语言不重要,作为一个优秀的程序员必须有一个特别熟练的语言,这是最基本的基础。有了一种熟练的语言再去切换到别的语言,触类旁通就比较容易。
在学习过程中不要过份对于一门语言推崇,可以适当分散点时间提炼编程思想。多去研究一些设计模式,工程思想。
持续优化代码,对写的代码不停的打磨,直到自己满意
优秀的代码都是经过千锤百炼出来的,在软件行业叫代码重构,实现同样的一个功能不停的找到更优的解决方案。这点在google的chromium代码更新速度就可以看的出来,看代码的更新绝不是仅仅增加某个功能,对于之前的老代码有了新的想法就会立即尝试,这点可能和我们平常开发一个工程软件有点相悖,这要在建立在对代码超强的驾驭能力的基础之上。google集合了全球2000多名工程师在做一个浏览器项目,并且这些工程师分散在全球各地,沟通是个问题,貌似很多不可能的事情在这都不是问题,对google确是个例外。在google环境下锻造出来很多牛逼的工程师绝非偶然,环境氛围感染着大家去这么做。
浅尝辄止绝不会让自己磨练成高手,让自己做的每一件事情,每一个细节,都尽力做到最好,才会锻造成精品。
不排斥新技术,不停的在新技术中提炼自己专业技能,活到老学到老
很多程序员都感叹技术更新太快,软件行业本身是一个更新速度比较的领域。真正的高手从来都不排斥技术的更新,反而特别关注一些前言的新技术,为随时转变到新技术作准备。不断的让自己的之前的技术认知融汇到新的技术中去,也不会因为自己年龄增加而停止对新技术的学习。
在国外一些比较大的公司里,一些四十多岁的工程师还是大有人在,在中国都被称为怪物了,会被人认为这么大年纪了还在苦逼的写代码,没办法中国的软件人才的更新换代太快了。一批批的毕业生走向编程界,其实一些真正技术公司对于一些年龄大的技术人员持欢迎的态度,经验也是本钱,家有一老如有一宝,年龄绝对不是自己不去进取的理由。