軟體業到底在幹嘛?軟體業開發流程、各職能大揭密!

徐子涵 ( Helena Hsu )
12 min readApr 3, 2020

--

軟體業新手筆記第一篇文章,豪緊張ㄚ><

前言

做為一名正在求職海中浮沉的社會新鮮人,在教育、公關、生醫領域繞了一圈之後,發現自己對各式各樣的新技術、新科技有興趣,有幸在某科技公司擔任產品運營實習生後,發現自己喜歡看到產品優化、專案推進的過程,於是想往軟體業/網路業的產品/專案經理邁進。

在求職中難免會遇到風浪起落,聊以此文作為求職中的筆記,如果你:

1. 對網路業/軟體業有點興趣

2. 想知道軟體業的各項職能到底在幹嘛

3. 求職迷惘中,想知道哪個飯碗可以捧久一點

那麼非常歡迎你看這篇文章,也可以和我互相砥(取)礪(暖)!

本篇文章將會涵蓋兩個部分:

1. 軟體業的「產品生命週期」是什麼樣子的?

2. 產品經理/專案經理/UIUX設計師/研發/測試團隊的職能

在文章開始以前,先為大家科普一下「網路業」、「軟體業」兩個名詞,根據MBA智庫百科的定義:「網路產業是指提供基於互聯網技術而建立起來的“硬體 — 軟體”網路系統產品和服務的企業所組成的集合。」意指建立在網路技術上的硬體或軟體產品。

至於軟體產業:「軟體服務業可區分為應用/系統軟體設計開發、系統整合服務、電子商務、資料處理服務、通路經銷等行業。」

然而,隨著網際網路的發展,以及SaaS軟體即服務(使用者可透過網際網路連接至並使用雲端式應用程式,如電子郵件)的出現,我們更可以將「網路」視為一個「技術」而不是行業,且網路業和軟體業的分野不如過往明顯。

科普完畢,進入正文!

一、軟體業的「產品生命週期」是什麼樣子的?

雖然流程並不是每間公司都100%相同,軟體開發有時也不一定遵循某個特定的流程,但基本上如果能夠訂定一個適合團隊的Process Model,並依循這個Process Model產出符合預期的工作成果,並且檢視這樣的成果是否有符合到最初所設定的量化目標,以及討論在流程中在效率、溝通上是否有可以優化的地方,大概就是所謂「流程」的重要之處了!

就像是富蘭克林說的─

“If you fail to plan, you are planning to fail.”

而做為一名Project Manager,每天必須接觸的就是產品生命週期(SDLC)。你必須思考、掌握一切,從掌握需求開始,到與利益關係人(Stakeholders)對話溝通、參與開發,以及後續軟體的維運與持續更新。

產品生命週期(SDLC)的7步驟,是一個反覆循環的概念!

軟體開發的生命週期的7步驟:

1. 分析與計畫(Analysis and Planning)

這步驟是專案的起點,當客戶(Customers)或者利害關係人提出專案時,SDLC的第一個步驟是計畫,萬事起頭難。這個階段有幾個目標,分別為:

- 定義問題、確認專案範圍(Scope)

- 分配資源

- 估計成本、時間、效益:要花多少時間、人力成本,能夠產生多少效益?

- 時程安排:相較於其他專案,這個專案的優先度如何?時程如何安排?

此階段需要包含Project Manager, Product Manager, Developers, Operations以及關鍵的利害關係人,共同開會確認專案目標。

2. 提出需求(Requirements)

第二步需要去了解專案在技術上的需求,而無論是軟體、app或網頁的設計、新功能等,都是需要去解決用戶的某個需求或者痛點。因此,必須「以終為始」的思考:這個需求是否有解決用戶痛點?

此時,開發團隊需要反覆問自己的問題是:

- 我們要解決什麼問題?

- 誰要用?為什麼?

- 需要輸入/輸出什麼樣的資料?

- 我們需要串接其他工具或者API嗎?

至於如何挖掘、釐清需求,可以透過兩種方式:

(1) 用途理論

反問自己:使用者「雇用」(hire)我們的產品,要完成什麼任務(Jobs)?

為什麼這麼問?因為當我們問自己「使用者的需求是什麼?」其實是一個已經轉化過的結果,但「雇用」則是可以確切的描述使用情境和他的目的是什麼。

