程序员高效工作法

面向程序员、研发工程师、技术骨干和研发负责人,围绕现状、目标与实现路径,学习以终为始、任务分解、沟通反馈和自动化,并在入职、遗留系统和职业发展场景中练习运用

2-3天 研发项目管理

课程大纲

开篇与思考框架

开篇与思考框架
  • 1、开篇:程序员解决的问题,大多不是程序问题
  • 1)本质复杂度与偶然复杂度
  • 2)讨论开发效率差异的任务、经验和工具因素,不作倍数承诺
  • 3)选择正确的做事方法,减少偶然复杂度
  • 2、程序员如何思考
  • 1)一个思考框架:现状、目标、实现路径
  • 2)四个思考原则:以终为始、任务分解、沟通反馈、自动化
  • 3)用思考框架向产品经理提出正确的问题

以终为始

以终为始
  • 1、以终为始:如何让你的努力不白费
  • 1)一种反直觉的思维方式
  • 2)想象的共同体
  • 3)规划和发现
  • 2、DoD的价值
  • 1)理解的鸿沟
  • 2)完成的定义
  • 3)站在DoD的肩膀上
  • 3、接到需求任务,要先做哪件事
  • 1)需求描述的问题
  • 2)"用户故事"有什么用?
  • 3)你的角色
  • 4、持续集成:集成本身就是写代码的一个环节
  • 1)集成之"灾"
  • 2)迈向持续集成
  • 3)"地面上"的持续集成
  • 5、精益创业:产品经理不靠谱,你该怎么办
  • 1)产品经理是个新职业
  • 2)精益创业
  • 3)你为什么要学习精益创业?
  • 6、解决了很多技术问题,为什么你依然在"坑"里
  • 1)"独善其身"不是好事
  • 2)角色的差异
  • 3)在更大的上下文工作
  • 7、为什么说做事之前要先进行推演?
  • 1)一个技术任务
  • 2)一次个人回顾
  • 3)通往结果之路
  • 8、你的工作可以用数字衡量吗?
  • 1)熟悉而陌生的数字
  • 2)从数字出发
  • 9、迭代0:启动开发之前,你应该准备什么?
  • 1)细化过的迭代1需求
  • 2)用户界面和用户交互
  • 3)基本技术准备:把测试覆盖率加入构建脚本
  • 4)发布准备与日常工作
  • 10、答疑解惑:如何管理你的上级
  • 1)管理上级的预期、帮助上级丰富知识、说出你的想法
  • 2)产品经理总拿老板说事,怎么办
  • 3)"别人能做的,我们也要做":抄不是问题,无脑地抄才是问题
  • 11、划重点:关于"以终为始",你要记住的9句话

任务分解

任务分解
  • 1、任务分解案例与练习
  • 1)从目标到约束和子任务的分解思路
  • 2)软件开发的任务分解:分而治之是人类解决问题的基本手段
  • 2、测试也是程序员的事吗
  • 1)谁要做测试?
  • 2)自动化测试
  • 3)测试模型:蛋卷与金字塔
  • 4)当测试金字塔遇到持续集成
  • 3、先写测试就是测试驱动开发吗
  • 1)测试驱动开发:红-绿-重构的节奏
  • 2)测试驱动设计:编写具有可测试性的代码
  • 4、大师级程序员的工作秘笈
  • 1)TDD从何而来?
  • 2)大师级程序员的秘笈
  • 3)微操作
  • 4)微操作与分支模型
  • 5、一起练习:手把手带你分解任务
  • 1)从用户注册到用户登录的完整任务分解
  • 2)任务清单与不证自明的任务
  • 6、为什么你的测试不够好?
  • 1)简单的测试
  • 2)测试的坏味道
  • 3)一段旅程(A-TRIP)
  • 4)编写可测试的代码
  • 7、程序员也可以"砍"需求吗?
  • 1)需求要分解
  • 2)需求的估算
  • 8、需求管理:太多人给你安排任务,怎么办?
  • 1)最无脑的需求管理法:老板说的
  • 2)需求的优先级:重要和紧急四象限
  • 3)站在老板面前:到更大的上下文中做判断
  • 9、如何用最小的代价做产品?
  • 1)最小的代价
  • 2)可行的路径:精益创业与最小可行产品(MVP)
  • 3)技术Spike:验证想法
  • 10、答疑解惑:如何分解一个你不了解的技术任务
  • 11、划重点:关于"任务分解",你要重点掌握哪些事

