前端于我
闲聊 / 总结 / 程序员

一个程序员的职业素养

不知不觉间,我已经工作五年半,不大不小也是个小团队的管理者,也是自以为的高级前端开发工程师。所以,我以为我怕是有点资格来说一下自己的看法了。
从事工作这五年半的以来,我见过形形色色的人,限于眼界与主题,我较于敢开口评价的也就只有程序员这一群体了。

基本功

这点大抵是不需提的,无论其他方面如何,对于程序员这类吃专业技能饭的,吃饭的活计自然是最重要的。
所以首要的第一条就是在所做工作的领域,基本功必须要扎实。不说同期冒尖,最起码也得做到同期中位线之上。
至于这中位线怎么分,两个方法:
第一是看你身边同期的同事,你自认胜过他吗?或者是在团队中的重要程度领先于他?
第二个方法就更简单粗暴了,看你的薪资是否大过大部分同期的程序员就好了,虽然工资并不能完全反映一个人的技术水平,但是总是能从中看出个大体,毕竟面试官也不是傻子。
而基本功往往也是后面几条优秀素养的底层基础。

分析与解决问题能力

在这点上,我自认为自己必然是在中位线之上的。这不是自夸,而是我见过太多人在分析解决问题的时候磕磕绊绊,总是在这上面耗费太多时间精力。
首先必须要提的一点是大部分人往往会给自己设定一条界限,超出这条界限的问题就恕我无能为力了。
这是及其不负责任并效率低下的,解决问题的能力并不仅仅代表着使用自己的专业技能去解决问题,能够推动相关方解决问题同样有非常重要的意义。
我实在见过太多这类程序员,如开发web或者APP的时候发现打包上传脚本挂了,部分人会跟自己的领导反馈脚本挂了,小部分人会装作无事发生等待产品或业务来问时才抛出脚本挂了这个问题,极小部分人会尝试修复。因为他们觉得这并不在他们的工作内容的范围,我是APP开发,那除了APP之外的工作就不关我事了。
还有一类是伸手就来型。这类人表现为及其低效与被动的解决问题,往往也是问题卡住的重灾区。
当遇到问题时,他们会说“不行,跑不通”,至于如何不行,如何跑通一概没了下文,便翘首以盼的等待你分享正确答案。而往往正确答案只需要翻一下官方文档,或是就写在google搜索上面。
清晰的分析问题,高效的解决问题对于一个程序员,尤其是中高级程序员来说是一个非常重要的能力。

owner意识

owner意识同上一条分析与解决问题能力有一些交叉,但是我觉得还是需要单独作为一个要点。
往往初中级工程师们很少有项目归属的想法。即这个项目属于我,那与之相关的问题即是我的问题。
这点也很重要,如果没有这个意识,日常的开发工作不过是照本宣科,产品要怎样就做成怎样,性能?可维护性?合理的设计方案?不存在的。这样怎么能写出好代码呢?
与解决问题相通的,很多人在项目出现问题的时候,在业务抛出问题的时候总是被动的等待通知“这是xx的问题,找xx”。
永远要主动的去探寻自己项目出现的问题,寻找问题点,做那个抛出问题的人,而不是被动的接收。久而久之,大家也就知道了,这项目有问题就找你,你就是这个项目的技术负责人。
并且在需求推进的时候也是一样,当整个流程卡在某一个节点的时候,主动的推进也就变成了你的责任。

总结与表达能力

我相信,总结与表达能力对于任何人而言都是重要的,程序员尤是如此。
你总不能希望产品业务能够理解你甩到群里的代码逻辑吧,当会议表述时,当与其他程序员吵架(不是,争辩)时。清晰有逻辑的表述总能提高你在别人心目中的影响,你就是那个专业技能过硬的人。
其实我认为这条的重点在于总结上,毕竟表达能力因人而异,有的人生来便不善于表达,一开口就不按脑子来,这我们也没有太好的办法。只能通过勤加练习得以稍微改善,但是与天生伶牙俐齿的人依然存在鸿沟。
而总结能力不同,它是那种付出多少耕耘便获得多少收获的能力。
好记性不如烂笔头,在表述前先自己总结归纳,再按照归纳发言,往往能极大的提升个人的表述能力。
而总结过程中对于思维的梳理,以及文本存档也存在着重要的意义。
我个人是非常推崇文本总结归纳的,同时要善于利用各种工具,例如思维导图、时序图、流程图、或是语雀、notion之类的文本编辑器,这样更利于理解与整理。

理解能力

作为一个强思维逻辑的职业,程序员的理解能力格外重要。
勤能补拙在这里往往不太适用,举一反三才是程序员更优秀的品质。
业务流程,代码逻辑,状态流转,以及阅读理解,虽说每人的理解总有差异,但是确实部分人的理解能力要差一些。
当你发现在你们团队,你往往才是那个被纠正的人的时候,或许你就得下点功夫了,最起码得把产品流程吃透吧。

用事实说话

我想,所有程序员应该都说过这话:“不可能是我的问题,我本地是ok的”。
先别忙着下结论,我五年半的程序员生涯教会了我一件事:一段没有问题的程序,即使运行十亿次都不会有问题。
反过来说就是,出现了与预期不符的问题,必然是程序或者数据存在问题。那么作为项目的归属者,永远也是排查问题的责任方。
不要因为自认为自己的代码不可能存在问题就不去跟进排查,或者干脆将问题推给其他人,推给第三方。你永远承担着调查清楚问题的责任,并且根据我的经验,起码有一半的可能就是你的代码存在问题。

不要怕bug

一个很常见的现象是,大部分的程序员在发现线上bug的时候,很大可能会选择自行修复,然后当做无事发生。这样自己的线上bug数就依旧为0,堪称完美。
但是事实告诉我们最好不要这么做,因为你的修复如果没有经过严格的测试,有着不小的概率引发别的问题。幸运一点的还能够及时发现,然后又是一个新的修复发布,否则又是一枚不知何时爆炸的地雷。
不要害怕bug,世界上没有人能保证自己写的代码不存在bug。即使是那些大神级别的人物都会犯的错,你偶尔犯一下是正常现象,不必遮遮掩掩。当然,频繁的犯肯定是不行的。
光明正大的反馈出来,通知业务方,进行紧急修复,并充分测试,才是修复线上bug正确的步骤。

保持新鲜感

IT行业可以说是五年一次小革命,十年一次大变天。要跟上队伍,就必须持续学习,保持对代码的热情,多去尝试新的东西。
永远记住,机会是留给有准备的人的。我们能做的就只是准备的更充分些,不要担心你做的努力不会被发现,基本上不存在这种可能,除非你司就剩你一个人了。
其实写代码是一件非常恰意的事情,我就很享受编码的过程,如果产出的是功能有趣,或者是有挑战性的产品则会让人更有成就感。

总结

以上是我的个人看法,未参考任何其他文章,确实都是我这些年来的经验之谈。
当然,一个优秀的程序员绝不仅仅应该只包含上述的优良品质,但是我认为以上品质都是对程序员这一职业比较重要,像是人品、态度这类比较通用的标准就不再赘述了。
似乎看上去有些论调像是鸡汤,但是也是现实。只要上述的内容做的好,就是一个优秀程序员的体现了,这些都会变成你的绩效,年终奖,职级晋升的内容。
不以物喜不以己悲,沉下心来学习沉淀,与诸君共勉(虽然好像没人看哈哈)。
最重要的是:保持乐观的心态。

发表于: 2022-10-18