0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

程序员怎样讲清楚技术方案

工程师人生 来源:工程师吴畏 2019-01-03 09:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近在评审技术方案,和代码review的时候,遇到刚入行的同学们,很多都讲不清楚技术方案。

具体表现是:

上来不说需求,直接说算法实现。台下一头雾水,根本不知道设计方案是否合理。

描述完需求后,又直接看代码,看表结构,没有交代流程。

比较简单的算法,描述的特别绕,让人听不懂。被别人指出后,觉得这东西这么简单,你们为什么听不懂,还很委屈。

直接说术语,不给解释。还有自己造术语不给解释的,更混乱的是「复用」已有的术语,让大家理解都不同。

那么程序员如何把技术方案讲清楚呢?下面从实用的角度教大家一些小技巧,在短时间内具备讲清楚的能力。在文末给出通用的方法论学习书籍,供长线学习,达到把所有事情都能交代清楚。

一、要先交代需求背景

为什么要做这个需求,对于实现的要求是什么,产品经理提了哪些边界条件。没有银弹,一个技术方案的好坏与实现要求息息相关,是不能脱钩的。例如,一个接口访问质量统计系统,可以接受一天跑一次脚本生成数据。但是为用户提供服务的消费明细,肯定要能实时展示,并且不能出错。

在评审中,消耗时间比较多的,就是台下的听众问被评审人需求背景。还有台下的人给出了某个建议,然后被被评审人否定,说有个产品的要求我刚才没说。这时对提出建议的人来说,是很伤的。

交代好背景并对齐,是评审技术方案和代码review的基础,否则别人不知道你后面的是否合理,甚至不知道你到底在做什么。技术方案评审就无从谈起了。

二、介绍技术方案整体架构

背景知识说完后,说你的做法。要先总后分,先从整体介绍架构设计。有哪些模块,各自负责什么职责,如何衔接……让大家有个整体认识,看到哪部分是主要矛盾,大家把80%的精力花费在20%的重要模块上评审,好钢用在刀刃上。

例如一个发奖活动,最重要的模块是发奖抽奖模块,但是上来不讲整体,而是先讲展示活动规则的模块,而且用掉了大半的时间,是很浪费人力的。

整体架构的描述用架构图、流程图,加上简练的语言,交代明白即可。一般都有架构模板,直接按照模板的要求,参考已有的优秀例子,都不会有大问题。最重要的是这块要先讲,先交代清楚。

三、介绍协议、库表设计

整体方案介绍完之后,介绍协议和数据库表设计,开始逐步深入细节。因为这块设计的是否合理,对程序的效率影响比较大。

分清哪些协议、表是重要的,着重讲,其他不太重要的快速讲。

协议的执行流程,要交代清晰,整个协议是怎么在各个模块中流转的,到具体数据修改时,是如何和已有表结构串联起来的。这也是程序执行的流程,如果讲不清楚,会深度怀疑你是否能实现清楚。

这部分要注意,尽量少说术语。因为大家的背景知识不同,一些专门术语大家是不知道的,你要用直白的话语让大家听明白。

例如:有人在描述协议流程时说「我调用server提供的123号命令,返回成功后,把数据库的state字段改为2,就完成发奖了」。但是你说的123是干什么的,state是什么意思,2是什么状态?

大家的疑问太多了,好的说法应该是,「我调用server提供的123号发奖的协议,返回成功后,把数据库中该用户的发奖状态,更新为已发奖」。

四、描述分支和异常逻辑,讲解代码

经过前面几部的讲解,方案基本上讲完了。剩下的就是讲分支逻辑,和异常逻辑。一份代码写的好不好,程序员是否有经验,主要是看对于异常处理是否到位。

这部分从架构上主要讲容灾、鲁棒性,例如某个server死掉了,或者某个模块频繁请求,你的系统是否有预警,能够兼容。说白了就是要讲解系统的边界条件和服务能力。

最后上代码,如果是代码review,在这个时候才开始说你的代码。虽然看的时间比较晚,但是大家都知道你的代码是什么功能了,看的速度也会加快。

五、复盘

