程序员的职业素养【1】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/itsxwz/article/details/84326680

书名:《程序员的职业素养》
作者:Robert C.Martin
译者:章显洲 余晟
出版社:人民邮电出版社
原书的例子很有趣味性和启发性,在此只做总结和抽取本人喜欢的观点。

1
没有涉及故障修复部分的代码也需要进行测试。

2
所谓专业人士,就是能对自己犯下的错误负责的人,哪怕哪些错误实际上在所难免。
不能一而再、再而三的犯相同的错误。职业经验多了之后,失误率应该快速减少,甚至趋近于零。失误率永远不可能等于零,但有责任让它无限接近零。

3
不要提交明知有缺陷的代码。每次QA找出问题时,更糟糕的是用户找出问题时,你都该震惊羞愧,并决心以此为戒。

4
确保代码能够正确运行,自动化测试、单元测试,覆盖每一行代码。软件驱动开发(TDD)。

5
结构良好的代码更灵活。软件要易于修改。(参照代码整洁之道、软件开发原则、设计模式)

6
自动化测试保障了修改或重构能够通过功能运行,版本控制能够留存之前的原始代码。不断的进行修改,不要等到固化或深陷泥潭之后才采取措施。专业开发人员对待代码就像雕塑家对待泥巴那样,要对它进行不断的变形和塑造。

7
专业软件开发人员必须精通事项:
设计模式。必须能描述GOF书中的全部24种模式,同时还要有POSA书中的多数模式的实战经验。
设计原则。必须了解SOLID原则,而且要深刻理解组件设计原则。(unity的ECS??)
方法。必须理解XP、Scrum、精益、看板、瀑布、结构化分析及结构化设计等。
实践。必须掌握测试驱动开发、面向对象设计、结构化编程、持续集成和结对编程。
工件。必须了解如何使用UML图、DFD图、结构图、Petri网络图、状态迁移图表、流程图和决策图。

8
如果你是.NET程序员,就去学学Java;
如果你是Java程序员,就去学学Ruby;
如果你是C语言程序员,就去学学Lisp;
如果你真想练练脑子,就去学学Prolog和Forth吧!

9
重复做一些简单的练习(“卡塔”)。让手指习惯点击快捷键或习惯使用某些重构技法等。

10
多团队合作,多交流,沟通的过程既是自我表达,也是学习吸收。帮助他人,也接受他人的帮助。

扫描二维码关注公众号,回复: 4263547 查看本文章

11
对业务领域有一定程度的了解,读书、网上看资料等。最不专业的做法是简单按照规格说明来编写代码,却对为什么需要那样的规格定义不求甚解,相反,应该能辨别、质疑规格说明书中的错误。

12
与雇主/客户保持一致。软件的改动应该及时的沟通,确保最终成品是客户所需要的。

13
有时候,提供太多细节,只会招致更多的微观管理。

14
客户总会把项目截止日期往后拖延。他们总是想要更多的功能,他们总是提出需求变更----而且常在最后关头这么做。

15
学会说“不”,学会说“是”。
你只能承诺自己能完全掌控的事。如果最终目标依赖于他人,那么你就应该采取些具体行动,接近最终目标。
即使目标无法完成,你仍能全力前进,离目标更近些。而弄清楚目标是否达成这件事,便是你可以采取的努力行动之一。
如果你无法兑现承诺,那么最重要的就是尽早向你承诺的对象发出预警,越快越好,越早越好。
如果你不尽早告诉他人可能的问题,就错失了让他们帮助你达成目标、兑现承诺的机会。

16
专业人士不需要对所有请求都回答“是”。
不过,他们应该努力寻找创新的方法,尽可能做到有求必应。
当专业人士给出肯定回答时,他们会使用承诺用语,以确保各方能明白无误的理解承诺内容。

17
代码必须能够帮你解决客户提出的问题。
代码必须要能和现有系统结合得天衣无缝。
其他程序员必须能读懂你的代码。

18
疲劳的时候,千万不要写代码。奉献精神和职业素养,更多意义上指要遵纪律原则而非成为长时间工作的工作狂。

19
流态区(天人合一???):这是程序员在编写代码时会进入的一种意识高度专注但思维视野却会收拢到狭窄的状态。这其实只是一种“浅层冥想”状态,在这种状态下,为了追求所谓的速度,理性思考的能力会下降。

猜你喜欢

转载自blog.csdn.net/itsxwz/article/details/84326680