最近參與了幾次單位招聘面試工作,在面試工程師時,我是用我的分層準則指導與候選人的交流內容,以確定他的能力層次是否達到我所期望的。大體上軟件工程師可以分為三大層次,分別是技術知識積累層、掌握設計方法層以及運用開發方法論層。
????
對于處于技術知識積累層的工程師,他的興趣點往往是學習新的技術,探究問題背后的原理,對于方法論和管理沒有太大的興趣,但很具有運用所掌握知識改變現狀的沖動。對于這一層次的工程師我想他們也更應當將精力集中在知識的積累上,我個人認為處于這個層次的工程師不應花太多的精力去學什么組織管理,但應當注意自我管理。一個人的精力是有限的,在這一階段千萬不要又學技術又學管理,如果這樣最多只能將自己打造成一個“平庸之人”。對于這一層次的工程師,我的建議是他們應當有一種探究問題根源的專研精神。對于知識了解得越是深透,以后更容易理解自己的工作乃至所處行業。這一層次的工程師一般工齡在5、6年及以下。在閱讀習慣上,這一層次的工程師對于更加具體的實踐、指導性讀物會更感興趣。
????
接下來是掌握設計方法層的工程師,他們慢慢地理解什么是設計,而且逐漸地掌握了如何通過設計來得到一個較好的產品,形成自己的設計原則是這一層次很重要的成長內容。由于工作的需要也會慢慢地承擔起開發小組管理的職責,因此慢慢地對于管理產生興趣。對于這一層次的工程師我的建議是,積累技術知識仍然是自己的重點,應當注重如何通過設計去改善所管理小組的績效,或者如何通過設計去改善所設計產品的質量。當然,學習必要的管理知識也是這一層次的工程師應當去做的,這有助于高效的完成工作,從而騰出時間來學習技術知識。這一層次的工層師,對于設計模式、測試方法、軟件工程方法論相關的書籍更加感興趣。在工齡上,這一層次的工程師大致在8、9年及以下。
????
最后一個層次的工程師不光將自己的注意力集中在工作內容上,而是會考慮整個軟件行業。他們更加的理解一個好的軟件應當如何去打造,明白方法論的重要性,努力整合各種開發、測試方法從而打造自己的開發方法論或平臺,平臺和框架是這個層次的工程師更加感興趣的主題之一。這個層次的工程師在團隊中所起的作用應當不僅僅表現在技術層面,更有部分管理層面的內容。他們所涉獵的范圍相對的廣一些,而且對于技術和管理都存在一定的敏感度,更喜歡去讀軟件行業大師級的抽象讀物。這一層次的工程師工作年齡大多在10年左右之上。
????
這里所談到的工程師的工齡,并不是說工作了7年就一定進入了掌握設計方法這個層次,在我的面試的過程中發現工作7、8年但仍處于知識積累層的工程師大有人在。我認為工程師存在層次差別是正常的,但我在選擇候選人時會運用我的分層模型去尋找我認為出色的工程師。
????
對于剛參加工作的學生,我并不注重它的經歷,而是更加的重視他的興趣、學習能力和潛力。另外,候選人是否具有一定的自信及良好的溝通能力也是我對他的重點考察內容之一。不論是哪一個層次,我都希望他有一定的學習習慣。我在面試中經常問的問題是,“你平時看些什么書?”、“對于這本書中的內容你如何看?”。在我看來,一個出色的工程師如果沒有讀書習慣是很不正常的。
????
對于工程師的成長,我堅持“水到渠成”的原則。一個工程師在什么時期就應當學他該學的內容,將那個時期應學的內容學好了、學精了,他自然后面就會出色。至于管理能力,只要每一時期該學的學好了,加之年齡的增長都會慢慢的增強,根本不用太擔心。是管理的料一定會在管理上出色,不是那塊料怎么學都學不好。最后一點,工程師在職業發展上應當跟著自己的興趣走,因為興趣是來自自己內心深處的聲音,跟著興趣走往往更容易出色。
?