【必读推荐】《程序员的职业素养》

简介: 怎么做一个专业的程序员

第一章 专业主义

  1. 清楚你想要什么
  2. 承担责任
  3. 了解你的领域

失误率永远不能等于0,但你有责任让它无限接近于零。

每个专业软件开发人员必须了解的技能:

  1. 设计模式。必须能够描述GOF书中的全部24种模式。
  2. 设计原则 必须了解SOLID原则,深刻理解组件设计原则
  3. 结构图 流程图 决策表 状态迁移图表

第二章 说“不”

大多数时间我们都希望能够说“是”。健康的团队都会努力寻找给他人肯定的答复。运作良好的团队经理和开发人员,会相互协商,直到达成共同认可的行动方案。

但是有时候,获取正确决策的唯一途径,便是勇敢无畏的说“不”。这个是比说“是”更负责任,更专业,也更困难的能力。

第三章 说“是”

  1. 遵守承诺
  2. 如果这个事情依赖他人,无法掌控,需要采取一些具体行动来达成目标。比如坐下来讨论一下具体行动,来一步一步接近目标,直至完成目标。
  3. 如果确实无法完成,赶紧去调整别人对你的预期,越快越好

第四章 编码

给他人提供帮助并非说明你更聪明,而是你带来了一个新的视角,对解决问题起到了显著的催化作用。PS:这个描述有点绝对,事实上能够提供完善的解决方案,一眼看出问题出在什么地方也是一种可贵的能力和丰富经验的累积。

辅导年轻的程序员是经验丰富程序员的职责所在,向资深的导师寻求帮助也是年轻程序员的专业职责。

第五章 TDD的三项法则

  1. 在编写好失败单元测试之前,不编写任何产品代码
  2. 只要有一个单元测试失败了就不需要再写测试代码;无法通过编译也是一种失败情况
  3. 产品代码恰好能够让当前失败的单元测试通过即可,不要多写。

TDD可以提升代码确定性、降低代码缺陷率,优化文档和设计的原则。

测试先行,会迫使你去思考什么是好的设计。

事后测试只是一种防守,先行编写测试则是进攻。事后编写的测试已经受制于已有代码,已经知道问题是如何解决的。测试先行的防守编写测试代码比起来,后写的测试在深度和捕获错误的灵敏度方面要逊色很多。

第六章 练习-自身经验的扩展

老板的职责不包括避免你的技术落伍,也不包括为你打造一份好看的简历。保持自己的技能不落伍是自己的责任。

第七章 验收测试

做业务和写程序的人都容易陷入一个陷阱:过早进行精细化。

  1. 不确定性原则

东西画在纸上与真正做出来,是不一样的。业务方看到真正运行的情况就会意识到,自己想要的东西根本不是这样。

一看到已经满足的需求,关于到底想要什么,他们就会有更好的想法——通常并不是他们当时想看到的样子。

  1. 预估焦虑

即便拥有全面准确的信息,评估也通常会存在巨大的变数。其次,因为不确定原则的存在,不可能通过反复推敲实现早起的精准性。需求一定会变化的,所以过早追求精确性是徒劳的。

身为专业开发人员,你的职责是协助开发团队开发出最棒的软件。也就是说每个人都需要关心错误和疏忽,并协助改正。

验收测试和单元测试

验收测试是业务方的,是正式的需求文档,描述了业务方认为系统应该如何运行。关心验收测试结果的是业务方和程序员。

单元测试是程序员写给程序员的,它是正式的设计文档,描述了底层结构和代码行为,关心单元测试结果的只是程序员。

它们的主要目的是如实描述系统的设计、结构和行为。当然他们也可以验证设计、结构和行为是否达到了具体指标,但是它们的真正价值不是在测试上,而是在具体指标上。

第八章 测试策略

尽管公司可能设有独立的QA小组专门负责测试软件,但是开发小组仍然要把“QA应该找不到任何错误”作为努力的目标。

对于QA找到的每一个问题,开发团队都应高度重视,认真对待。应该反思为什么出现这种错误,并采取措施避免今后重犯

第九章 时间管理

关于会议,有两条真理

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

在走入死胡同后可以快速意识到,并且有勇气走回头路。这就是坑法则:如果你掉进了坑里,别挖。

第十章 预估

当发现预估的时间不足时,最重要的是努力解决这个问题,并向外部同步进展。

预估真正的问题在于:业务方认为是承诺,开发方认为是猜测。

不要给出承诺,除非你确切知道可以完成。

第十二章 协作

你需要理解手上正在编写的代码业务价值是什么,了解雇佣你的企业将如何从你的工作中获得回报。

对做的事情充满激情是好的,但是,最好把注意力集中到付我们薪水的老板所追求的目标上。(关注业务和业务目标)

相关文章
|
前端开发 程序员 pouch
程序员最重要的八种软技能
笔者在带团队的六年中发现,程序员们在职场都有一个共同的困扰:“好像写代码都没什么问题了,日常工作基本上都是应付业务需求的开发,好像找不到其他的更大的附加价值了,我应该找一些什么样的发力点才能让我的价值更突出呢?” 。笔者以为,这就是典型的硬技能当下「看似」没有什么问题了,瓶颈卡在了软技能上。所以开篇做个小分享,聊聊程序员的软技能。
41563 18
程序员最重要的八种软技能
|
消息中间件 移动开发 安全
移动开发者升职加薪的8项技能,写给正在求职的安卓开发
移动开发者升职加薪的8项技能,写给正在求职的安卓开发
移动开发者升职加薪的8项技能,写给正在求职的安卓开发
|
敏捷开发 架构师 测试技术
软技能2:软件开发者职业生涯指南-读书笔记
整书有很多内容,从成为一名软件开发者一直到完整的职业生涯,这里只是记录自己阅读过程中感受最深或者最受用的部分。
|
存储 算法 安全
2020年程序员/工程师必看的三本编程书籍
因为新冠肺炎疫情,很多同学都宅在家中,所以有大把的时间进行学习和充电。作为程序员或工程师的你,想要在代码方面更精进一步的话,应该看哪些书?
3683 0
2020年程序员/工程师必看的三本编程书籍
|
程序员 开发工具 IDE
对程序员非常重要的24个软技能
英文原文:Soft Skills are so important to Software Engineers   软技能通常是被低估的。几乎所有的软件工程师都知道要关注技术的提高,但你忽视的软技能很可能会影响你的职业生涯。
1081 1