高效程序员工作法(一)

2023-11-03

目录

前言:

 一、高效程序员的思考框架

思考框架:

四个思考原则:

以终为始:

任务分解;

沟通反馈;

自动化:

一句话总结:

二、 以终为始:如何让你的努力不白费?

一句话总结:

三、 DoD的价值:你完成了工作,为什么他们还不满意?

 一句话总结:

四、 接到需求任务,你要先做哪件事?

一句话总结:

五、持续集成:集成本身就是写代码的一个环节 

一句话总结:


前言:

  本篇博客内容来源自:极客时间课程《10x程序员工作法》处于学习记录。将个人认为比较重要的知识点进行摘抄记录。有兴趣的同学去极客时间学习完整课程。


 一、高效程序员的思考框架

思考框架:

  • 我现在是个什么水平?
  • 我想达到一个什么水平?
  • 我将怎样到达那个目标?

这三个问题实际上是帮我们确定:

  • 现状;
  • 目标;
  • 实现路径。

四个思考原则:

以终为始:

就是在工作的一开始就确定好自己的目标。我们需要看到的是真正的目标,而不是把别人交代给我们的工作当作目标。你可以看出这个原则是在帮助我们回答思考框架中,Where are we going?(我们要到哪儿去?)这个问题。

任务分解;

是将大目标拆分成一个一个可行的执行任务,工作分解得越细致,我们便越能更好地掌控工作,它是帮助我们回答思维框架中,How can we get there?(我们如何到达那里?)的问题。

沟通反馈;

是为了疏通与其他人交互的渠道。一方面,我们保证信息能够传达出去,减少因为理解偏差造成的工作疏漏;另一方面,也要保证我们能够准确接收外部信息,以免因为自我感觉良好,阻碍了进步。

自动化:

就是将繁琐的工作通过自动化的方式交给机器执行,这是我们程序员本职工作的一部分,我们擅长的是为其他人打造自动化的服务,但自己的工作却应用得不够,这也是我们工作中最值得优化的部分。

一句话总结:

 面对问题时,用思考框架问问自己,现状、目标和路径。


二、 以终为始:如何让你的努力不白费?

  1. 我们习以为常的思维模式是线性而顺序的,第一步做完,做第二步;第二步做完,做第三步。
  2. 以终为始的方式,不仅仅可以帮我们规划工作,还可以帮我们发现工作中的问题。
  3. 践行以终为始就是在做事之前,先考虑结果,根据结果来确定要做的事情。
  4. 以终为始的思维可以帮助我们更好地规划我们手头任务,也可以帮助我们发现过程中的问题。

一句话总结:

 遇到事情,倒着想。


三、 DoD的价值:你完成了工作,为什么他们还不满意?

DoD 是一个清单,清单是由一个个的检查项组成的,用来检查我们的工作完成情况。DoD 的检查项,就是我们开发产品所需的一系列有价值的活动。比如:编写代码、编写测试代码、通过测试人员验收等。什么样的活动是有价值的,也许每个团队的认识是不同的。但如果你的团队认为除了功能代码,其他都没价值,也许这是个信号,说明你的团队整体上是缺乏职业素养的,在这样的团队工作,前景并不乐观。

DoD 的检查项应该是实际可检查的。你说代码写好了,代码在哪里;你说测试覆盖率达标了,怎么看到;你说你功能做好了,演示一下。

DoD 是团队成员间彼此汇报的一种机制。别把汇报想复杂了,最简单的汇报就是说一句这个功能做完了。当我们有了 DoD,做事只有两种状态,即做完没做完。在团队协作中,我们经常会听到有人说这个事做完了 80%”,对不起,那叫没做完,根本没有 80% 做完的说法。

你应该知道,人与人协作,总会有这样或那样的理解差异。开始协作之前,我们最好先同步一下彼此的理解,确保之后不会因为理解不一致,而让协作方措手不及。怎样解决大家的理解偏差呢,我介绍了 DoD(完成的定义),它是行业中的一种最佳实践,能够在团队内部很好地同步大家对完成的理解。好的 DoD 是一个可以检查的清单,可以确保你不遗漏任何事情。

 一句话总结:

 在做任何事之前,先定义完成的标准。


四、 接到需求任务,你要先做哪件事?

     我们把以终为始的原则应用在需求领域中,就会注意到,用户故事有一个非常重要的组成部分是验收标准。

      验收标准不仅仅描述出了正常流程,也会关注到异常流程的处理,它也是我们验收测试用例的起点。一旦事先定义好验收标准,大量的扯皮工作就随之烟消云散了。

      理解了验收标准的作用,即便我们不使用用户故事来定义需求,依然可以把用户故事中的关键点应用到自己的实践中,在功能列表的每个功能定义中,增加验收标准。

