10X精简版
2021-09-18 17:03:46 1 举报
AI智能生成
10X精简版是一款高效、实用的软件工具,它通过去除冗余功能和优化代码,实现了更轻量级的运行体验。该版本保留了核心功能,同时减少了资源占用,使得软件在低配置设备上也能流畅运行。10X精简版界面简洁明了,操作便捷,用户可以轻松上手。无论是日常办公还是娱乐休闲,10X精简版都能满足用户的需求。它的快速响应和稳定性能让用户在使用过程中感受到极致的流畅度。总之,10X精简版是一款值得推荐的实用软件,它将为用户提供更加高效、便捷的使用体验。
作者其他创作
大纲/内容
任务分解
重点复习<br>
测试金字塔
测试驱动开发
艾森豪威尔矩阵(Eisenhower Matrix)<br>
最小可行产品<br>
额外收获
对不了解技术的任务,先要去了解技术,然后再做任务分解;<br>
通过一次技术 Spike ,学习新技术;<br>
丢弃掉在 Spike 过程中开发的原型代码;<br>
分清目标与现状,用目标作为方向,指导现状的改变;<br>
多个功能并行开发可以考虑使用 Feature Toggle;<br>
在遗留系统上做改造可以考虑使用 Branch by Abstraction 。<br>
应用的做法和评判标准
尽量不写 static 方法;<br>
主分支开发模型是一种更好的开发分支模型;<br>
好的用户故事应该符合 INVEST 原则;<br>
估算是一个加深对需求理解的过程,好的估算是以任务分解为基础的;<br>
好的测试应该符合 A-TRIP。<br>
改善自己的开发工作<br>
分而治之,是人类解决问题的基本手段;<br>
软件变更成本,它会随着时间和开发阶段逐步增加;<br>
测试框架把自动化测试作为一种最佳实践引入到开发过程中,使得测试动作可以通过标准化的手段固定下来;<br>
极限编程之所以叫“极限”,它背后的理念就是把好的实践推向极限;<br>
大师级程序员的工作秘笈是任务分解,分解到可以进行的微操作;<br>
按照完整实现一个需求的顺序安排开发任务。<br>
沟通反馈
看板<br>
一种来自精益生产的可视化实践。<br>
按阶段将任务放置其中。<br>
可以帮助我们发现问题。<br>
持续集成
做好持续集成的关键是,快速反馈。
本地检查通过之后再提交。<br>
到有效的反馈方式,比如:CI 监视器。<br>
持续集成的纪律。<br>
只有 CI 服务器处于绿色的状态才能提交代码。<br>
CI 服务器一旦检查出错,要立即修复。<br>
回顾会议
软件团队复盘的一种实践。
枚举关注点,选出重点,深入讨论,列出行动项,找到负责人。<br>
5 个为什么
又一个来自丰田的实践。
沿着一条主线追问多个问题。<br>
用信息论理解沟通反馈
写代码的进阶路径<br>
编写可以运行的代码。<br>
编写符合代码规范的代码。
编写人可以理解的代码。<br>
用业务语言写代码。<br>
重点<br>
会议是一种重量级的沟通方式
减少参会人数。<br>
找人面对面沟通。
聆听用户声音<br>
能做自己用户,做自己的用户。
能接近用户,接近用户。<br>
没有用户,创造用户。<br>
Fail Fast<br>
一种编写代码的原则。<br>
出现问题尽早报错。<br>
金字塔原理<br>
从中心论点,到分论点,再到论据。
额外收获
持续集成是一条主线,可以将诸多实践贯穿起来。<br>
从持续集成到稳定的开发分支,到频繁提交,足够小的任务,到任务分解。<br>
从持续集成到可检查,到测试防护网,到测试覆盖率,到单元测试,到可测试代码,到软件设计。<br>
安全性检查,是回顾会议的前提条件<br>
在信息获取上,国内外程序员差别不大,开拓视野,改善工作习惯,是国内程序员亟需提高的。<br>
自动化
持续交付<br>
将生产部署纳入了开发的考量。<br>
持续交付的基础设施通常包含持续集成环境、测试环境、预生产环境和生产环境<br>
构建流水线保证到了下游的交付物一定是通过上游验证的。<br>
随着 Docker 的诞生,交付由发布包变成了 Docker 镜像。<br>
DevOps<br>
将开发和运维结合到一起。
环境配置工具上的进步,让基础设施即代码成了行业共识。<br>
验收测试
验收测试要站在业务的角度编写。<br>
BDD 是一种编写验收测试的方式<br>
Given…When…Then… 的描述给了一个描述业务的统一方式。<br>
写好验收测试,需要构建测试模型。<br>
SOLID 原则<br>
设计模式背后的道理。<br>
单一职责原则(Single responsibility principle,SRP)。<br>
开放封闭原则(Open–closed principle,OCP)<br>
Liskov 替换原则(Liskov substitution principle,LSP)<br>
接口隔离原则(Interface segregation principle,ISP)<br>
依赖倒置原则(Dependency inversion principle,DIP)<br>
用好单一职责原则,前提条件是看待问题颗粒度要小<br>
DDD
它将思考的起点拉到了业务上。
DDD 分为战略设计和战术设计。<br>
微服务<br>
做好微服务的前提是划分好限界上下文。<br>
微服务的第一步,不要划分微服务。<br>
结束语
算法优化,其实就是尽可能利用已知的信息,少做不必要的事。
有效工作,需要我们把力量聚焦到正确的地方,做本质复杂度(Essential Complexity)的事情,少做无意义的事情。
如何思考<br>
优秀程序员的开发效率是普通程序员的 10 倍。
三个问题
我现在是个什么水平? --- 现状
我想达到一个什么水平? --- 目标<br>
我将怎样到达那个目标? --- 实现路径<br>
如果一个人能够清晰地回答出这三个问题,通常意味着他对要做的事有着清晰的认识。
产品经理的提问
为什么要做这个特性,它会给用户带来怎样的价值?<br>
什么样的用户会用到这个特性,他们在什么场景下使用,他们又会怎样使用它?<br>
达成这个目的是否有其它手段?是不是一定要开发一个系统?<br>
这个特性上线之后,怎么衡量它的有效性?<br>
四个原则
以终为始<br>
任务分解<br>
沟通反馈
自动化
我们不是一个人孤独地在工作,而是与其他人在协作,想要做到高效工作,我们就要“抬起头”来,跳出写代码这件事本身。所以,我在开篇词里说,程序员解决的问题,大多不是程序问题。
面对问题时,用思考框架问问自己,现状、目标和路径。<br>
以终为始
重点复习
DoD,确定好完成的定义,减少团队内部的理解不一致。
用户故事,细化出有价值的需求。<br>
持续集成,通过尽早集成,减少改动量,降低集成的难度。<br>
精益创业,减少过度开发不确定性产品带来的浪费。<br>
迭代 0,在项目开始之前,做好一些基础准备。<br>
思维转变
任何事物都要经过两次创造:一次是在头脑中的创造,也就是智力上的或者第一次创造(Mental/First Creation),然后才是付诸实践,也就是实际的构建或第二次创造(Physical/Second Creation)。
在更大的上下文内发现自己的“终”。<br>
通过推演,找到通往“终”的路径。<br>
用可度量的“数字”定义自己的“终”。<br>
回顾
遇到事情,倒着想<br>
在做任何事之前,先定义完成的标准。<br>
在做任何需求或任务之前,先定好验收标准。<br>
尽早提交代码去集成。<br>
默认所有需求都不做,直到弄清楚为什么要做这件事。<br>
扩大自己工作的上下文,别把自己局限在一个“程序员”的角色上。<br>
在动手做一件事之前,先推演一番。<br>
问一下自己,我的工作是不是可以用数字衡量。
设计你的迭代 0 清单,给自己的项目做体检。
综合运用
新入职一家公司,怎么快速进入工作状态?<br>
运用思考框架
三个问题
Where are we?(我们现在在哪?)
Where are we going?(我们要到哪儿去?)<br>
How can we get there?(我们如何到达那里?)<br>
技术解决的是“怎么做”的问题,而我们第一个应该了解的问题是“做什么”。
三个小目标
业务<br>
技术<br>
团队运作<br>
从大图景入手(由外到内)
业务
技术<br>
团队运作
面对遗留系统,你应该这样做
分清现象与根因
它们只是现象,不是根因。
确定方案
先尝试重构你的代码,尽可能在已有代码上做小步调整,不要走到大规模改造的路上,因为重构的成本是最低的。
一方面,建立好领域模型,另一方面,寻找行业对于系统构建的最新理解。
建议
构建测试防护网,保证新老模块功能一致;<br>
分成小块,逐步替换;<br>
构建好领域模型;
寻找行业中关于系统构建的最新理解。
小步改造遗留系统,不要回到老路上。<br>
我们应该如何保持竞争力?
焦虑的程序员
我们的焦虑来自于对未来的不确定性,而这种不确定性是一个特定时代加上特定行业的产物。
成为 T 型人
有了“一专”,“多能”才是有意义的,否则,就是低水平重复,而这正是很多人职业生涯不见起色的真正原因。
在学习区成长
如果你还什么都不会,那有一份编程的工作就好。
如果你已经能够写好普通的代码,就应该尝试去编写程序库。<br>
如果实现一个具体功能都没问题了,那就去做设计,让程序有更好的组织<br>
如果你已经能完成一个普通的系统设计,那就应该去设计业务量更大的系统。<br>
如何在实际工作中推行新观念?<br>
1:想要推行 DDD,阻力很大怎么办?
找到愿意和你一起改变的人,做一件具体的事。
Talk is cheap. Show me the code.
当你寻求改变时,无论你的角色是什么,你都需要扮演好领导者的角色,“Lead by Example”送给你!
2:测试怎么写?
外部系统对你来说,应该只是一个接口。
如果有任何外部系统,都要设计防腐层,用接口做隔离。
能模拟的就模拟,能本地的就本地。
关于外部系统的测试,你可以先通过接口隔离开来,然后,通过模拟服务或本地可控的方式进行测试。
“综合运用”主题内容的全盘回顾
“学习区”学习模型<br>
舒适区,舒适而缺乏成长。<br>
恐慌区,超出能力范围。<br>
学习区,有难度而可以达成<br>
在学习区练习才能得到足够的成长。
T 型人才,一专多能
知识的广度。<br>
专业技能的深度。<br>
有“一专”,“多能”才是有意义的。<br>
进入新工作,从全面了解了解开始
业务:做什么。<br>
技术:怎么做。<br>
团队运作:怎么与人协作。<br>
大到小,由外及内地了解工作。<br>
面对遗留系统,稳扎稳打,小步前行<br>
基础理念<br>
烂代码只是现象,要了解根因。<br>
能重构,先重构,大规模改造是迫不得已的选择。<br>
小步前行。<br>
实际操作<br>
构建测试防护网。<br>
将大系统分解成小模块,逐步替换。<br>
新旧模块并存,由分发模块调度<br>
建立好领域模型。<br>
寻找行业对于系统构建的最新理解。<br>
程序员的职业发展
程序员的焦虑来自于对未来的不确定性,这种不确定性是一个特定时代加上特定行业的产物。<br>
快速发展的中国经济。
程序员在中国是一个新兴职业。<br>
成为行业专家,制定高目标。<br>
向大师学习,开拓视野。<br>
找到好的问题,和高水平的人一起工作。<br>
0 条评论
下一页