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

享受职业素养

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

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

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

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

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

知行合一

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

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

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

第一章 专业主义

清楚你要什么

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

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

担当责任

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

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

不要破坏软件功能

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

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

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

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

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

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

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

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

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

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

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

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

学会与他人合作。

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

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

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

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

第二章 说“不”

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

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

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

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

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

第三章 说“是”

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

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

第四章 编码

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

做好准备:

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

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

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

4.通熟易懂的代码。

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

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

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

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

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

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

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

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

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

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

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

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

第五章 测试驱动开发

TDD的三项法则:

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

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

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

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

第六章 练习

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

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

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

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

第七章 验收测试

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

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

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

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

第八章 测试策略

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

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

第九章 时间管理

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

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

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

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

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

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

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

第十章 预估

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

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

第十一章 压力

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

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

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

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

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

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

第十二章 协助

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

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

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

学会交流。

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

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

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

工具

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

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

写的不好,就当是整理下思绪吧。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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