重新理解軟件研發

最近一直在和團隊在做一款服務于軟件研發的工具,得以有計劃從理論上和實操上重新思考軟件研發這件事。接下來想從軟件研發本來的樣子,怎樣更好的開發一款軟件兩方面談談。

軟件研發工作本來的樣子

一個完整的軟件研發流程大致包括市場調查、用戶分析、產品定義、交互設計、UI設計、軟件開發、測試這幾個階段。一個完整的軟件開發團隊通常包括項目經理、產品經理、交互設計師、UI設計師、前后端工程師、測試人員這些角色。產品經理會負責市場調查、用戶分析、產品定義,交互設計師和UI設計師分別負責交互設計和UI設計,工程師負責軟件開發,測試人員負責軟件的測試,而項目經理則對項目的質量、成本、工期負責。當然有些成員會身兼數職,比如在敏捷研發中,產品經理通常也扮演了項目經理的角色,而交互設計的工作一般都由產品經理和UI設計師分攤。

在我看來,整個軟件開發流程就像沙漏里的沙一樣,先匯聚一點,再發散出去,最后落地。為什么這么說呢?首先說明匯聚的那一點代表什么,是產品需求文檔。這文檔算是軟件開發流程中的集大成者。產品需求文檔把軟件開發流程切割成前后兩個部分,前一部分的核心內容是研究怎么做,后一部分的核心內容就是做出來。具體來說,就是產品經理、交互設計師和UI設計師通過市場調查,用戶研究,界面設計等工作,研究軟件到底怎么做,輸出調研報告、原型、設計圖等各種文檔成果,然后他們把成果匯集整理成一份產品需求文檔;之后工程師和測試人員的工作就是根據產品需求文檔的指導精神,輸出代碼、用例、缺陷等,就是在把軟件給做出來。要指出的是產品需求文檔只是一個信息傳達介質,形式是很豐富的。

除了漏斗的形式,軟件開發還有不少其他特點。首先是研發流程各階段的關系特點。雖然流程前后各階段有強烈的依賴關系,但后一階段不必等到前一階段完全完成才開始,經常在前一階段進行到一個特定時點時就可以開始了。比如測試不能在還沒有代碼的時候就測試,但可以早早就開始書寫用例,一旦有了可測的模塊便可以進入測試;UI設計不能在還沒有產品原型圖的時候就開始設計,但可以在核心頁面原型出了后就開始確定風格;諸如此類。

其次,軟件開發項目中,對工期的預測和把控是非常困難的工作。這主要由于兩個原因造成。一方面是產品經理在產品定義過程中,基本不可能考慮到所有細節,有些因為疏忽大意而漏掉,有些因為認知不到而忽略,這部分內容如果在開發過程中產生比較大的問題,可能就會影響工期。另外就是產品經理、項目管理人員不一定懂技術,和蓋房子不一樣,代碼不像磚頭那樣直觀可見,這樣的情況下,開發工作不管順利與否,都要等到有了成型可見的界面后,才能得到最有效反饋,這種反饋的滯后很容易導致巨大的返工成本。基于同樣的原因,項目管理人員在計劃工期的時候也常陷入手足無措的境地。

另外,軟件研發的成員,很多時候都是多窗口并行工作,輸入和輸出交錯進行。為了能輸出正確的東西,需要輸入各種不同類型的信息。舉個例子,一名工程師,開發時可能要同時打開編輯器、終端進行代碼編寫,同時也要打開產品需求文檔查看產品開發需求,打開文件管理器調用素材,以及不知道多少個瀏覽器標簽頁來解決編碼中所遇到的問題,此外,還有一個或多個隨身預覽結果的窗口,可能是瀏覽器或模擬器。這就是為什么程序員通常都需要兩臺屏幕,只有這樣才能應付這種錯綜復雜的工作。在這樣的情況下,如果不能合理安排窗口,總是來回切換的話,工作效率很低,而且很容易煩躁。

追求更好的軟件研發是在追求什么

軟件研發的目的很明確,就是開發出質量上層、解決問題的軟件來。和任何項目都一樣,軟件開發也遵從項目三角形的表述,技術、人員等客觀條件一定,項目的質量受成本、范圍、和時間限制。要開發更多的功能,必然影響到開發周期和開發成本;要降低開發成本,必然影響到開發周期和開發范圍;要縮短開發時間也一樣。要開發出高質量的軟件,必須保證這個三角形的閉合。一個有經驗的項目經理,面對項目三角形的時候,通常固定一邊,調整一邊,投資一邊。但我們說這不是更好的軟件研發,更好的軟件研發不是去調整平衡三條邊,而是讓三角形整體變大,即相同的任務,現在花更少的時間和成本。而這里面又分為三塊,完成常規任務的效率更高,面對高難度任務也能順利完成,盡量少的犯錯誤。

項目三角形,三邊分別是范圍、時間、成本

