大學期間,我熱愛觀看央視“贏在中國”節目。學到了很多做事的方法和做人的方式,雖然對于什么是創業,在創業中會遇到什么問題等等一些都未知,但那份年輕人的沖動和對于創業的興奮已經被激發到極點。畢業找工作,我毅然選擇了一家從事旅游行業的創業型互聯網小公司。
面試階段,一個相互選擇的階段。在大學期間,我運用J2EE技術給某朋友成功建立一家從事游戲虛擬物品交易平臺,無形中已經培養了一定的需求溝通,需求挖掘,設計,項目管理等能力。加上我是一張“白紙”(價值觀等都未受到任何公司的影響)和對于創業的那份沖勁。老板理所當然的選擇了我,由我來負責一個項目的全部工作。公司給我提供我認為過得去的工資,也是我所喜好的創業型小公司,我認為很有前途(年少無知,不知后路的艱辛)。我也選擇了公司。這就是我第一家的公司。
工作階段,充當孫悟空的階段。最簡單的開發模式,最簡單的項目管理方式,最簡單的上線過程,最簡單的線上故障處理。一切都是那么簡單。簡單的讓我換第二份工作的時候讓人覺得這幾年的工作都毫無進步可言。
簡單的開發模式,老板一個概念的產生,沒有產品,直接拋到開發,開發要么模仿別人的網站要么自己捉摸該怎么實現,然后進入編碼,沒有代碼review,沒有單元測試,沒有回歸測試,不關注代碼風格,不注重代碼質量。功能實現了就算完了。后來改進,有產品分析設計產生prd,開發人員按照prd進行開發,有時進行部分重構,代碼質量也沒有太多的提升。
簡單的項目管理方式,概念出來,開發人員大致揣測出老板的意圖之后,開始分模塊,估算時間,分配人員功能模塊。老板看到項目時間需要3個月,老板對我們說,不可能需要這么長時間吧,給你們一個月半的時間給我完成吧,最后經過討價還價,老板說再加半個月,你們不能再說了,最后我們被老板“強奸”了。項目也有版本控制,但是沒有分支,只有主干,多個不同時間點的需求上線都在同一個主干上開發,導致有時候因為后面時間點的需求影響了前面時間點需求的上線。
最簡單的上線過程,開發人員自學linux系統管理,自己通過ftp把主干代碼上傳部署,而且都是老板訪問不了網站我們才知道出故障了,接著開發人員在主干上改bug,改完bug重新部署,發現之前的bug沒了,出現了新的4個bug。繼續修改bug,部署…無限循環。
最簡單的線上故障處理,數據庫負載過高、web服務器負載過高、服務器硬件壞了、網絡線路,機房斷電等等問題出現之后,唯一的辦法就是停止網站服務進行修復。
每周五下午例會,討論的問題都沒有積累下來,沒有被分享給其他團隊成員,更不可能分享給新員工。
上面的流程基本上都是由開發人員負責,開發人員此時就是多角色,類似孫悟空,需要不斷轉換角色。更重要的是,上述所有流程和項目管理都只是關注項目自身。沒有關注團隊知識的積累,人員的培訓。本質上就是不關注“成長”。我作為項目經理,我承認自己之前的不足,但值得慶幸的是我在離開之前做了一些比較有意義的事情,我讓部門開發人員每個星期輪流做分享,讓整個部門的人能夠學到更多的知識。
后來來到淘寶,在這里能學到很多東西,因為這里有完善的培訓體系,注重員工的個人成長。一個小插曲,我在新員工手冊里看到sprint這個單詞,我想在業內算比較牛的公司竟然還會把spring寫成sprint,后來接觸到了scrum敏捷開發,我才知道原來sprint是scrum的一個迭代周期。那個羞啊。哈哈。
來到淘寶,猛然有一種柳暗花明又一村的感覺,以前我做的事情都有涉及到,但在腦海中沒有一個成形的框架,零零散散。
下面來講講跟我之前不一樣的地方。
開發模式:
l 周五的雙周pk,產品排好需求優先級,項目經理根據團隊的人力資源pk需求,哪些可以完成,哪些人力不夠。這里要著重強調工時,每個人每天都是按照4小時來算,其他4小時主要學習,更好的完成工作。4個小時是根據團隊平時工作效率來計算的,也有可能是5或6個小時。不同時期不同項目每個人都有不同的變化曲線。
l Pk下來的需求,技術團隊在周一進行任務拆分,然后大家領取各自的任務。
l 每個團隊有自己的任務墻(故事墻),主要就是讓大家在每天的15分鐘晨會上列出各自的每天要完成的任務。
l 每天早上15分鐘的晨會,一個是讓大家都能在某個時間點之前趕到公司開會,另一個就是讓大家清楚自己今天要做什么。晨會主要描述:1 我昨天做了什么 2 我遇到了哪些問題,自己解決了可以簡單分享給同事,解決了不了可以讓團隊來幫忙一起解決。 3 今天我要做什么
l 每雙周要做回顧,看看出現了什么問題,哪些地方可以再改進。
l 最后就是分享,有技術分享,業務分享。
這個開發模式對比以前有以下幾個優點:
l 團隊資源的合理利用,不會出現老板說幾個月完成然后底下的人拼命的加班,讓大家對技術的興趣越來越高,工作的越來越快樂。成長也越來越快。
l 讓大家明確知道自己今天要做什么。
l 分享,不但自己是分享的參與者也會是分享的發起人。不管是哪種角色,你都能學到很多很多。通過分享,團隊的進步會非常快。
開發流程:
l 編碼、單元測試
l Findbugs
l Mvn test
l Code review(重構,然后從頭開始)
l 提交代碼到svn
這個開發流程主要關注的是代碼的提升,保證代碼的質量,通過代碼審查讓盡早發現不合理的地方。
上線流程:
l 提前一個星期申請上線
l 單元測試
l 提測給測試團隊
l 打包
l 發上線計劃,預發冒煙,發布生產環境
這個流程我不是很熟悉,所以不作評論了。
有了這些比較優秀的模式和流程,也需要工具的配合。
代碼版本控制:svn,并發開發的需求需要用到分支,主干代碼盡量保證隨時可以上線。
項目的管理:maven,開發模式,測試模式,生產模式配置的切換,也可以和hudson進行持續集成。
讓我最有感觸的就是淘寶非常注重知識的積累和員工的成長。在這里我感覺我真的成長了,有踏實的感覺,少了浮躁。這篇文章并不是說小公司不好,也是因為在之前那家公司接觸的面廣,所以來淘寶知道自己哪些對于自己更重要,但也并不鼓勵你畢業就去小公司,因為對你的成長不好。每個人的路都是唯一的,大家喜歡怎么走就看大家自己的了,每個選擇都是獨一無二的,這樣才能活出獨一無二的生活,絢爛的生活。