0

说说「反混沌」:Hello, World!

 2 years ago
source link: https://ourai.ws/posts/hello-world-from-anti-chaos/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

「反混沌」,英文是「Anti-chaos」,简称为「NTKS」,是一种思想,是一个计划,是一个体系,是一个组织,也是一个社区。

我多次在网上、现实中跟别人有意无意地提起过「反混沌」,但一直都没有详细地说过它到底是个什么东西以及搞它的意义是什么;因而出现了这篇文章,让那些疑惑的和有可能感兴趣的人了解它。

为啥要「反混沌」

各位,看到我下面列出的一些情况,你们是否会感同身受——

新加入一个团队了解下项目代码后发现,在使用 Vue 组件时模板中的组件名和属性有的是驼峰式有的是肉串式,甚至同一个组件同时存在两种命名。

函数名和返回值数据类型之间貌似找不到什么联系,或者函数体所做的事情已经超出了函数名所表达的范围,让人无法顾名思义。

看过之后,忍不住在心里默默地嘲讽道:「这都写的什么烂代码!简直是屎!!」

自己不想跳进这 sea of shit,并且作为新人,得要证明自己在团队中的价值。多年经验和知识的积累,深知要想团队变好,「规范化」是第一阶段中的第一步,也就是定规则、立规矩。

在吭哧吭哧把各种规范、约定的草稿拟出来并开会讨论确定之后,发现真正执行时并不会有多大改善——原来怎么写,基本还那么写……

这让你更加确定了自己对人性的认知——自觉?狗屁!力量才是一切!人会犯错,再靠谱,也不如机器/程序来得靠谱!

在工作中接到一个比较复杂的需求,虽然有相关的开源项目,但比较少,并且可扩展性都有问题,要满足业务需求只能在它们基础上魔改或从零开发。

公司/部门开辟新业务,需要做个新应用,前端很多东西理应是可以复用的,可实际在复用时要改很多东西,改到怀疑人生……

前端库/框架更迭太快,正在维护的应用太庞大了,核心逻辑与视图层过于耦合,想升级下技术太难了,简直是伤筋动骨。

公司/部门里用了不止一个技术栈,它们的使用方式天差地别,如果被安排去做一个跑在不了解的技术栈之上的应用的需求,不仅要花时间理解业务,还要去了解那个技术栈的玩法,切换技术栈成本有点高。

想把原本用 Vue 2.x 写的应用整体升级到 Vue 3.x,可是在用的 Element 不支持 Vue 3.x,并且官方也已经(间接)宣布不再继续维护 Element,该咋办?!就算它有 Vue 3.x 版本的,能顺滑地迁移过去吗?另外,再遇到类似的情况,如何降低升级、迁移成本?

「反混沌」的愿景

上面列举的几个是很常见的问题,相信各位跟我一样想要极力去避免掉。引起这些问题的因素,都可以归结为一个词——混沌——无序、模糊不清的一种状态,会导致混乱,从而使工作变得困难。

「混沌」的根源不是别的,正是「人」自身,主要体现在两个方面:人性的缺点所引起的协作与管理问题;信息在传递过程中会失真。

有的人会想要不合时宜的自由,如:虽然有规范,虽然某件事在客观上就是不恰当的,会让程序变得不稳定、不好维护或影响团队氛围,但自己就是不想被束缚,就是要按照自己舒服的来。

有的人总想着偷懒,能少做点就少做点,对自己代码的质量概不负责,能跑就行,就算那代表着自己的脸面也不管不顾。也许勤去叮嘱着些代码质量会稍微好点儿,但时间长了谁都累。

软件开发过程就是从接到需求到产出符合需求的可用软件的过程。在这一整个链条中,源头是需求提出方,然后经过产品、设计、开发、测试等不同岗位的人处理。

虽说源头是需求方,但更实际的源头是需求方的意愿。这个「意愿」是不是「真(true)」的,首先要打个问号。然后信息在传递过程中肯定会有所损失,每个传递的节点能力越差损失得越多。

信息在每个人那里输入、输出时,因为知识、理解力、表达力等因素,多多少少都会发生变形,为了尽可能「保真」,必然的选择就是减少传递环节,也就是减少参与人数,尽最大可能让需求方的意愿直接变成符合需求的可用软件。

软件开发中的「混沌」需要被治理,「反混沌」即为盘古及其手执之斧——劈开混沌,清者为天,浊者为地。

因此,「反混沌」的宗旨就是——通过促进前端工业化进程,从而让前端开发更加有序,让业务开发专注业务,为新型开发方式及协作模式做支撑。

「反混沌」的内涵

在本文开头说了「反混沌」——

「是一种思想」——对前端及其相关事物的无序、混乱的现状强烈不满,执着于打造一个有序的,不去做无意义或重复事情的,尽可能做自己喜欢做且对行业有价值事情的环境。

「是一个计划」——打算在软件设计、团队协作等方面进行一些分享,并从前端工程、应用开发等角度提供一些实用工具,帮助消除「混沌」。

「是一个体系」——实施上述「计划」的一系列举措,当前在前端工程、应用开发方面有「Fxxk Design」和「Future.js」两大子体系。

「是一个组织」——独自一人,就算能力再大,也难以成事,因而需要几个高度志同道合且能力优秀的人组成核心团队,共同完成使命。

「是一个社区」——打从心底想为行业做些有意义、有价值的事情,因此拥抱开源,打造以非盈利个人/组织为主导的优质开源社区。

其实说到底,「反混沌」的本质是前端及其相关事物各个层次、各个环节之间通信的「事实标准」。

我这土鳖黑钢级直男码农写不出什么华丽的词藻,也做不出酷炫的 PPT,只能用这最质朴的文字来大概勾勒下我朴素的「反混沌」。

我深知要去做「反混沌」这件事很难,也会遭受一群人的冷嘲热讽,但我已经做好了觉悟——以创业的心态去经营与探索。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK