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

享受职业素养

你遇到的问题可能很容易也可能很难,但我看重的并不是问题的难度,而是解决问题的方式,步骤以及反思的程度。恢复误删数据,对很多人来说是非常简单的任务。但我更感兴趣的是怎么分析问题,找了怎样的资料,采取了怎样的步骤,此后做了哪些措施来避免这种错误发生。与问题本身的难度相比,解决问题的方式、步骤以及反思的程度,才能体现一个人的基本素养。

你对自己将会做某件事做了清晰的事实陈述,而且还明确说明了完成的期限。

有时候,获取正确决策的唯一途径,便是勇敢无畏地说出”不“,我们要明白,委屈专业原则以求全,并不是问题的解决之道。

花三分的力气去抵制无理的需求,可以节省十分甚至二十分的开发时间。

东西花在纸上与真正做出来是不一样的。头脑想的与写下来的也是不一样的。

知行合一

美的系统是灵活的、易于理解的、构建、维护它们是一种快乐。

要用于承担作为一名手艺人和工程师所肩负的重大责任。这种责任包括要努力工作,出色完成任务,要擅长沟通,能够就事论事,要管理好时间,能够坦然面对艰难的决策。

没有人能够随随便便成功。

第一章 专业主义

清楚你要什么

专业人士如果犯了错,只好自己收拾残局。

专业主义的精髓就在于将公司利益视同个人利益。

担当责任

我曾因不负责任尝尽了苦头,所以明白尽职尽责的重要意义。

我意识到没有对例行程序进行测试就交付软件是不负责任的。为了如期交付产品,我忽略了测试环节。

不要破坏软件功能

开发的软件有bug就会影响软件的功能。因此,要做的专业,就不能留下bug。

要对自己的不完美负责。代码中难免会出现bug,但这并不意味着你不用对它们负责。没人能写出完美的软件,但这并不表示你不用对不完美负责。

要联系的第一件事就是”道歉“,诚实面对自己的过错。你不能一而再,再而三地犯同样的错误。职业经验多了之后,你的失误率应该快速减少,甚至趋近于零。失误率永远不能等于零,但你有责任让它无限接近于零。

把自己没把握的代码发送给QA,这么做本身就是不专业的。

要确信代码能正常运行:测试,一遍遍测试。实现自动化测试。

测试驱动开发:设计易于测试的代码,最好先写测试,再写要测试的代码。

你的自动化测试至少要让你能够知道,你的系统很有可能通过QA的测试。

下班后合理分配时间,你应该看书、练习、学习,或者做其他能提升职业能力的事情。

所谓术业有专攻,那也是需要投入时间去追求的。

不能铭记过去的人,注定要重蹈覆辙。

专业软件开发人员需要精通的事项:设计模式、设计原则、方法、实践、工件。

坚持学习,坚持练习:不懂就学,不要畏难。

学会与他人合作。

教学相长:想迅速牢固地掌握某些事实和观念,最好的方法就是与你负责指导的人交流。

了解业务领域:专业软件开发人员有义务了解自己开发的解决方案对应的业务领域。如果编写财务系统,就应该对财务领域有所了解。如果编写旅游应用,就需要去了解旅游业务。

雇主的问题就是你的问题。你必须弄明白这些问题,并寻求最佳的解决方案。每次开发系统,都应该站在雇主的角度来思考,确保开发的功能真正能满足雇主的需求。

谦虚:不会因别人犯错就对之横加贬损,因为他知道,自己可能就是下一个犯错的人。

第二章 说“不”

能就是能,不能就是不能。不要说“试试看”–尤达

专业人士敢于说明真相而不屈服于权势。专业人士有勇气对他们的经理说不。

面对艰难决定,直面不同角色的冲突是最好的办法。

关键的是找到共同目标,这有助于协商。

具备团队精神:恪尽职守,当其他队员遭遇困境时,要伸手援助。

第三章 说“是”

承偌用语:口头上说、心理认真、付诸行动。

代码必须经过测试,代码必须要有对应的测试代码。要确保代码清晰整洁,而且必须确保没有影响到系统的其他部分。

第四章 编码

要精通掌握每项技艺,关键都是要具备“信心”和“出错感知”的能力。

做好准备:

1.代码必须能够正常工作。

