国内的架构师到了三十岁以后很多就往理论上跑,而国外的架构师在往上发展的同时保持下面的编程体验,所以国内多水王,而国外则多大师。---江南白衣
软件开发通常被认为是一个相当体面的工作,有很好的工资待遇,工作具有挑战性,市场对程序员的需求量在增加,而且工作环境很安全。但这些都是表面的,真实的情况是,干了多年开发后,会不自然的进入思维误区,以为自己在做正确的事,其实所谓的正确早已变成了对立面。在中国是很难快乐的做一辈子的程序员的,如果您立志于此,那么,很抱歉,恐怕没有太多公司会认同您的意志。首先要确定的一点是:代码是廉价的。在国内程序届很少有德艺双馨的老程序员的(那些名气很大的确实是很多都不写代码了,所以不能再称为程序员了)。程序员不是艺术家,更不是医生,您写的代码或许很快就被淘汰。前面是断崖,后面是前仆后继,说不定会在睡梦中突然惊醒,然后发现自己冒了一身冷汗。
那么,程序员会恐惧什么呢?大概有以下几点:
- 代码是廉价的
- 软件行业快速的更新率
- 能力和工龄并不成正比(又称为“逆水上扬”)
- 生活的压力
- 不能做一辈子的程序员
但,我们的目的不是对职业的恐惧,而是建立在恐惧之上的逻辑。
代码是廉价的
在从事这个行业时,首先需要确定的一点是:代码是廉价的。在工作中,您所珍视的每一行代码,在别人看来可能都是“垃圾”。或许在几年后,重新审视当年的代码,也会有很多不尽如人意。删起代码来,要像剪杂草一样简单。同时,从侧面也说明了,您的工作也无非如此而已。所以,您所珍视的能力,也无非如此。
代码就是这样,一遍遍重构,一次次删除,随之而来的是一批批新人代替了旧人。没有永恒的程序,也没有永恒的程序员。所有的都不过是一个过客。有时,您会很自豪的说,某某软件是自己的杰作,但是,过了一些年后,您还能说那些软件是您写的吗?您所写的部分早已经烟消云散了。
代码是廉价的,程序员也是廉价的。程序员无非是实现了他人的意志,扎克伯格的伟大是在他不再是程序员之后,所有想成为扎克伯格的程序员,他们的概率比中彩票还难。
软件行业快速的更新率
软件行业的更新率是在所有的行业中最快的,每天都有新技术出现,然后是新的概念,新的思维,新的方式。想想那些坚守在微软阵营的老程序吧,他们可能感觉自己过的很好,但也未必。互联网就是这样,新老技术互相更替。永远不可能指望一种语言永远兴盛。现在想想塞班系统,可能很多年轻人都没听过,但是它离开我们也才几年而已,但我们感觉就像是过了几个世纪。
在技术的更新换代中,程序员不得不逼不得已学习或使用一个特殊的技术。任何一个开发人员都有他偏爱的编程语言、工具和技术,同样,他们也有不愿意去触碰的东西。每个人都知道这是一个误区,但又有多少人勇敢的跨了过去?
软件行业的另一个更新换代是人员的更新换代。现在由于互联网的兴盛,程序员基本上可以批量生产了。现在无数的职业培训机构和线上教育,几乎是任何人都可以在很短的时间内胜任开发工作。从业者在膨胀,行业呢?今年的形势不容乐观。
逆水上扬
不是所有的老程序员都比新程序员更好,就如一个写了三年VB的人不一定在开始一项新技术的时候比一个在这项新技术上写了一年的程序员更加优秀。工龄并不能代表一切,也就是所谓的“逆水上扬”理论。
一个写了多年VB(只是做个示例,并不是说VB不行了)的程序员,在某一天忽然发现再也无法找到行业里的工作了,然后转到了例如VR这样技术,两个完全不相干的技术,之前的工龄能说明什么呢?我想大家都很清楚。但是,一个在新技术刚兴起时就参与其中的新人,在随着技术的成长中逐渐把握了核心的技术能力,他能不能替代那些之前有不相干程序经验的老程序员呢?答案显而易见。
所以,老程序员不要在为自己的经验沾沾自喜了。后生可畏啊!还是那句话,互联网行业,变化太快。
生活的压力
纯粹的程序员的工资是有上限的,因为中国很多公司是业务型的公司。实现功能,您会,他也会,但是您比他贵。而且,随着年龄越来越大,会有很多事情分心,老程序员再也不能像毛头小伙子一样没日没夜的加班了,一是没那么大的精力了,二是家庭也不允许。由此说来,公司更喜欢哪些程序员呢?老的,还是年轻的?
不必惊讶,虽然市场对于开发人员的需求量很大,但仍有很多人仍会担心丢掉饭碗。随着年龄增大,承受的压力也越来越大,再也不是一个人吃饱全家不饿的时候了。一个大龄程序员的失业是很可怕的一件事情。
不能做一辈子的程序员
厨师可以做一辈子的厨师,年纪越大的医生越值钱。对于那些经验型的行业,他们才是一技傍身。但是,程序员呢。我想没有人会认为程序员是一辈子的吧,尤其是在中国。结合开头的那句话,中国多水王,就是如此。
如果您在一个公司,您会发现您的领导或领导的领导,年龄并不是很大,但也只能称为曾经的程序员了,他们不再编写代码,慢慢的他们就不会写代码了。他们的今天就是新人的明天。现实就是这样。
程序员的最高境界是不写代码,那么程序员的核心竞争力是什么呢?
- 坚持学习
- 不只是在写程序
- 视野和全局观
- 影响力
坚持学习
技术人生如逆水行舟,不进则退。在一定深度之内成为一个“杂家”并没有什么不好。其关键在于所学的跨领域知识,能否成功的运用到工作中去。这里的跨领域,并不是要求大家都成为每个领域的专家。最重要的是有一门敲门砖,学习的引子。要保持一种好奇心,触类旁通就是这个道理。
但这只能支撑您工作的前十年,可能十年也显得太长。一个老程序员是要承担起更多程序之外的东西的。
不只是在写程序
程序员在职业发展中有两个路子,一个是转管理,一个是成为技术专家。但中国很多公司把两者混为一谈了。也就是做技术的不只是单纯的研究技术,还要做些技术之外的工作,比如人员培养,需求分析,架构设计,部门交流等等。
在一件事上做久了就很容易进入思维误区,写程序本质上是解决问题,很容易陷入到具体之中而忽略了全局。在技术精进的同时,关注些需求和管理上的学问,不失是个很好的补益。
中国是一个人情社会,有人的地方就有江湖,江湖就是人情世故。
视野和全局观
高手在编程效率方面可能并不比普通程序员快多少,因为他们会吝啬自己敲下的每一行代码。这种“吝啬”有两方面的含义,一是项目的架构性和整体性考量,二是从性能和优化的角度进行Coding。其实,这里所映射的是一个开发者的技术视野。
在确定了整体之后,落实到具体的模块实现,每一行代码不但有上下文的考量与规划,还要具备模块间的整体布局。这是模块内的技术视野,比如接口的定义、注释的可读性、代码的执行效率等。当你写下一行代码前,要考虑它是否会对整个系统造成影响,是否方便其他接口进行调用,这些都是一个开发高手的“技术潜意识”。
不要拘泥于您现在的工作,每个人都是需要成长的。一个人能成为什么样,其实很多时候都在于他能看到多远。
影响力
影响力与人际理解力、服务经神等素质的核心区别在于,影响力是为推动他人达成个人所期望的目标而服务;而人际理解力与服务精神更多是为帮助达成他人的目标而采取行动。在程序员的成长中需要建立自己的影响力和他人的认可度。我们所看重的成功人士不就是基于他的影响力而来的吗?能量越大势能越大。
最后,我想说的是,上面说的很可能都是错的,事物总在发展的,没有包治百病的良药,世上也不会只有几种疾病。我只能说,我所知的很少,最多是个借鉴,供大家一笑罢了。世上的路很多,方法也很多。归于人生,有太多的未知和不确定。优秀的程序员都是聪明人,聪明人有很多捷径。