重新理解軟件研發(fā)

最近一直在和團隊在做一款服務(wù)于軟件研發(fā)的工具,得以有計劃從理論上和實操上重新思考軟件研發(fā)這件事避乏。接下來想從軟件研發(fā)本來的樣子爷耀,怎樣更好的開發(fā)一款軟件兩方面談?wù)劇?/p>

軟件研發(fā)工作本來的樣子

一個完整的軟件研發(fā)流程大致包括市場調(diào)查、用戶分析淑际、產(chǎn)品定義畏纲、交互設(shè)計扇住、UI設(shè)計、軟件開發(fā)盗胀、測試這幾個階段艘蹋。一個完整的軟件開發(fā)團隊通常包括項目經(jīng)理、產(chǎn)品經(jīng)理票灰、交互設(shè)計師女阀、UI設(shè)計師、前后端工程師屑迂、測試人員這些角色浸策。產(chǎn)品經(jīng)理會負責市場調(diào)查、用戶分析惹盼、產(chǎn)品定義庸汗,交互設(shè)計師和UI設(shè)計師分別負責交互設(shè)計和UI設(shè)計,工程師負責軟件開發(fā)手报,測試人員負責軟件的測試蚯舱,而項目經(jīng)理則對項目的質(zhì)量、成本掩蛤、工期負責枉昏。當然有些成員會身兼數(shù)職,比如在敏捷研發(fā)中揍鸟,產(chǎn)品經(jīng)理通常也扮演了項目經(jīng)理的角色兄裂,而交互設(shè)計的工作一般都由產(chǎn)品經(jīng)理和UI設(shè)計師分攤。

在我看來阳藻,整個軟件開發(fā)流程就像沙漏里的沙一樣晰奖,先匯聚一點,再發(fā)散出去稚配,最后落地畅涂。為什么這么說呢?首先說明匯聚的那一點代表什么道川,是產(chǎn)品需求文檔午衰。這文檔算是軟件開發(fā)流程中的集大成者。產(chǎn)品需求文檔把軟件開發(fā)流程切割成前后兩個部分冒萄,前一部分的核心內(nèi)容是研究怎么做臊岸,后一部分的核心內(nèi)容就是做出來。具體來說尊流,就是產(chǎn)品經(jīng)理帅戒、交互設(shè)計師和UI設(shè)計師通過市場調(diào)查,用戶研究,界面設(shè)計等工作逻住,研究軟件到底怎么做钟哥,輸出調(diào)研報告、原型瞎访、設(shè)計圖等各種文檔成果腻贰,然后他們把成果匯集整理成一份產(chǎn)品需求文檔;之后工程師和測試人員的工作就是根據(jù)產(chǎn)品需求文檔的指導精神扒秸,輸出代碼播演、用例、缺陷等伴奥,就是在把軟件給做出來写烤。要指出的是產(chǎn)品需求文檔只是一個信息傳達介質(zhì),形式是很豐富的拾徙。

除了漏斗的形式洲炊,軟件開發(fā)還有不少其他特點。首先是研發(fā)流程各階段的關(guān)系特點尼啡。雖然流程前后各階段有強烈的依賴關(guān)系选浑,但后一階段不必等到前一階段完全完成才開始,經(jīng)常在前一階段進行到一個特定時點時就可以開始了玄叠。比如測試不能在還沒有代碼的時候就測試,但可以早早就開始書寫用例拓提,一旦有了可測的模塊便可以進入測試读恃;UI設(shè)計不能在還沒有產(chǎn)品原型圖的時候就開始設(shè)計,但可以在核心頁面原型出了后就開始確定風格代态;諸如此類寺惫。

其次,軟件開發(fā)項目中蹦疑,對工期的預測和把控是非常困難的工作西雀。這主要由于兩個原因造成。一方面是產(chǎn)品經(jīng)理在產(chǎn)品定義過程中歉摧,基本不可能考慮到所有細節(jié)艇肴,有些因為疏忽大意而漏掉,有些因為認知不到而忽略叁温,這部分內(nèi)容如果在開發(fā)過程中產(chǎn)生比較大的問題再悼,可能就會影響工期。另外就是產(chǎn)品經(jīng)理膝但、項目管理人員不一定懂技術(shù)冲九,和蓋房子不一樣,代碼不像磚頭那樣直觀可見跟束,這樣的情況下莺奸,開發(fā)工作不管順利與否丑孩,都要等到有了成型可見的界面后,才能得到最有效反饋灭贷,這種反饋的滯后很容易導致巨大的返工成本温学。基于同樣的原因氧腰,項目管理人員在計劃工期的時候也常陷入手足無措的境地枫浙。

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