如何更高效的完成常規任務,在軟件研發中,工作時間是可以分為兩部分的,一部分用來獨自工作,另一部分用來溝通。要想提高獨自工作的效率,就兩點,自動化可自動化的流程,復用可復用的組建。復用可復用的組建就要求每個成員在工作中注意積累和總結,因為現在很多項目都不是一錘子買賣,而是小步快跑的方式,所以這樣的積累是很有價值,而且價值越來越大的。自動化可自動化的流程,就要求團隊善于運用工具,有了工具,切圖標志、數據分析、代碼編譯、版本部署等工作都可以節約特別多時間。

提升溝通效率稍微復雜一點,這要求團隊建立順暢的信息傳輸和反饋渠道和機制,來保證團隊信息同步,需求傳達準確,反饋即時有效。在我心中,最理想的軟件研發是由一個人完成的:你獲得了一個點子,通過問卷、訪談等方法確定了這個點子可行;接著你把看得見的和看不見的問題都想的清楚通徹了,并根據自己理解定義出了軟件,還畫出了產品設計圖;然后你又自己把軟件開發了出來,自己測試了一下,覺得沒問題就上線發布了。在這個過程中,你對該產品的思考和認知一脈相承,不需要和任何人去面對面溝通、不需要花時間制作任何文檔,也不需要考慮標注切圖的問題,因為這一切都是你的,不做這些也不會影響你下一步的進行。然而這樣的通才并不常見,況且實在趕時間的話,就算一個人什么都會,也做不過來。所以我們還得有個團隊。從這個方面來想,一個人工作不涉及到的任務分配、談話、郵件、會議、各式文檔等都是因溝通而存在的。

能提高溝通效率的方式很多,仁者見仁智者見智,但這里我想給你介紹幾點工作中覺得特別重要又容易忽視的幾點。首先,要明確計劃,雖然軟件開發中可能遇到各種突發情況,甚至戰略方向都會改變,但制定計劃依然是必要的,有一份詳盡的計劃,能按照計劃實行當然最好,不能按照計劃實行,也能讓團隊成員對我們在做什么、要去哪、為什么變化了有個譜,可以更容易理解最新的信息,更準確解讀接收的需求。其次,要根據成員的特點優化關鍵文檔的展現形式,拿產品需求文檔舉例,產品經理可以采取各種不同的工具和敘述方式來制作產品需求文檔,說不上孰好孰壞,根據團隊成員的工作習慣和工作場景,選擇讓工作更舒服的方式最好。再次,讓變更有跡可循,任何文檔,當變更了,都需要記下何時何地何人做了何等變更,為什么;人和新需求,要記錄何時何地何人提出了這等需求,為什么;任何回憶,也要記錄何時何地何人討論的問題和達成的成果。只有這樣,思路才能是完整的,在之后做類似決策時才是有據可考的。最后,要即時反饋即時糾錯,現在的軟件開發已經在往這個方向發展了,所說的敏捷開發就有此意,但有時候依然不夠,如果可能的話,嘗試周穩定版本甚至日穩定版本都是有幫助的,畢竟問題總是越早發現,糾錯成本越小。

問題越早解決,糾錯成本越低

如何順利完成高難度任務,也是個見仁見智的問題。這里就簡單的介紹一下我覺得靠譜的方法。一是工作的形式上,在面對困難任務時,可以改變各顧各的形式,采用結對編程,即兩個人用一臺電腦編程,在思考和交流中,更容易碰撞出靈感;如果兩個人都不行,那可以采用特種部隊的方法,這個特種部隊可以由不同類型的成員組成,從不同的思路去思考同一個問題,這樣的小組專門在特定的時間負責攻克特定的任務,完成任務就可以就地解散。另一種是建立團隊資源庫,各種各樣的問題,在哪里、找誰有可能得到答案,都可以收集起來,這樣遇到問題時不至于手足無措。

怎樣避免少犯錯誤呢?錯誤可分為看得見的錯誤和看不見的錯誤。看得見的錯誤當然有些因為馬虎,有些因為確實難解決,前一種坑可以通過評審盡量避免、后一種坑則和前面說的攻克高難度任務差不多。看不見的錯誤主要因為經驗不足,而經驗不足就要努力積累經驗。可以建立一個公共的的知識庫,積累一整套認知論和方法論,然后再通過不斷的的總結和復盤去迭代。更重要的是,這個知識庫要使用優質的文檔管理軟件來建立,至少是方便搜索查找的,如果經驗積累了卻無法提取,也是徒勞。此外,即時收集反饋和糾錯也很重要,不僅減少錯誤,也減少已犯的錯誤造成的損失。

結語

以上談了對軟件開發的一些理解,隨著互聯網的發展,這個行業已經發展得挺健全了,我所說的這些認識和方法也不是我這一家的洞察和思考,說到底,能不能開發出更高質量的軟件,還得看能不能結合團隊特征調節流程、找好工具、認真實行,畢竟一個幾十人的團隊就已經算得上一個復雜系統,和復雜系統打交道從來就不容易。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容