分享

程序员的护城河是什么 ?

 nysd2012 2023-09-10
职场中有很多trick,或多说少都会发挥一些作用,比如把代码写的只有自己能看懂;项目里加点小bug只有自己能解决;面向领导编程;面向工资编程;面向简历编程;跟对人,会挑业务,会甩锅等等。这些职场潜规则也许在特定场合有点作用,但你说它们是程序员的护城河,还是有点剑走偏门的感觉。神雕侠侣里说得好啊,“重剑无锋,大巧不工”。花拳绣腿的功夫咱们知道一点没坏处,但你能不能在职场上走的更远还是得拼拼内力才行。那什么才是程序员的护城河呢?按照惯例还是先把观点抛出来:

程序员的护城河有三个关键要素,重要程度分先后:

1.稳定的内核,优秀的核心素质,以及在此之上协调自己人生的能力

2.具备行业专家的“直觉”,和通过这些直觉更快更好解决问题的能力

3.程序员扎实的基本功

因为越到上面要求越高,越难实现,所以咱们就从下往上讲。

程序员扎实的基本功

一个IT企业招人,会倾向于招科班出身的程序员,倒不是说有什么职场歧视,是因为科班出身的人经过比较严格的编程训练,代码规范和对计算机基础知识的认识更为全面。比如你是一个machine learning engineer,训练一个模型的时候特别慢,得想想解决办法。如果是半途转行过来的程序员,可能就调调参数,改改训练步长,epoch数量等等。那一个全面学习过计算机组成原理,网络原理的程序员,除了上面的调参工作,可能还会去查查training ps是不是掉分片了,是不是不同分片的通信出问题了,是不是有单节点拖慢训练速度了等等,就有可能找到更根本的问题。找到并解决根本问题了,你当然会在职场中积攒更多的信誉,积少成多,聚沙成塔,就有可能慢慢脱颖而出了。

这个问题的反例是一些靠运气升职非常快但基本功缺失的程序员。很容易演变成一群心虚且焦躁,喜欢指挥但说不到点子上的tech lead或manager,我相信你或多或少都经历过这样的领导。看似他们得到了一些职位或者金钱上的奖励,但长期来看倒是得不偿失,一是自己内心比较焦虑,这本身就是一种惩罚,二来也比较容易在公司的动荡中被淘汰,遭受实际损失。

所以如果你刚毕业,参加工作在三年之内的话,其实没什么好想的,先把作为程序员的基本功练好,这不仅是隔开你跟其他初学者的护城河,更是为日后你的发展扫清障碍。

具备行业专家的“直觉”,和通过这些直觉更快更好解决问题的能力

很多同行通过学校和工作几年的经验积累,其实是能建立好“基本功”的护城河的。大家也不要妄自菲薄的说这个护城河没用,它当然是有用的,它基本保证了你不会丢工作,即使被当前公司裁员,只要基本功扎实,是肯定能找到其他公司的。但是,这条护城河不会保证你一直处在一个高收入的状态,更不会让你的职业生涯一直向上走。

那下一条更宽的护城河就有点玄妙了,可以叫做行业专家的“直觉”。这条护城河也是把你跟AI区分开,让你具备不可替代性的护城河。你估计会说我说的太扯了,还“直觉”,这应该出现在程序员的概念里吗?但大家一定可以越来越深刻地感觉到,越被well defined的问题,就越不需要人来参与,当一个问题被完全清晰定义出来之后,离自动化解决就不远了,既然可以自动化解决了,那自然不需要程序员的持续参与。

所以我们要充分利用人的优势,用你积攒起来的行业经验建立起这样的直觉,并基于这些直觉去解决那些模糊的,不确定性高的任务,这才是所谓行业专家的护城河。

空口无凭,光说直觉这么玄幻的词估计还不足以说明问题。那还举个实际例子吧,比如说现在让你去解决一个推荐系统中的冷启动问题,目标是要加速用户反馈的收集和新物品通过冷启动阶段的速度,通过提升冷启动效果达到提升整体推荐效果的目的。

这个时候判断系统的最薄弱点和解决方案的选型就非常重要了。比如我可以快速列出10个解决这个问题的点:

1.提升数据流实时性,解决收集用户反馈的实时性差的问题

2.提升特征实时性,解决用户反馈没有及时更新线上特征,影响推荐结果实时性的问题

3.提升模型实时性,模型学习更新速度太慢,没法准实时地学到新物品和用户的交互行为

4.加入新物品冷启动召回路,解决无法快速召回新物品的问题

5.在重排阶段建立冷启动策略,提升冷启动物品排序

