過年的時候,經常有七大姑八大茄子們問道,你的工作是做什麼的?電視上天天報導的黑客什麼的,你們在外面可別幹什麼違法的事啊。每到這時候,我都想直接說,我就是一個修電腦的,可是真要這麼說了,七大姑八大茄子們又要帶著去各家轉,一邊轉還要一邊修電腦,說不定還要手機下載電影小說歌曲,對了,還要貼膜。
為了能夠把軟體開發這回事說得更清楚,正好是週末,就花時間把內容寫一寫,讓七大姑八大茄子們也能知道什麼是軟體開發,我們這夥人每天都在做些什麼事。
首先,說一下什麼叫軟體。
軟體,就是一切支撐電子裝置的靈魂。你使用的電腦安裝了 Windows 作業系統,那麼 Windows就是一個軟體,你手機上安裝了一個微信,那麼微信就是軟體,你去購買火車票,登入 12306 網站,那麼 12306就是一個軟體,甚至你無聊了,想用陌陌找幾個小夥伴,或者開啟電驢在精神層次上與倉老師做一次溝通,那麼這些都是軟體,甚至你在百度網盤下載一個盜版電影,百度網盤也是軟體。
那麼,為什麼要開發軟體?
開發軟體的目的有很多,不過主要有這麼幾種目的:
1, 服務於商務運作和業務運營
比如電商,很多的電商為了能夠比競爭對手更加了解市場,更高效率地處理貨物,大多都會開發自己的進銷存,銷售管理,退貨管理,客戶管理或者熱點營銷軟體,當然不依賴於第三方軟體(比如淘寶)而獨立開發電商軟體的也不在少數。
再比如房產租賃,移動公司的業務辦理,醫院資訊系統,當然也包括大量的辦公流程審批,這一類的應用也屬於商務運作及業務運營類的軟體,其本質還是使用軟體服務於當前的業務模式。
2, 帶來娛樂和放鬆
這一類的軟體太多太多了,遊戲,電影,聊天全部屬於這一類,無論是手機,平板,手錶,汽車當然也包括電腦,這一類的軟體數量巨大,質量各異,並且新奇軟體層出不窮。
3, 提供閱讀,工具和效率相關的軟體
個人時間記錄,手機微博,手機日曆,天氣,英漢詞典,這一類的軟體全部屬於第三類,這一類的軟體相對功能單一,目標明確,以提高效率為目的。
4, 專業軟體
Photoshop 就屬於一種典型的專業軟體,還有 AutoCAD 也屬於這一類,目前市場上有大量的專業軟體存在,而今天有很多的軟體需要移植到不同的平臺,比如手機的 Android 和 iOS。對了,順便說一句,Android 和 iOS 也是軟體。
5, 試驗性質的軟體
這一類的軟體,往往是一家企業或者一個組織,希望嘗試一種新的工作模式,或者需要嘗試一種新的產品形態,再或者為了進入某一個市場而專門開發的某一種軟體,這種軟體往往只有一個模糊的需求,開發人員很難拿到定義好的需求規範,在市場上只有少數人能夠接觸到這一類的軟體。
當然,除此之外還有很多很多軟體,是無法隨便歸類的,比如說一個遊戲外掛,再比如一個政府單位需要對某些資料做一些篩選處理,不過總體來說,這些軟體也可以稱為應用軟體,簡單地說,能夠想像到的各種服務於我們日常生活的產品,都屬於軟體。
那麼軟體是怎麼來的呢?是那些長得像大猩猩的程式設計師們用一般人不認識的程式程式碼一行一行寫出來的。可是,具體的流程是什麼樣的?
首先,需要有一個產品經理站出來,尋找需求並設計產品。先不用管什麼是產品經理,反正知道是一個經理,就行了。在做一個產品之前,有兩個人是少不了的,第一個是客戶,一個是產品經理。無論是客戶出錢做軟體,還是自己想做一個服務於別人的軟體(比如做一個聊天軟體給別人用),那你都需要尋找到客戶,也就是說客戶是使用軟體的人,如果一個軟體沒有人用,或者最初就不知道這個軟體要給誰用,那就沒啥意義了。
OK,現在我們知道產品經理要和客戶打交道,從客戶那裡瞭解需求,也就是知道客戶想要一個什麼樣的軟體。不過最大的問題來了:客戶以為自己知道什麼是需求,但其實客戶只能提出當前的問題,並不能夠了解當前的需求,他們誤以為自己面臨的問題就是需求,可是真正的需求是解決方案,也就是說產品經理需要引導客戶說出自己面臨的問題是什麼,並且幫助客戶尋找解決方案,然後把這一套的東西轉答給程式設計師。
也就是說,產品經理至少要做到:
- 客戶啊,你的問題是啥,我來給你記下
- 客戶啊,你的問題如何解決,我們們一起來商議
- 客戶啊,看,這是文件,這裡面寫了我們怎麼解決你面臨的問題,還有,還有,這東西要花不少錢啊,還有,你看這軟體是不是這些人來用?這軟體是不是分這麼幾個模組?
- 客戶啊,你的問題和解決方案全部已經交給程式設計師了,那幫長得像 NBA 裡面的詹姆斯的揹著雙肩包的人會幫你把軟體做好的
- 你們這幫大猩猩,做的軟體有 bug,來來來,讓我告訴你,你的 Bug 在哪
- 客戶啊,你看,我天天在你身邊,幫你解決問題,現在,你爽了吧?你還要什麼軟體,你說啊,你說啊。
那這樣軟體就做出來了?沒有,當然沒有,因為程式設計師拿到這些調研的需求,做出一個簡單的開發計劃以後,還有很重要的活需要做:精細定義產品。
程式設計師裡面總會出來一個老大,長相大多比較像 23 歲的詹姆斯,基本會長成這樣:
他會做出一付冷酷無情的態度說:你描述的需求不完整啊,你看,我們現在把開發分成了這麼幾個階段,第一步,我們要做一個使用者體系;第二步,我們要作一個訊息系統,當然這個傢伙還有可能會說:我們根本不打算做軟體,我們喜歡看著編譯的過程,就是一片黑色的遮蔽上有綠色的字不斷滾動,就像這樣:
這時候,產品經理只需要知道,程式設計師已經進入了某種入定的狀態,他們需要的是:你告訴他們,客戶想要的一切細節,即使你不知道,你也要告訴程式設計師:乖,別擔心,我去幫你問那夥長得不酷的傢伙們。
這時候,產品經理需要去編寫一些使用者的用例說明,比如像這樣:
- 用例開始
- 使用者點選登入連結,開啟登入介面
- 使用者輸入自己的使用者名稱和密碼,同時輸入正確的驗證碼
- 如果輸入正確,則讓使用者進入自己的個人控制中心,否則跳轉回登入頁面
- 如果使用者連續三次輸入了錯誤的密碼,請給出提示“對不起,您的人品已用光”
- 當使用者成功登入個人中心後,記錄下使用者的登入時間和登入 IP 地址
- 用例結束
當然,對於產品經理,看到這樣的評論,你只要回一句:”乖,別怕,我去和他們說“。
只要通過這樣的一個簡單的流程,大多數軟體就是可以做出來的,能否做得好還不好說,可是起碼能出來一個可以點來點去的東西,也是可以用眼睛看到的東西。這就是軟體開發的一個縮影,雖然軟體開發比你想像得要複雜得多,可是產品經理總需要在這裡做很多很多工作,這就是我們要乾的活,也是我們的目標:做世界上最會做軟體的團隊。
原文出處:blog.slacker.im
來自:開源中國
相關閱讀
評論(1)