「反混沌」,英文是「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,只能用這最質樸的文字來大概勾勒下我樸素的「反混沌」。
我深知要去做「反混沌」這件事很難,也會遭受一羣人的冷嘲熱諷,但我已經做好了覺悟——以創業的心態去經營與探索。
本文其他閲讀地址:個人網站|微信公眾號