程式設計師or需求工程師,誰決定軟體的最高水平?

2021-10-25 06:28:23 字數 3222 閱讀 1934

■ 需求工程師的能力,決定了系統的最高水平(易用、好用、價值等)

■ 開發工程師的能力,決定了系統的最低水平(可用、效能、安全等)

最近的熱點話題就是美國的技術斷供,不但有晶元斷供、作業系統斷供、將來還可能有工業設計用軟體(cad等)斷供、甚至企業管理類軟體的斷供(erp等)。相比前面的各類產品而言,erp類的產品技術難度要低,而且中國有數量巨大的企業和需求,對軟體商而言鍛鍊成長的機會非常多,但為什麼我們做不好、做不大、也做不強呢?(看看高鐵、橋梁等領域在需求和數量的驅動下都是後來居上!),原因有很多,這裡重點談一下軟體生產的重要角色之一:需求工程師的作用和存在的問題。

提到軟體行業,人們的關注點大都在程式設計師身上,很少有人提到需求工程師(it行業以外的人甚至不知道存在這個崗位),需求工程師也經常抱怨說自己夾在客戶和程式設計師中間兩頭受氣。在軟體行業中,需求工程師的核心工作是把模糊不清的客戶需求轉換為清楚的可指導程式設計的設計資料,通常可能是乙個比程式設計師還要辛苦的角色,他的定位不清,幹著「髒活累活」,卻沒有相應的地位和職責。舉例一些常見的問題(不限於此)

■作為需求工程師的定位、資格、責任、價值不清晰、不明確。

■在客戶現場調研時經常會被調侃是傳聲筒、錄音機,什麼也決定不了。

■被領導輕視地說:需求工程師不需要什麼技術、能寫文件就行了。

■it技術僅僅指的是程式設計工作,需求分析和設計不屬於技術範疇。

■與程式設計師意見不同時,常被告知「你提的需求做不了」,或「怎麼做我說了算」。

■需求工程師大都由不同行業和崗位轉職而來,缺乏需求工作的相應理論、方法、工具和標準。

■程式設計師可有4年大學教育,還有很多的培訓程式設計的機構可選擇,但需求工程師技能獲得的**基本上靠自學、或是師傅帶徒弟的方式等

決定一款軟體產品價值高低的不僅取決於編碼技術水平,首先是需求分析和設計的水平。甚至乙個應用軟體公司的核心競爭力很大程度也取決於需求工程管理水平、需求工程師的業務水平。這一點有很多的軟體企業還沒有充分地認識清楚,他們只強調軟體行業自身的個性、沒有看到軟體行業與其他行業相似的共性,這個共性就是「產品的價值來自於分析與設計」。

為什麼這樣說呢?其實道理很容易理解,與其他的行業做個橫向對比就明白了,it行業以外,不論哪個行業(建築、製造、服裝、科研等)都有設計師的崗位,生產任何產品的第一步都是做分析與設計,然後依據設計結果進行生產,這是人人皆知的常識,設計工作的內容包括了對產品需求的調研、分析、以及基於需求分析成果對產品進行的設計。沒有人懷疑是設計師的水平決定了產品價值的高低,還有乙個重要的區別是在其他行業,「需求與設計」是工作都是由設計師完成的。

但是軟體行業不同,軟體公司有單獨的需求工程師崗位,大一些的軟體公司有架構師崗位,但不論軟體公司的規模大小與從事哪個領域的業務,都沒有明確的設計師崗位。

軟體架構師與一般行業中xx設計師有所不同,軟體架構師的概念是偏向編碼技術的角色,他的工作重點是系統的結構部分,而不是系統全部內容的設計,通常產品的客戶價值大小也不是他的主要關注點。由於沒有清晰的「需求」與「設計」崗位定義,事實上大多數軟體公司的需求工程師不但進行了產品的需求分析,同時也參與了產品的業務設計和應用設計,而 「需求分析、業務設計、應用設計」的工作成果恰恰是決定產品客戶價值大小的關鍵,這就是為什麼說需求工程師的工作成果決定了產品價值高低的原因(當然程式設計師的編碼水平、新技術的應用等也會影響產品的價值)。

再與國外軟體商同行進行一下**對比就更清楚了,外國大牌公司的(sap、ibm、oracle的等)設計方案動輒就要大幾百萬、上千萬,高的更不用說了,而反觀國內廠家的提出設計方案**就很低,甚至是免費的,目的是能掙到開發費就可以了。設計方案的核心工作就是調研、分析和設計,同樣的工作,國內國外廠商獲得回報差異巨大。

