在你編碼之前

2021-06-23 03:04:33 字數 2794 閱讀 5602

很多開發者,將自己限定為程式設計師,覺得自己就是乙個專業寫**的,和**稍微遠一點東西,就不感興趣。

在前一篇文章 《軟體開發之未來》 中, 我已經闡述了技術的時效性以及快速更新。

如果我們緊緊把目光侷限在**,而不是分析、解決問題的綜合能力,我們將遲早陷入中年危機, 被奔騰的技術潮流淘汰。

這篇文章我想講講分析問題、解決問題的基本套路,這是我多年總結下來的習慣,希望對大家有幫助。

有些同學鍾情**,收到乙個任務,馬上就想到**實現。

問題都還沒弄清楚,工作原理還沒分析透,就開始整出幾個類,然後思考如何用這些類。

找人討論,直接看**。

這是準備死1000次的節奏。

有些新人,很有責任心,碰到問題也會找我溝通討論。 但是怎麼也不能深入下去,執行效果千瘡百孔,各種返工改進,考慮不周,不能產品化,彎路不少。

問題在於,不善於動筆頭。動筆頭的目的:

沉澱思考結果:

每次思考,每次討論,達成一步認識,就固定下來。上一步台階,步步為營才能達到目標。

如果不記錄,就會焦慮,就會低水平原地重複思考。

大多數人的大腦記憶體有限,必須借助文件這種外存進行交換才能順暢執行的。

文件是alpha版本的程式

大腦就是執行文件的計算機。

看一遍文件,讓整個系統在執行之前,在大腦裡面執行一遍。

每次執行一遍,才能發現是否會丟擲異常。對這些異常,在文件修正。然後再次執行,再次尋找處理異常。

不僅僅在自己大腦執行,還要通過設計評審在別人大腦執行。如果有多種方案,需要大家進行評測那條最佳。

不可能一次就做好設計,只有反覆執行,多處執行,才能最終出錯可能性最小。

因此文件是否清晰明了是否簡單,非常非常關鍵。

設計文件我推薦採用幻燈片的形式,因為乙個頁面說明乙個問題。大標題配小節,更簡潔。

下面的各個章節,也是這個幻燈片文件的主要內容。

當然你如果問題不大,對自己的大腦記憶體以及表達能力有信心,也可以不寫設計文件。 風險自己承擔了,其實設計文件不費時的。

陳述問題,也是陳述需求。

陳述問題,不應該太涉及技術層面的問題。更多是從前使用者的角度來陳述。

陳述問題,應該是普通使用者都能夠看明白是什麼東西。

需要將各種場景都說明白。不能漏掉場景,否則對我們之後的設計會存在偏差。

最終設計完成,需要驗證這些問題、需求都得到滿足了。

這些需求、問題,也需要做乙個輕重緩急的判別。因為我們整個設計過程,最終需要做乙個開發計畫,要求能最快提交乙個最小的可工作版本。 這樣才能做到敏捷。

陳述問題,有時候不僅需要明確做什麼,還要說嗎不做什麼,這是需要明確系統範圍。

如果是多使用者系統,需要羅列參與的使用者角色,以及每個人的希望的獲得功能。

一圖抵萬言。特別是對於用於溝通的設計文件,文字越少越好。圖形能表達最多的內容。

工作原理圖是乙個方案的陳述方式。可以有一張,或者多張。這個是整個設計的中心。

工作原理圖,通常包括系統和外部直接的互動關係圖,以及系統內部的組成結構圖。

這2種圖,由方框和連線組成,方框表示模組,連線表示介面。需要標註各個介面和模組的名稱,以及介面呼叫的主要順序。

畫原理圖,不僅僅畫畫,而是真正的設計。裡面蘊含大量思辨,需要我們擬清各種概念。

模組和介面命名,是思辨的體現。名不正則言不順。

圍繞這個原理圖,需要對個模組和介面進行說明,這個組成了所謂的設計正文。

