2016年2月16日 星期二

程式設計師(資訊人員)的生涯規劃與應學知識

程式設計師(資訊人員)的生涯規劃與應學知識
程式設計師(資訊人員)的生涯規劃與應學知識 面試
原作者 : 青衫

對於一個程式設計師而言,如何在資訊領域中規劃自己未來的方向是很重要的一件事,畢竟沒有人願意十年、二十年後,還在程式撰寫的小圈圈中打轉。以下,作者便以從事資訊業十餘年、歷經各種職位的經驗,提供一些心得給所有還在從事程式設計的人參考。

首先我們來看看,資訊人員可從事的職位有那些:

1.程式設計師:
對於中小型軟體公司而言,程式設計師往往還必須兼任系統分析、系統設計的工作,但在較正規化的大型軟體公司裡,程式設計師的工作,便只是程式撰寫而已。
當然,也包括了單元測試與程式碼檢視的工作。因此他所要學的知識,主要是程式語言、資料結構與演算法,同時也要了解跟作業系統有關的API函數與相關的界面協定,並養成良好的程式撰寫習慣與技巧。

2.技術主管:
負責研究、評估、引進資訊應用的新技術,並對研發人員進行技術移轉的訓練,同時他也負責部份的程式撰寫工作。
這個職位一般很少有正式的編制,通常由資深程式設計師、研發小組主管,或是研發經理兼任。

3.研發小組主管:
在規模較大的軟體公司裡,大都有這個編制,一般由資深程式設計師擔任。他的職責主要是帶領小組成員,完成程式撰寫的工作,並整合與測試小組成員的程式。因此除了在程式設計的技術深耕外,他還必須具有管理的知識,並負起訓練小組成員的工作。有時他還必須兼任技術主管的職責。

4.系統設計師:
大部份只會在較正規化的大型軟體公司裡,才有這種職位配置。他主要是負責系統設計的工作,而系統設計的內容往往和系統相關,因此他所要學的知識,除了包括程式設計師應學的知識外,還要加上系統分析設計方面的知識。

有時他還要兼任程式撰寫的工作,因此通常這個職位均由資深的程式設計師擔任。

5.系統分析師:
大部份稍具制度的軟體公司,都會有這種職位配置。他主要是負責系統分析的工作,因此在邏輯思考能力上要有一定水準,同時對於軟體工程以及各種資訊新技術,也要有廣泛與深入的了解。此外,不斷地累積系統分析經驗也是這個職位不可或缺的一部份。雖然程式設計與系統設計的經驗在此職位並非必要,但這種經驗對於完成系統分析的工作,也具有輔助的效果。系統分析師在不同的組織體系裡,有時也會兼任需求分析的工作。

6.研發經理:
要掌控整個研發團隊,進行軟體的實際開發,由系統分析開始,到整合測試為止。通常擔任這個職務者,必須是個通才型人物,也就是歷經程式設計師、系統設計師、系統分析師等三種職務,而且其技術能力必須可以服眾(特別是華人研發團隊)。除了這三種職務所需具備的知識外,他還必須學習管理的知識。有時他還必須負起技術主管與教育訓練的工作。在更小型的軟體公司裡,他可能還要兼任專案經理、產品經理、系統分析師、系統設計師、程式設計師、測試人員等多種工作,是個相當累人且不容易做好的職務。

7.專案經理:
軟體發展管理者,主要是與客戶溝通,進行需求收集與分析,同時協調所有業務與研發人員進行開發工作,負責產品評估,並監督整個專案的進度,直到專案驗收為止。因此他的人格特質便必須善於溝通與協調,而所學的知識只須包含軟體工程與領域知識即可,不過對於資訊技術的了解程度,也會影響到專案經理的勝任能力。專案經理有時還必須兼任業務的工作,擔負部份的業績。


8.產品經理:
和專案經理類似,只是對象改為產品而已,因此除了專案經理所應具備的人格特質與知識外,還必須具有相當的行銷知識與創意。在某些公司的編制上,產品經理有時還必須負起主導產品方向、構思新產品,以及進行產品促銷與尋求銷售通路的工作,甚至也可能擔負部份的業績。

9.測試人員:
主要負責品檢的工作,除了必須了解測試方面的知識外,也必須具有耐心、細心的人格特質。

10.品質稽核員:

主要監督各軟體專案的開發流程,是否完全依照制度進行。
在實施全面品質保證的公司裡,品質稽核員的稽核範圍包括了公司內所有的作業流程,也包含了公司所有階級的人員。