6.通过exploration- exploitation来改善推荐系统的探索效率,其中包括三个子方法

7.子方法一,简单探索策略,包括egreedy,UCB,Thompson sampling

8.子方法二,简单模型,linUCB

9.子方法三,与深度学习模型结合的探索策略,或者强化学习策略

10.利用active learning的方法挑选物品,找到那些对模型潜在收益最大的新物品优先尝试

面对这10个解决方案,这个时候你的直觉就必须发挥作用了,你必须拍到底先尝试哪个,后尝试哪个,哪个投入少收益大,哪个可能带领项目组顺利达成目标。真正有护城河的行业专家们往往会一击必杀,找到哪个最关键的问题,让自己和团队取得一个又一个成功。在这个阶段,编程往往不是最重要的事情,知识储备丰富,敢于做判断,坚信自己的选择是最重要的。至于怎么培养这种直觉,其实也是有方法的,只不过这里不能讲,讲了我就没护城河了啊。。:P 有空再开一篇文章跟大家讨论讨论这个问题吧,这里肯定篇幅不够了。

稳定的内核,优秀的核心素质,以及在此之上协调自己人生的能力

有了上面两条护城河,我敢打保票你不会遭遇所谓的35岁危机,因为没有一家公司舍得去把能真正解决高不确定性问题的员工裁掉。如果我们再沿着这条走往深走一走,其实就会跳脱到职场之外,触及一些人生哲学的问题。这些问题其实并不遥远,而且异常重要。因为我发现很多程序员有如此多的疑惑,焦虑,恰恰是无法搞清楚这些问题。更清晰一点地阐述应该是,如何建立我们人生的护城河,让这条护城河降维保护我们的职业生涯。

在工作中,我会跟很多同事聊天,包括我的上级,下属,合作团队,其他公司的同行,在校找我咨询的同学等等。发展的好的同事也许个性不同,但有几点核心素质是非常一致的:

1.不管面对谁,勇敢不怯场

2.敢于拥抱不确定性

3.独立思考,思路清晰有逻辑

具体例子不多举了,你可以回忆回忆身边你比较佩服的人,是不是确实具备这三项核心素质。不仅是我们身边的人,我是一个非常喜欢读人物传记,看知名人物访谈的人。这些人思想之坚定,眼光之独到确实很令人佩服,毫无疑问,他们同样有这样的核心素质。

但这些核心素质当然不是凭空出现的。他们必须要求我们有一个稳定的内核才能支撑起这些核心素质。我们可以尝试问自己几个问题,来看看自己是不是一个内核稳定的人:

1.跟我同一级的同学现在职级比我高两级

2.比我小的同事比我早买房子,还比我买的大多了

3.没我努力的同行就是因为运气好,赶上一个好公司,都财富自由了

如果你面对这些问题觉得不公平,不淡定,那就说明你是一个内核不稳定的人。在这样的内核之上,你的各种表现就很容易失真,就很容易在压力下进一步进退失据。比如说,你看到同事买房早,房子大,就借钱凑首付,顶格贷款,买了一样大的房子。这就会产生一个结果,就是你无法承担任何工作中的风险,在之后的工作中你就会异常小心翼翼,无法承担任何不确定性,不敢承担高风险的项目,显然,这不是我们所说的应有的核心素质护城河。

叔本华在《人生的智慧》里说有几段话说的很好,“对于人的幸福快乐而言,主体比客体重要的多。”“如果这个人的精神能力相当有限,那么,来自外在的一切努力,别人或者运气所能为他做的一切,都无法让他超越只能领略平庸无奇,半动物性的快乐的范围。”,“我们的幸福是多么的取决于我们自身,即取决于我们的个性,但我们通常只是考虑运气,只是考虑所拥有的财产,或者我们在他人心目中的样子”。

我们得收一下了,要不然得扯到尼采、罗素、马克思去了。。回到咱们职场发展上来,稳定的内核,优秀的素质应该是你要追求的最宽的护城河,那些看似明确的目标,比如职级、收入、业务scope反而是这些核心能力的间接结果。但你去直接追求后者,甚至无时无刻不在与人比较的时候,反而更慢得到它;当你聚焦在自身核心素质的时候,却又加快了得到他们的速度。这样的现象其实无处不在。如果与此同时,你再能灵活运用一些职场的trick,那可以说是内功加招式并重,升职加薪肯定是早晚的事情了。

写得很开心,希望对大家有所帮助吧。祝大家在拓宽职场护城河的同时,能顺便达成自己的职场目标。

图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多