組建高效快速研發團隊的必要角色

聲明:本文是作者觸感而發,不存在抄襲,如果有雷同,實屬巧合,如果有不同的意見,請及時給作者留言。
       作者一直從事與網站開發有關的項目,本文所述的高效快速反應的研發團隊組成元素並非放之四海而皆準,也與網站開發項目有關,並且只是理論求證階段,作者尚未有實際的實踐證明,如果有不足或者欠缺之處,請指教。
       在三層架構風靡IT界的當今,仍然有不少的公司對三層架構置之不理,具體原因不得而知。下面列出的場景不全面,但是也可以說明冰山一角。
1. 時間緊張,任何一個項目的客戶都非常着急,公司也可以理解,程序員作爲服務的最終實現人也比較着急,交付不了產品,客戶不滿意,公司受損失,個人的獎金也有相關的級聯。爲了DeadLine,不管怎樣,把產品交付驗收之後,公司拿到錢就皆大歡喜了。在這種利益驅使下,沒有辦法不抓緊時間以最快的速度實現產品代碼的編寫。那好吧,不擇手段、分層不清晰、野路子、有問題百度一下等八仙過海,各顯神通,之後就去喝慶功酒了,留下一堆只有自己才能勉強理解的代碼。
2.技術部組織結構不健全。公司爲了節省成本,招聘過多的初級程序員,缺少高級職稱的人帶領指導項目的完成。初級程序員比較多這個問題基本上不是大的問題,公司在組建之初,都會考慮找一個信得過、技術比較好的人擔任技術總監,掌控負責軟件產品的技術方面。接到一個項目後,經過簡單的需求調研,項目經理把項目劃分爲子項目按人頭分配任務,要求按期完成任務交給QA部門就萬事大吉了。
還有更多的場景有待大家共同研究,在IT的項目管理中,組建項目團隊是技術總監或者項目經理必須要做的一件事情。諸多書籍中都講過,組建項目團隊需要考慮項目團隊需要什麼樣的角色,根據角色挑選合適的人才,大多數書籍中也講解了如何面試潛在的團隊成員。其中關鍵的部分,也是每個技術總監或者項目經理都需要思考的問題卻無法一一說明白,即團隊需要什麼樣的角色,如何確定這些角色,這些角色之間存在什麼樣的關係,每個角色最終需要交付什麼樣的產品,以及如何確保交付產品的質量。這個問題在不同的行業,不同的團隊中有不同的答案,沒有統一的答案,因團隊的性質和規模不同而有差異。因此任何一本IT項目管理書籍都不會描述這個問題,因其不可能找到一個普遍的答案。以下是作者在開發基於SSH框架的WEB應用程序中關於團隊角色的一些思考。
1.需求調研角色。在中小企業項目應用中,一般在銷售把項目談下來之後,客戶想盡快的看到項目的效果,因此需要儘快的出來一個原型。客戶對原型確認之後,項目團隊也許會根據這個原型進行繼續開發,或者重新制作,原型可以用原型工具生成。因此,需要一個需求分析角色對項目的整體需求進行把關和確認。這個角色一般是項目經理或者由項目經理直接指派的隊友,其主要的作用是對客戶的需求進行整理和確認,把客戶的需求用程序員可以讀懂的語言描述出來,其提交的內容爲用戶需求文檔,要求無二義性,準確,並能被程序員實現。
2.   美工,美工的作用顯而易見,就是設計漂亮的UI界面,讓用戶看起來賞心悅目,從感性上能有一個好的印象,最好能讓用戶感覺這個特別爲他設計的界面比別人的好,錢沒有白花,或許能在上級面前邀功。
3.UI工程師,這個角色的主要任務是根據美工設計的界面製作出靜態網頁,提交的內容爲HTML集和一些JS代碼,由於一些效果的特殊性,因此必須藉助於JS來實現。一般的美工設計人員對於編程不熟悉,他們的使用PS等工具切割生成的HTML代碼也不精簡,或者樣式需要重構等,UI工程師必須對這些代碼進行重新整理,並對循環的代碼塊進行註釋,以便於界面開發人員使用。提交的產品應該代碼簡介,格式明確,方便閱讀
4. action工程師,根據業務的需求寫Action類(兼配置文件)以控制用戶數據交互,主要依據UI工程師的結果並調用Service工程師寫的接口。在Action中不執行業務邏輯,只做一些簡單的界面邏輯判斷和數據封裝。比如把頁面提交的數據封裝爲類的實例,或者從會話中取得用戶的狀態。
5.service工程師,根據業務的需求寫service接口和實現(兼配置文件),供Action工程師調用,service的實現依賴於dao工程師的接口。在service層,把action的調用作爲一個業務進行封裝,並返回業務執行的結果,比如,在action層調用登陸驗證,在service層進行驗證,驗證成功後填寫用戶登錄日誌。是否填寫用戶登錄日誌這樣的業務對於action的調用者是未知的,action只調用service的接口並對返回結果進行判斷。
6.  dao工程師,顧名思義,dao工程師提供dao接口和實現(兼配置文件),供service層使用,dao層只關注的數據的存取,並返回封裝後的結果。在dao層不應該包含任何業務邏輯判斷的代碼。
7.db工程師,根據業務需求設計滿足業務需求的數據庫定義,並對數據庫進行相應的優化,提交的內容爲數據庫定義的Sql語句、相應的說明文檔,以及包含測試數據的sql語句。
8. test工程師,測試工程師的主要工作是對action層,service層,dao層,數據庫寫測試代碼,包括測試類和測試的sql語句。
9. 綜合管理角色(可以爲團隊中的任何人),主要工作爲開發環境的搭建,代碼版本控制,編程規範擴展,代碼規範執行檢查,爭端仲裁,進度控制,技術選擇。並隨時準備爲團隊中遇到困難的成員解決問題。這個角色很重要,必須能有單獨的一個人能有足夠的時間解決團隊的問題,併爲團隊中的成員提供技術支持等服務,這個角色在某些特定的場景下可以由團隊中的任何人承擔,尤其在技術諮詢方面,部分團隊成員對某一個特定問題的理解更深刻。
以上9種角色可以進行合併,在中小軟件公司中,由於資源的限制,不得不合並一些角色。美工可以擔任部分UI工程師角色,service工程師可以同時擔任daodbtest工程師角色,action工程師擔任部分UI工程師,項目經理擔任綜合管理和需求調研角色。在需求確定的情況下,一個用例經過充分溝通後,應該產生以下幾種類型的文檔:數據庫設計,dao接口,service接口,action類,UI數據交互,界面設計,測試代碼。這些文檔需要團隊成員共同討論並確認,以此形成項目任務,作爲制定項目計劃的參考。
無論團隊人員有多少,對於一個好的項目實現來說,研發團隊中應該包含以上角色。這樣做的好處是:團隊成員任務明確,分工精細,責任到位,合作愉快,方便制定計劃。這樣寫出來的程序方便擴展和維護,遇到問題時可以快速定位並進行響應,有利於制定代碼規範,新團隊成員能較快的融入團隊,增強項目的可延續性(部分團隊成員的流動不會對程序的開發造成大的損失,很少出現只有一個成員瞭解某些代碼邏輯的情況)。Good Luck,祝願你所在的團所有成員合作愉快。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章