“程序員”和“軟件工程師”的概念常常被混淆在一起使用,很多人以爲搞軟件就是編程序、就是“程序員”,而很多各種各樣的培訓學校卻宣傳培養的是“高薪軟件工程師”;有很多資深的軟件開發高手稱呼自己爲“老程序員”,而很多新入行的年輕人就號稱“軟件工程師”或者“高級軟件工程師”。那麼,一個普通的程序員和一名軟件工程師的區別到底在哪些方面呢?帶着這個問題,筆者採訪了號稱“培養真正的軟件工程師”的昂立·慧橋軟件人才項目實訓中心的負責老師:
所謂培養“真正的軟件工程師”,就是用項目實訓的教學模式,全程案例式教學,不僅學習企業需求的實用前沿開發技術(如 Java EE 中的 Struts2 、 Spring 、 Hibernate , .Net 中的 Visual Studio2008 、 ASP.Net 4.0 等),還在經驗豐富的老師的帶領下,參與到真切的項目開發流程中,體驗團隊合作的工作環境和壓力。通過項目實訓鍛造出的一名真正的軟件工程師,應具有以下能力:
1. 熟練掌握Java 語言, 深入理解OOP,OOA,OOD 等編程思想.
2. 掌握Java EE 各個技術模塊( JSP/Servlet, JDBC, EJB, Websphere / Weblogic 等)
3. 熟悉各種Java IDE 和相關開發工具 (Eclipse, Jbuilder, WSAD, CVS, ANT, Junit)
4. 理解ROB 的設計原理, 熟練掌握Oracle/SQL Server/DB2 其中至少一種
5. 熟悉UML 建模, 熟練掌握Rational Rose
6. 深入理解Design Patten, 熟悉Struts 、Spring 、Hibernate 等框架技術
7. 有中大型項目開發經驗, 能獨立完成整個軟件模塊分析, 設計開發, 單元測試
8. 熟悉軟件工程, 瞭解前沿技術規範(CMM) 和先進開發模式(RUP, XP)
9. 能迅速接受新技術, 快速學習和應用
10. 英語, 邏輯思維能力, 團隊精神等非技術要求.
對比 1 :
A 、普通開發人員:
掌握了計算機基礎知識;
熟悉計算機資源,學會了編程語言,喜歡賣弄技巧,喜歡比較編程語言的優劣;
以能編出某種特殊功能的程序爲榮,不懂原理,不求甚解;
喜歡個人開發,不重視文檔編寫;
B 、軟件工程師:
計算機基礎知識紮實;
精通 1 ~ 2 門編程語言,很少停留在表面上去比較編程語言的優劣;
以編寫出用戶滿意的高質量軟件爲榮。
懂得個人開發和團隊開發的利弊,文檔規範,齊全。
對比 2 :
A 、普通開發人員:
只重視功能的實現,不重進度和質量的把握。
怕被“管”得太死,動不動就說限制了思路,沒有發揮空間。
不喜歡做測試工作,認爲測試低人一等,從來沒有做過測試工作。
只根據自己的愛好學習技術;
B 、軟件工程師:
懂得在進度、質量(功能)和成本之間平衡。
懂得規範的目的在於重用,重用有利於提高效率和集中精力創新。
認爲測試工作比編碼更具挑戰性,自己經常爲同伴的代碼做白盒測試。
根據企業項目的需求和自己發展目標的共同點選擇學習內容和方向;
對比 3 :
A 、普通開發人員:
認爲別人程序很差,不喜歡看別人的代碼;
總認爲自己比業務專家還更理解需求。
項目開始時,喜歡說 : “沒問題, SO EASY ”。
項目大大延期時,喜歡說:“設計太爛,沒法編程”。
B 、軟件工程師:
喜歡爲同事走查代碼,並以此獲得學習他人優點的機會;
懂得自己只是可能比業務專家更懂編程。
項目開始時,喜歡問 : “那是什麼?這是爲什麼?”。
項目大大延期時,喜歡說:“我爲什麼就沒想到…”