沟通反馈

沟通反馈
  • 1、为什么世界和你的理解不一样
  • 1)一个信息论视角的解释
  • 2)改善编解码算法
  • 2、你的代码为谁而写?
  • 1)编写可维护的代码
  • 2)命名难题
  • 3)用业务语言编程
  • 3、轻量级沟通:你总是在开会吗?
  • 1)头疼的开会
  • 2)轻量级沟通
  • 3)站立会议
  • 4、可视化:一种更为直观的沟通方式
  • 1)什么是技术雷达?
  • 2)可视化的优势
  • 3)什么是看板?
  • 5、快速反馈:为什么你们公司总是做不好持续集成?
  • 1)快速得到反馈
  • 2)得到有效的反馈
  • 6、开发中的问题一再出现,应该怎么办?
  • 1)什么是复盘?
  • 2)回顾会议
  • 3)5个为什么
  • 7、作为程序员,你也应该聆听用户声音
  • 1)吃自家的狗粮
  • 2)当你吃不到狗粮时
  • 3)当产品还没有用户时
  • 8、尽早暴露问题:为什么被指责的总是你?
  • 1)谁知道有问题?
  • 2)Fail Fast:遇到问题,尽早报错
  • 3)克服心理障碍
  • 9、结构化:写文档也是一种学习方式
  • 1)你为什么不喜欢写文档?
  • 2)知识输出
  • 3)金字塔原理
  • 4)无他,唯手熟尔
  • 10、划重点:一次关于"沟通反馈"主题内容的复盘
  • 11、选学:用户故事

项目自动化

项目自动化
  • 1、加餐:你真的了解重构吗?
  • 1)每个程序员都要做的事
  • 2)重构是一种微操作:不改变软件的可观察行为
  • 3)重构地图
  • 2、"懒惰"应该是所有程序员的骄傲
  • 1)优秀程序员的三大美德:懒惰、急躁和傲慢
  • 2)不要自动化与小心NIH综合症
  • 3)做好自动化:你要懂得软件设计
  • 3、一个好的项目自动化应该是什么样子的?
  • 1)基础准备与初见项目
  • 2)检查
  • 3)数据库迁移
  • 4)构建应用
  • 4、程序员怎么学习运维知识?
  • 1)零散的运维知识
  • 2)Java知识体系
  • 3)运维知识体系:有体系地学习运维知识
  • 5、持续交付:有持续集成就够了吗?
  • 1)持续交付
  • 2)DevOps
  • 3)持续部署与持续交付的主流选择
  • 6、如何做好验收测试?
  • 1)验收测试:站在业务的角度编写
  • 2)行为驱动开发(BDD)
  • 3)写好验收测试用例
  • 7、你的代码是怎么变混乱的?
  • 1)逐步腐化的代码
  • 2)SOLID原则
  • 3)单一职责原则
  • 4)编写短函数
  • 8、总是在说MVC分层架构,但你真的理解分层吗?
  • 1)设计上的分解
  • 2)无处不在的分层
  • 3)有抽象有发展
  • 4)构建你的抽象
  • 9、为什么总有人觉得5万块钱可以做一个淘宝?
  • 1)淘宝的发展历程
  • 2)同样的业务,不同的系统
  • 3)你用对技术了吗?
  • 10、先梳理领域边界再评估微服务的独立部署、数据与协作成本
  • 1)微服务
  • 2)领域驱动设计
  • 3)走向微服务:不要分布对象
  • 11、答疑解惑:持续集成、持续交付,然后呢?
  • 12、划重点:"自动化"主题的重点内容回顾汇总

综合应用