一句话总结:

 在做任何需求或任务之前,先定好验收标准。


五、持续集成:集成本身就是写代码的一个环节 

写代码是程序员的职责,但我们更有义务交付一个可运行的软件。

如果想将每个程序员编写的代码很好地组合在一起,我们就必须做一件事:集成。

究竟要在开发后多久才进行一次集成呢?是半天、两个小时、还是一个小时呢?倘若这个想法推演到极致,是否就变成了只要有代码提交,就去做集成?

一个好的做法是尽早把代码和已有代码集成到一起,而不应该等着所有代码都开发完了,再去做提交。

一句话总结:

 尽早提交代码去集成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高效程序员工作法(一) 的相关文章

  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • 如何从另一个xml文件动态更新xml文件?

    我想从另一个 xml 文件更新 xml 文件 我使用了一个 xml 文件 如下所示 one xml
  • 无法加载 jar 文件的主类

    我使用 Eclipse IDE 开发了一个应用程序 创建应用程序后 我以 jar 格式导出项目 当我尝试运行此 jar 文件时 出现错误 无法加载主类 请帮忙 当您将项目导出为 jar 时 请参阅此所以问题 https stackoverf
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • 如何将 Spotlight for Help 插入本地化的 macOS 应用程序?

    我正在 macOS 上使用 Swing GUI 框架实现 Java 应用程序 当使用system外观和感觉以及screen菜单栏 Swing 自动插入一个搜索栏 called 聚光灯寻求帮助 https developer apple co
  • 场景生成器删除 fxml 文件中的导入

    我使用场景构建器 Gluon Scene Builder JavaFX Scene Builder 8 1 1 来创建应用程序的 UI 并使用 Eclipse 开发 JavaFX 现在 每次我在场景生成器中保存某些内容时 它都会从 fxml
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • 如何将实例变量传递到 Quartz 作业中?

    我想知道如何在 Quartz 中外部传递实例变量 下面是我想写的伪代码 如何将 externalInstance 传递到此作业中 public class SimpleJob implements Job Override public v
  • 为什么 BufferedWriter 不写入文件?

    我有这个代码 String strings Hi You He They Tetrabenzene Caaorine Calorine File file new File G words txt FileWriter fWriter Bu