追求更好的軟件研發(fā)是在追求什么

軟件研發(fā)的目的很明確炎码,就是開發(fā)出質(zhì)量上層、解決問題的軟件來舱卡。和任何項目都一樣辅肾,軟件開發(fā)也遵從項目三角形的表述,技術(shù)轮锥、人員等客觀條件一定矫钓,項目的質(zhì)量受成本、范圍、和時間限制新娜。要開發(fā)更多的功能赵辕,必然影響到開發(fā)周期和開發(fā)成本;要降低開發(fā)成本概龄,必然影響到開發(fā)周期和開發(fā)范圍还惠;要縮短開發(fā)時間也一樣。要開發(fā)出高質(zhì)量的軟件私杜,必須保證這個三角形的閉合蚕键。一個有經(jīng)驗的項目經(jīng)理,面對項目三角形的時候衰粹,通常固定一邊锣光,調(diào)整一邊,投資一邊铝耻。但我們說這不是更好的軟件研發(fā)誊爹,更好的軟件研發(fā)不是去調(diào)整平衡三條邊,而是讓三角形整體變大瓢捉,即相同的任務(wù)频丘,現(xiàn)在花更少的時間和成本。而這里面又分為三塊泡态,完成常規(guī)任務(wù)的效率更高搂漠,面對高難度任務(wù)也能順利完成,盡量少的犯錯誤某弦。

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

如何更高效的完成常規(guī)任務(wù),在軟件研發(fā)中拍摇,工作時間是可以分為兩部分的亮钦,一部分用來獨自工作,另一部分用來溝通充活。要想提高獨自工作的效率蜂莉,就兩點,自動化可自動化的流程混卵,復用可復用的組建映穗。復用可復用的組建就要求每個成員在工作中注意積累和總結(jié)食侮,因為現(xiàn)在很多項目都不是一錘子買賣屯碴,而是小步快跑的方式,所以這樣的積累是很有價值焦匈,而且價值越來越大的。自動化可自動化的流程辕录,就要求團隊善于運用工具睦霎,有了工具,切圖標志走诞、數(shù)據(jù)分析副女、代碼編譯、版本部署等工作都可以節(jié)約特別多時間蚣旱。

提升溝通效率稍微復雜一點碑幅,這要求團隊建立順暢的信息傳輸和反饋渠道和機制,來保證團隊信息同步塞绿,需求傳達準確沟涨,反饋即時有效。在我心中位隶,最理想的軟件研發(fā)是由一個人完成的:你獲得了一個點子拷窜,通過問卷、訪談等方法確定了這個點子可行涧黄;接著你把看得見的和看不見的問題都想的清楚通徹了篮昧,并根據(jù)自己理解定義出了軟件,還畫出了產(chǎn)品設(shè)計圖笋妥;然后你又自己把軟件開發(fā)了出來懊昨,自己測試了一下,覺得沒問題就上線發(fā)布了春宣。在這個過程中酵颁,你對該產(chǎn)品的思考和認知一脈相承,不需要和任何人去面對面溝通月帝、不需要花時間制作任何文檔躏惋,也不需要考慮標注切圖的問題,因為這一切都是你的嚷辅,不做這些也不會影響你下一步的進行簿姨。然而這樣的通才并不常見,況且實在趕時間的話簸搞,就算一個人什么都會扁位,也做不過來。所以我們還得有個團隊趁俊。從這個方面來想域仇,一個人工作不涉及到的任務(wù)分配、談話寺擂、郵件暇务、會議泼掠、各式文檔等都是因溝通而存在的。

