前端程序员干货程序员

代码整洁之道·程序员的职业素养读书笔记

2017-10-06  本文已影响29人  MrException

专业主义

笑吧,科廷,老伙计。这是上帝,或者也可以说是命运或者自然,跟我们开的一个玩笑。不过,不管这家伙是谁或是什么,他真幽默!哈哈!

01 | 清楚你要什么

02 | 担当责任

03 | 不行损害之事

不破坏软件功能

不破坏结构

04 | 职业道德

了解你的领域

坚持学习

.net到java,java到ruby,c到lisp

Prolog和Forth

练习

10分钟kata练习

合作

一起编程、一起练习、一起设计、一起计划

辅导

了解业务领域

每位开发人员有义务了解自己开发的解决方案所对应的业务领域

与雇主或客户保持一致

谦逊

说“不”

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

01 | 对抗角色

02 | 高风险时刻

03 | 团队精神

试试看

消极对抗

04 | 说“是”的成本

05 | 如何写出好代码

说“是”

01 | 承诺用语

  1. 口头上说自己将会去做
  2. 心理认真对待做出的承诺
  3. 真正付诸行动

“天哪,我真该减减肥了?”但你知道其实他还会是老样子,什么改变都不会发生。

识别缺乏承诺的征兆

透露“缺乏承诺”的用语:

真正的承诺听起来是怎样的

我将在...之前...

  1. 只能承诺自己能完全掌控的事
  2. 如果最终目标依赖他人,那就应该采取些行动,接近最终目标
  3. 没预料到的情况,一定要及时说明,越快越好

02 | 学习如何说“是”

“试试”的另一面

别说“试试”,真实反应自己的情况

编码

“信心”与“出错感知”

01 | 做好准备

  1. 代码必须能够正常工作
  2. 代码能够帮你解决客户提出的问题
  3. 代码必须要能和现有系统结合的天衣无缝
  4. 其他程序员必须能读懂你的代码

如果感到疲劳或者心烦意乱,千万不要编码

凌晨3点写出的代码

疲劳的时候,千万不要写代码

焦虑时写下的代码

02 | 流态区

高效率状态:流态

避免进入流态区

音乐

中断

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

03 | 阻塞

04 | 调试

05 | 保持节奏

保存好自己的精力和创造力

知道何时应该离开一会儿

开车回家路上

洗澡

回家,吃顿好的,上床睡觉,清晨洗个澡2333

06 | 进度延迟

做好3个评估:

期望

不要让其他人对预估抱有希望

盲目冲刺

坚持维护你的估算

加班加点

没有后备语言,不要同意接受加班方案

交付失误

07 | 帮助

帮助他人

接受他人的帮助

辅导

测试驱动开发

TDD:测试驱动开发

XP:极限编程

对任何新鲜事物,最好不要马上批驳

01 | 此事已有定论

TDD绝不仅仅是一种用于缩短编码周期的简单技巧

02 | TDD的三项法则

测试代码之匹配于产品代码,就如抗体之匹配于抗原一样

03 | TDD的优势

确定性

缺陷注入率

勇气

专业程序员怎么会容忍代码持续劣化呢?

文档

设计

专业人士的选择

04 | TDD的局限

练习

01 | 引子

10的22次方

我们有了更好的工具,更好的语言。可是,语句的本质并没有随时间而改变。我们真正打交道的东西,40多年来没有多少改变

转变

02 | 编程柔道场

卡塔

武术里,卡塔是一套设计好的、用来模拟搏斗一方的招式。目标则是要逐步把整套招式练习到纯熟。习武者努力训练自己的身体来熟悉每一招,把它们连贯成流畅的套路。

收录编程卡塔的网站:

瓦萨

瓦萨是两个人的卡塔

自由练习

03 | 自身经验的拓展

开源

为开源项目贡献代码

java给rails做点贡献,c++给python做点贡献

关于练习的职业道德

04 | 结论

练习的时候你是赚不到钱的,但是练习之后,你会获得回报,而且是丰厚的回报

验收测试

01 | 需求的沟通

客户对功能的设想,经不起电脑前真刀真枪的考验

