Leo談程序員的職業素養(上)

作者: Leo  來源: CSDN  發布時間: 2008-09-09 14:37  閱讀: 1741 次  推薦: 0   原文鏈接   [收藏]  

  說起職業素養,可能大家腦子里馬上反應出的是西服領帶公文包的精干白領形象,其實作為程序員來說,有更多內在的職業素養?一個具有職業素養的程序員應該是什么樣的呢?本期調查分享兩個研發小組的故事,讓大家在統計數據的基礎上進一步了解——什么是程序員需要的職業素養?

  案例一:對客戶堅稱“一點也不復雜”的團隊A

  DDD公司是個在發展壯大中的貿易公司,由于業務發展員工從剛開始的10人半年內增加到150多人,管理上出現了溝通效率低、對員工工作難以監控的現象。公司想近期上OA系統,以加強公司的工作效率、支持快速增長的業務。DDD公司找到了OA專業開發公司OOO公司,經過幾次與OOO的銷售溝通后,雙方確定了合作意向。而在OOO內部,有兩年開發經驗的開發工程師蘇成自告奮勇希望承擔該項目的開發管理工作,公司考慮到蘇成不錯的開發能力、希望提高自己的期望,安排他成為這個項目的項目經理帶領三個開發人員,建立了項目組A,開始了這個DDD的OA項目。

  項目不大,公司沒有特別安排需求開發工程師。按規定作為項目經理應該在與客戶確認需求后進行開發。但初為項目經理的蘇成信心爆棚,認為自己開發能力強,當項目經理也一定成。

 

  對外,蘇成采用了就想當然地按照合同后附的簡單需求說明草率進行開發。

      對內,蘇成認為項目經理擁有絕對權力。“今天不努力工作,明天努力找工作。”成了他的口頭禪,每次用威脅的口氣說出時,蘇成都會有種滿足感。同時,任何關于開發的不同意見都聽不進去,在第一期快結束時,蘇成已與項目成員發生了N次爭吵,大家紛紛要求調離項目組,團隊面臨全面崩潰。

  在二個月未與客戶溝通的狀態下,蘇成項目組向DDD提供了OA系統一期產品,按合同規定包括了:員工管理一項功能和其他四個子項(公司紀律規定、部門工作分類表、職務分配表、工作內容調查周報表)。

  看完基本功能演示之后,蘇成隨即向客戶提出希望盡快部署和收款的要求。

  DDD公司的HR經理Helen幾乎要尖叫起來!于是,發生了下面的對話。

  (H:Helen,Z:蘇成)

  H:“這個員工管理怎么沒跟考勤部分聯系想來呢?而且按你說的在這個系統里增加一個新用戶需要五步!太復雜了吧。”

  Z:“一點兒也不復雜,一點兒也不復雜。我現在給你再演示一下。”

  一邊說Z一邊動起手來。系統是按他自己的理解開發的。運用起來自然十分嫻熟,演示增加人員的步驟5秒鐘都沒用,當然,H也和剛才的演示一樣,沒怎么看清楚。

  H:“還是太復雜了,能改成一步嗎?”

  Z:“一點兒也不復雜,要不要再給你演示一次。”

  H:“算了,先不談這個。我們希望在這部分里加個統計功能,之前也和你們銷售討論過這個問題,我們希望能統計出公司員工交周報的情況和部門比例。”

  Z:“這個有困難,做不了。其實公司人也不多,建議這部分還是手工統計吧。”

  H強壓怒火:“按這個思路都可以手工統計,根本不用您來開發,但公司是因為要發展才要上軟件的。”
  ……

  實際情況是,因為開發時即沒要求留下文檔,加之團隊其它幾個成員均已準備離開項目組,任何在此模塊中的小小變化都會面臨所有代碼重新開發的局面,更不要新增什么功能了。蘇成非常清楚,客戶是不會再花一個項目的錢,只開發一個新功能的。所以,蘇成壓根兒都沒提因為需求變更,要加錢做這個功能的事兒。

  最終結果可想而知,蘇成辛苦開發幾個月沒有得到相應回報,客戶不滿意、項目組成員不滿意、研發部總監更是對他的能力產生了懷疑,在幾經努力拿到DDD公司在第二期項目開發合同之后,更換了項目經理。

  Leo點評:程序員如何以明確需求為基礎與客戶溝通?

  如果有專門掌握需求編寫技術和經驗的需求工程師作為客戶和程序員之間的橋梁是最理想的狀態,但是,以國內目前的國情下,每個項目組都配有需求工程師的并不多。因此,無論是從現實出發,還是從程序員自身提高的角度出發,正確地幫客戶表達需求、正確地理解需求就成了程序員的基本素質之一。否則,到最后多是像本文中提到的蘇成,搞得人、財兩空。此次調查中66.67%的被訪者認為“能幫助客戶正確提出需求”是程序員自身的修煉之一,此種修煉肯定能在中國當今的環境下,提高程序員自身的能力和素養,可見在程序員內部已就此達成了相當的共識。認為“能使客戶需求更完善”是程序員自重重要修煉之一的占到此次調查的55.13%。說明超過一半的程序員認識到,幫助客戶完善需求會節省雙方的時間和精力。

  那么如何才能提高自己的需求分析能力呢?以下分享幾個有關需求的幾個小技巧:

  1、盡量提高自己的表達和溝通能力。
  良好的表達和溝通能力能在客戶不能清楚表達需求時,融入到客戶組織內部,了解客戶的工作流程,與客戶共同更好地、更準確地定義和分析需求;此次調查中60.90%的被訪者認為溝通能力(能與客戶和同事良好相處溝通)是程序員應具備的基本能力,只有28。85%的參加調查者認為“表達能力(能準確表達自己的看法以及清楚準確地撰寫文檔)”是程序員必備的基本能力之一。溝通固然很重要,但我們更應該進一步認識到準確表達自己的觀點和意見也是成功溝通的基礎之一。如果只“溝”而不“通”仍然是對方面資源的浪費。

  2、應用多種方式了解需求。
  常用的方法有:問題分析法和建模分析法(結構化分析法、面向對象分析法)以及幾種方法的結合。比如在問題分析法中應用面向對象的思想,與客戶的員工談話,訪談首先要面向工作流程,面向任務,面向角色,也就是用面向對象的思想幫助客戶理清思路。

  3、不臆測需求
  如果有專門的需求工程師,對需求這塊而針對程序員的要求有一點要特別強調,就是編碼過程中當需求不明確時,必須與項目經理或需求工程師及時溝通,程序員不能自作主張地猜測客戶的需求。

  4、不過度承諾。
  很多銷售為了拿到項目,向客戶大包大攬,甚至完全不顧公司的現有開發能力向客戶承諾很多功能。在定義需求階段,一定要向客戶說明“什么是我們能做的,什么是我們應該做的,什么是我們不能做的”。客戶付了錢就應該得到相應的產品,很多時候過度承諾導致了新功能無法實現的同時,原有功能也受到影響。過度承諾而無法完成相應功能,開發人員會因此產生嚴重的挫折感,誰都不開發讓自己最終會“心中有愧”的產品,。此次調查中59.62%(近六成)的被訪者,正確地認識到對客戶提出的不合理需求拒絕得當也是程序員內在修煉的一個重要方面,這是非常難得的。

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()