程序员的职业素养pdf

2019年6月15日23:03:05 评论 84

程序员的职业素养 内容简介

《程序员的职业素养》是编程大师Bob大叔40余年编程生涯的心得体会 讲解成为真正专业的程序员需要什么样的态度、原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来人引路,助其职业生涯迈上更高台阶。

《程序员的职业素养》适合所有程序员,也可供所有想成为具备职业素养的职场人士参考。

程序员的职业素养 目录

第1章  专业主义

1.1  清楚你要什么

1.2  担当责任

1.3  首先,不行损害之事

1.3.1  不要破坏软件功能

1.3.2  不要破坏结构

1.4  职业道德

1.4.1  了解你的领域

1.4.2  坚持学习

1.4.3  练习

1.4.4  合作

1.4.5  辅导

1.4.6  了解业务领域

1.4.7  与雇主/客户保持一致

1.4.8  谦逊

1.5  参考文献

第2章  说“不”

2.1  对抗角色

2.2  高风险时刻

2.3  要有团队精神

2.3.1  试试看

2.3.2  消极对抗

2.4  说“是”的成本

2.5  如何写出好代码

第3章  说“是”

3.1  承诺用语

3.1.1  识别“缺乏承诺”的征兆

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

3.1.3  总结

3.2  学习如何说“是”

3.2.1  “试试”的另一面

3.2.2  坚守原则

3.3  结论

第4章  编码

4.1  做好准备

4.1.1  凌晨3点写出的代码

4.1.2  焦虑时写下的代码

4.2  流态区

4.2.1  音乐

4.2.2  中断

4.3  阻塞

4.4  调试

4.5  保持节奏

4.5.1  知道何时应该离开一会

4.5.2  开车回家路上

4.5.3  洗澡

4.6  进度延迟

4.6.1  期望

4.6.2  盲目冲刺

4.6.3  加班加点

4.6.4  交付失误

4.6.5  定义“完成”

4.7  帮助

4.7.1  帮助他人

4.7.2  接受他人的帮助

4.7.3  辅导

4.8  参考文献

第5章  测试驱动开发

5.1  此事已有定论

5.2  TDD的三项法则

5.3  TDD的优势

5.3.1  确定性

5.3.2  缺陷注入率

5.3.3  勇气

5.3.4  文档

5.3.5  设计

5.3.6  专业人士的选择

5.4  TDD的局限

5.5  参考文献

第6章  练习

6.1  引子

6.1.1  10的22次方

6.1.2  转变

6.2  编程柔道场

6.2.1  卡塔

6.2.2  瓦萨

6.2.3  自由练习

6.3  自身经验的拓展

6.3.1  开源

6.3.2  关于练习的职业道德

6.4  结论

6.5  参考文献

第7章  验收测试

7.1  需求的沟通

7.1.1  过早精细化

7.1.2  迟来的模糊性

7.2  验收测试

7.2.1  “完成”的定义

7.2.2  沟通

7.2.3  自动化

7.2.4  额外工作

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

7.2.6  开发人员的角色

7.2.7  测试的协商与被动推进

7.2.8  验收测试和单元测试

7.2.9  图形界面及其他复杂因素

7.2.10  持续集成

7.3  结论

第8章  测试策略

8.1  QA应该找不到任何错误

8.1.1  QA也是团队的一部分

8.1.2  需求规约定义者

8.1.3  特性描述者

8.2  自动化测试金字塔

8.2.1  单元测试

8.2.2  组件测试

8.2.3  集成测试

8.2.4  系统测试

8.2.5  人工探索式测试

8.3  结论

8.4  参考文献

第9章  时间管理

9.1  会议

9.1.1  拒绝

9.1.2  离席

9.1.3  确定议程与目标

9.1.4  立会

9.1.5  迭代计划会议

9.1.6  迭代回顾和DEMO展示

9.1.7  争论/反对

9.2  注意力点数

9.2.1  睡眠

9.2.2  咖啡因

9.2.3  恢复

9.2.4  肌肉注意力

9.2.5  输入与输出

9.3  时间拆分和番茄工作法

9.4  要避免的行为

9.5  死胡同

9.6  泥潭

9.7  结论

第10章  预估

10.1  什么是预估

10.1.1  承诺

10.1.2  预估

