首页 > 编程语言 >读程序员的README笔记13_技术设计流程(上)

读程序员的README笔记13_技术设计流程(上)

时间:2023-12-17 09:15:14浏览次数:27  
标签:4.5 13 5.4 4.3 解决方案 程序员 3.4 README 设计

1. 行为准则

2. 设计过程的螺旋式上升

2.1. 圆锥体中的箭头进一步螺旋式上升

2.2. 你现在更确定你理解了问题空间

2.3. 你的原型为你的解决方案提供了越来越多的信心

2.4. 随着每一次迭代,设计文档变得更加清晰和详细

3. 技术设计流程

3.1. 当被要求对系统进行修改时,大多数入门级工程师会直接跳入编码环节

3.2. 技术设计流程可以帮助每个人就某项大型变更的设计达成一致

3.3. 正确地完成、参与和领导技术设计工作是很有意义并且有价值的

3.4. 单独的深入思考和协作的小组讨论

3.4.1. 研究、头脑风暴和写作构成了深度工作

3.4.1.1. 外界干扰是深度工作的“杀手”

3.4.1.2. 避免所有的交流方式

3.4.1.2.1. 关闭聊天
3.4.1.2.2. 关闭电子邮件
3.4.1.2.3. 禁用电话通知
3.4.1.2.4. 换个地方坐

3.4.2. 设计讨论和对设计文件的评论构成了合作的部分

3.4.2.1. 有形产出是一份设计文档

4. 设计的思考

4.1. 设计漏斗的基础是从探索开始的

4.1.1. 在制定设计方案之前,你需要了解问题空间和需求

4.1.2. 探索既是一项个人运动,也是一项团队运动

4.2. 定义问题

4.2.1. 首要任务是定义和理解要解决的那个(或那些)问题

4.2.2. 需要了解问题的边界,以便知道如何解决它,并避免构建错误的东西

4.2.3. 用你自己的语言向利益相关者重述问题,询问你的理解是否与他们一致

4.2.3.1. 如果有一个以上的问题,询问哪些问题是最优先的

4.2.4. 完善的问题描述将导致一份与原来截然不同的解决方案,工程师可聚焦在问题上并列出优先事项

4.3. 着手调查

4.3.1. 不要从问题定义直接就过渡到“最终”设计

4.3.2. 考虑相关的研究、替代的解决方案,以及权衡各方案的利弊

4.3.3. 你提出的设计不应该是你的第一个想法,而应该是你若干想法中最好的那个

4.3.4. 网上有大量的资源,看看别人是如何解决类似问题的

4.3.5. 行业大会是另一种可供检查的资源,幻灯片或录音通常会在网络上公布

4.3.6. 不要忘记学术研究,利用论文末尾的参考文献部分来寻找更多的阅读材料

4.3.7. 与你正在探索的问题领域的专家交流

4.3.7.1. 注意与外人交流时不要泄露公司的专有信息

4.3.8. 批判性地思考

4.3.8.1. 一个特别常见的错误做法是将一个与你的问题相似但不完全相同的解决方案全盘复制

4.3.8.2. 你的问题不是谷歌的问题(即使你在为谷歌工作),尽管它们看起来很相似

4.4. 进行实验

4.4.1. 实验会让你对自己的想法增长信心、暴露出设计上的权衡,并澄清问题空间

4.4.2. 不要迷恋你的实验性代码

4.4.2.1. 你要尽可能快地学习到更多的东西

4.5. 给些时间

4.5.1. 好的设计需要创造力

4.5.2. 设计需要深入思考

4.5.3. 你不会在你锁定的整段时间内进行“设计”

4.5.3.1. 你的大脑需要时间来放松

4.5.3.2. 休息一下,给自己一个呼吸的空间

4.5.3.3. 允许你的思想放松和游荡

4.5.3.4. 去散步、泡茶、阅读、写作、画画

4.5.4. 设计是一种每天24小时都在进行的工作,所以要有耐心

4.5.4.1. 你的大脑总在酝酿着各种想法,创意想法会在一天内随机出现(甚至在你睡觉的时候)

4.5.5. 轻松的设计方法并不意味着你可以永远这样做

4.5.5.1. 设计尖峰(design spike)是管理创造性工作和可预测的交付之间的紧张关系的一个好方法

4.5.5.1.1. 尖峰是极限编程(extreme programming,XP)的术语,指有时间限制的调查

5. 使用设计文档模板

5.1. 概要

5.2. 现状与背景

5.3. 变更的目的

5.3.1. 软件团队往往拥有超过他们能同时应对的极限的项目

5.4. 需求

5.4.1. 面向用户的需求

5.4.1.1. 从用户的角度定义了变更的性质

5.4.2. 技术需求

5.4.2.1. 包括解决方案必须满足的硬性需求

5.4.2.2. 技术需求通常是由互操作性问题或严格的内部准则引起的

5.4.2.3. 服务水平目标也可以定义在这里

5.4.3. 安全性与合规性需求

5.4.3.1. 确保安全性的需求得到明确的讨论

5.4.3.2. 数据保留和访问政策通常包括在这里

5.4.4. 其他

5.5. 潜在的解决方案

5.5.1. 撰写这部分内容对你和读者来说都是一种工具

5.5.2. 目的是迫使你不仅要思考你的第一个想法,还要思考其他的想法和它们之间的利弊

