转载来源:http://blog.csdn.net/foruok/article/details/50323093
这节会谈到对程序员来讲至关重要的三点:
前文书咱说过,30岁是所有人都会面临的人生转折节点,那对于程序员来讲,这样的节点,有什么特殊的表现和含义呢?且来水水。
软件现在已经成为各行各业的基础服务,它具有非常特别的属性:软件本身形成了一种产业,它又和其他产业结合形成了交叉领域。
说白点,纯粹的代码没有意义,解决现实问题是软件存在的最大意义。而现实问题来自各行各业,所以,大部分的软件产品,是软件技术和行业需求的有机结合。
所以,多数程序员的工作方式是这样的:使用某种开发工具、通过编程语言来实现一个解决特定问题和需求的软件。有了这样的界定,真的可以开始水了。
程序员需要掌握编程语言、应用框架、开发工具等这些具体的知识和技术。这是第一点,必须的。
不同的语言和技术,都有特定的应用场景,这种语言解决这种问题效率高,那种语言解决那种问题效率高。
随着人类社会的不断发生发展,随着信息化和互联网化的不断深入深化,现实问题越来越多,越来越复杂,老的知识、技术在面对新的问题时可能力不从心或效率低下,所以不断有新的语言和技术问世,比如Go、比如Scala、比如Swift、比如ROR,都才出现没多久,都是因为特定领域问题而出现的。没有最好的语言,只有最合适的语言。
面对这样的现状,程序员就需要保持学习,为了更好的解决问题,可能需要掌握多种语言和技术,而且会随着社会的发展和技术的发展不断地调整自己的知识、技术图谱。
所以,早在几千年前,我们的儒家经典《大学》就预料到了将来会有程序员这种人群,对他们的生活做出了概括性的预言:“苟日新,日日新,又日新”。
OK,这就是程序员面临的知识、技术现状,所以有人觉得过了30岁奔四张去的时候,家庭事业两头忙,身心疲惫精力不足没时间充电没时间学习不再适合做程序员了。
这是一种现状,当然它对某些人如此,对另外一些人则不然。其实,31~44岁,正是人年富力强精力旺盛创造力爆棚学习能力焕发第二春的黄金阶段啊。不信你去看看舒伯的生涯彩虹图,一看便知。
举个例子,王江民就是这个时候(38岁)转做软件开发,后来(45岁)一骑独行白衣飘飘杀进中关村创造了江民杀毒的传奇历史,塑造了一代软件神话。
在30岁到44岁这个阶段,如果你还在做程序员,对自己的学习模式一定有所了解了,加上之前的积累,学起新东西来很快,应该会不断收获举一反三触类旁通的愉快体验。
对程序员来讲,知识、技术是一方面,是容易习得的,是较浅的层面。那较深的层面,就是技术能力与阅历。
技术能力是指,对具体的知识和技术的运用水平。它在很大程度上决定了一个程序员身上的技术价值。
技术能力是在不断地运用知识、技书解决现实问题的过程中培养出来的。在这个过程中,有的人爱琢磨好总结能升华,技术能力提升就快,干一年可能能收获一般人两三年的技术经验;有的人可能会停留在写段代码写完了事儿这种层面,那可能干三年不如人家干一年。
《天龙八部》中的神仙姐姐王语嫣,很多少年看了都很喜欢。从IT的角度看,她实际上就是一个掌握了很多知识、技术的字典型程序员,但不会实际开发。当然,她也可以是很妙的程序员鼓励师,既能极大激励程序员的干劲,又能在必要时提供字典式的帮助与指导。
与王语嫣对应的另一个人物是扫地僧,超越了知识、技术,阅历极深,不拘泥于招式,一抬手一投足就拍“死”了慕容博和萧远山这种超强高手。他是我们专业技术者的梦中梦。
扯了这么多,我想说的是,技术能力和阅历,随着程序员年龄和工作经验的增加,其重要性和价值将超越知识、技术本身。这是我们必须意识到的,这也是老江湖的价值所在。
你可以在三两个月学会服务端开发,但如何应对大用户量、大业务量、大数据、大并发带来的挑战,绝对不是一个小白三两个月能搞定的,不积累个五年八年,不随着企业的产品、服务的发展而经历技术架构的变迁,你很难有能力去解决这些问题。
大部分软件是技术和业务的结合,甚至有的行业软件,开发技术只占20%,80%的都是业务层面的知识、流程。所以,对于一个程序员来讲,熟悉业务也是非常重要的。做电商网站和测绘软件绝对是天差地别。
业务和行业紧密相关,你选择一个行业,选择一家企业,就会决定你能积累的产业、业务知识、经验。而这部分业务积累,是程序员的重要价值所在,它和技术阅历一样是经得起时间考验的。
有句老话,早已告诉了我们业务积累的重要性:隔行如隔山。还有一句老话也说明了同样的道理:男怕入错行。
学一门编程语言容易,深刻理解业务却没那么简单。而你不理解业务,空有编程语言和应用技术框架,实际上没什么卵用。这就是我们强调业务积累的原因。
我在“程序员的年龄天花板”一文中曾经提出过软件企业的分类:
这里结合前面提到的“技术人生的三个方面”再啰嗦一下。
外包型公司,通过承接别的企业的部分或全部软件业务来发展。这导致了业务不稳定,编程语言、技术框架等技术方面也不稳定。
外包型公司做软件的心态,是“干活、交活、拿钱、完事儿”。在这样一种心态支配下,程序员较难有机会仔细打磨产品,对技术能力的积累会有一些影响。另一方面,因为业务随时会变,对行业知识积累也会有较大影响。
还有,从企业角度讲,考虑成本的话,更愿意用成本低的年轻人,所以,大龄程序员的将来,在这种公司不够乐观。你一个35岁的程序员和22岁的程序员,做同样的App,老板不会觉得你35岁就比22岁做出来的东西好多少,他会认为年轻人多加个班多改改就差不多了,这时候会产生劣币驱逐良币的效应。
项目型公司通过承接电信、银行、电力、政府或其他单位的软件项目为生,比外包型稍强一些,技术上可以自己选择,也能够在某个行业长期积累经验。如果这类公司的项目规模小而多、行业不集中,那就与外包型公司类似。另外,做项目的心态和外包有些类似,对成本的考量较多,对程序员的持续技术发展不利,比如有新技术出现,公司不一定会用,可能为了快和规避风险而选择较老较趁手的技术来完成项目,这一方面会减缓开发人员的技术更新周期,另一方面也减少了锻炼机会降低了技术成长速度。
产品型公司是最好的,一个产品,要产生竞争力,要么靠对业务的深刻理解,要么靠技术上的领先优势。这类公司是对程序员的技术阅历、业务知识都很有好处,我认为是程序员的较好选择。
通过前面的分析,我们知道程序员这种技术性职业,价值体现在三点:
用一句话来概括,程序员最大的价值就是运用技术解决问题的能力。而这种能力的构成里,技术能力与阅历、业务这两方面是具有经久价值的,是相比语言、技术更耐得住时间考验的。
程序员的将来,就与价值维系有关,可以参看我发布在微信订阅号“程序视界”的文章“程序员保值的四个秘密”。在我们进一步展开阐述之前,需要先看看四大职能取向。
一般来讲,有常见的四种职能取向:
管理者又分为职能管理者和全面管理者。CEO、总经理之类的角色属于全面管理者,开发经理、研发部门经理、项目经理、项目总监、HR经理等属于职能管理者。
专业技术者指靠技术吃饭的人群,比如程序员,比如测试工程师,比如UI设计师,比如会计,比如律师,比如编辑……这些人的一个共同点就是拥有独特手艺和技术,能用自身所掌握的技术为别人解决问题创造价值,他们通常会依附一个组织来工作。
自由职业者首先是一个专业技术者,然后他脱离了特定组织,自己跑单帮了,自己安排自己,今天想干就今天干,老子今天不爽就明天再干。
创业者是特殊的一类职能取向,他们特别想拥有自己的产品和服务,于是就拉一帮人成立一组织,协调各种资源来实现自己的梦想。
程序员的职能取向,多数会落在专业技术者。我个人来讲,做了6、7年管理,现在还是回到了专业技术上来,因为做具体技术工作会让我更自然更自在也更快乐。每一个程序员都应该理清自己的职能取向,只有职能取向清晰了,谈将来才比较靠谱。
有人说,三十出头的程序员,如果你混的不够成功,面临的压力就会山大。话听起来没错,不过也不尽然,这里面有个关键的问题需要澄清。那就是“成功”的定义。
世俗的成功,古时候是“十年寒窗无人问,一朝成名天下知”,是“春风得意马蹄疾,一日看遍长安花”。现在也差不多,财富更多,老婆更多,社会地位更高,不过如此吧,你看流布甚广的“当上CEO,迎娶白富美,走上人生巅峰”之类的说法就是这种观念的反应。
但我这里说的成功,是指找到适合自己的职业,完成自我实现。简单点说,就是你在干你想干的事儿,又有成就感又快乐。就这么简单了。
我们不必活在社会统一的价值取向里,也不必活在别人的期望里,你的人生是你自己的,哪怕父母非要你成为一个什么样的人,也不必去听。
有了这样的基本认识,就可以继续了。
程序员的直接发展通路如下:初级工程师–>中级–>高级–>架构师(专家)–>技术总监–>CTO。
技术总监和CTO带一些管理职能,也可以从另外一条路上来。这条路就是程序员的管理之路:工程师–>项目组长–>项目经理–>项目总监–>技术总监–>CTO。
一条技术通道,一条管理通道。这是程序员常见的职业晋升通道。
除此之外,还有一些交叉发展的机会。比如开发转测试,开发转产品经理,开发转售前,开发转售后,开发转销售……
最后,还有一个选择,就是离开软件行业,到别的行业里自由自在的飞翔。啊哈,朋友再见,朋友再见,再见吧再见吧。祝你好运。
走管理路线的人十不其一,这次不谈也罢(回头我会写文章聊);转做别的职业的朋友们我已经说了再见了;那剩下的,就只能说说技术这条路的将来了。
其实这原本不是一个问题。你说,哪行哪业没有老将?
而这之所以又成为一个问题,是因为程序员是“有知识、有技术、有理想、有焦虑”的四有新人,觉着自己已然学了那么多,付出了那么多,将来总不能停滞不前吧总不能走下坡路吧总得蒸蒸日上吧,所以就焦虑这件事儿,就担心,就困惑,就觉得这行当是青春饭吃不了几年。
其实根据我前面的分析,结论已经呼之欲出了:保持学习能力,丰富技术能力与阅历,积累行业知识与经验,然后就可以持续走下去。即使会有衰退阶段,那也是正常的,人生就如花儿一样,有含苞待放,有盛放,也有枯萎的过程,我们需要自然接纳。
有结论只是第一步,我们还要讲清楚一个事实:程序员群体中的二八定律。
先说技术路线和管理路线的选择,基本上也是二八开(或者一九)。
小部分的人走了管理路线,剩下的大部分程序员,走技术通道。那技术通道,有多少人能成为高级软件工程师、架构师、技术专家、CTO?
百分之二十。
那剩下的百分之八十,在技术路上不能走得更远,但还得维持自己的竞争力,保持价值不衰退,这样才可能继续做下去。怎么维持竞争力,前面已经说过了。
大量的大龄程序员将面临无法晋升和如何维持竞争力的问题,这是每个人都必须看到事实。
从晋升角度看,任何一个行业的从业人员的分布,都是金字塔型的。大锅饭不存在,共产主义按需分配也还没到来,我们必须接受、接纳这个事实,然后才能在此之上谋求发展。
前面已经确认,技术路线可以走下去。现在我们来看,如果一个程序员的四大职能取向定位到专业技术者,到30多岁时,该如何走好,如何适应。
就做技术来讲,如果想维持竞争力,在选择企业时就应当做一些考量,选择将来向好的行业,选择产品型、重视技术的公司,这种选择非常重要。它会严重影响你将来能在技术路线上走多远。
我前阵子找工作,就根据行业、企业、产品,只选了三家来面试。我35岁,需要稳定下来啦。
有人说可否选择创业公司,我的观点是,如果你能承受一定的风险(金钱和时间成本),创业公司的创始团队和产品又都比较靠谱,可以尝试。小米当时创立时,从摩托罗拉等公司找了好大一批开发工程师哦。
根据舒伯的职业生涯阶段理论,31~44岁是安定期,程序员应该稳定于一项工作,发现适当的晋升通道,确立自己将来的保障。
在这个时期,频繁的跳槽对将来的发展不利,这是毋庸置疑的,所以选择要慎重。尤其你到了40岁还没在哪个行业长时间待过,技术也换来换去,那再出去找工作,就会遇到比较大的困扰。
到招聘网站遛一遭,看看招聘信息中对年龄的要求,你就知道我所言非虚,除了技术总监、架构师、技术专家、高级软件开发工程师等岗位的年龄区间落在30~45岁,其他岗位,绝大部分都要求你30以下。所以,如果你在不同行业、不同公司晃来晃去,到了三十四五岁还没稳定,也没能达到高级软件开发工程师应有的水平,那再找工作肯定会遭遇比较尴尬的状况。
技术路线,可以初级、中级、高级、架构师(技术专家)……这么走下去,假如一个程序员发现自己到一定程度无法再走下去,就会产生挫折或倦怠。通常这种情况会在你稳定一项工作7年左右出现,所谓七年之痒。对本科毕业来讲,这个年龄就在33~35岁左右。
此时怎么办?这是很现实的问题。
这个我们就要具体问题具体分析:是你很牛X限于企业环境无法晋升?还是你自身能力到了天花板了无法晋升?
不同的原因对应的行动是不一样的,前者的话,可能应该考虑换一下。后者的话,要调试心态,建立第二生活中心,在职业之外发展其他的兴趣爱好来平衡。
在这个年龄阶段,有一大批程序员会因为晋升受挫或倦怠而成为创业者或参与到创业中来。这是需要留意的现象。
程序员的价值和竞争力,其实是相对的。比如你在腾讯,牛人太多,无法晋升了,其实别处可能有鸡头的位置等着,比如其他行业内的小公司的技术总监、部门经理,如果你看重职位和头衔,就可以去尝试。这也是典型的一种路线,有部分程序员在大公司镀镀金,回头到其他行业的相对规模较小的公司去做管理或技术专家。
如果你很在意职位等级,很在意比别人更受尊重,那就找一个能凸显出你价值的环境。比如乒乓球运动员何智丽,在39届世乒赛上因为没按领导指示输球,后来被取消参奥资格,在国内无法发展了,她移民日本,继续在乒乓球领域活跃并取得了辉煌战绩,还曾经战胜邓亚萍取得亚运乒乓球女单金牌。类似的还有一些国外的业余足球运动员或退役的足球选手到中国来,迅速成为热门选手受到重视。这都是一个道理。
所以,对于大龄程序员来讲,为了发挥价值和竞争力,还有下面的路径可选择:
- 到其他公司,不换行业,利用自己的技术优势,谋求管理职能,走管理通道
- 到能凸显自己技术价值的公司,继续做开发
- 到平均技术水平较差的地域,继续做开发,彰显自己的优势
哦,亲爱的,如果你有时间,也可以学习其他可以赚钱的技能,因为,虽然我们说大龄程序员可以一直做技术,但能一直做到退休的,估计也只有20%。如果你是那80%,当你不得不离开心爱的开发岗位时,就能够因为有所准备而不至于忽然失重。
这点是我们必须要谈的,程序员的人生里不只有软件和工作,还应当有其他的。生活是多元中心的,要有一些其它的兴趣爱好,能够滋养心灵,修复纯技术工作给心灵带来的磨损。
提笼架鸟,雕刻,书法,围棋,游戏,写作,读书……都挺好的,有比没有强太多了。很多人(包括我)缺乏信仰,再没有点兴趣爱好,那就太容易内分泌失调了。
这个话题还是留待各位去讨论吧,,,,