10.1.3  暗示性承诺

10.2  PERT

10.3  预估任务

10.4  大数定律

10.5  结论

10.6  参考文献

第11章  压力

11.1  避免压力

11.1.1  承诺

11.1.2  保持整洁

11.1.3  危机中的纪律

11.2  应对压力

11.2.1  不要惊慌失措

11.2.2  沟通

11.2.3  依靠你的纪律原则

11.2.4  寻求帮助

11.3  结论

第12章  协作

12.1  程序员与人

12.1.1  程序员与雇主

12.1.2  程序员与程序员

12.2  小脑

12.3  结论

第13章  团队与项目

13.1  只是简单混合吗

13.1.1  有凝聚力的团队

13.1.2  如何管理有凝聚力的团队

13.1.3  项目承包人的困境

13.2  结论

13.3  参考文献

第14章  辅导、学徒期与技艺

14.1  失败的学位教育

14.2  辅导

14.2.1  DIGI-COMP I, 我的第一台计算机

14.2.2  高中时代的ECP-18

14.2.3  非常规辅导

14.2.4  艰难的锤炼

14.3  学徒期

14.3.1  软件学徒期

14.3.2  现实情况

14.4  技艺

14.5  结论

附录  工具

程序员的职业素养 精彩文摘

这些终端由中断驱动。发送给终端的字符先保存在循环缓冲中。串Vl每发送完毕一个字符,便会释放一个中断信号,然后循环缓冲中的下一个字符便做好发送准备。

最后我们发现,终端僵死是由于管理循环缓冲的三个变量出现同步异常。不知道为什么会发生这种现象,但这至少是一个线索。在5千多行的监管代码中肯定有个bug,误操作了这些指针中的一个。

这个新发现也使得我们能够手工解除终端的僵死情况!我们可以使用检查器,将这三个变量重置为默认值,这时本来僵死的终端便会奇迹般地复活。最后我们写了一个小工具来检查所有的计数器是否一致,当发现不一致时便进行修复。一开始,当卡车司机工会的人打电话向我们报告说发生僵死情况时,我们会通过在前面板上敲击一个特定的“用户中断开关”来调用这个工具。后来,我们把这个工具改为每一秒自动跑一次。

差不多一个月后,僵死的问题不再出现,卡车司机工会的人终于可以专心工作了。偶尔某个终端会停滞半秒钟,但是系统的基础速度只有每秒30个字符,似乎没人注意到这个情况。

但是,为什么会出现计数器不一致的情况呢?那时刚好19岁的我决心要一探究竟。

监管代码此前是由Richard编写的,他当时已经离开公司去学校读书了。我们其他人没人熟悉那部分代码,因为之前Richard把那部分代码捂得死死的。那代码属于他,别人不能碰。但是现在Richard已经离职了,我便能扒开厚厚一摞代码清单,逐页细看。

系统中的循环队列使用的就是一个先进先出的数据结构,是的,也就是队列。应用程序会在队列的一端推入字符,直到队列满。当打印机已经准备好时,中断头会将队列另一端的字符弹出。当队列空的时候,打印机会停止工作。存在的bug会导致应用程序以为队列已满,但中断头却以为队列是空的。

中断头是在和其他代码不同的“线程”中运行的。因此,必须对中断头和其他代码都可以进行操作的计数器与变量做好保护,以防止发生同步更新操作。在这个案例中则意味着,任何其他代码在操作这三个变量前,必须先关闭中断。坐下来翻查代码时,我知道我要搜索的是那些在代码中触及了这些变量但却没有事先关闭中断的地方。

换做现在,搜寻的时候我们当然会使用各种强大的工具,找出代码中涉及这些变量的全部地方。几秒钟内便可以知道触及它们的每行代码。在几分钟内,我们便可以知道哪些代码没有事先关闭中断。但是那是1972年,那时我手上没有任何类似的工具可供使用,只能靠一双眼睛。

图书网:程序员的职业素养pdf

恭喜,此资源为免费资源,请先
声明:本站所有资源收集于互联网,只做学习和交流使用,版权归著作人和出版社所有,请在下载后24小时之内自觉删除,若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理!
  • 我的微信
  • 扫一扫加好友
  • weinxin
  • 微信公众号
  • 扫一扫关注
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: