IT•产品高效率阅读学习@IT·互联网

程序员的职业素养

2016-10-05  本文已影响2835人  Misa527528
题图来自Pixabay
不想成为优秀程序员的码农,那和咸鱼有什么区别?李清照有句诗:生当作人杰,死亦为鬼雄。也许我们不必、也可能永远都不会是最优秀的程序员,但我们至少可以成为一名职业的程序员。我们也想成为一名专业人士

Chapter 1. 专业主义

作为一名“专业人士”,不仅仅是一种荣耀,它更多的意味着义务,正所谓欲戴王冠,必承其重。当项目中有某个“临时工”犯了错误,他大可不必承担责任,只需要摊摊手,说几句自我安慰的话;如果是“职业”人员,你必须为自己写的每一行代码负责,出了bug必须承担相应的责任。
“职业”的程序员也应当有自己的职业道德,Bob大叔把它概括为以下8点:

Chapter 2. Say No

职业的程序员敢于与现实抗争,敢于说“不”。尤达说过:“能就是能,不能就是不能。不要说‘试试看’”。如果某项任务你无法胜任,拒绝接受总比临近交付日期才告诉产品经理你无法完成好;同样的,如果没办法在某个时间内完成,就不要说“试试看”。试试看意味着你会尝试着去完成,而大多数人都是乐观主义者,这样说无异于一种承诺。碍于情面的人也许觉得不妥,需要指出的是:“say no”并不意味着拒绝合作,而且为了团队更好的发展。

Chapter 3. Say Yes

如果你觉得“say no”让你很难为情,那么,“say yes”(做出承诺)也很有挑战性。做出承诺包含了三个步骤:

“职业的”程序员对自己做出的承诺会做到言必行,行必果,甚至承担相应的责任,职场上可不允许随便说说而已。

Chapter 4. 编码

“职业的”程序员应该具备良好的编码能力。代码要整洁、符合规范,特别是在赶进度的情况下。Bob大叔在《Clean Code》(《代码的整洁之道》)中说到,一个外科医生不会因为时间紧急而答应病人的请求——不要洗手就做手术,因为这样并不是职业的做法(更别说犯罪)。同样地,职业的程序员不会因为时间紧急就写出混乱的代码或者上百行代码的函数,这样谈不上快,只会让进度更加慢。整洁的代码也需要从平时不断的训练养成,这方面的书有《The Art of Readable Code》、Bob大叔的《Clean Code》、《Code Complete》。

Chapter 5. 测试

Bob大叔的书有一个特点(虽然我只看过两本…),他会在不经意中特别地插入测试方面的内容。看他的书都会对TDD有一定的了解,此处略去n个字……
不管是否采用TDD的方式,“职业的”程序员都必须具有一定的测试能力。最为开发人员,写的最多就是单元测试,虽然单元测试不能保证程序一定不出错,但是写好的单测是对自己代码负责的一种体现。如果代码没有测试过就签入代码库,无异于放进去一个定时炸弹。《Code Complete》里面介绍了一些办法,可以在写更少量的单测的情况下覆盖到更多的代码,例如结构化的基础测试。

Chapter 6. 预估

软件开发过程中最常出现的问题就是延期交付,因为进度延迟往往导致开发人员需要连续的加班,甚至通宵达旦的赶进度,而这个日期很多时候都是由于项目组过于乐观的预估。

Chapter 7. 压力

书中有一段描述:

你看见自己躺在一张手术台上,以为外科医生给你做开胸手术。医生竭力挽救你的性命,但是时间有限……
你期望医生的表现如何?你希望他冷静、井井有条吗?你希望他清楚准确地吩咐助手吗?你希望他严格遵循当初训练时的做法坚守手术规程吗?
还是想让他汗流浃背、咒骂之声不断?想让他乱扔手术器械、把东西摔的哐当响吗?想让他满腹怨气责怪管理人员设定的不现实的手术时间,一直嚷嚷时间不够用吗?你期望他表现得像一名专业人士,还是像我们常见的某些开发人员的那种做派?

关于压力,最好的做法就是避免压力:

如果压力已经产生,不可避免的,“职业”的做法是不要惊慌,而是从容不迫、努力寻找解决方案,同时寻求帮助。

Chapter 8. 协作

大多数软件都是靠团队开发出来的,单打独斗与游离于团队之外都是不专业的表现。即使是Linus Torvalds这种单兵作战能力超强的,也需要一堆优秀程序员来帮忙维护Linux。想象一下deadline到来之前你拼了命赶进度,恨不得多找几个人来帮忙,这时候你是坚定不移的相信团队开发这个守则的。那为什么平时却不肯相信?
协作主要有两点:

上一篇下一篇

猜你喜欢

热点阅读