有趣的“第二个系统”

简介: 什么是”第二个系统“?这是一个有趣的概念,简单描述下:

微信图片_20220607204717.jpg


什么是”第二个系统“?


这是一个有趣的概念,简单描述下:

当在开发第一个系统时,程序员倾向于精炼和简洁。因为他知道自己对正在进行的任务不够了解,所以他会谨慎仔细地工作。


在开发第一个项目时,他会面对不断产生的装饰和润色功能,这些功能当时都被搁置在了一边,作为“下一个”项目的内容。


第一个项目迟早会结束,而此时的程序员,对这类系统充满了十足的信心,熟练掌握了相应的知识,并且时刻准备开发第二个系统。


第二个系统是程序员所实践的最危险的系统。原因是 一种普遍倾向是过分地设计第二个系统,曾在第一个系统中被小心谨慎地推迟的修饰功能和想法终于得以用武之地了。


而当他着手第三个或第四个系统时,先前的经验会相互验证,得到此类系统通用特性的判断,而且系统之间的差异会帮助他识别出经验中不够通用的部分,开发起来也会更游刃有余。


我自己的一点感受


在近期Go语言编程的学习过程中,我一直在构思我的最终目标:做一个自己的随笔APP。

1)每学习掌握一部分后我就会做一个练习的Demo,功能虽然简单,重在练习


2)在此过程中,我产生了各种各样的idea,这个功能可以这样用,还可以和这个一起用。甚至想好了以后哪些场景会用到,哪些功能应该设计在哪些模块下面。


3)直到我正式动工,发现好多页面最终没有多大作用,甚至有些鸡肋,在此过程中我总考虑如何去做减法。


4)于是开始了第二版,最终证明就我之前构思的功能点,有些是没有必要的,面对一团糟的代码,我选择了删除重来。


5)后来,甚至到了第三版,才真正搞定...


第二个系统效应(second-system effect)


与纯粹的功能修饰和增强明显不同,也就是说存在对某些技术进行细化、精炼的趋势。


在完成一个小型、优雅而成功的系统之后,人们倾向于对下一个计划有过度的期待,可能因此建造出一个巨大、有各种特色的怪兽系统。第二系统效应可能造成软件专案计划过度设计,产生太多变数,过度复杂,无法达成期待,并因而失败。

微信图片_20220607204719.png


第二个系统效应


有趣的,有创意的不一定是好的。过多的功能反而会使一个系统过于臃肿,那反而是对于时间和人力的一种浪费。


如何解决?


关于第二个系统效应(second-system effect) 如何解决,这个问题换个说法,就是程序员如何避免画蛇添足?


  • 需要承认我们都无法跳过第二个系统这个过程。


  • 运用有意识的自我约束,来避免那些功能上的无谓修饰;根据系统基本理念及目的,舍弃一些累赘的功能设计方案。


  • 至少拥有两个系统以上开发经验的架构师指导,保持对过度设计诱惑的警觉,他们可以不断提出正确的问题, 确保原则上的概念和目标在详细设计中得到完整的体现。

微信图片_20220607204722.jpg

相关文章
|
机器学习/深度学习 人工智能 Java
五种重要的 AI 编程语言
编码是任何构建 AI 产品的人必备技能。它使您能够将机器学习想法变为现实。学习编码既有趣又充满力量,但也需要时间和精力。你想做的最后一件事就是开始学习一门语言,只是在几周或几个月后才意识到你想要的工作实际上需要一门不同的语言。
1744 0
react+umi+dva+ts基础基础使用
react+umi+dva+ts基础基础使用
|
3天前
|
存储 JavaScript 前端开发
JavaScript基础
本节讲解JavaScript基础核心知识:涵盖值类型与引用类型区别、typeof检测类型及局限性、===与==差异及应用场景、内置函数与对象、原型链五规则、属性查找机制、instanceof原理,以及this指向和箭头函数中this的绑定时机。重点突出类型判断、原型继承与this机制,助力深入理解JS面向对象机制。(238字)
|
2天前
|
云安全 人工智能 安全
阿里云2026云上安全健康体检正式开启
新年启程,来为云上环境做一次“深度体检”
1474 6
|
4天前
|
安全 数据可视化 网络安全
安全无小事|阿里云先知众测,为企业筑牢防线
专为企业打造的漏洞信息收集平台
1310 2
|
3天前
|
缓存 算法 关系型数据库
深入浅出分布式 ID 生成方案:从原理到业界主流实现
本文深入探讨分布式ID的生成原理与主流解决方案,解析百度UidGenerator、滴滴TinyID及美团Leaf的核心设计,涵盖Snowflake算法、号段模式与双Buffer优化,助你掌握高并发下全局唯一ID的实现精髓。
324 160
|
3天前
|
人工智能 自然语言处理 API
n8n:流程自动化、智能化利器
流程自动化助你在重复的业务流程中节省时间,可通过自然语言直接创建工作流啦。
371 4
n8n:流程自动化、智能化利器
|
12天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
1491 7
|
5天前
|
人工智能 API 开发工具
Skills比MCP更重要?更省钱的多!Python大佬这观点老金测了一周终于懂了
加我进AI学习群,公众号右下角“联系方式”。文末有老金开源知识库·全免费。本文详解Claude Skills为何比MCP更轻量高效:极简配置、按需加载、省90% token,适合多数场景。MCP仍适用于复杂集成,但日常任务首选Skills。推荐先用SKILL.md解决,再考虑协议。附实测对比与配置建议,助你提升效率,节省精力。关注老金,一起玩转AI工具。
|
2天前
|
Linux 数据库
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
本文介绍在CentOS 7.9环境下安装PolarDB-X单机版数据库的完整流程,涵盖系统环境准备、本地Yum源配置、RPM包安装、用户与目录初始化、依赖库解决、数据库启动及客户端连接等步骤,助您快速部署运行PolarDB-X。
229 1
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程

热门文章

最新文章