每次评审后,要自己复盘,总结。别人都问题哪些问题,为什么要问?哪些问题是我应该交代没交代的,让人家问了?哪些是我方案的问题,别人提出的挑战?

对于自己没交代的,思考为什么会漏,如果能提前讲清楚,是否能节约很多时间。

根本的心法就是要有同理心。从对方的角度思考,这个问题他会了解吗,我不说他明白吗?方案评审重要的不是你说完,而是别人听懂。关注台下人的反应,你的任务不是讲,而是让大家听明白。不是一个劲的说,而是要让大家都理解你的意思,这样别人才能帮你。否则别人会一直问问题,挑战你,最后否定你的方案。

千万不要觉得听众好笨,这么简单都不明白,如果台下的人都不明白,那么一定是你错了。能力强的人是能够把难题讲解的很简单的。美国有专门负责科普的作家,把复杂的科学知识做到「老妪能解」。台下评审的人都是身经百战的,如果他们都反映听不懂,那么会是谁的问题呢?

总结

技术方案讲解要先交代背景,再讲整体架构,再细化流程。先主线,再分支,先正确路径,再异常逻辑。要在听众的角度去讲,尽量直白简单,能够让不懂技术的人听懂才是最好的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序员
    +关注

    关注

    4

    文章

    955

    浏览量

    30785
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    别再迷糊了!Linux交叉编译到底是个啥?一文讲清楚

    就用 不绕弯子、接地气、工程师能看懂 的方式,把交叉编译讲得明明白白。 而且结合我们钡铼技术(BaileiTech)那些跑在 ARM、RISC-V、国产嵌入式 Linux 的产品,告诉你交叉编译在工业场景里究竟为什么重要。 一、交叉编译是什么?一句话讲清
    的头像 发表于 12-03 16:28 380次阅读
    别再迷糊了!Linux交叉编译到底是个啥?一文<b class='flag-5'>讲清楚</b>

    一文讲清楚TVS二极管的作用和分类

    TVS二极管(Transient Voltage Suppression Diode,瞬态电压抑制二极管)是一种专门用于抑制电路中瞬态过电压的半导体器件,其核心作用是通过快速响应和低钳位电压保护电子设备免受电压尖峰的损害。以下是其具体作用及关键特性: 1. 核心作用:抑制瞬态过电压 电压尖峰吸收:当电路中因雷击、静电放电(ESD)、电源切换或感性负载(如电机、继电器)断开时,会产生瞬态高电压脉冲(可能达数千伏)。TVS二极管能在纳秒级时间内导通,将尖峰电压限制在安
    的头像 发表于 11-18 16:41 1332次阅读
    一文<b class='flag-5'>讲清楚</b>TVS二极管的作用和分类

    一文讲清楚线性霍尔灵敏度和输出关系

    线性霍尔灵敏度与输出范围的关系解析 一、核心定义与物理基础 灵敏度(Sensitivity) 线性霍尔传感器的灵敏度(单位:mV/mT 或 mV/G)表示单位磁场强度变化时输出电压的变化量。例如,灵敏度为5mV/mT的传感器,磁场强度增加1mT时,输出电压增加5mV。 公式 :Vout​=S⋅B+V0​ 其中,Vout​为输出电压,S为灵敏度,B为磁场强度,V0​为无磁场时的基准电压(通常为电源电压的一半,如5V供电时为2.5V)。 输出范围(Output Range) 输出范围由电源电压(Vcc​)和磁
    的头像 发表于 11-18 16:38 444次阅读

    工业级防爆型PDA手持终端(化工/石油/矿场等场景)的实操指南

    今天讲防爆型PDA手持终端,主要会讲到:为什么要用防爆PDA、它们到底怎么防爆、要看哪些证书与参数、不同场景的选型与落地注意点、以及采购/验收/运维清单”都会尽量讲清楚
    的头像 发表于 11-04 15:02 268次阅读
    工业级防爆型PDA手持终端(化工/石油/矿场等场景)的实操指南

    奔赴热AI,码力全开!Talkweb House@1024程序员日系列活动圆满收官

    1024程序员日”系列活动至此划上了一个圆满句号。本届1024程序员节以“AI构建世界,智能引领未来”为主题,广邀技术大咖、产业领袖、企业代表与全球开发者齐聚星城
    的头像 发表于 10-27 18:59 423次阅读
    奔赴热AI,码力全开!Talkweb House@1024<b class='flag-5'>程序员</b>日系列活动圆满收官

    开鸿智谷“以赛促学、以赛选才”|1024程序员节暨开源鸿蒙构建大会圆满落幕!

    10月24日,由开鸿智谷联合主办的长沙1024程序员节暨开源鸿蒙构建大会在长沙圆满落幕。本次活动以“湘聚长沙,共赴热AI”为主题,通过技术分享与实战竞赛相结合的方式,着力培养“开源鸿蒙+AI”领域
    的头像 发表于 10-27 17:58 474次阅读
    开鸿智谷“以赛促学、以赛选才”|1024<b class='flag-5'>程序员</b>节暨开源鸿蒙构建大会圆满落幕!

    阿里云设备的物模型数据里面始终没有值是哪里的问题?

    如上图,不知道讲清楚没有。 IG502自定义TOPIC 上发到阿里云没问题。采用阿里云物模型的格式来上发就不行。请大佬指教!
    发表于 08-05 06:43

    一文了解什么是 BQB 认证

    讲清楚。一、什么是BQB认证?BQB是BluetoothQualificationBody的缩写,即“蓝牙资格认证”。它是由**蓝牙技术联盟(BluetoothSI
    的头像 发表于 07-18 14:53 1319次阅读
    一文了解什么是 BQB 认证

    一文讲清楚芯片的分类-多个维度

    •定义:执行程序指令、处理数据的核心组件,包含算术逻辑单元(ALU)、控制单元(CU)等。 •类型: •CPU(中央处理器):计算机、服务器的“大脑”,如Intel Core系列。 •GPU(图形处理器):擅长并行计算,用于图形渲染、AI加速,如N
    的头像 发表于 05-06 15:04 5112次阅读

    一文讲清楚电动汽车充电系统

    充电系统是新能源汽车主要的能源供给系统,为保障车辆持续行驶提供动力能源。电动汽车的充电系统是新能源转型的关键组成部分,直接影响着车辆的使用体验与效率。根据电动汽车动力蓄电池的技术特性和使用性质,其
    的头像 发表于 01-24 16:58 4326次阅读
    一文<b class='flag-5'>讲清楚</b>电动汽车充电系统

    桃芯科技软件审核简介

    本文档对如何审核一个项目的软件是否符合量产要求进行阐述;审核目的为确保软件足够健全、稳定、易于量产,做出更有品质的产品;该文档不一定会讲清楚每个检测项,但会尽可能提示你如何掌控调整方向。
    的头像 发表于 01-24 09:24 764次阅读

    阿里云升级通义灵码AI程序员,全面上线

    近日,阿里云宣布其备受瞩目的通义灵码AI程序员已正式全面上线,为开发者带来更为强大和便捷的编程辅助工具。 此次上线的通义灵码AI程序员,在功能上实现了全面升级。现在,它支持VS Code
    的头像 发表于 01-09 11:16 956次阅读

    TMS320C6000程序员指南

    电子发烧友网站提供《TMS320C6000程序员指南.pdf》资料免费下载
    发表于 12-24 17:19 2次下载
    TMS320C6000<b class='flag-5'>程序员</b>指南

    TMS320C55x DSP CPU程序员参考补充

    电子发烧友网站提供《TMS320C55x DSP CPU程序员参考补充.pdf》资料免费下载
    发表于 12-21 11:36 3次下载
    TMS320C55x DSP CPU<b class='flag-5'>程序员</b>参考补充

    UCD3138A64/UCD3138128程序员手册

    电子发烧友网站提供《UCD3138A64/UCD3138128程序员手册.pdf》资料免费下载
    发表于 12-09 14:42 1次下载
    UCD3138A64/UCD3138128<b class='flag-5'>程序员</b>手册