今天做了一个关于如何做架构设计的分享,其中有个很重要的问题就是如何更好的做技术决策,我针对我们前端团队整理了5条做技术决策的原则。
原则 0: 遵守公认的好的设计原则,比如说:
- DRY - Don't repeat yourself (不要重复自己)
- KISS - Keep it Simple, Silly (让设计尽可能的简单)
- YAGNI - You aren't gonna need it (只做刚刚好的设计,不要过度设计)
- … 其他
原则1: 找出最本源的需求,而不应该局限于当前的技术实现和资源
很多时候我们很容易被表面需求所误导,类似于乔布斯的名言:“如果亨利福特在发明汽车之前去做市场调查,他得到的答案一定是大家想要一辆更快的马车。”,如果我们在做设计和技术决策的时候,没有找出用户的真实需求,很容易就会在错误的方向上狂奔,做很多无用功!
要找出本源的需求,还是需要多问为什么,多和干系人沟通,少考虑技术细节,少被现有的技术所误导或局限。
- 案例:设计部门希望设计系统支持Angular (更多案例参考图一)
我们设计部门最近希望我们的设计系统提供Angular版本,因为当前只支持React版本。
从这个需求来看,表面是是要我们开发Angular版本,其实如果仔细追问他们到底为什么需要Angular版本,是因为有一个团队还在用Angula,他们希望这个团队能用我们的设计系统,但是人家表示用不了。其实本源的需求是希望有更多的团队用设计系统,而不是要支持Angualr。
那要满足这个团队的这个需求,是不是非要做一个Angular版本不可呢?当然不需要,如果我能提供一个类似于BootStrap的HTML和CSS版本,其实他们一样能用起来,而这么做成本不高,并且别的团队也可以用。
原则2: 聚焦于 “收益”、“成本”和“风险”三者之间的平衡,而不是技术本身
(图二)
每一次技术决策,其实本质上就是一次取舍(Trade-Offs)
每一次取舍(Trade-Offs),本质上就是在“收益”、“成本”和“风险”三者之间的平衡
既然每一个决策都涉及到收益成本风险,那么就不能只看收益而无视成本和风险。就像前一个案例中提到的,设计部门考虑的是Angular版本带来的收益,但是他们却忽略了打造一套Angular版本的设计系统所需要的成本,以及可能带来的巨大风险。(图三)
所以在做技术决策的时候,理性的考虑一下 决策背后的收益、成本和风险的关系是很必要的,而不是仅靠喜好或者直觉来做决策。
原则3: 选择某个技术背后的生态系统而不是某个技术
这条原则特别适用于前端领域,在前端,各种新技术、框架、工具层出不穷,如果总是追新,或者被某个软文吸引轻易选择了某个技术,最终会带来巨大的成本。
案例:为什么我们从Preact迁移到React
在早些年的时候,我们前端选择了Preact作为UI渲染技术,这有早年React License的原因,也有Preact更小性能更好的原因。
然而这些年在使用过程中,还是有很多不足的地方,核心原因都是生态不够好。
比如说Preact调试很麻烦,因为它不像React有一个强大的DevTools;比如说我们遇到过Preact在服务端渲染的内存泄漏问题,如果像我们这样大规模访问量的用户多一点,可能早就有人踩过坑了,不需要我们去花很长时间定位并最终去解决这个问题;比如最近我们在集成Nextjs,Nextjs是完全为React设计的,对Preact兼容性并不好。
这样的案例还很多(图四),所以选择技术,它背后的生态和社区活跃度很重要。
原则4: 不仅要考虑如何构建,还要考虑如何维护
(图五)
这是一个常见的问题,很多人只管搭建新项目的时候爽,而不管后续维护是不是困难,用了一堆自己喜欢的新技术,最后难以维护。下一个人接手了,搞不好会推翻重写一遍,这样的循环一次又一次。
这样的错误我也常犯,比如2年前React Hooks刚出的时候,我就迫不及待用它来替代Redux,结果上线后发现不好维护,有Bug也不好定位,不像以前Redux,数据流特别清晰,借助工具非常好重现和定位问题,最终上线没多久就改回去了。
所以现在在做技术决策的时候,我们很注意的一个问题就是将来维护的时候是不是很麻烦。
包括我在代码审查的时候,有时候看到一些功能能运行的很好PR,但是代码写的比较难懂的,或者没有遵守最佳实践的,只要是给未来的维护造成麻烦的,我都会毫不犹豫要求重写,避免增加未来的维护成本。
上面就是我们现在实践的五个技术决策原则:
- 原则 0: 遵守公认的好的设计原则
- 原则 1: 找出最本源的需求,而不应该局限于当前的技术实现和资源
- 原则 2: 聚焦于 “收益”、“成本”和“风险”三者之间的平衡,而不是技术本身
- 原则 3: 选择某个技术背后的生态系统而不是某个技术
- 原则 4: 不仅要考虑如何构建,还要考虑如何维护
这些原则绝大部分时候都可以很好的帮助我们做出正确的决策,避免踩坑。但我也会一直在反思曾经做过的决策,对于做出的不太好的决策,会反过来考虑是否要修订这些原则,最终通过不断完善决策原则,帮助我和团队更好的做出技术决策。
最后,推荐一下左耳朵耗子写的一篇:《我做系统架构的一些原则》https://t.cn/A6xBKsCV ,非常有借鉴和参考价值。
插一个广告(图六),帮以前我在美国DePaul大学的老师招全奖研究生的广告:https://t.cn/A66yuwuq
原则 0: 遵守公认的好的设计原则,比如说:
- DRY - Don't repeat yourself (不要重复自己)
- KISS - Keep it Simple, Silly (让设计尽可能的简单)
- YAGNI - You aren't gonna need it (只做刚刚好的设计,不要过度设计)
- … 其他
原则1: 找出最本源的需求,而不应该局限于当前的技术实现和资源
很多时候我们很容易被表面需求所误导,类似于乔布斯的名言:“如果亨利福特在发明汽车之前去做市场调查,他得到的答案一定是大家想要一辆更快的马车。”,如果我们在做设计和技术决策的时候,没有找出用户的真实需求,很容易就会在错误的方向上狂奔,做很多无用功!
要找出本源的需求,还是需要多问为什么,多和干系人沟通,少考虑技术细节,少被现有的技术所误导或局限。
- 案例:设计部门希望设计系统支持Angular (更多案例参考图一)
我们设计部门最近希望我们的设计系统提供Angular版本,因为当前只支持React版本。
从这个需求来看,表面是是要我们开发Angular版本,其实如果仔细追问他们到底为什么需要Angular版本,是因为有一个团队还在用Angula,他们希望这个团队能用我们的设计系统,但是人家表示用不了。其实本源的需求是希望有更多的团队用设计系统,而不是要支持Angualr。
那要满足这个团队的这个需求,是不是非要做一个Angular版本不可呢?当然不需要,如果我能提供一个类似于BootStrap的HTML和CSS版本,其实他们一样能用起来,而这么做成本不高,并且别的团队也可以用。
原则2: 聚焦于 “收益”、“成本”和“风险”三者之间的平衡,而不是技术本身
(图二)
每一次技术决策,其实本质上就是一次取舍(Trade-Offs)
每一次取舍(Trade-Offs),本质上就是在“收益”、“成本”和“风险”三者之间的平衡
既然每一个决策都涉及到收益成本风险,那么就不能只看收益而无视成本和风险。就像前一个案例中提到的,设计部门考虑的是Angular版本带来的收益,但是他们却忽略了打造一套Angular版本的设计系统所需要的成本,以及可能带来的巨大风险。(图三)
所以在做技术决策的时候,理性的考虑一下 决策背后的收益、成本和风险的关系是很必要的,而不是仅靠喜好或者直觉来做决策。
原则3: 选择某个技术背后的生态系统而不是某个技术
这条原则特别适用于前端领域,在前端,各种新技术、框架、工具层出不穷,如果总是追新,或者被某个软文吸引轻易选择了某个技术,最终会带来巨大的成本。
案例:为什么我们从Preact迁移到React
在早些年的时候,我们前端选择了Preact作为UI渲染技术,这有早年React License的原因,也有Preact更小性能更好的原因。
然而这些年在使用过程中,还是有很多不足的地方,核心原因都是生态不够好。
比如说Preact调试很麻烦,因为它不像React有一个强大的DevTools;比如说我们遇到过Preact在服务端渲染的内存泄漏问题,如果像我们这样大规模访问量的用户多一点,可能早就有人踩过坑了,不需要我们去花很长时间定位并最终去解决这个问题;比如最近我们在集成Nextjs,Nextjs是完全为React设计的,对Preact兼容性并不好。
这样的案例还很多(图四),所以选择技术,它背后的生态和社区活跃度很重要。
原则4: 不仅要考虑如何构建,还要考虑如何维护
(图五)
这是一个常见的问题,很多人只管搭建新项目的时候爽,而不管后续维护是不是困难,用了一堆自己喜欢的新技术,最后难以维护。下一个人接手了,搞不好会推翻重写一遍,这样的循环一次又一次。
这样的错误我也常犯,比如2年前React Hooks刚出的时候,我就迫不及待用它来替代Redux,结果上线后发现不好维护,有Bug也不好定位,不像以前Redux,数据流特别清晰,借助工具非常好重现和定位问题,最终上线没多久就改回去了。
所以现在在做技术决策的时候,我们很注意的一个问题就是将来维护的时候是不是很麻烦。
包括我在代码审查的时候,有时候看到一些功能能运行的很好PR,但是代码写的比较难懂的,或者没有遵守最佳实践的,只要是给未来的维护造成麻烦的,我都会毫不犹豫要求重写,避免增加未来的维护成本。
上面就是我们现在实践的五个技术决策原则:
- 原则 0: 遵守公认的好的设计原则
- 原则 1: 找出最本源的需求,而不应该局限于当前的技术实现和资源
- 原则 2: 聚焦于 “收益”、“成本”和“风险”三者之间的平衡,而不是技术本身
- 原则 3: 选择某个技术背后的生态系统而不是某个技术
- 原则 4: 不仅要考虑如何构建,还要考虑如何维护
这些原则绝大部分时候都可以很好的帮助我们做出正确的决策,避免踩坑。但我也会一直在反思曾经做过的决策,对于做出的不太好的决策,会反过来考虑是否要修订这些原则,最终通过不断完善决策原则,帮助我和团队更好的做出技术决策。
最后,推荐一下左耳朵耗子写的一篇:《我做系统架构的一些原则》https://t.cn/A6xBKsCV ,非常有借鉴和参考价值。
插一个广告(图六),帮以前我在美国DePaul大学的老师招全奖研究生的广告:https://t.cn/A66yuwuq
[作揖][作揖] 众所周知,宏远华南虎旗舰店开业@CBA广东宏远官方微博 送我一个大礼盒,我要送给一直以来支持宏远和小密探的球迷。为了增加大家中奖率,我决定抽四名幸运球迷共同分享这个宏远大礼盒,冠军T、冠军帽、CBA斜挎包、宏远口罩+台历+利是封,四人随机送!关注+转发,https://t.cn/A6irvTte 开奖! https://t.cn/A6irv313
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
随着生活水平提高,以及交通出行网络完善,最近几年自驾游越来越流行。久而久之除了传统轿车以及SUV外,消费者对于旅行车也开始感兴趣。但奈何国内旅行车市场,一直都是以进口、合资品牌为主,定位轻奢且不便宜,所以市场一直难以打开。然而随着自主品牌不断崛起进步,宝骏汽车率先带来一款9万级“瓦罐”——Valli,也是目前这个价位唯一一款在售的休旅车。那么,这款车的表现又是怎么样呢?这次我们就到4S店一探究竟。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
一进到店内便能够发现,宝骏Valli摆在一个非常显眼的位置,同时4S店员也告知,这款车算是目前宝骏的主打产品之一,既能满足家用又比较适合自驾。据了解,宝骏Valli共有四款车型,分别为莫干山谷、伊利牧场、大理天空、那曲繁星 ,价格对应为7.98、9.28、9.98、10.58万。而这台现场展车则是顶配版,采用了苏杭青的配色,有点沉稳商务的味道。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
先看外观,Valli和店内其它采用钻石标的宝骏车一对比,辨识度还是挺高的,但如果不看“车屁股”,只看前脸其实与家轿RC-5非常相似。前脸是一个倒梯形的中网,细长的LED日行灯通过镀铬饰条连接,营造了贯穿式的风格,进一步拉伸了视觉上的感官,再配合上下方的分体式大灯组,看起来比较时尚大气。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
侧面部分,Valli由于采用了旅行车的设计构造,所以视觉上的气质也是有着修长优雅的感觉。C柱后面则是采用了平直线条来收拢,不会给人太过臃肿的体验。配置上店内这款展车则是采用了215/55 R17的轮胎规格,而车顶原厂行李箱也算是这款车的一大亮点,容积能够达到500L,不仅能够让装载能力进一步提升,旅行车的味儿也显得更为浓厚。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
坐进车内,Valli内饰有一定的高级感,前排座舱采用了环抱式设计,阶梯式布局配合上规整排列的实体按键,带来了一种时尚简约的氛围。用料方面,Valli也还算主流,座椅、方向盘、扶手箱等绝大部分地方都是采用了仿皮材质覆盖,整体做工算是中规中矩,但按键反馈略显粘滞,考虑到价位,倒也符合情理。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
车机方面,Valli配备了全液晶仪表盘和中控大屏,出厂就有宝骏最新车联网2.0系统。所以点火启动之后,能够发现界面为更直观的卡片式布局,自带有导航、音乐、消息盒子等功能,还支持网易云音乐、抖音、爱奇艺等第三方工具。此外,它还可以通过语音指令来操控车内系统,包括打开空调、调低音量等。并且系统响应也较为流畅迅捷,基本没有卡顿、延迟现象。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
然后Valli的座椅舒适性表现也还不错,至少放在9万级车型里,算是非常优秀的水准。且由于是顶配,店内展车不仅配备了真皮座椅,驾驶位还具有电动调节、加热、通风等功能,靠背以及坐垫也比较柔软,坐在上面的包裹性比较不错。同时,它的主驾驶座椅与后视镜还有记忆功能,挂上“P”挡,后视镜即可自动下翻,配合360度环影,可提供最佳的泊车条件。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
空间部分,据店内展台的信息资料显示,这款Valli在没有车顶行李厢的情况下,长宽高分别为:4685/1806/1485mm,轴距为2700mm。笔者178cm的身高在驾驶位时,头部空间在四指左右,表现一般;然后保持座椅不变去到后排,头部空间为三指,腿部空间则能达到一拳左右,腿部空间具有一定的凸起,但能够放下双脚,使得长途乘坐不会感到太难受。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
除了500L顶箱外,Valli本身的后备厢也是亮点。据展车来看,该车的后排座椅进行了特定的优化,被称为“大平层”,放倒后能和后备厢呈现完全纯平的状态,最大进深可达1.8m,笔者平躺进去基本上没有什么大问题,并且除了能够用来放东西以外,宝骏官方还针对这个“双人床”后备厢,推出了一个可选装的原厂床垫,在野外的情况下,还可以当作临时的休息场所,适合自驾。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
最后动力部分,无论是展车还是其它车型,Valli都是配备的1.5T发动机,而这款顶配展车的传动配置则是CVT变速箱,最入门车型则是6MT手动变速箱。根据店员给出的数据来看,该车拥有最大功率147Ps,峰值扭矩250N·m的动力输出,NEDC油耗为6.8L/100km,经济性与性能兼顾的不错。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
综合来看,作为一款9万级瓦罐,Valli整车实际表现还是让我感到挺惊艳的。它的外观造型不仅修长动感,同时配置、性能方面也达到了同级主流甚至领先水平。结合丰富完善的配套设施,以及本身独特的旅行车定位,毫无疑问性价比赶超了绝大部分的同价位轿车以及SUV。如果你是平常工作家用,节假日又喜欢自驾游的年轻人,那么Valli应该值得一试。
随着生活水平提高,以及交通出行网络完善,最近几年自驾游越来越流行。久而久之除了传统轿车以及SUV外,消费者对于旅行车也开始感兴趣。但奈何国内旅行车市场,一直都是以进口、合资品牌为主,定位轻奢且不便宜,所以市场一直难以打开。然而随着自主品牌不断崛起进步,宝骏汽车率先带来一款9万级“瓦罐”——Valli,也是目前这个价位唯一一款在售的休旅车。那么,这款车的表现又是怎么样呢?这次我们就到4S店一探究竟。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
一进到店内便能够发现,宝骏Valli摆在一个非常显眼的位置,同时4S店员也告知,这款车算是目前宝骏的主打产品之一,既能满足家用又比较适合自驾。据了解,宝骏Valli共有四款车型,分别为莫干山谷、伊利牧场、大理天空、那曲繁星 ,价格对应为7.98、9.28、9.98、10.58万。而这台现场展车则是顶配版,采用了苏杭青的配色,有点沉稳商务的味道。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
先看外观,Valli和店内其它采用钻石标的宝骏车一对比,辨识度还是挺高的,但如果不看“车屁股”,只看前脸其实与家轿RC-5非常相似。前脸是一个倒梯形的中网,细长的LED日行灯通过镀铬饰条连接,营造了贯穿式的风格,进一步拉伸了视觉上的感官,再配合上下方的分体式大灯组,看起来比较时尚大气。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
侧面部分,Valli由于采用了旅行车的设计构造,所以视觉上的气质也是有着修长优雅的感觉。C柱后面则是采用了平直线条来收拢,不会给人太过臃肿的体验。配置上店内这款展车则是采用了215/55 R17的轮胎规格,而车顶原厂行李箱也算是这款车的一大亮点,容积能够达到500L,不仅能够让装载能力进一步提升,旅行车的味儿也显得更为浓厚。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
坐进车内,Valli内饰有一定的高级感,前排座舱采用了环抱式设计,阶梯式布局配合上规整排列的实体按键,带来了一种时尚简约的氛围。用料方面,Valli也还算主流,座椅、方向盘、扶手箱等绝大部分地方都是采用了仿皮材质覆盖,整体做工算是中规中矩,但按键反馈略显粘滞,考虑到价位,倒也符合情理。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
车机方面,Valli配备了全液晶仪表盘和中控大屏,出厂就有宝骏最新车联网2.0系统。所以点火启动之后,能够发现界面为更直观的卡片式布局,自带有导航、音乐、消息盒子等功能,还支持网易云音乐、抖音、爱奇艺等第三方工具。此外,它还可以通过语音指令来操控车内系统,包括打开空调、调低音量等。并且系统响应也较为流畅迅捷,基本没有卡顿、延迟现象。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
然后Valli的座椅舒适性表现也还不错,至少放在9万级车型里,算是非常优秀的水准。且由于是顶配,店内展车不仅配备了真皮座椅,驾驶位还具有电动调节、加热、通风等功能,靠背以及坐垫也比较柔软,坐在上面的包裹性比较不错。同时,它的主驾驶座椅与后视镜还有记忆功能,挂上“P”挡,后视镜即可自动下翻,配合360度环影,可提供最佳的泊车条件。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
空间部分,据店内展台的信息资料显示,这款Valli在没有车顶行李厢的情况下,长宽高分别为:4685/1806/1485mm,轴距为2700mm。笔者178cm的身高在驾驶位时,头部空间在四指左右,表现一般;然后保持座椅不变去到后排,头部空间为三指,腿部空间则能达到一拳左右,腿部空间具有一定的凸起,但能够放下双脚,使得长途乘坐不会感到太难受。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
除了500L顶箱外,Valli本身的后备厢也是亮点。据展车来看,该车的后排座椅进行了特定的优化,被称为“大平层”,放倒后能和后备厢呈现完全纯平的状态,最大进深可达1.8m,笔者平躺进去基本上没有什么大问题,并且除了能够用来放东西以外,宝骏官方还针对这个“双人床”后备厢,推出了一个可选装的原厂床垫,在野外的情况下,还可以当作临时的休息场所,适合自驾。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
最后动力部分,无论是展车还是其它车型,Valli都是配备的1.5T发动机,而这款顶配展车的传动配置则是CVT变速箱,最入门车型则是6MT手动变速箱。根据店员给出的数据来看,该车拥有最大功率147Ps,峰值扭矩250N·m的动力输出,NEDC油耗为6.8L/100km,经济性与性能兼顾的不错。
家用自驾可兼得,年轻人的第一台瓦罐,到店实拍Valli,7.98万起
综合来看,作为一款9万级瓦罐,Valli整车实际表现还是让我感到挺惊艳的。它的外观造型不仅修长动感,同时配置、性能方面也达到了同级主流甚至领先水平。结合丰富完善的配套设施,以及本身独特的旅行车定位,毫无疑问性价比赶超了绝大部分的同价位轿车以及SUV。如果你是平常工作家用,节假日又喜欢自驾游的年轻人,那么Valli应该值得一试。
✋热门推荐