確切地來說,就是行銷常常告訴我們的一句話「用戶不瞭解他們究竟想要什麼」,只想從現有的解決方案裡面,找出更好的一個解決方案。

舉例來說,發明汽車的福斯先生曾經說過,當你問用戶想要什麼樣的「更快速能抵達目的地的交通工具」,用戶只會回答你「一匹更快的馬」。

所以也許我們能夠這麼問:

「你雇用這個交通工具,是想要達成什麼目的?」

用戶會回答:「我想要更快地到達目的地。」

這麼一來,範圍就不會被「需求」所限縮,而是能夠發揮更大的想像。

(2) 用戶故事(User Story)

另一個釐清用戶需求的方法,是可以透過建構用戶故事(User Story)來思考用戶「確切在什麼情形下可以得到什麼好處」。

我們可以這麼問:

As a _____(什麼樣的用戶), I want _____(做什麼事), so that I can_____(得到什麼好處)。

如此一來,無論是對於情境的描述、用戶輪廓、用戶能得到的效益,我們就能夠更有一個大致的概念。

在撰寫用戶故事的同時,可以去定義不同種的用戶,將用戶拆分為不同的族群,再整理出用戶故事,能夠更清楚各個族群間的分野,以及產品如何去滿足不同族群的需求。

Source: Product Plan

3. 設計和製造產品原型(Design and Prototyping)

當需求被設定完畢,該是需要開始進行設計產品以及各個功能的時候了。在這個步驟我們先不討論美學,而是討論「功能性」以及「流程」。

Steve Jobs曾說:

Design is not just what it looks and feels like. Design is how it works.

到了這個階段,UI/UX設計師(在新創團隊有時是PM需負責)需要開始畫出線框圖(Wireframe),展示出產品介面及使用者流程,以及透過InVision等工具製作出Prototype給團隊檢視。

一個好的流程、介面能夠帶來好的使用體驗,圖來自Hahow

近年來,”User-friendly Design”, “User Experience”開始大幅地出現在人們的口中,而我們所生存的世界是如何一步一步的走向充滿使用者友善設計的呢?可以看這本書來得到解答─《我們的行為是怎樣被設計的:友善設計如何改變人類的娛樂、生活與工作方式》

(這本書真的非常的好讀易懂,非設計背景的朋友們也非常推薦讀此書,作者太會說故事了!)

4. 軟體開發(Software Development)

第四個步驟,要正式進入開發軟體的流程了!在前置準備大功告成以後,開發流程可以說是充滿著風險,幾乎是整個SDLC中風險最高的一個階段。

在此階段,各家公司也採用不同的開發流程,配合著公司的文化、步調,甚至是團隊的組成等等。包括大家也許有聽過的「敏捷式開發」(Agile),主要的精神在於較短的開發循環(建立在反覆式開發方式上),這也是新創軟體公司常說的:「小步快跑、快速迭代」。

專案的成果,包含計畫、需求細節、設計等都會隨著專案的進行而逐漸完整,而不是在一開始就將所有的需求擬定完成。在敏捷式開發中,會先製作出「最小可行性產品」(Minimum Viable Product, MVP),先符合核心使用者的需求,再向外擴張。

另一個是比較傳統的「瀑布式開發」(Waterfall),使用預測性的設計流程,像瀑布一般從上而下,建立嚴謹、標準的開發程序,清楚的階級劃分,易於分工及責任歸屬。

瀑布式開發&敏捷式開發的差異 Source: Ouriken

以下列出5種不同的軟體開發流程給大家做參考,或可以看這篇文章

(1) Waterfall

(2) Agile and Scrum

(3) Incremental and Iterative

(4) V-Shaped

(5) Spiral

5. 測試(Testing)

在開發的過程當中,團隊同時會進行測試、追蹤以及修BUGS的過程。然而,在產品準備就緒、上市以前,需要透過更深入的測試,去知道使用者的反應、喜好、軟體運作的情況,進而有機會做進一步的修改。

此時,測試的工作就會交由開發團隊中的QA團隊(Quality Assurance),邀請一群一小群的Beta Users去測試Beta版,以及使用追蹤工具、埋點等去檢視使用者的使用情形。