5.5.3. 描述合理的替代方案,以及你为什么拒绝它们

5.5.4. 描述潜在的解决方案将预先解决“为什么不做××?”的评论

5.5.5. 如果你因为错误的原因而否定了某个解决方案,评论者就有机会发现其中的过错,甚至可以找出你没有考虑过的替代方案

5.6. 建议的解决方案

5.6.1. 描述你所确定采用的解决方案

5.6.2. 要比概要中简短的描述更加详细,并且可能包含突出变化的图示

5.6.3. 如果你的建议包括多个阶段,请解释该解决方案是如何从一个阶段发展到另一个阶段的

5.7. 设计与架构

5.7.1. 系统构成图

5.7.2. UI/UX变更点

5.7.3. 代码变更点

5.7.4. API变更点

5.7.5. 持久层变更点

5.8. 测试计划

5.8.1. 不要事先定义每项测试,而是去解释你计划如何去验证你的变更

5.9. 发布计划

5.9.1. 描述你将使用的策略,以避免复杂的部署顺序需求

5.9.2. 记录你需要设置的特性开关,以控制新版本的展开

5.9.3. 想一想你将如何发现你发布的变更是否生效

5.9.4. 在发现问题时你将如何回滚

5.10. ⑩遗留的问题

5.10.1. 明确地列出设计中尚未回答的紧迫问题

5.10.2. 征求读者意见的一种好方法,并说明你的“已知的未知”

5.11. ⑾附录

5.11.1. 加入额外的令人感兴趣的细节

5.11.2. 添加相关工作参考

5.11.3. 进一步阅读资料

标签:4.5,13,5.4,4.3,解决方案,程序员,3.4,README,设计
From: https://www.cnblogs.com/lying7/p/17902438.html

相关文章

  • 2023-2024-1 学号20231318《计算机基础与程序设计》第十二周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十二周作业这个作业的目标自学教材《C语言程序设计》第11章并完成云班课测试。作业正文2023-2024-1学号20231318《计算机基础与程序设计》......
  • 程序员职业就是用命换钱吗?
    这个问题也可以是如何选专业、职业?1程序员的优势1.1早期可以拿到相对不错的薪资,确保前期发育稳定发育这个事情,一步快则步步快。你快别人一步,领先的不止是一个身位,你发育的速度也更快。就像打游戏,你比别人先升级、先解锁科技树了,你就比别人发育都快很多。别人还在造农民呢,你已......
  • Acwing.第134场周赛
    Acwing.第134场周赛比赛地址A排序题目思路:简单的模拟代码:#include<bits/stdc++.h>usingnamespacestd;voidsolve(){ inta,b,c; cin>>a>>b>>c; intans=a+b+c; intmaxn=max(a,max(b,c)); intminn=min(a,min(b,c)); cout<<minn<<"......
  • [ABC135D] Digits Parade
    题目意思:给你一个数(1<=数的位数<=1e5),中间包含任意位'?','?'可以是'0'~'9'中的任意数,求有满足被 13整除后余5的数 的个数。解题思路:用dp解,dp数组记录第一位到第 i 位数为止的数整 除13余k 的个数,最后输出最后一位 整除13余5的数 的个数。话不多说,直接上代码:#incl......
  • 《程序员修炼之道:从小工到专家》阅读笔记(7)
    第36节主要讨论了在项目开始之前的一些准备步骤和流程。作者强调了需求识别的重要性,并提出需求是与用户共同完成的“发现”过程,而不仅仅是收集他们的意见。需求在某种程度上应该保持抽象,因为需求不等同于架构或设计。作者还提到了一个词汇表的维护,这是为了消除歧义,并确保大家对需......
  • 20231329 《计算机基础与程序设计》第12周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12这个作业的目标《C语言程序设计》第11章并完成云班课测试作业正文https://www.cnblogs.com/xjn1......
  • 2023-2024 20231302《计算机基础与程序设计》第十二周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十二周作业这个作业的目标自学教材《C语言程序设计》第11章并完成云班课测试作业正文https://www.cnblogs.com/9q2z2z/p/17904818.html......
  • P1304 哥德巴赫猜想
    哥德巴赫猜想:任意一个大于2的偶数都可以写成两个质数之和思路:枚举质数//哥德巴赫猜想#include<bits/stdc++.h>usingnamespacestd;boolcheck(intx){ if(x<=1)returnfalse; for(inti=2;i<=sqrt(x);i++){ if(x%i==0)returnfalse; } returntrue;}voidsolve(){......
  • IDEA 程序员必备的常用快捷键 赶快收藏吧
    以下是一些常用的IntelliJIDEA的快捷键大全:IntelliJIDEA是一款功能强大的Java集成开发环境(IDE),由JetBrains公司开发。它提供了许多快捷键和功能,帮助开发者提高编码效率和工作流程基本编辑快捷键:复制:Ctrl+C(Windows/Linux)或Cmd+C(Mac)剪切:Ctrl+X(Windows/Linux)或Cmd......
  • 读程序员的README笔记12_On-Call
    1. 行为准则2. On-Call工程师2.1. On-Call工程师是应对计划外工作的第一道防线,无论是生产环境问题还是临时支持请求2.2. 将深度工作与运维工作分开,可以让团队中的大多数人专注于开发任务2.3. On-Call工程师只需专注于不可预知的运维难题和支持任务3. On-Call的工作方......