11.顧問:
顧問指的是學有專精的人,大致可包含下列四類:

a.理論技術顧問:
也就是在理論研究方面學有專精的人,一般都是學校中的教授。

b.應用技術顧問:
也就是在某種資訊應用技術上學有專精的人,一般都是某個
公司的技術主管,不過他的價值會隨著資訊技術的演進而變化。

c.領域知識顧問:
也就是在某個資訊應用領域上學有專精的人,一般都是某個領
域中的佼佼者。


d.管理顧問:
一般可分成企管顧問、資訊管理顧問、品質保證顧問等三種,分別輔導企業的經營管理、資訊化與品保認證事宜。一般都是由顧問公司的從業人員擔任。

由以上所述的工作類型與所需的人格特質,
我們可歸納出幾種升遷路線:

1.測試人員-品質稽核員:
  適合不善溝通、不喜管人,但具備耐心、細心人格特質的人。

2.測試人員-程式設計師-技術主管:
  適合不善溝通、不喜管人,但又喜好程式撰寫與研究新技術的人。

3.程式設計師-研發小組主管:
  適合細心、負責,具有一定溝通協調與管理能力,而又喜好程式撰寫與研究新技術的人。

4.程式設計師-系統設計師:
  適合不善溝通、不喜管人,但又喜好程式撰寫與研究新技術,並具有一定資訊理論基礎的人。

5.系統設計師-系統分析師:
  適合不喜管人,但邏輯思考能力強,喜好研究新技術,並具有一定溝通能力與資訊理論基礎的人。

6.系統分析師-研發經理:
  適合細心、負責,善於溝通協調與管理,且技術超強的通才型人員。

7.系統分析師-專案經理:
  適合負責,善於客戶應對與溝通協調,並具有一定技術能力的人。

8.系統分析師-產品經理:
 適合負責,點子特多,洞察力精準,並具有一定客戶應對與溝通協調能力的人。

9.管理顧問:
  適合善於應對與溝通的人,通常必須考上相關證照,並在顧問公司從事一段時間以上,有知名的成功輔導案例者。

讀者可依照自己的人格特質與興趣,慎選將來生涯規劃的方向,並及早充實應具備的知識與能力。不過在此,作者還有幾點建議提供參考:

1.加強打字速度:
  這是很多資訊人員忽略的地方。打字速度的快慢往往會影響到工作的產能,尤其愈是上層職位(此處指的是經理級的執行層,而非副總級以上的決策層),他所要撰寫的文件愈多,因此儘可能提升自己的中英打速度,至少應達到50字/分鐘以上。

2.以通才型為目標:
  為通才型的人物幾乎可以勝任各種工作,在資訊競爭激烈的潮流中才不容易被淘汱,也比較容易找到合適的工作。不過在以此為目標前,要先衡量自己的能力,否則不但無法達到博而精的地步,反而變成了雜而駁,那就得不償失了。建議是先精而後博。

3.多學不易變動的知識:
  儘量學一些”學一次享用終生”的知識,例如資訊理論、軟體工程、管理學等,以培養自己往各方面發展的基本能力。

4.保持對應用技術的了解:
  對於容易變動的資訊應用技術,如程式語言工具、作業系統API、各式整合界面與架構,只要保持了解其內容與架構,並知道資料如何取得即可,在實際預期會用到時,再開始拿來精研,比較不會浪費時間去精研將來用不著的技術,因為這些技術可能在一、兩年後便被淘汱。

不過如果技術底子不夠,最好先精研一陣子,否則要用到時無法迅速理解,反而會降低了自己的技術能力。至於要專研什麼,便由讀者自行決定了,作者只建議,至少常用的作業系統API一定都要試過會用,程式語言工具裡的程式庫原始碼都要看過一遍,以了解別人是怎麼寫的,為什麼要這麼寫。這樣至少便有一定的技術底子了。

5.加強英文閱讀能力:
  大部份的資訊應用技術資料,都是以英文撰寫的,如果英文閱讀能力不夠,便會降低學習的速度,即使勉強可隨著潮流前進,但想走在別人前面,搶先創新技術產品便不可能了。



延伸閱讀:

程式面試書推薦【程式設計師的面試大進擊】

程式設計書籍推薦【程式設計師的自我修養:連結、載入、程式庫】

JAVA認證考試書【猛虎出柙雙劍合璧版:最新 OCA / OCP Java SE 7 Programmer 專業認證】

沒有留言:

張貼留言