有趣的“第二个系统”

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

微信图片_20220607204717.jpg


什么是”第二个系统“?


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

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


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


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


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


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


我自己的一点感受


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

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


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


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


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


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


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


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


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

微信图片_20220607204719.png


第二个系统效应


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


如何解决?


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


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


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


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

微信图片_20220607204722.jpg

相关文章
C4.
|
算法 搜索推荐 程序员
关于c语言用N-S流程图表示算法
关于c语言用N-S流程图表示算法
C4.
1023 1
|
机器学习/深度学习 Web App开发 算法
ML之RF:随机森林RF算法简介、应用、经典案例之详细攻略
随机森林指的是利用多棵决策树对样本进行训练并预测的一种分类器。它包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。随机森林是一种灵活且易于使用的机器学习算法,即便没有超参数调优,也可以在大多数情况下得到很好的结果。随机森林也是最常用的算法之一,因为它很简易,既可用于分类也能用于回归。
ML之RF:随机森林RF算法简介、应用、经典案例之详细攻略
|
2月前
|
移动开发 前端开发 JavaScript
【贪吃蛇小游戏】 HTML (Canvas)+ JavaScript
这是一个基于 HTML5(Canvas)+JavaScript 开发的贪吃蛇小游戏,通过800×800画布实现蛇体绘制、食物生成、碰撞检测及方向控制,支持键盘操作与重新开始功能,代码结构清晰,适合初学者学习Web游戏开发。
893 11
|
5月前
|
运维 监控 Cloud Native
不是监控不行,是你观测得不够:聊聊新一代可观测性(Observability)的真相
不是监控不行,是你观测得不够:聊聊新一代可观测性(Observability)的真相
424 7
|
6月前
|
前端开发 JavaScript Cloud Native
技术栈全景:如何为你的项目选择正确的心脏与骨骼
技术栈全景:如何为你的项目选择正确的心脏与骨骼
812 113
|
5月前
|
人工智能 算法 搜索推荐
【经验分享】非技术岗小白的CAIE持证实录:从焦虑转型到技能变现,这些真心话只说给你听
先自报家门:汉语言文学专业,做了两年行政岗,每天被会议纪要、文件归档占满时间,看着身边人要么升职要么转去热门行业,焦虑到整夜失眠。偶然刷到AI岗位的招聘信息,薪资比我当时高一半,但“算法基础”“编程能力”这些要求直接把我劝退。直到发现CAIE注册人工智能工程师认证,说是不限制专业和基础,抱着“死马当活马医”的心态试了试,现在不仅顺利拿到一级证书,还成功转岗AI运营,薪资涨了30%。今天不搞虚的,把备考到持证的全流程干货和真心话都分享出来,希望能帮到和曾经的我一样迷茫的人。
|
5月前
|
机器学习/深度学习 存储 搜索推荐
Python自动整理音乐文件:按艺术家和专辑分类歌曲
本文介绍如何用Python自动化整理杂乱音乐文件,通过mutagen等库读取MP3、FLAC等格式的元数据,按艺术家和专辑智能分类,支持多线程加速、图形界面及增量处理,大幅提升效率,500首歌曲2分钟完成,准确率超99%。
315 0
|
5月前
|
缓存 监控 JavaScript
Vue项目性能优化实战:从编码到部署的全链路优化方案
本文系统梳理Vue项目从编码到部署的全链路性能优化方案,涵盖组件设计、响应式优化、构建压缩、CDN加速、运行时监控等关键环节,结合实战代码,助力提升页面加载速度与交互流畅度。
327 0
|
JSON Go 数据格式
Golang 对象深拷贝的方案以及性能比较
文章探讨了在Go语言中实现对象深拷贝的三种方法:使用gob序列化、JSON序列化和定制化拷贝,并对比了它们在性能和代码复杂度方面的优劣,建议根据具体需求选择最适合的方法。
577 1
|
SQL 安全 数据库
数据库系统的ACL
【8月更文挑战第13天】
531 1

热门文章

最新文章