2.代码必须能够帮你解决客户提出的问题。

3.代码必须要能够和现有的系统结合。

4.通熟易懂的代码。

精心锤炼代码,使它能够表达你的编程意图。

如果你感到疲劳或者心烦意乱,那就停下来,不要编码。

要确保自己已经将睡眠、健康和生活方式调整到最佳状况,这样才能做到在每天8小时工作时间内全力以赴。

礼貌地表现出乐于助人的态度才是专业的态度。

创造性输出依赖于创造性输入。

保持节奏:保持适合自己的节奏,切勿操之过急。

有时候解决一个问题最好的方法,就是不去解决。

管理延迟的诀窍:早期检测和保持透明。

期望:坚守原则,不要轻易松口退让。不要让其他任何人对此抱有期望。

帮助他人:能够随时帮助别人。要清楚团队伙伴的状态。如果有人看起来遇到了麻烦,就应该向他提供帮助。

接受他人的帮助:如果有人向你伸出援手,要诚挚接受,心怀感激地接受帮助并诚意合作。

要学会如何请求帮助,学会如何提问。

第五章 测试驱动开发

TDD的三项法则:

1.在编好失败单元测试之前,不要编写任何产品代码。

2.只要有一个单元测试失败嘞,就不要再写测试代码;无法通过编译也是一种失败的情况。

3.产品代码恰好能够让当前失败的单元测试成功通过即可,不要多写。

TDD的强大之处:拥有一套值得信赖的测试。

第六章 练习

想要变现优异,就需要投入大量时间练习。

无论是搏斗还是编程,速度都来源于练习。

练习者不是在解决真正的问题,因为你已经知道解决方案。想法,你是在练习解决这个问题所需要的动作和决策。

开源:保持不落伍的一种方法就是为开源项目贡献代码。

第七章 验收测试

关于需求的沟通是极其困难的,其中会出现各种问题。

需求是一定会变化的,所以追求那种精确性是徒劳的。

验收测试的目的是沟通、澄清、精细化。

身为专业开发人员,与编写测试的人协商并改进测试时你的职责。

第八章 测试策略

业务人员编写针对正常路径的测试,而由QA编写针对极端情况、边界状态、异常路径的测试。

测试体系:单元测试、组件测试、集成测试、系统测试、探索式测试。

第九章 时间管理

为时间负责的只有你自己。

凡是不能在5分钟内解决的争论,都不能考辩论解决。

睡眠:睡眠的重要性怎么强调都不为过。

恢复:在你不集中注意力的时候,注意休息恢复。

锻炼:肌肉注意力有注意改善心智注意力,而且不仅仅是简单的恢复。

番茄工作法:根据合适自己的时间进行调整。

管理好自己的时间和注意力。

第十章 预估

预估是非常容易出错的,控制错误的办法之一就是使用大数定律。把大任务拆分为小任务,分开评估在汇总。

一些预估方法,需要了解的自行阅读书本。

第十一章 压力

在压力下保持冷静的最好方式,便是规避会导致压力的处境。

让系统、代码和设计尽可能保持整洁,就可以避免压力。

不要惊慌失措:正确应对压力。长夜漫漫无心睡眠,无助于更快地解决问题。呆坐着烦躁不安也于事无补。要放松下来,对问题深思熟虑。

及时沟通:让你的团队和主管知道你正身处困境之中。

当事情十分困难时,要坚信你的纪律原则。

应对压力的诀窍:能回避压力时尽可能地回避,当无法回避时则勇敢直面压力。可以通过慎重承诺、遵循自己的纪律原则、保持整洁来回避压力。直面压力时,要保持冷静,多与人沟通,坚守自己的原则纪律,并寻求他人帮助。

第十二章 协助

单打独斗和游离于团队之外都是不专业的表现。

深刻理解业务目标,清晰的知道直接负责业务的价值。

明确团队的短期目标和长期目标。

学会交流。

第十四章 辅导、学徒期与技艺

学校中所学的内容与在工作中的实际需要通常会有巨大的差异。

通过阅读、研究、练习、实践和教学来维持自身的技术水平。

工具

源代码控制、锁、集成开发环境与编辑器、单元测试工具、组件测试工具、集成测试工具。

没有希望,则没有改变。
原文链接

写的不好,就当是整理下思绪吧。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!