以一個上市已久的軟體來說,若用戶基數夠大,實務上可能將在更新版本的過程中就同時對使用者進行測試,以使用者帳戶的流水號作為依據,執行A/B Test,同時掌握使用者數據,才能對產品進行更進一步的修正或優化。

6. 實施(Implementation)

到了這個階段,經歷過去的開發流程,到了需要將產品推向市場,發布產品給所有使用者的時候了!

7. 維運和更新(Maintenance and Updates)

既然稱作「生命週期」(Life Cycle),即可知這整個流程其實是周而復始的。使用者的需求時時改變,市場日新月異,後續的軟體維護、日常營運,以及持續更新才是讓產品生生不息的原因。

在產品上架之後,來自用戶的反饋會源源不斷的湧進,需求也有可能不斷的更動,此時可以將這些未來可能會加入產品中的需求加入到Product Backlog中,並且交給PM以需求急迫性、優先級作排序,在未來成為產品的Roadmap的一部分。

二、產品經理/專案經理/UIUX設計師/開發團隊的職能

在上述的軟體開發流程當中,少不了幾個靈魂人物:RD(研發團隊)、QA(測試團隊)、Product Manager(產品經理)、Project Manager(專案經理)、UI/UX Designer(使用者介面/使用者經驗設計師),而這些角色各自的職能又是什麼呢?

軟體開發流程中的幾個靈魂人物,包括RD. QA, Product Manager, Project Manager, UI/UX Designer

1. RD(Research & Development Engineer)

RD當中又根據各自工作內容的不同,分為系統分析師(System Analyst)、系統設計師(System Designer)、程式設計師(Programmer)。

- 系統分析師

(1) 分析需求並確認系統的需求,形成系統產品設計

(2) 業務流程與系統架構規劃

(3) 需求規格文件(SRS)、系統分析設計文件(SDS撰寫)

同時,需要接觸到客戶需求確認、規劃/建議解決方案、進行專案管理,有些甚至會建議具備UX相關設計經驗。

懶人包:這個系統要做什麼?

- 系統設計師

(1) 負責系統之分析、設計、程式撰寫與單元測試,含系統架構與資料管理

(2) 依據需求及系統分析內容進行系統設計及規格文件撰寫

簡而言之,根據系統分析師所確認的需求及模型,考量效能、穩定性、安全性等,進而建構軟體規格。

懶人包:這個系統怎麼做?

- 程式設計師

大家最熟悉的工程師,從事軟體撰寫、程式開發、維護的專業人員。

懶人包:傳說中的攻城獅、碼農、程序猿。

2. QA(Quality Assurance)

在軟體上市前後,對軟體進行測試,確保軟體運行無礙。(前面有提過)

3. 產品經理(Product Manager)

(1) 依據公司目標,規劃並制定產品Roadmap,以及資源投入與產品發布之優先順序

(2) 確認客戶/用戶需求,產出產品所需的需求描述、流程圖、原型等文件

(3) 和各職能溝通協調,引領開發團隊發展產品,並為產品成敗負責

一句話懶人包:產品的CEO,產品出事找PM負責(?)

4. 專案經理(Project Manager)

(1) 專案管理及專案進度管控

(2) 與開發團隊溝通和合作

(3) 撰寫軟體專案文件

一句話懶人包:安排專案進度、溝通溝通再溝通。

5. 使用者介面/使用者經驗設計師(UI/UX Designer)

(1) 執行 APP/Web UI視覺設計與UI Flow製作

(2) 定義UI Pattern一致性的規範及延續性的設計

(3) 熟悉 Sketch, XD, Ai, Ps 等設計相關軟體

一句話懶人包:美美的畫面、順暢的使用流程的背後功臣

以上是有關軟體業中的「產品生命週期」,以及在軟體開發流程的開發團隊中幾個重要角色的介紹,希望可以成為一篇讓對於軟體業/網路業有興趣的朋友們感到實用的入門文章!

如果有任何疑問,也歡迎留言發問,以下幾個管道可以找到我:

信箱: bonniehsu1006@gmail.com

LinkedIn: Tzu Han Hsu https://reurl.cc/Y19DDX

--

--

徐子涵 ( Helena Hsu )
徐子涵 ( Helena Hsu )

Written by 徐子涵 ( Helena Hsu )

薪水不是目的。我只想要足夠的錢,讓我保持靈肉分離。