每個創業者都會有第一桶金,這對于創業者來說,是啟動資金,是公司能開航的動力;對于聽眾或者觀眾來說,有的可能就是奇跡、神話、傳奇,等等之類的。對我來說,這第一“桶”金,是我創業的直接“導火索”,同時也是我的啟動資金,這中間更多的是我的沖動,是一種藏在心底里長久的一種火苗的突然燃燒。所以對于聽眾來說,可能比較平淡無奇了。
公司的第一個項目,也是我第一桶金的資金來源,既然是公司做的東西了,肯定不能象toy軟件了,要真正當作一個軟件產品來做了,要有需求分析,軟件架構設計,數據庫設計,編寫源代碼,測試,維護等環節了。因為剛開始公司就我們兩個人,所以我們兩個就充當了架構設計師,軟件工程師,測試工程師,售后工程師等角色。
雖然以前也做過很多項目,也和很多人合作開發過,但是真正的流程還是理解的不夠,其實在軟件開發中這個流程是非常重要的。下面我就以我的親身體驗來說明軟件開發中的各個環節,這同時也是我的教訓,其中有許多可能也是不對的,希望朋友們給予指正。
項目描述:是一個生產企業的綜合計劃管理系統,包括了訂單管理,排產管理,令號管理,銷售管理,發運管理五個模塊,另外還有綜合查詢等統計信息。
需求——你受客戶的影響有多大?了解了基本需求之后,我做了一個解決方案,其中包括了J2EE架構和.NET架構,并詳細描述了各自的有缺點和環境需求,讓客戶來選擇。我向客戶推薦的是采用J2EE架構,一方面是我的原因,我想在J2EE設計中積累更多的經驗,二是客戶的公司的訂單的處理將來可以移到Internet,實施E-commerce。當把方案拿給客戶以后,我自然的推薦了J2EE模式,但是這個客戶他本身還是很了解技術的,他說J2EE比較復雜,將來維護的費用會比較高,另外他也不是太懂,因為以前他開發了公司的網站系統,使用ASP開發的,所以他就建議我們使用ASP開發,一是ASP的環境要求比較低,二是將來他可以自己維護,譬如需要什么報表,他就可以自己加進去。因為是我的第一個項目,所以我也接受了他的建議。說句實話,對于生產企業的管理系統,我還是第一次做,其中的一些流程我一點都不清楚,好多名詞更是第一次聽說,如“令號”,“排產”等。這也給我寫需求造成了困難,在和客戶交流了一周多后,我基本熟悉了流程,客戶也把數據表的要求寫出來了,綜合了我所了解的業務后,我寫了一篇洋洋灑灑的《需求分析說明書》,這也是我第一次這么完整、規范的一個需求分析。
架構設計——能設計出一種彈性、合理的架構嗎?以前設計的軟件,我沒有這個環節,直接拿來題目,根據經驗馬上就開始編碼。但我現在是公司了,必須要按照規范來作,即使我做的不好,我也必須加入這個環節。當然要想設計出彈性靈活的架構,不是一朝一夕就有這個功力的,對于一個軟件也不是一次就能設計出非常好的架構的。李維在《面向對象設計實踐之路》中提到的PFM系統,之前也是為了完成任務而做的,我之前設計的軟件可能都是這樣的,沒有什么架構而言的,現在要對PFM改造,進行重新設計,使之有一個彈性靈活的架構,但也要經過幾次反復之后才行。
界面設計——能設計出簡潔美觀符合習慣的界面嗎?以前不很注意,界面隨便搞一下就可以了,以前看了林銳的《Web界面設計》覺得沒有什么看的,覺得我都知道,當這次我要真正的要進行界面設計的時候,我覺得他說得好多我可能正要碰到或者將要碰到,覺得很多“規則”還是很有道理的。我不見得要設計出非常有創意的界面,但是我應該設計出標準的界面,不能讓用戶一看,啊!真難看啊!所以這次我對于界面非常的注重,因為這個是給用戶的第一感覺。功能是軟件的第一要素,如果軟件連客戶的功能都沒有實現,就別提別的了,當功能實現以后,就要讓用戶用著舒服,看著舒服,界面一致。軟件的界面和寫文檔一樣,有沒有用心一看就有結果了。
程序編碼——是反思一下編程技巧的時候了?編碼,以前變了很多,C/C++,Delphi,VB,ASP,PHP,JAVA等等,都編過,但那種編碼缺少一種藝術性,當然也缺乏規范,那是為了完成任務而寫的。但這次不同,這次是做為公司的產品,是代表我公司的形象的,是該反思一下編碼的問題了,不能讓客戶一看我的代碼,就覺得我象個業余的似的。以前使用ASP,關鍵代碼和界面一起,顯得非常的混亂,即使最后發覺了,也懶得去改了,一個軟件到最后,自己都不想看自己的代碼了,這種情況在這一次絕對不能出現。我要實現數據和界面的分離,要實現統一的錯誤機制,實現單一登錄,實現靈活而嚴謹的權限管理等等。
軟件測試——程序員加入了單元測試了嗎?是不是應該寫出完整的測試用例和測試文檔?測試,這是以前根本不當回事的,但這次一定不但要加入這個環節,而且還要建立一套測試流程,不能給客戶的軟件,出現一些注釋,出現一下不該有的錯誤。我對每個模塊建立了詳細的測試用例,寫了測試跟蹤表,寫了測試報告,并且我和另外一個開發人員互相測試,也理解了“不能讓自己看自己代碼”,當然這次測試都是手工進行的,以后要加入自動化測試。
軟件周期管理——能控制住軟件的進度嗎?這是做為管理者,做為經理應該具備的,要能保證控制住軟件開放的進度和周期。這次我也充當了管理的角色,這也是第一次。
軟件交付——軟件能讓自己滿意嗎?
思考:流程、管理對于一個公司是非常重要的,拿軟件產品來說,流程和管理的規范應能使得軟件的交付更加及時,但是對于剛起步的小公司來說,是一上來就規范呢?還是先按作坊式發展?
(由于時間太緊,細節沒有列出,將來補上)
2006年3月4日
下一篇:我的創業日記2(公司愿景)——我們的目標