过早精细化

  1. 不确定原则
  1. 预估焦虑

02 | 迟来的模糊性

02 | 验收测试

验收测试的目的在于确定需求已经完成

“完成”的定义

沟通

自动化

自动化验收测试工具:

额外工作

验收测试什么时候写,由谁来写

开发人员的角色

测试的协商与被动推进

验收测试和单元测试

真正的价值不在测试上,而是在具体指标上

图形界面及其他复杂因素

GUI与业务逻辑解耦

持续集成

03 | 结论

解决开发方与业务方沟通的问题,唯一有效的办法是编写自动化测试

测试策略

01 | 目前:QA找不到任何错误

QA也是团队的一部分

需求规约定义者

QA编写针对极端情况、边界状态和异常路径的测试

特性描述者

02 | 自动化测试金字塔

  1. 单元测试
  1. 组件测试
  1. 集成测试
  1. 系统测试
  1. 人工探索式测试

03 | 结论

时间管理

01 | 会议

  1. 会议是必需的
  2. 会议浪费了大量的时间

拒绝

受到邀请的会议没必要全部参加,为时间负责的只有自己

领导最重要的职责之一,就是帮你从某些会议中脱身,因为他和你一样关心你的时间

离席

如果会议让人厌烦,就离席,如果会议是在浪费你的时间,就应当想一个礼貌的方式退出来

确定议程和目标

立会

  1. 我昨天干了什么
  2. 我今天打算干什么
  3. 我遇到了什么问题

每个问题时间有限,发言时间有限

迭代会议计划

迭代回顾和Demo展示

争论与反对

唯一出路,用数据(事实)说话

02 | 注意力点数

睡眠

咖啡因

恢复

肌肉注意力

提升肌肉注意力,继而提升心智注意力

输入与输出

03 | 时间拆分与番茄工作法

04 | 要避免的行为

优先级错乱:提高某个任务的优先级,之后就有借口推迟真正的急迫任务。

05 | 死胡同

坑法则:如果你掉进了坑里,别挖。

06 | 泥潭

07 | 结论

最糟糕的事情,莫过于看到一群同志徒劳拼命的工作,结果却陷入越来越深的泥潭

预估

01 | 什么是预估

承诺

如果你被要求承诺做自己不确定的事情,那么就应当坚决拒绝

预估

墨菲定律说,如果可能出错,那么一定会出错

PERT

02 | 预估任务

  1. 亮手指
  2. 规划扑克
  3. 关联预估
  4. 三元预估

04 | 大数定律

把大任务分成许多小任务,分开预估在总和

压力

高质量而不是愚蠢的劳作来享受自己的职业生涯

01 | 避免压力

承诺

保持整洁

脏乱只会导致缓慢

危机中的纪律

当困难降临时,也不要改变行为

02 | 应对压力

不要惊慌失措

沟通

依靠你的纪律原则

当事情十分困难时,要坚信并坚持你的原则

寻求帮助

协作

01 | 程序员与人

程序员与雇主

程序员与程序员

  1. 代码个体所有
  2. 协作性的代码共有权
  3. 结对

02 | 小脑

03 | 结论

编程意味着你就要和别人合作,一定要学会交流

团队与项目

01 | 只是简单的混合吗

有凝聚力的团队

  1. 发酵期
  2. 团队和项目,何者为先
  1. 管理有凝聚力的团队

项目承包人的困境

02 | 结论

团队比项目更难构建。要给予团队充足的时间,让他们形成凝聚力,一直共同工作,成为不断交付项目的强大引擎

辅导、学徒期与技艺

01 | 失败的学位教育

在大学里完全可以蒙混过关,混的一纸文凭,其实什么都不懂

02 | 辅导

Digi-Comp I

ECP-18

非常规辅导

艰难的锤炼

03 | 学徒期

软件学徒期

  1. 大师
  2. 熟练工
  3. 学徒或者实习生

现实情况

03 | 技艺

觉者觉人

首先你自己要成为能工巧匠,向别人展示你的技艺

附录

01 | 工具

版本控制工具

IDE

问题跟踪

持续构建

单元测试工具

组件测试工具

上一篇下一篇

猜你喜欢

热点阅读