作者:老胡聊Java
1 意识到写代码无非就是调用接口api,做业务无非也就是抄些增删改查的现成代码。也就是说,编程没想象中那样高大上,也就是谋生的一种手段。
2 知道提升能力不是单纯靠学,而是得靠解决实际问题。比如在做项目时,提升技能的最好方式是,去解决些值钱(比如分布式高并发或devops等)方面的问题。同时更知道,单纯做增删改查的业务,其实顶了天也只能算个初级开发。
3 知道其实在做项目的过程中,写代码的技能相对来说是比较不值钱的。比较值钱的技能点是,排除解决问题的能力,确保项目高质量的能力(即测试能力),运维项目的能力(比如容器和devops),组件的使用能力和配置安装分布式或微服务组件的能力。
4 知道在自己领域,哪些技术比较值钱,同时更知道,如何在面试中证明自己的技能,更知道,在下次跳槽时,自己该去哪些类型的公司,知道该如何要到更高的薪资。
5 知道衡量程序员能力和水平的标准是薪资+公司,在公司都差不多的情况下,谁薪资高谁能力强,在薪资差不多的情况下,谁公司好谁厉害。这话另外一层含义时,在跳槽时,对方公司衡量程序员能力时,第一看之前公司的规模,即大公司背景,第二看薪资。随后再通过面试看技术。
6 知道公司的领导在给自己提建议时,出发点大概率是为了公司好和为了项目组好,在此基础上顺带会给些对自己有帮助的建议。这种情况下,对领导的话是会有选择性地听。
7 知道不少公司领导留人的方式不是靠加薪,而是靠画饼。更知道,如果在同一家公司,每年涨薪顶多1成,而且还得使劲加班,同时如果是跳槽,涨薪3成都算低的。
8 知道在面试中证明自己能力时,不能单纯靠自己做过什么,也不能靠自己学过什么,而是靠自己能靠说证明什么。比如能在面试中,通过说自己解决过的值钱技术方面的问题,能证明自己在这方面的能力,至于自己是否做过,面试官很难核实。
9 知道程序员要过大龄这道坎,不是靠技术,而是靠公司,即得找个能容纳大龄程序员的公司,而一些小公司,对大龄程序员可能未必友好。
10 知道身体比挣钱重要,知道家庭比工作重要。而程序员这个职位,只是提供了用加班用艰辛换取高薪的机会。
11 知道有些公司,仅仅是过渡,在其中不应该呆过3年。别看其中的领导信誓旦旦或者宣扬狼性,但可能他们自己都知道,自己的业务线甚至是公司未必能撑多久;知道无论小公司、大公司、外包公司、技术大厂外包公司中的工作都是为了赚钱,一直要有商业思维,如果脱离这个公司,自己能给自己发钱才真的待对了公司。
12 会越来越感受到,大多数代码、框架乃至和技术相关的东西,其实都是虚的。当然一些高端技术(比如当下的大模型)不能说是虚的,这能实打实挣钱,但一般程序员接触不到这个层次。做到后面就会发现,再要进一步挣钱,首先得看人脉,有人脉才有渠道接单,业务量大了才能有所谓的盈利模式,有了盈利模式才能进一步雇人做大,所谓是扩大再生产。
13 虽然再加个第13点有些不大吉利,但这点确实会对程序员有帮助。即比较成熟的程序员具备复制别人成功模式的能力。举例来说,比如某Java开发当下只会增删改查,但他能通过观察组内的资深架构平时干了什么事情,解决问题的过程,通过多问多复盘多实践,慢慢把人家的本事学到手,然后提升自己的能力。
14 再进一步讲,成熟或者说资深的程序员,更具备从各种试错过程中找到正确方向的本事。比如当下某人的外包公司,接触到的技术天花板是单机版的增删改查,所谓的组内大牛也只是熟悉业务。这种情况下想进好公司,比较成熟的程序员一般能通过尝试,知道怎么写简历怎么找猎头能拿到大公司的面试机会,再进一步,知道在当下技术储备不多的情况下,经过各种无效学习的试错,知道如何掌握大公司面试所需的技能,再进一步,经过各种面试的尝试,知道该如何面试成。
15 做久了以后,知道做项目时应该用最安全的方式修改bug,而设计模式和重构之道之类的理念,只是存在于教科书,而且只会在面试时用到。这句话更加通俗的说法是,在当前系统修改bug时,不该看的代码不看,不该了解的代码不去了解,不该碰的代码不碰,一旦看了了解了碰了,改出问题,责任就是你的。而且在改牵扯到多方的疑难bug时,一定得拉上领导或相关人。
16 在面试场景,知道证明自己用过某个技术的方式是,说业务场景和API细节。这块具体展开下,比如在面试中要证明自己做过机器学习,可以先说项目里引入机器学习模型的场景,再说用过哪些模型,其中的api接口、语法和配置细节是什么样的。而且同样是在面试场景,证明自己能力的方式不在于说自己做过哪些业务,而在于说自己排除解决技术问题的方式,解决过的问题越值钱(比如含高并发机器学习或AI),那么面试官只能相信你的能力。
17 顺着上一点和第8点继续说下去,在面试时,比如求职者有3年公司经历,那么应该就有3年Java(或Python或其它技能)的项目经验。这种情况下,如果求职者通过业务场景和API说技术,再通过说解决过的问题证明能力,面试官只能相信求职者的能力。一些会面试的求职者,2,3年跳槽一次,每次薪资涨个3成,或者以此进好公司,这其实不是难事。回到主题上,较为成熟的程序员都知道一些面试技巧,而比较幼稚的程序员,面试时只说自己项目做过哪些事情,更只会通过做业务证明自己的能力,这样的跳槽和面试的能力是有待改进的。
18 较为成熟的程序员一般给人的感受是,面试时,被普遍认为能力强,因为具备足够的面试能力,刚开始进项目组时,会被认为很菜,但很努力,因为接触到了更值钱的技术,而之前没接触过,所以很菜,但在新环境里能通过努力高效学习。过了一段时间,这位程序员能在解决问题、沟通和写ppt汇报等方面展示足够的能力,再过了一段时间,这位程序员会跳槽到更好的公司里,迭代上一次的流程。而较为幼稚的程序员则会认为,只要我能力强,能解决问题,就能在当前公司一直干。
19 在自己当下技术不高的情况下,知道如何最大程度上变现自己的技术,因为成熟的程序员都知道,技术不能当饭吃,生活还得靠技术变现得来的钱。
20 这甚至已经可以作为“老油子程序员”的标志了。知道解决哪些bug能给自己带来收益,知道解决哪些bug,虽然对项目有帮助,但牵涉到一些人或一些事,未必会对自己有帮助,知道项目里的哪些bug应该报出来,但不应该立即着手解决,而应该开会找相关人讨论,知道项目里的哪些bug,甚至都不应该报出来。
/
最后再加一条,经历一次裁员,绝对能让程序员从幼稚到成熟。