随机推荐

  • oracle 整理表 碎片,Oracle数据库表空间碎片的查询和整理方法

    一 查看表空间碎片的方法 1 查看fsfi值 select a tablespace name trunc sqrt max blocks sum blocks 100 sqrt sqrt count blocks 2 fsfi from
  • php+redis实现消息队列

    个人理解在项目中使用消息队列一般是有如下几个原因 把瞬间服务器的请求处理换成异步处理 缓解服务器的压力 实现数据顺序排列获取 redis实现消息队列步骤如下 1 redis函数rpush lpop 2 建议定时任务入队列 3 创建定时任务出
  • 目标检测mAP计算详解

    首先说明计算mAP有多个版本 每个数据集和比赛用的版本和方式也不同 下以VOC与COCO举例说明 精确度 precision 召回率 recall 分别为 常规的mAP计算为 这是一个N类检测任务 1 计算单张图片中class1的精度P V
  • Mac启动磁盘已满怎么办?Mac启动磁盘已满怎么清理?

    如果你的Mac电脑经常弹出窗口 您的启动盘几乎已经满了 这说明你的Mac硬盘空间严重不足了 清理各种不必要的垃圾可以释放一些空间 那么Mac启动磁盘已满怎么清理 下面为大家带来几点非常实用的Mac启动磁盘清理技巧 学会这些对你使用Mac电脑
  • 若依(ruoyi)代码生成树表结构的那些坑

    相信许多做后端开发的同学 一定用过若依这款框架 这款框架易上手 适合用来做后台管理系统 但是其中也存在一些坑 稍不注意就会中招 大佬可以忽略 今天 我们说的是若依的代码生成 树结构表 话不多说 直接看图说话 1 项目正常运行 成功登录之后
  • JS 对象和函数

    目录 一 对象 创建对象的四种方式 构造函数原型对象prototype和对象原型 proto 二 函数 创建函数的3种方式 一 对象 创建对象的四种方式 第一种方式 字面量 var o1 name o1 var o2 new Object
  • STM32F103C8用内部Flash做一个优盘(USB+MSC+FATFS)

    STM32F103C8用内部Flash做一个优盘 USB MSC FATFS 轻松实现APP升级 数据存储 基本工程生成 直接使用STM32CubeMX生成基本的工程 省得我们去调底层 时钟配置为外部8MHz晶振 这个需要根据自己开发板的晶
  • Python爬虫教程:爬取800多所大学学校排名、星级等

    前言 国内大学最新排名 北大反超 浙大仅第四 中科大跌至第八 时隔五年 双一流 大学即将迎来首次大考 这也是继改变高校评断标准之后 第一次即将以官方对外发布 自然是引来了许多人的关注 最近 有许多不同机构发布的国内高校排名 但彼此之间的差异
  • 自我理解:TCP和UDP、HTTP、进程和线程

    一 TCP和UDP 1 什么是TCP和UDP TCP是面向连接的协议 发送数据前要建立连接 TCP提供的是可靠传输 UDP是无连接的协议 发送数据前不需要建立连接 是不可靠传输 2 TCP和UDP的区别 TCP是面向连接的协议 发送数据前要
  • 晟元协议指纹头,单片机开发踩坑指南

    一 硬件说明 1 接口 注意 其中Touch VCC 3 3V是需要常供电的 用于Touch Out触摸唤醒供电 VDD3 3V可以检测到Touch Out高电平信号再上电 如果不需要低功耗设计 可以忽略Touch Out和Touch VC
  • Arduino(六)——蜂鸣器唱歌

    进行这节课需要了解一个函数 1 tone pin frequency Duration 在我们的pin脚上 也就是我们的蜂鸣器上所连的脚 产生的一定频率frequency unsigned int hz 的方波信号 占空比一半 如果不再需要
  • 解决AppData/Local/Microsoft/WindowsApps/python: Permission denied

    先说一下原因 windows更新导致 path路径下多了下面这个路径的配置所以出问题 这2个文件导致 解决方案 让正确的pathon exe位于windows制定的python上方 如下图所示
  • Kubernetes高可用动态存储NFS集群

    文章目录 安装NFS服务 安装keepalived 安装Rsync Inofity 设置Rsync Inotify自动同步 Master节点服务器操作 Slave节点服务器操作 K8s部署NFS Provisioner 创建一个Servic
  • 2021年 年终总结

    不知道你们写这个类似年终总结的时候是怎么打开思路的 每年到这个时候 心里总是想着晚两天再写吧 一直拖到快到31号了才开始 动笔 一般都会打开手机相册 看看这一年从一月一号开始都记录了什么 或者生活日常 或者美食 或者自恋自拍 或者在路上 今
  • Java中double,float类型比较大小或相等的方法-soanr扫描问题Floating point numbers should not be tested for equality

    由于在二进制表示中存储这些值的挑战 浮点数学是不精确的 更糟糕的是 浮点数学不是关联的 推动float或double通过一系列简单的数学运算 由于每个步骤发生的舍入 答案将根据这些操作的顺序而不同 即使是简单的浮点赋值也不简单 float
  • Tik Tok月活12亿 Tiktok和抖音有什么不同 ?

    Tik Tok月活12亿 Tiktok和抖音有什么不同 哈喽大家好 我是项柚 目前从事Tiktok从事2年 首先 我先给大家抛一个对比数据图 国内抖音和tiktok的用户区别以及月活量分布 国内抖音月活量是4个亿左右 tiktok国际抖音月
  • MySQL 服务正在启动 . MySQL 服务无法启动 服务没有报告任何错误 解决方案

    方法一 1 找到MySQL的安装目录 将data删除 注意该文件下会有一些你自己建立的数据库的数据 2 然后复制bin文件的路径 3 从开始里搜索cmd 右键以管理员身份运行 否则会出如下错误Install Remove of the Se
  • 计算机竞赛 深度学习 YOLO 实现车牌识别算法

    文章目录 0 前言 1 课题介绍 2 算法简介 2 1网络架构 3 数据准备 4 模型训练 5 实现效果 5 1 图片识别效果 5 2视频识别效果 6 部分关键代码 7 最后 0 前言 优质竞赛项目系列 今天要分享的是 基于yolov5的深
  • pnpm安装报错npm ERR code EEXIST

    pnpm安装报错 C Users admin working gt npm install g pnpm C Program Files nodejs pnpm gt C Program Files nodejs node modules
  • 高效程序员工作法(一)

    目录 前言 一 高效程序员的思考框架 思考框架 四个思考原则 以终为始 任务分解 沟通反馈 自动化 一句话总结 二 以终为始 如何让你的努力不白费 一句话总结 三 DoD的价值 你完成了工作 为什么他们还不满意 一句话总结 四 接到需求任务