综合应用
  • 1、新入职一家公司,怎么快速进入工作状态?
  • 1)运用思考框架
  • 2)从大图景入手:业务、技术、团队运作
  • 2、面对遗留系统,你应该这样做
  • 1)分清现象与根因
  • 2)确定方案:构建测试防护网,分成小块逐步替换
  • 3)小步改造遗留系统,不要回到老路上
  • 3、我们应该如何保持竞争力?
  • 1)面对职业变化感到压力的程序员
  • 2)成为T型人:一专多能
  • 3)在学习区成长
  • 4、答疑解惑:如何在实际工作中推行新观念
  • 5、划重点:"综合运用"主题内容的全盘回顾
  • 6、总复习:重新审视"最佳实践"
  • 1)产品与需求
  • 2)持续集成与测试
  • 3)编码和设计与项目准备
  • 4)DoD、站会、看板、回顾会议、重构、分支开发、Fail Fast
  • 7、总复习:重新来"看书"
  • 1)编码实践、设计、工程实践
  • 2)领域驱动设计、产品需求、开发文化、软件开发拾遗、技术之外
  • 8、结束语:少做事,才能更有效地工作

适合对象

程序员、研发工程师、技术骨干及研发团队负责人

课程定位与主要问题

面向程序员、研发工程师、技术骨干和研发负责人,围绕现状、目标与实现路径,学习以终为始、任务分解、沟通反馈和自动化,并在入职、遗留系统和职业发展场景中练习运用

课程适配与选型边界

面向程序员、研发工程师、技术骨干和研发负责人,围绕现状、目标与实现路径,学习以终为始、任务分解、沟通反馈和自动化,并在入职、遗留系统和职业发展场景中练习运用

适合对象

程序员、研发工程师、技术骨干及研发团队负责人

训练场景

面向程序员、研发工程师、技术骨干和研发负责人,围绕现状、目标与实现路径,学习以终为始、任务分解、沟通反馈和自动化,并在入职、遗留系统和职业发展场景中练习运用

授课安排

2-3天。专题讲授、工程案例讨论、工具演示与实践练习

课程侧重

面向研发团队的目标倒推、任务分解、沟通反馈和自动化工作方法

核心收益

  • 运用现状、目标、路径框架澄清需求与完成标准
  • 学习任务分解、TDD、优先级管理和小步验证
  • 练习业务语言沟通、可视化、反馈与结构化文档
  • 梳理持续集成、交付、验收测试和项目自动化
  • 在入职、遗留系统与职业发展场景中组合使用四原则

课程背景与交付信息

课程安排:2-3天(6小时/天)

课程以方法练习和工作改进为目标,不承诺固定效率倍数;讨论技术与业务约束下的选择

课程时间

2-3天

授课方式

专题讲授、工程案例讨论、工具演示与实践练习

课程内容重点

01开篇与思考框架
02以终为始
03任务分解
04沟通反馈
05项目自动化
06综合应用

讲师介绍

张永智 讲师头像

张永智

AI应用与软件研发培训讲师

张永智的课程聚焦AI应用与智能体开发、Harness工程、RAG检索增强、软件设计和研发工作方法,面向研发工程师、架构师、技术负责人及需要使用AI工具的业务人员,结合工程案例、工具演示与实践练习开展教学

查看讲师主页

课程差异说明

面向研发团队的目标倒推、任务分解、沟通反馈和自动化工作方法

课程常见问题

这门课适合哪些岗位?

程序员、研发工程师、技术骨干及研发团队负责人。

课程主要训练哪些内容?

开篇与思考框架;以终为始;任务分解

课堂会练习哪些能力?

运用现状、目标、路径框架澄清需求与完成标准;学习任务分解、TDD、优先级管理和小步验证;练习业务语言沟通、可视化、反馈与结构化文档

课程的时长和授课形式是什么?

2-3天。专题讲授、工程案例讨论、工具演示与实践练习

这门课的训练侧重是什么?

面向研发团队的目标倒推、任务分解、沟通反馈和自动化工作方法