代码整洁之道——程序员的职业素养

少于 1 分钟读完

很难想象我在读这本书的时候是除夕的晚上,早晨在公司的书架上无疑翻到这本书,读了几个章节就被深深的吸引住了, 吸引我的并不是我很迫切的需要提高自己的职业素养,而是发现作者描述的场景和自己碰到的情况何其的相似,在某些 情况下甚至是直击内心的。在家人都休息的时候,我在深夜一点钟看完了这本书,而且我觉得有必要做一下笔记,我相信 在之后的工作中,我会不止一次的碰到类似的问题。

什么是程序员的职业素养?

说起职业素养或者职业道德,我们首先想到的就是医生、律师、教师这样的职业,我们可以在网上看到太多从事这样职业的人做出违背职业道德的事情而被口诛笔伐,但我们很少听说程序员缺乏职业道德,就算是删库跑路的事件发生,我们也是在同情之余当做谈资一笑了之,而我一直觉得程序员是缺乏职业素养的一个群体,原因并不在于大家对自己的要求不高,而是我们内心并没有把“程序员”当做一种职业,而是一种赚钱养家糊口的工作或手段而已,也就是所谓的“搬砖”。很多人认为我们和搬砖工的区别也就是人家付出的是体力,我们付出的脑力,但这种想法显然是过于片面的,我觉得适合和程序员或者软件工程师作对比的最合适的职业是建筑工程师或设计师,我们开发设计的是软件系统,建筑工程师建造设计的是建筑物。

而现实中建筑工程师的地位明显要高于程序员,为什么会这样呢?试想一下,一栋建筑设计的不好,出现严重的质量问题,关乎的是财产和性命,你也很少在家里会因为担心房子坍塌而忧心忡忡。而现实中的垃圾软件比比皆是,甚至在你躺在床上的时候还在为项目里面的 bug 而忧心忡忡,而且我们也很少听到因为软件 bug 导致有人丢了性命,顶多是公司破产、老板跑路而已!由此而见,有质量问题的软件比有质量问题的房屋导致的直接危害要小的多(当然软件问题导致火线发射失败这样的情况的危害也不小),这也就导致了程序员这个群体对职业素养这个问题还不够重视,程序就算有 bug 又能怎么样呢,再提交几个 pr 修复下或者干脆回滚代码!

我在大学毕业的时候进入了一家外企工作,因为项目需要,我参加了软件测试工程师的资质培训,里面有一个案例让我至今印象深刻:有个人因为在取款的时候取款机多吐了钱,由于没有经受住诱惑将多吐的钱据为己有而被送进了监狱。这样的事件并不是个例,我们经常在网上可以看到类似的事情。我并不觉得将多出的钱占为己有是多么大的罪过,贪财是人性的弱点,如果换做是我,没有拿多出的钱并不是因为我道德高尚,而是因为规则约束,拿了会让我付出更高的代价或风险,这是我不愿意承受的。在遇到类似问题的时候,我通常会在想,开发这个系统的程序员内心会是怎样的感受?他会因此感到内心不安?我在当前工作的项目也遇到类似问题,一位家长反馈孩子通过我们的学习系统上传不了作业而伤心落泪,听到这个消息的时候我内心是极其的愧疚,立马和其他工程师一起优先解决这个问题。医生一次手术的失误可能会导致病人丢掉性命,而我们一次软件的 bug 无非就是丢失一些用户,至于损失多少是不好衡量的,程序员几乎都会有这样的共识:软件有 bug 是难以避免的!我同意这样的说法,我上线的 bug 也不在少数,但怎么去减少 bug,除了问题怎么及时的去弥补是一个持续思考和改进的过程,如果我们不重视,那么我们就是缺乏职业素养!

书中对于职业素养的关键定义就在“专业主义”。专业主义就意味着担当责任,专业主义的精髓就在于将公司利益视同个人利益。能做到这个程度的程序员是少之又少,我碰到过的用一只手就能数的过来,大多数人的想法都是给多少钱做多少事情。我们不能说这种想法有问题,正常的人都会这么想,凭什么给我一万块的工资去做两万块钱的事情,就算是市场上也是讲究一分钱一分货,没人愿意做亏本的买卖,而对于软件行业来说,怎么衡量这个事情做好没有呢?标准很难界定!按期上线么?很有可能,但是留给接手人的代码很可能是一坨翔!bug 导致的公司损失可能是你几个月的薪水,但一般公司并不会因此让你赔偿(不排除有这样的公司),而你会觉得存在 bug 在所难免嘛,谁叫你工期排的这么紧呢,我天天加班到晚上12点才回家!我见过的程序员很少因为 bug 或者是给别人开发带来麻烦而觉得内心不安,会去主动改进的,通常都是:时间紧,先这样干吧!线上出现问题也是事不关己的态度,反正有人处理,反正不是我写的 bug…如果警察看见有人抢劫而置之不理、如果医生见死不救一定会被千夫所指,而程序员不会因为写出 bug 或者不去处理别人遗留的 bug 而被谴责,难道只是因为问题没有那么重要么?我看不是,本质在于我们并没有把程序员作为职业来看待,没有觉得公司的利益和自己有多大的关系。“勿以善小而不为,勿以恶小而为之”,这样的生活中的基本准则都没有应用到我们养家糊口的工作当中,怎么能够体现职业素养呢!

标签:

更新时间:

留下评论