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

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

第一章 专业主义

  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. 会议浪费了大量的时间

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

第十章 预估

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

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

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

第十二章 协作

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

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

相关文章
|
存储 缓存 关系型数据库
MySQL的varchar水真的太深了——InnoDB记录存储结构
varchar(M) 能存多少个字符,为什么提示最大16383?innodb怎么知道varchar真正有多长?记录为NULL,innodb如何处理?某个列数据占用的字节数非常多怎么办?影响每行实际可用空间的因素有哪些?本篇围绕innodb默认行格式dynamic来说说原理。
1661 6
MySQL的varchar水真的太深了——InnoDB记录存储结构
|
BI 数据处理 索引
Pandas基本操作:Series和DataFrame(Python)
Pandas基本操作:Series和DataFrame(Python)
654 1
|
机器学习/深度学习 监控 算法
《OpenCV实战指南:计算机视觉开发的高效路径》
计算机视觉技术正深刻改变生活,从美颜相机到自动驾驶,OpenCV作为该领域的“瑞士军刀”,为开发者提供强大支持。本文将介绍如何利用OpenCV进行图像处理、对象检测及视频分析等任务。从安装配置到基础操作(如图像读取与显示),再到高级功能(如滤波、几何变换、关键点检测与特征匹配),以及经典Haar级联分类器和基于深度学习的YOLO算法等对象检测方法,最后探索视频处理与分析能力。OpenCV几乎覆盖了计算机视觉的所有方面,帮助开发者实现从简单应用到复杂系统的创新,让计算机“看”懂世界,创造无限可能。
497 6
|
7月前
|
存储 监控 API
API监控工具:淘宝新品上架提醒,抢占首发!
本文介绍如何通过技术手段实现淘宝新品上架自动监控。基于商品状态定时检测,利用API或页面解析判断是否开售,结合邮件、微信等通知方式,第一时间获取提醒。适合抢购热门新品用户,提升抢购效率。(238字)
|
IDE 开发工具 Python
python中SyntaxError: unexpected EOF while parsing(语法错误:解析时遇到意外的文件结束)
【5月更文挑战第14天】python中SyntaxError: unexpected EOF while parsing(语法错误:解析时遇到意外的文件结束)
2412 6
|
数据采集 机器学习/深度学习 存储
可穿戴设备如何重塑医疗健康:技术解析与应用实战
可穿戴设备如何重塑医疗健康:技术解析与应用实战
928 4
|
人工智能 网络协议 Linux
阿里云迎来AI网络领域两大重要突破
阿里云迎来AI网络领域两大重要突破
1058 1
|
开发框架 JavaScript 算法
了解vue3的基本特性和底层原理
Vue3的底层原理涵盖了响应式系统的Proxy-based实现、组件的模板编译与渲染更新机制、组合式API带来的逻辑组织变革,以及其他关键特性的具体实现。这些原理共同构成了Vue3强大、高效、灵活的现代前端开发框架基础。
1226 2
|
XML 人工智能 数据格式
史上最简单的大模型教程之案例:哄哄模拟器(二)
史上最简单的大模型教程之案例:哄哄模拟器(二)
690 0
|
网络协议 安全 网络性能优化
【网络工程师】<软考中级>传输层协议TCP/UDP&常用应用层协议
【1月更文挑战第27天】【网络工程师】<软考中级>传输层协议TCP/UDP&常用应用层协议