《代码整洁之道-程序员的职业素养》一
楔子
公众号已经许久没有更新了,原来还打算一两周一更的,现在基本是半年一更的状态吧😨惭愧。
最近阅读了Martin的《The Clean Coder》,相信很多同学应该读过他更有名的一本书《The Clean Code》,我们公司的书架上两本书都有,虽然理智告诉我应该好好看看《The Clean Code》,但我还是毫不犹豫的选择了《The Clean Coder》,因为它薄太多了😂
读下来感觉收益颇多,这本书正如书名一样讲的是专业程序员的职业素养的问题,如何成为一名专业人士。个人觉得每一位程序员都应该好好看看这本书。老罗喜欢鼓吹工匠精神,程序员应该也需要有工匠精神。不管你是刚毕业的小朋友,还是在码农界沉浸多年的大朋友,或者在IT、AI公司工作的同学都可以从这本书中学到一些东西。
这本书主要阐述软件开发者的专业精神。…试图回答诸如以下的问题:
- 什么是软件专业人士?
- 软件专业人士如何行事?
- 软件专业人士如何处理冲突,应对很紧的工期,如何和不讲道理的管理人员打交道?
- 软件专业人士何时应该说“不”?怎么说?
- 软件专业人士如何应对压力?
这里其实不仅仅可以用在软件开发人员上,算法同学一样应该要学习这些专业精神。后期我会结合算法的角度来给大家分享一下这本书的内容,就当给大家抛砖引玉啦😂
专业主义
我们都想或者说应该成为专业人士,“专业主义”不仅仅意味着荣誉和骄傲(被人称赞为专家,或者被人说你的技术牛逼还是很享受的),也意味着责任和义务。
专业人士要为自己所做的工作负责。
如果做错了事,不专业的人喜欢把责任推脱给别人(俗称“甩锅”),而专业人士是应该自己收拾残局,自掏腰包为损失负责(是的,书里说你要是写了个bug,让公司亏了1万刀,你得自己掏钱买单😂,有没有bug保险来一份)。“专业主义”意味着担当责任!
担当责任
作者这里举例说了自己年轻的时候为了交付产品,忽视了测试,导致交付了个出bug的产品,导致客户各种投诉。对于算法的同学来说,最基本的责任就是要保证你交付的模型是稳定可靠的,如果有任何人抱怨你的模型出了问题,你应该自己负责把问题解决到底,自己去查日志、查代码分析是哪里出问题,即使可能是你的一些依赖的产品出了问题,你也应该主动去追踪push他们把这个问题解决,不要简单的把问题丢给别人。其实说到底就是主动性的问题。
怎么担当责任呢?首先,不要随便挖坑(书中叫不行损害之事,这翻译。。。)
-
不破坏软件功能 - 简单说就是不要留下bug!
-
当然我们不可能没有bug,但是重要的是要对自己的不完美负责。大家要学会的第一件事就是“道歉”,道歉是必要的,但是不够,我们不能一而再,再而三的犯相同的错误。我刚工作的时候被告诫,第一次犯错可以被原谅,但要总结为什么会犯错,以后如何避免。第二次犯同样的错误那是很严重的问题,更别提犯第三次了。所以,我是鼓励大家把自己遇到的坑记录分享出来,同样的坑避免自己不跳 ,也让别人别跳。
-
让QA找不出问题,但是目前的情况是基本上大家自己既是开发也是测试,很少会有人专门来测试你的代码,除非你想让用户帮你测试😂,那记得多买个失业险。要确保代码正确最简单的方法就是加测试,嗯,算法同学的来说说你的测试是不是个摆设。
-
-
不破坏结构 - 简单说就是多去重构代码
- 对程序员来说,唯一不变的只有变化,所以代码要易于修改。代码如何才能灵活可维护?设计原则、设计模式的书一抓一大把,有多少同学真的理解过实践过呢?作者说更简单的方法是经常去修改你的代码,不断的小改进让你的代码越来越好,想想看除了修bug的时候还有什么时候修改过你的代码?让代码保持不变才是危险的,因为等你真正要修改它的时候才发现它已经“僵化”了。
- 很多人怕改代码,因为怕把它改坏了,这里其实回到了上一个内容,就是要让你的代码有完善的测试。专业人士会对自己的代码和测试极有把握,他们会疯狂的做各种修改,看到哪个类名、变量名不对,改!看到哪个方法比较长,改!
职业道德
职业发展是你自己的事,老板没有义务确保你在职场立于不败之地,老板也没有义务给你留时间学习,即使公司提供了这种氛围也不代表这些优待是你理所当然就该享有的,自己要为自己负责。
作者鼓励大家每周至少工作60个小时,前40个小时为老板干活,后20小时给自己,用来提高自己。想在任何一行做好成为专业人士,所谓术业有专攻也是需要投入大量时间的,比你厉害的人大概率是比你更勤奋的人。
- 了解你的领域:算法的同学可以去学学开发的知识,设计模式、Scrum、UML图等等;试试别的框架;了解这个领域的发展历程,不是一上来就直接深度模型;基础知识是不是要再看看,公式是不是再推推;感兴趣的都可以去了解一下,不局限在自己擅长的方向
- 坚持学习:多看看论文,多看看代码
- 练习:多写写代码(惭愧,我自己都比较长时间没有好好写代码了);没事刷刷leetcode也挺有意思,原来在微软的时候记得同事之间喜欢交流算法题,就当开拓一下自己的思路吧
- 合作:跟别人的合作中可以学习到别人好的工作习惯和技术
- 辅导:帮助新人帮助他人,我鼓励大家把自己的做的东西写下来或者分享给别人,这是个很好的反思和总结的机会。
- 了解业务:是的,别老盯着你的模型,多去跟PM、用户去交流,了解你的模型真正要用在什么场景和业务上,别单纯的做个只会接受任务的机器人
- 与老板/客户保持一致:这个比较简单,老板的利益也是你的利益,老板的问题也是你的问题,一起解决。
- 谦逊:牛逼的人一般都比较自负,但专业人士也会摔跟头。不去嘲讽别人,也不怕被人嘲讽,总之低调点的人总是更受欢迎吧。
这期就先到这里,其实只介绍了第一章的内容😂,不过这章的内容也够大家消化一下了。
写完感觉还是要更多的结合自身的经历和实践来解读会更好一些,单纯给大家把书中的内容罗列出来是没有什么意义的,大家去看书就好了,后面会再继续改进吧。
下期见。