如果需要使用者參與,需要設計使用者ui。當然如果是後端應用,需要明確介面。

使用者ui往往要比較早明確,因為明確ui,才能細化需求,這個和概要設計也是相互呼應和印證的。

使用者ui設計之所以重要,在於,這是更多從使用者的角度思考問題,因此更能完整表達系統,明確正確的方向,方便引導思考進入深入。

當然如何設計,也會考慮從前方便實現的角度權衡。二者之間如何拿捏,這個是藝術所在。

也就是todo。

一次設計下來,是需求和想法不斷膨脹的過程,往往把簡單的事情,弄得很複雜。

開發計畫,則是如何幹了。這時候主要的思考點,就是理想很偉大,但是我們如何做快速做乙個可工作的最小版本。

大膽假設,小心實踐也是這個意思。其實我們設計的內容,可能很多都是錯的。

設計是永遠的,不會終止於一次設計文件,也不會終止於評審,也不會終止於若干次改稿。 設計在開發的過程中,才是真正深入,這時候會不斷發現之前設計的問題。

做乙個最小可工作版本,這時候再次評估一下設計,發現問題多多。

所以,設計要盡早做,因為每一次回顧,我們基本上都會有新思路。 最早設計,最晚動手,這才是靠譜的方法。留給我們更多時間去消化完善設計。

初步的設計完成,就會發現各種問題,和疏漏。

準確記錄下問題,然後思考解決方法。

其實我們如果能夠準確的表達出問題,解決方法往往是呼之欲出的。

其實設計文件,長期保留的價值並不大,原因是:

所以設計文件通常都是虎頭蛇尾的。

一旦確定設計,設計人員需要優先更新reference文件,而且長期去維護這個renference文件。

reference文件是一些參考手冊,包括api手冊、系統維護手冊,諸如此類。

這些文件是提供給其他使用者,需要永久保留的。

很多人老是覺得沒有時間維護這些文件。在設計階段維護這份文件,其實很重要。

這份文件,其實就是詳細設計文件,在編碼之前,從使用者角度更深入的設計系統,再次發現設計的問題。

如果覺得api很奇怪,或者操作手冊很難寫,那麼可能設計存在問題。

分析問題、解決問題,我的套路,基本是這些,其實不麻煩。

但是這些是可以用在生活工作的各個方面的,是屬於「道」層面的東西,如果編碼是「術」的話。

我們都希望成為乙個做事靠譜的人,即便在你不熟悉的領域,也能借助資源做好一件事情,上面的分析方法,可能值得借鑑。

**:

在你配置環境變數之前

在linux 或者是mac 下配置環境變數之前 首先要確定是使用的shell 是哪乙個,因為現在很多人使用items 2,它的shell 是可選 所以在配置環境變數之前要確定這一點。例如 mac 自帶的是bash shell 如果你在配置的環境變數在bash profile 下面,但是你所使用的sh...

在你準備最後做一點什麼之前,還是早點休息吧

思考 是一切錯誤之源 我可以輕易地舉出事實來證明這一點 犯了錯的人總是會說,哦,可是我原以為 只要大健琴的各種部件還沒有粘合到一起,你就應該反覆思考直到真正理解,這種 思考 是無姑的。你應該在不用粘合劑的情況下把所有的部件拼裝起來 稱為演習或排練 研究它們是如何接合的,並與裝配圖仔細對照。在你把某些...

我在你身後

一。人,有的時候很奇怪。小孩子如果缺少擁抱的話,一定會得憂鬱症的。你也是。我也是。只是,脆弱的時候,該去 尋找。二。我,看到他紅紅的眼圈,突然覺得很難過。沒有辦法看到別人的脆弱,就像破壞的是自己的寶貝一樣。每個人都會覺得孤立無援。在我經歷過那樣乙個時期以後,真的不希望有別的人也受那種折磨。於是,我一...