說起職業素養,可能大家腦子裡馬上反映出來的是西服領帶公文包的精幹白領形象,其實作為程式設計師來說,外在可能沒有那麼重要,更多的是內在職業素養,本期調查分享了兩個研發小組的故事,讓大家在統計資料的基礎上進一步了解——什麼是程式設計師需要的職業素養?
案例一:問題團隊a
d公司是個在發展壯大中的**公司,由於業務發展員工從剛開始的10人兩年內增加到150多人,管理上出現了溝通效率低、對員工工作難以監控的現象。公司想近期上oa系統,以加強公司的工作效率、支援快速增長的業務。經過幾次與f開發公司的溝通後,雙方確定了合作意向。安排有兩年開發經驗的開發工程師蘇成,作為專案經理帶領三個開發人員,開始了d公司的oa專案。
因專案不大,沒有特別安排需求工程師,而由專案經理與客戶確認需求後進行開發,初為專案經理的蘇成信心爆棚:對外,他想當然地按照合同後附的簡單需求說明草率開發;對內,他認為專案經理擁有絕對權力,任何關於開發的不同意見都聽不進去。在第一期快結束時,蘇成已與專案組成員發生了n次爭吵,大家紛紛要求調離專案組,團隊面臨崩潰。
在兩個月未與客戶溝通的狀態下,蘇成專案組向d提供了oa系統一期產品,按合同規定包括了:員工管理一項功能和其中四個子項。看完基本功能演示後,d公司的hr經理helen幾乎崩潰——oa系統中員工管理沒與考勤部分聯絡起來,而且在系統中增加乙個新使用者需要五步,十分繁瑣,很多功能也與公司需求相差極大。
但是蘇成卻認為這些都是小問題,更讓helen氣結的是要求增加乙個小的統計功能時,他居然說做不了。後來才了解到,原來在開發時,專案組並沒有留下文件,加之團隊其它幾個成員均已準備離開專案組,任何在此模組中的小小變化都會面臨所有**重新開發的局面,更不用說要新增什麼功能了。
最終蘇成辛苦開發了幾個月卻沒有得到相應地回報,客戶不滿意,專案組成員不滿意,研發部總監更是對他的能力產生了懷疑,在幾經努力拿到d公司的第二期專案開發合同之後,更換了專案經理。
點評:程式設計師如何以明確需求為基礎與客戶溝通?
如果有專門掌握需求編寫技術和經驗的需求工程師作為客戶和程式設計師之間的橋梁是最理想的狀態。但以國內目前的國情,每個專案組都配有需求工程師的並不多。因此,正確地幫客戶表達需求、正確地理解需求就成了程式設計師的基本素質之一。在此次調查中66.67%的被訪者認為「能幫助客戶正確提出需求」是程式設計師職業素養之一,可見在程式設計師內部已就此達成了相當的共識。認為「能使客戶需求更完善」是程式設計師看重的職業素養之一,佔到此次調查的55.13%,這說明超過一半的程式設計師認識到,幫助客戶完善需求會節省雙方的時間和精力。
那麼如何才能提高自己的需求分析能力呢?以下分享幾個有關需求的小技巧:
1.盡量提高自己的表達和溝通能力。良好的表達和溝通能力能在客戶不能清楚表達需求時,融入到客戶組織內部,了解客戶的工作流程,與客戶共同更好地、更準確地定義和分析需求。此次調查中60.90%的被訪者認為溝通能力是程式設計師應具備的基本能力,但只有28.85%的程式設計師認為「表達能力」是程式設計師必備的基本能力。溝通固然很重要,但我們更應該進一步認識到準確表達自己的觀點和意見也是成功溝通的基礎之一。如果只「溝」而不「通」仍然是在浪費方面寶貴的時間。
2.應用多種方式了解需求。常用的方法有:問題分析法和建模分析法以及幾種方法的結合。比如在問題分析法中應用物件導向的思想,與客戶的員工談話,訪談首先要面向工作流程,面向任務,面向角色,也就是用物件導向的思想幫助客戶理清思路。
3.不臆測需求。如果有專門的需求工程師,有一點要特別強調,就是在編碼過程中當需求不明確時,必須與專案經理或需求工程師及時溝通,程式設計師不能自作主張地猜測客戶的需求。
4.不過度承諾。很多銷售人員拿到專案,向客戶大包大攬,甚至完全不顧公司的現有開發能力向客戶承諾很多功能。在定義需求階段,一定要向客戶說明「什麼是我們能做的,什麼是我們應該做的,什麼是我們不能做的」。很多時候過度承諾導致了新功能無法實現的同時,原有功能也受到影響。在此次調查中,有59.62%(近六成)的被訪者正確地認識到對客戶提出的不合理需求拒絕得當也是程式設計師職業素養的乙個重要方面,這是非常難得的。
案例二:嚴格開發流程的團隊b
國資委某下屬集團公司要上oa系統,c公司在研發能力、**兩個方面以綜合分第一的成績競標成功。擁有10年專案管理經驗的李石被任命為專案經理,並由他組建團隊。李石對團隊成員只有三個要求:分析能力、產品意識、較強的團隊意識。
初選方案
需求確定後,專案有兩個方案:更流行的bs模式和傳統的cs模式。李石安排兩個程式設計師前期負責選方案,分別基於兩種模式開發使用者許可權管理系統的原型,給大家做演示,並結合客戶特別評估每乙個架構的優劣。
分析了bs/cs的特點、結合客戶的需求,他們發現:
1.從流程的定製來看cs結構更加利於客戶方便地進行「視覺化」定製;
2.從公文的「不可修改、保密性」以及電子圖章的「不可詆毀性」需求來看,cs框架更加利於實現drm技術和數字指紋技術實現;
3.從公文的列印需求與一般web報表的差異性來看,cs框架更加適合對列印格式的定製與控制;
4.從客戶提出的內部電子會議的實時性來看,cs框架明顯優於bs框架的非狀態性,能夠做到更順暢、更及時的溝通;
5.從系統的安全性來講,cs框架更加適合硬加密系統(如加密狗、u盤key)與系統的對接。
產品開發
在開發過程中李石強調了每個程式設計師的產品意識,取得了不錯的效果。比如客戶要求乙個能上傳檔案的功能時,並沒有提出ui需求,團隊的b程式設計師並沒有簡單完成任務了事,而是做出一次能同時選取上傳5個檔案的程式。這種產品意識為客戶使用帶來方便,彌補了需求的不足。
團隊配合
在團隊b中,每個程式設計師都做到了做完乙個功能後與專案經理溝通進度、結果,並與負責測試的同事溝通,及時檢測bug,及時修改並及時回歸。每個功能的實現都相對完善。及時的溝通與相互學習,還促進了團隊磨合。
經過8個月的開發,oa專案第一期完成基本功能順利上線。c公司已順利拿到了客戶第二期的開發合同。
點評:成功的開發需要這樣的程式設計師
通過上面的案例,我們為程式設計師總結出如下素養:
1.學習和分析能力。每個團隊都在成長,作為程式設計師這個群體就更需要「與時俱進」。尤其是在開發這個知識日新月異的行業裡。同時分析能力也是必不要少的。在調查中71.15%的程式設計師認為,學習能力非常重要,同時有57.69%的程式設計師認為,在技術方面有不同的意見時,處理妥當是程式設計師應該具有的職業素養。相信這個案例為我們提供了新的思路。
2.與內外保持良好的溝通,永遠是成功的保證。及時匯報、溝通進展也可以在第一時間發現自己的偏差。資料證明59.62%的程式設計師認為「匯報專案進展時明確及時」是重要的職業素養。
3.產品意識。良好的產品意識可以大幅度提高開發效率,也能有效的彌補需求不足。例如,在案例二中,在做檔案上傳功能時,充分考慮了客戶使用的方便性,彌補了需求中被忽略的細節。
4.團隊意識。強烈的團隊意識能幫助自己和整個團隊更快成長,因為知識的分享是知識學習中乙個最有效的方法,尤其是在程式設計師這個行當裡。
5.編碼規範和文件規範。據調查顯示有分別由80.77%和68.59%的程式設計師認為編碼規範和文件規範是程式設計師的必備職業素養之一。
文/橙子 點評/職業顧問 leo
(來自:《程式設計師》雜誌
)
程式設計師的職業素養
程式設計師是可以當作一生的職業。但首先,你需要熱愛程式設計,而不是把它作為完成其他人生目標的工具。既然計畫投入數十年的人生,那麼一定會不斷的反思自己在哪些方面的努力是更有效率的。換句話說,現在的你,和十年前的自己到底有哪些不同,十年後又怎樣超越現在的自己?我的職業生涯還遠遠沒有過半,深深感覺沉澱不足...
程式設計師的職業素養 Bob
1.不匆忙上線,測試充分後再上,即使到了交付期 2.分析自己容易遺漏的bug,檢討自己查bug的方法 3.讓自己的專案靈活易於修改 時長改動它,發現不容易時,思考改進 高覆蓋的單元測試保證 修改的信心 4.承諾的代價,加速的代價 一片糟糕.5.專業的回答,重於事實,不計較過去.6.好 的障礙 匆忙....
《程式設計師的職業素養》 2
輔導缺乏經驗的程式設計師是那些經驗豐富的程式設計師的職責。向資深導師尋求輔導也是年輕程式設計師的專業職責。測試驅動開發 tdd 先寫測試的程式設計。先寫測試 再寫業務 測試 有問題,停止業務 編寫直到測試 無誤。僅編寫當前測試 能夠正確執行的業務 即可。要學習熱鍵和導航操作,以及測試驅動開發,持續整...