前言
近來工作有些感悟記錄下來逃沿,總結經驗应闯,以便在以后的生活工作中實踐檢驗陶珠。
本次的經驗總結為: 用文檔驅動開發(fā)
目標
工作不能 糙犯犁,快,猛号胚, 要 好又快籽慢。
在資本增密、技術增密猫胁、勞動增密但是排斥勞動者個數的互聯網行業(yè)箱亿,糙快猛是沒有前途,是死路一條弃秆,唯有好又快才是個人的出路届惋。
那么如何做到又好又快的完成工作呢,方法之一為文檔驅動開發(fā)菠赚。
為什么要文檔驅動開發(fā)
假如有一個任務來了脑豹,那么常見的糙,快衡查,猛做法是溝通需求瘩欺,大致設計一下架構,區(qū)分一下模塊拌牲,然后創(chuàng)建代碼倉庫俱饿,擼起袖子開始寫。寫著寫著就發(fā)現各種各樣沒想到的問題们拙,先是需求變動稍途、然后是設計不合理阁吝、接口變化砚婆,再然后是寫完之后,發(fā)版突勇,管控困難装盯,break change,質量不穩(wěn)定甲馋,可維護性差埂奈,可讀性差,有黑盒子邏輯定躏,新人貢獻代碼困難账磺,review困難等芹敌。需要很大的心力手動處理各種臟活。
文檔驅動開發(fā) 的區(qū)別是對于這樣的任務垮抗,先寫文檔氏捞,寫文檔并不是高考卷旁的草稿紙,而是真正答完要交的高考卷冒版。(可以有各種草稿紙液茎,但是最終要寫在考卷上)。
寫文檔只是表面區(qū)別辞嗡,真正的區(qū)別是捆等,形成思于先而行于后的習慣,只有想清楚了续室,才能做得快速栋烤,做的明白、做的踏實挺狰。這是一種開頭表面上慢班缎,但是實際上很快速,質量又得到最大限度保證的行事方法她渴。
寫作是注意力高度集中达址,思維高度凝聚的一種方式,當你寫下文檔時趁耗,會讓你思路清晰沉唠、去偽存真、也方便后來的維護苛败。人腦是記不住哪些細節(jié)的满葛,即便是當初覺得想的很明白、很清晰的事情罢屈,過幾個月再看也會相見不相識嘀韧。
如何寫文檔
寫的好的文檔才能驅動你的開發(fā),寫的差的文檔缠捌,反而會擾亂思維锄贷。
好的文檔要求:
- 目標明確,思路清晰曼月,邊界清楚谊却。
- 語言凝練,描述準確哑芹,切記啰嗦炎辨。
- 經常維護
- 表達形式豐富,動態(tài)圖聪姿、邏輯圖碴萧、流程圖等乙嘀。
如何下筆寫文檔
千里之行始于足下,寫文檔第一件事是明確目標破喻。明確目標是很難的事情乒躺,需要對需求的認證高度抽象,需要不斷練習精進低缩。
目標明確后嘉冒,要確認邊界。確認邊界是很重要的事情咆繁,應對各種復雜的現實讳推,一個項目解決的是一個或者一類事情,如果做成了玩般,會有各種各樣的事情想要加入進來银觅,把項目變得臃腫,惡心坏为。項目變大是一件好事究驴,但是如果超出了邊界就得不償失了,不如用另外一個項目解決超出邊界的問題匀伏。
目標明確了洒忧,邊界確認好了,剩下的就是 前期調研够颠、技術選型熙侍、設計架構 、質量管控履磨、版本記錄蛉抓、交付方式、 TODO List 剃诅。
舉例項目 -
- 背景介紹
- 目標
- 版本變更
- 前期調研
- 技術選型
- 架構設計
6.1 模塊劃分
6.2 整體架構圖
6.3 高可用擴展
6.4 災備- 質量管控
7.1 靜態(tài)掃描(golint, eslint,pylint, flake8)
7.2 單元測試 (coverage)
7.3 API 測試
7.4 回歸測試- CI-CD
8.1 git倉庫管理 (簡單的項目可以用Tag的方式管理分支巷送,trigger ci-cd)
8.2 CI-CD
8.3 灰度上線
8.4 對外交付方式- 文檔管理 (API文檔, 用戶文檔建議把文檔集成到Repo中,這樣review代碼時也可以Review文檔)
- 平滑升級
- TODO List
抽象能力矛辕、需求認知笑跛、調研能力、架構能力如筛、溝通能力的提升是沒有捷徑的堡牡,需要不斷的實踐練習抒抬,才能逐步提升杨刨。
反思
- 為什么會有糙快猛的現象?甚至是很多時候自己犯過同樣的錯誤擦剑。
個人理解為妖胀,這是人類進化出來的本能反應芥颈,人類的應激式反應或者是應激式思考。人類的大腦可是消耗資源的大戶赚抡。深度的思考對資源的消耗更是夸張爬坑,千萬年來,人類一直處于資源匱乏的時代涂臣,進化的本能阻止深入的思考盾计。
Action
- 文檔驅動開發(fā),開發(fā)前先寫文檔赁遗,把碎片化的思路擰成一股繩署辉,去偽存真。
- 培養(yǎng)思于先而行于后的習慣, 具體鍛煉方式為:
a. Review自己的代碼或者別人的代碼岩四,人腦編譯哭尝,想各種 edge case。
b. 做leadcode時剖煌,腦海中編譯測試過了再提交測試材鹦,不要應激式的思考。 - 多看好的文檔或者樣例耕姊,有好的輸入源桶唐,才能有好的輸出。
結束語
孔子說過茉兰,三人行莽红,必有我?guī)煟瑩衿渖普叨鴱闹畎睿洳簧普叨闹?br> 要培養(yǎng)對善安吁、不善的細粒度的感知,這是根本能力燃辖。知其善才能從之鬼店,知其不善,才能改之黔龟。