程序员的职业生涯,第一生存法则是什么?
追求理想、兴趣与爱好? 不免有点奢侈。坚守道德、信仰与纯粹? 也许太高尚了。
平衡生活与工作、兼顾家庭与公司、妥善处理人际关系、熟练掌握沟通能力与谈判能力、扩大社交圈、耐得住寂寞、熬得了夜、活到老充电充到老、懂得取舍与妥协、低调做人高调做事… 本文暂不打算灌输这类心灵鸡汤。
打开格局、扩大视野、开阔眼界、看准趋势、远见卓识,成为华尔街的宽客、CEO、CTO、首席科学家、首席架构师… 不幸的是,90%的量产程序员穷极一生,也注定无缘赖此生存,因为这个领域,天赋与机遇缺一不可。
数据结构、设计模式、算法架构、模型抽象、操作系统原理、编译器原理、概率统计、数论、代数、几何、微分… 相信我,90%的量产程序员编程10年,赖此生存的时间也不超过10天。
那程序员生涯的第一生存法则是什么?
很简单,拥抱开源,拥抱变化。远离远离开源的公司,远离技术落伍许久的团队。
职业生涯,无论做什么,第一要务是生存,而且应该是越过越舒适的生存。譬如律师、医生,程序员亦是如此。
程序员,到 34 岁了,被公司直接或变相辞退了,是挺悲催的。
但更悲催的是,离开这里,居然无法找到(至少)和之前同水平待遇的工作…
原因何在?
因为不少程序员都固执的认为自己所在的公司、所在的部门、所在的团队会基业长青,自己只需要埋头苦干,耕耘好自己的一亩三分地就能安享太平。
可现实是,你的工作并不是你想象的那样不可替代,你的业务代码也许一个初出茅庐的毕业生就可以接手,你的团队、部门、甚至公司也可能会在你想象不到的时刻宣布解散。
如果你的工作只是基于公司内部的闭源框架或陈旧的架构体系,调用一下接口,写写业务代码,修复一下bug,离开这里,还剩多少竞争力呢?
试想一下,同样是业务系统开发,一个基于Spring(称得上Java第一开源框架)、Spark(大数据开源框架)、Kafka(消息中间件)开发的程序员,和一个基于Spriii、Spaaa、Kafff(泛指公司内部专用的框架)开发的程序员,能力相当,走出这家公司谁更吃香?
再试想一下,同样是应用开发,一个玩转 Spring、Struts、Hibernate(Java开源老三样)的程序员,和一个玩转 Spring、SpringMVC、Mybatis (Java开源新三样)或 Spring Boot 的程序员,水平相当,出去面试谁更可受欢迎?
即使只是一颗螺丝钉,也要做一颗技术领先,在外界受欢迎的螺丝钉。去哪都能如鱼得水、畅快优游。
这也是90%的普通程序员,首要应该思考的问题。
当然,这不是让你心猿意马,而是要时刻保持危机感,否则一不小心就走入了职场死胡同。
职场上,最好的生存保障是,走出这家公司,我依然能过得很好,或更好。
公司实行成本优化,开始清退 34+ 的程序员了?挺好,对面那家公司正想双薪挖人。
项目市场反馈不行,团队面临解散?没事,另外团队的 Leader 前几日刚找我聊了,正希望我加入。
Salesforce 来推销他们的 SaaS(企业软件即服务)服务了,IT部门又可以优化几个人员了。正好,那家18薪出国游的公司正在招人,技术要求很匹配…
在一家远离开源的公司,或技术落伍许久的团队,即使你是首席架构、技术总监,熟练掌握公司或团队内部的各种框架,配置和接口倒背如流,还能一一填埋这些框架的各种坑,那又如何?
35岁了,换了一家公司,也许你又归零成了小白,因为别人不玩你这一套。
诺基亚塞班系统的专家,别说去微软了,即使去诺西(诺基亚西门子通信的简称),很多都得从头再来。
百度 Pyramid(细节自行百度)项目组的大拿,还不如一个精通 Hadoop 配置的工程师更有市场。
SAP、Oracle EBS 开发的资深工程师,选择公司的余地远比不上一个初级 React 工程师。
之前参加过一些创业项目的路演,遇到过一个项目,创始人是两位博士,号称研发了最先进的深度学习算法,用于医学扫描成像的癌症诊断。
但是,TensorFlow(谷歌)、CNTK(微软)等深度学习开源框架的图像识别算法,在癌症检测方面也许可以碾压小创业团队所谓的绝门秘笈。挺替他们的投资人担心的…
目前为止,只说了 90% 的普通程序员,那还有 10% 精英程序员呢?
毫无疑问,精英程序员更应该拥抱开源,因为那才是实现个人价值,提升个人影响力的最佳途径。
如果 Spring 没有开源,就不可能获得如此广泛的应用,Rod Johnson(Spring 之父)的影响力也会大打折扣。
如果 Lucene、Hadoop 没有开源,很多人可能都不知道 Doug Cutting(Lucene、Hadoop 之父)为何许人也。
如果 Linux、Git 没有开源,也许就没有 Linus Torvalds(Linux、Git 之父)的享誉世界。更重要的是,这个世界可能会被更多的蝗虫入侵。
注:“突然间,到处都是微软的产品了,被蝗虫入侵了似的。我并不是说蝗虫是坏蛋,我喜欢所有的动物和昆虫。” —— 摘自 Linus Torvalds 语录:
诚然,如上的大神毕竟凤毛麟角。但大牛级别的程序员走向开源,带来的个人影响力、声誉、技术伙伴、收入、成就感等,都是实实在在的。
说了这么多,也许你也挺无奈的,因为你所在的项目所用的技术体系,刚好是公司专有且闭源的,那怎么办?
你可以默默的把这篇文章转给你们技术领导看看,看他有没有这个思想觉悟。
如果领导悟性不够,半晌没有回应,你可以提点他一下:无论实习码农,还是技术大牛,现在优秀的人才都拥抱开源去了,我们再这样下去,会招不到优秀的人才的…
如果非常不幸,你从事的是银行、基金、保险、电信、电力、石油等领域的业务,而且还是古董级别的项目,领导说稳定才是第一位的。那你也有三条路可以走:
1、祈祷自己早日实现财务自由(据年初的胡润报告,一线城市财富自由门槛是 2.9亿)
2、祈祷所在的公司(部门)能够基业长青
3、更新一下简历,准备跳槽吧~
那这种古董级别的项目怎么办?总得有人维护吧?
加薪!加薪!加薪!不能给予锦绣未来,就给予更猛烈的薪水吧!
最后,即使是第一生存法则,也不是金科玉律。因为世上总存在一些奇葩的人,码农这个群体也不例外。
譬如我找人,最关注的还是逻辑思考能力。写一个新算法,学一门新语言,用一套新框架,不过几周的事情,何必那么纠结。
不过,玩过 Tensorflow 图像识别与目标检测,跑过 ResNet、Inception 等网络的优先…
题外话
本文通篇都是从务实的角度来谈开源的好处,事物都有两面性,那开源的坏处在哪里?
其实前面也提到了一点,TensorFlow、CNTK 等开源框架的算法,完全可以碾压大多数人工智能创业团队所研发的所谓独门秘诀,特别是通用算法领域。
也就是说,不少创业团队、研究院、实验室里,一门心思研究底层算法(包括图像识别、语音识别、翻译、NLP等前沿领域)造轮子的精英程序员、研究员可能会因此荒废多年的心血…
譬如,两个月前,百度推出阿波罗计划,将自家的自动驾驶平台开放。这同时意味着,国内自动驾驶领域的不少创业团队可能会面临被洗牌、解散。如果今后谷歌也来这么一出,行业震荡可想而知。
前些日子,还听我一位在某大厂研究院视觉识别组的同学说:谷歌物体检测与图像识别的API一开放,他们视觉组辛苦了3、4年的研发心血又白费了…
可开源是人类社会进化的最优选择,因为只有开源,才能实现人类顶级智慧的充分共享与协作。除了谷歌、脸书,连一贯封闭的微软、苹果两大巨头都已走向开放。
开源大潮,浩浩荡荡,顺之者势如破竹,逆之者举步维艰。
也许自然规律如此,人类宿命如此吧。