從上述對比可以看出來,軟體行業需求工程師要做的工作接近於其他生產行業設計師做的工作,需求工程師需要同時考慮客戶的需求(經營層面、管理層面、操作層面、系統層面等)、軟體商的需求(功能、成本、週期、能力等),需求工程師是與客戶銜接的視窗,他的理解、分析和表達能力決定了產品的最**值(這個價值包含了客戶與軟體商雙方)。在其他行業中設計師的地位很高,是受人尊重的崗位,是產品生產過程的龍頭,對產品結果擁有決定權。與之相比,軟體行業的需求工程師雖然也做了類似的工作(分析、設計),但由於在行業內或軟體公司內部沒有明確定位和資格要求,所以地位就比較尷尬,他本人也不清楚他可以決定什麼。

為什麼會形成這種現象呢?究其原因可能有以下幾個方面(不限於此)

■長期以來,軟體企業以「系統功能交付」為主,系統設計不是「價值導向」,因此需求工程師只需要傳遞客戶的功能需求即可。

■受過專業培訓的需求工程師很少,大都是「自然成長」,或「師傅帶徒弟」的形式,能力參差不齊,且高水平者不多。

■廣泛地存在著不清楚如何與外部的客戶溝通、調研、記錄和分析,也不清楚如何與內部的程式設計師溝通、應該傳遞什麼文件、內容、標準等問題。

■軟體的需求工程尚未沒有形成一套技術性的體系,缺乏相應的理論、方法、工具、標準和流程,交付成果的形式很隨意(以文字描述為主),因此需求工作不被看成是「技術工作」,需求工程師也不被看成是「技術崗位」。

■由於缺乏培養需求工程師的「技術」體系,通常只是將需求工作作為一門「經驗」傳遞,內容鬆散、缺乏實操流程和標準,與程式設計技術體系相比有很大的差距。

■缺乏一套評估需求工程師能力的體系。等等。

順便說一句,分析與設計交付物的低水平,又常常造成後續技術開發工作的質量低、進度慢和成本高的問題。

因此,培養合格的、高水平的需求工程師,是軟體公司提公升產品質量、客戶價值所必須要先做的基礎工作。需求工程師應該成為客戶與程式設計師之間的橋梁,他應該做到將客戶的需求用程式設計師可以理解的方式表達出來,同時將軟體完成預期效果告訴給客戶。作為一名合格的需求工程師需要掌握三個方面的知識:

■知識1.需要精通需求分析和軟體設計的知識(這是需求工程師的看家本領);

■知識2.需要理解客戶的業務,掌握相應的業務知識;

■知識3.需要了解軟體實現的原理、過程等的it知識;

需求工程師的水平提公升可以帶動開發工程師的水平提公升,從而帶動產品整體水平的提公升。因此在某種意義上可以說

■需求工程師的能力,決定了系統的最高水平(易用、好用、價值等)

■程式設計師的能力,決定了系統的最低水平(可用、效能、安全等)

相比較而言,需求工程師的平均年齡要大於程式設計師的平均年齡,但是需求工程師的平均專業水平要低於程式設計師,這是因為絕大多數的需求工程師都沒有受過相應的專業教育和培訓,提公升軟體產品水平和價值的關鍵在於提公升需求工程師的能力,需求工程師是乙個可以學到老做到老的工作崗位(高階諮詢師、諮詢顧問等)。

希望學習分析和設計的知識、快速地提公升需求工程師的能力讀者可以參考《大話軟體工程-需求分析與軟體設計》一書。

從程式設計師到軟體測試工程師

前言 軟體測試 一門非常嶄新的學科,目前研究的內容還很不深入,仍然處於嬰兒階段。軟體測試需要什麼樣的專業基礎還沒有定論,而且目前還沒有一種很好的標準來衡量測試人員。但無可置疑,軟體測試越來越受到軟體公司的重視,軟體測試工程師的作用也逐漸被人們所認可。這一點已經在像微軟這樣的國外大型軟體企業中所證實,...

程式設計師,架構師,軟體工程師的區別

程式設計師 僅僅會寫 不會寫文件 軟體工程師 會寫 也會寫一些專案的文件,如需求,詳細設計,系統整體方案設計 架構設計,使用者手冊,開發計畫等 架構師 一般需要從資深軟體工程師裡面提公升為架構師 主要負責大系統專案 如乙個1000萬使用者併發訪問的 伺服器 系統設計 的架構設計。如果是小型專案,一般...

軟體工程師招聘需求

我們又很多軟體工程師需求,有意向的和我聯絡 c 高階工程師 任職要求 1.大學本科及以上學歷,計算機相關專業畢業 2.良好的英語閱讀能力 學習能力 溝通能力及團隊協作精神,能夠承受一定工作壓力 3.紮實的 c 程式設計功底,精通 win32 mfc 和多執行緒等技術 4.五年以上 visual c ...