能提高溝通效率的方式很多般卑,仁者見仁智者見智武鲁,但這里我想給你介紹幾點工作中覺得特別重要又容易忽視的幾點。首先蝠检,要明確計劃沐鼠,雖然軟件開發(fā)中可能遇到各種突發(fā)情況,甚至戰(zhàn)略方向都會改變叹谁,但制定計劃依然是必要的饲梭,有一份詳盡的計劃,能按照計劃實行當然最好焰檩,不能按照計劃實行憔涉,也能讓團隊成員對我們在做什么、要去哪析苫、為什么變化了有個譜兜叨,可以更容易理解最新的信息,更準確解讀接收的需求衩侥。其次国旷,要根據(jù)成員的特點優(yōu)化關(guān)鍵文檔的展現(xiàn)形式,拿產(chǎn)品需求文檔舉例茫死,產(chǎn)品經(jīng)理可以采取各種不同的工具和敘述方式來制作產(chǎn)品需求文檔跪但,說不上孰好孰壞,根據(jù)團隊成員的工作習慣和工作場景峦萎,選擇讓工作更舒服的方式最好屡久。再次,讓變更有跡可循爱榔,任何文檔被环,當變更了,都需要記下何時何地何人做了何等變更详幽,為什么蛤售;人和新需求,要記錄何時何地何人提出了這等需求妒潭,為什么;任何回憶揣钦,也要記錄何時何地何人討論的問題和達成的成果雳灾。只有這樣,思路才能是完整的冯凹,在之后做類似決策時才是有據(jù)可考的谎亩。最后炒嘲,要即時反饋即時糾錯,現(xiàn)在的軟件開發(fā)已經(jīng)在往這個方向發(fā)展了匈庭,所說的敏捷開發(fā)就有此意夫凸,但有時候依然不夠,如果可能的話阱持,嘗試周穩(wěn)定版本甚至日穩(wěn)定版本都是有幫助的夭拌,畢竟問題總是越早發(fā)現(xiàn),糾錯成本越小衷咽。

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

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

怎樣避免少犯錯誤呢筒繁?錯誤可分為看得見的錯誤和看不見的錯誤噩凹。看得見的錯誤當然有些因為馬虎毡咏,有些因為確實難解決驮宴,前一種坑可以通過評審盡量避免、后一種坑則和前面說的攻克高難度任務(wù)差不多呕缭《略螅看不見的錯誤主要因為經(jīng)驗不足修己,而經(jīng)驗不足就要努力積累經(jīng)驗∮蓿可以建立一個公共的的知識庫睬愤,積累一整套認知論和方法論,然后再通過不斷的的總結(jié)和復盤去迭代纹安。更重要的是尤辱,這個知識庫要使用優(yōu)質(zhì)的文檔管理軟件來建立,至少是方便搜索查找的钻蔑,如果經(jīng)驗積累了卻無法提取啥刻,也是徒勞。此外咪笑,即時收集反饋和糾錯也很重要可帽,不僅減少錯誤,也減少已犯的錯誤造成的損失窗怒。

結(jié)語

以上談了對軟件開發(fā)的一些理解映跟,隨著互聯(lián)網(wǎng)的發(fā)展,這個行業(yè)已經(jīng)發(fā)展得挺健全了扬虚,我所說的這些認識和方法也不是我這一家的洞察和思考努隙,說到底,能不能開發(fā)出更高質(zhì)量的軟件辜昵,還得看能不能結(jié)合團隊特征調(diào)節(jié)流程荸镊、找好工具、認真實行堪置,畢竟一個幾十人的團隊就已經(jīng)算得上一個復雜系統(tǒng)躬存,和復雜系統(tǒng)打交道從來就不容易。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舀锨,一起剝皮案震驚了整個濱河市岭洲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坎匿,老刑警劉巖盾剩,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異替蔬,居然都是意外死亡告私,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門承桥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驻粟,“玉大人,你說我怎么就攤上這事快毛「裥幔” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵唠帝,是天一觀的道長屯掖。 經(jīng)常有香客問我,道長襟衰,這世上最難降的妖魔是什么贴铜? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮瀑晒,結(jié)果婚禮上绍坝,老公的妹妹穿的比我還像新娘。我一直安慰自己苔悦,他們只是感情好轩褐,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著玖详,像睡著了一般把介。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蟋座,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天拗踢,我揣著相機與錄音,去河邊找鬼向臀。 笑死巢墅,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的券膀。 我是一名探鬼主播君纫,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼三娩!你這毒婦竟也來了庵芭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雀监,失蹤者是張志新(化名)和其女友劉穎双吆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體会前,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡好乐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瓦宜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔚万。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖临庇,靈堂內(nèi)的尸體忽然破棺而出反璃,到底是詐尸還是另有隱情昵慌,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布淮蜈,位于F島的核電站斋攀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏梧田。R本人自食惡果不足惜淳蔼,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望裁眯。 院中可真熱鬧鹉梨,春花似錦、人聲如沸穿稳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽司草。三九已至艰垂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埋虹,已是汗流浹背猜憎。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留搔课,地道東北人胰柑。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像爬泥,于是被迫代替她去往敵國和親柬讨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容