当前位置:C++技术网 > 资讯 > 程序员老了,职业生涯就要结束了吗?

程序员老了,职业生涯就要结束了吗?

更新时间:2020-03-24 23:01:02浏览次数:1+次

    在早些时候,我写了一篇文章《五年C++程序员,是深耕技术还是走管理?》,如今我有了新的认识,下面来跟大家分享一下。
    在此之前,我对拥有多年开发经验的老程序员的发展路线产生了困惑,自己的感觉也出现偏差,以至于其中一段时间偏离了技术方向。前公司让我带开发团队开发,从此介入管理层面,但是公司给我的定位确是技术岗,让我产生了错觉。有时候老板说我要带团队,一个人干不了大事;有时候老板又说,我们找你来是做开发的,其他的事就别管了。关键是,这两种反复的态度并没有先后,而是交错出现的。简单来说,觉得需要管理的时候,我应该管理,觉得开发任务重的时候我应该只做开发。因此,出于工作需要,我开始学习管理。但是因为我并没有被公司定位为管理层,所以很多管理的事情,一会被要求,一会被否认。所以,管理上啥也没有学到。不过在这期间花了不少的精力,主要花在培养团队成员上,可以说是保姆级别的培养了。现在回想起来,不值当!没有一个赤城相对的领路人,你所有付出都是付诸东流。而对于不懂得你的栽培之恩的人来说,你花的精力时间,人家认为是理所当然的。事实上,社会是很残酷的,你不行别人就可以上。有培养只限于给你机会让你上,给你机会锻炼,而不是手把手心连心的去指导去教。不过,这是我自己的选择,与别人是否领情无关,是我自己的策略失误。
    正是这样的大精力的去培养队员,团队实力变强了。毫不夸张的说,保姆级别的培养,可以让一个新手迅速成长,一年经验抵别人两三年!然而,管理可不简单,管理也需要大环境检验效果,所以我的管理方面的锻炼也没有太多的长进,最多就是有两年组建和带过开发团队的经验。要论管理,还差得远呢。
    在这样的工作需要、工作环境和策略之下,管理要涉及,开发要主导,到最后没有得到技术的沉淀,没有管理的长进,也没有收获人心,一败涂地。另外,收获了一堆阴招阳招和职场潜规则那一堆阴暗的一面,以至于我整个人的状态都不好了。想起之前在深圳公司,迅速涨薪的成长,技术的突飞猛进,是收获最满满的时候。
    有往管理发展的规划和对程序员职业生涯的规划理解不够,才走了弯路。网上总是呼喊过了30岁程序员就不好混了,程序员是吃青春饭的,如此总总,让人变得困惑。而这些论调,很多是靠不住的,是不负责任的。对此我有我的看法。
    最保值的投资就是对自己的投资,程序员最保值的投资就是对技术的不断的精深,对精深最高效率的做法就是确定技术发展规划。确定了明确的方向,然后针对这个方向不断去加深,对自己不断地投入强化,买书看书,买教程看教程,这些都是对自己的最好的投资。不要期待和某人合作或储备合作对象,而投入很多精力去培养别人,这些都是靠不住的。如果需要,那么就自己学到手。
    为什么说程序员到了30就混不开了呢?因为应届生能熬夜?因为应届生顶替的很多?因为人才多?都是扯淡的理由,表面听确实有道理,然而仔细想想就是扯淡的。有能力的程序员就应该往上走,有多年经验的程序员就不应该去和没经验的程序员拼比,而是应该和有多年经验的程序员去拼比,应届生和多年经验的程序员是没有可比性的。如果多年经验的程序员还和应届生拼比,本身就是失败的,那就不要拿来说事。我们不讨论混日子不求上进的程序员,这样的程序员经验再多都是不行的。而我们要讨论的是努力上进有水准的程序员是不是过了30岁就不行了呢?绝对不是啊。我们假设把所有30岁以上的程序员都从这世界上弄消失了,请问互联网支撑得住吗?恐怕有点难吧。
    我们说的是,随着工作时间的增长,接触的东西变多,理解变得更加深入,学习的更加精通,时间越久,技术水准越高。那么这样的程序员,如何就混不开了呢?再不济,薪资比新手高一点点,也可以的吧。以这样高水准的能力,一个人抵得上三四个人,哪个老板不愿意要呢?老板不傻,一个人能干三个人的事,给你1.5个人的工资,不是很划算吗?而且年龄大的程序员通常不会轻易换工作啊。
    也就是说,老程序员的出路在哪里?往核心技术岗位走,往高级岗位走,往系统架构岗位走,往核心底层岗位走,往CTO岗位走,而不是按部就班在原位待着,而不是水到和新手争一碗饭。你说这样的环境,中国没有吗?有!你放心,只要你技术过硬,不愁工作的。相反,总是一些技术不怎么样,就喜欢唱衰老程序员。我工作过的,见过的很多公司,我都快30的程序员了,还是里面很年轻的人呢!
    那么如何确定方向呢?找你喜欢的,你想做的,你觉得有前景的方向。如果你不清楚,你可以去招聘软件上将薪资待遇调到很高的水平,然后搜出来结果,看看都有些什么工作,这样你就知道经验很多之后,哪些方向还是不错的,你可以选择的方向有哪些。如果你有自己想做的方向,那么就坚持研究下去。等你研究的够深入,再适当的跨界研究。一段时间建议不要研究超过两种东西,否则精力跟不上,不是专注的表现。如果你对一个方向不够专注和深入,你学其他的东西,都配不上用跨界这个词。真正跨界是你在一个领域做的很专业了,然后再研究其他领域的,你再研究的很深入,并结合两个领域的优势,那才是跨界。跨界的威力是很大的,比如一个js大佬,研究操作系统,然后用js写出一个虚拟操作系统在线运行。如果js功力不够,操作系统学的不咋样,还跨什么界啊,连一个界都没有进,哪来的跨呢。
    确定方向还要尽早。刚工作可能还不了解,但是最长工作两年后一定要有清晰的发展方向规划,然后持续发力攻克专业技术,让自己成为一个领域的大神,否则时间越久,就越没用竞争力,老程序员不要和新程序员PK普通岗位,拼不赢,这是为什么说程序员吃青春饭的理论基础。
    还有一点,我们在学习一些简单的知识或者类似的知识时,总觉得不用记住,反正到时候查就知道了。道理是对的,但是在实际开发中,是不够的。实际开发中,需要的是高效率,所以我们最好都烂熟于心,需要用信手拈来,而不是知道个大概,真正写起代码不知道如何下手,还要查文档或者上网查,然后copy一段代码来用。有时候看似简单的代码,却隐藏很多坑,你不踩就永远也不知道。如果项目紧急,你还经常查文档,是要加班的呀。搞不好,复制代码又没有时间检查,会埋下很多隐患的。所以,建议对于常用的函数、工具、知识点等,一定要自己核验一遍,通过写一些比较复杂的demo程序来检验自己是否掌握,当demo复杂后,才能凸显这些看似简单的工具函数有你需要注意的地方。
    有基础的人总有一些思维习惯,觉得很多东西看起来很简单,然后差不多学一下就行了。或者说,学过复杂的技术的,再来学一些简单的技术,心态就很飘,觉得都是小儿科的东西。我需要纠正一个观点,学过C++的再学其他语言确实可以快不少,但无论什么语言你都不能依仗C++的基础而轻视,觉得一周能搞定Python等等,这都是幻觉。上手很容易,深入却不易哦。要知道,任何一个技术,有好上手的或不好上手的,但凡进入这个世界,都是一个完整的大世界,在这个世界里有其自身的规则,我们都需要去认真静下心学习。这些规则看似理解起来简单,但是你不关心,那么就大错特错了。比如你不能用C思维学习C++,更不能用C++思维去学习Python。你应该做的就是用Python的思维学习Python。那么在学习Python时你就需要清空C++思维,以一个小白的心态开始学习Python。而内在的C++基础会让你在理解Python语法会更加轻松,但不是让你可以减少学习的时间和努力程度。这一点是亲身体会,在此忠告大家了。
    接之前的问题“五年C++程序员,是深耕技术还是走管理?”,经过2年多的探索和思考,现在的理解是,程序员依然继续坚持深钻技术,技术是程序员的立身之本,技术作为我们程序员的一技之长,学好学深永远都没有坏处。学的越厉害,路就越宽越长。其实任何一个职业也都类似。经验多的一定要发挥经验多的优势,走经验多的路线,在经验多的领域去开拓自己的市场,而不要停滞不前光谈经验,程序员行业最在意技术能力本身了。经验多不代表技术水平高,这一点需要记住,所以时刻保持学习状态,精深学习。
    那么要学什么,如何精深呢?说起来应该也不难,把你用到的与职位相关的技术,不断的加深,深入底层,对每一个细节都能够把握透彻,对整个结构的设计有清晰的脉络。如果对于使用方面都没有可提高的了,那么对架构的设计的理解,可以尝试自己去实现一下,或者研究学习开源代码。然后就可以改进,或者研究类似的框架,学习其他框架的思想等等。在这些工具都精通之后,那么就是对开发方法等的提升,让自己的代码不断的高效到满足大型应用的需求等,给自己提高难度,让自己的系统非常健壮好用。如果这些都做得非常好了,觉得很难深入了,你可以研究操作系统、网络、分布式等等非常传统的理论和最新的实践方案。当然,你现在可以跨界了。学点其他领域的东西,融合你会的东西,形成另外一片新风景,说不定有意外的收获呢。
    总之,程序员的发展方向是:确定方向->深钻技术->基础使用->框架实现->代码提升->效率提升->稳健性高效性提升->设计架构思想->系统层面的技术体系架构->跨界研究深钻技术->...将多个领域的东西融合在一起,形成一个新的风景。