軟件工程師應該算是稀缺人才了,會編程的人一抓一筐,可是會做軟件的人就不那么多了,而軟件工程師更是這些人中的鳳毛麟角。軟件工程師的培養是有難度的,而且這個培養過程沒有章法可循,更重要的是培養出的產品的合格率比較低,因為我們培養出的大部分人都將成為碼農,而碼農顯然是與軟件工程師有較大差距的。幾篇文章也在談論軟件工程師培養的困難和軟件工程這個學科本身面臨的問題,我總結一下幾篇文章的主要內容,即為對于軟件工程師的培養還沒有形成一個很好的體系與方法,而軟件工程不等于計算機科學所提出的觀點正是這一大問題的子問題,就是我們著重于培養軟件工程師的計算機方面相關素養而忽略了其它,歸根結底還是因為沒有很好的培養體系,不知道如何培養所致,所以我把它歸為主要內容的子問題。
那我們先來看看子問題,我覺得這個問題是普遍存在的,如果說有解決辦法的話,我認為需要讓計算機系畢業的同學繼續深造,在文科專業深造,或者,讓學文科的人來編程。第一種辦法周期太長,恐怕計算機系的同學不愿意干也干不了,這純粹屬于趕鴨子上架,讓計算機系這種典型的工科男學習文科,還不如把我們殺了來的痛快是吧;第二種方法,顯然不可行,不是我有對文科的偏見,畢竟術業有專攻,文科的人很難理會計算機的本質,讓他們學個C語言還行,到計算機組成原理就不太吃得消了,到了編譯原理的話恐怕得有一半人跳樓,然后剩下一半人回家。所以,這兩個方法均不行。軟件工程這個活真不是什么好活,一邊是計算機,一邊是人,明明軟件工程師是人,可是非得把他們變成人和計算機的紐帶,這個要求就高了,一邊他得懂計算機,一邊他得懂人。所以好的軟件工程師為什么這么難就可以理解了,我們真的沒有辦法培養這樣的人才嗎?我覺著還是有的,我們在課余是否可以培養一些人文素養,其實不要求我們專門去一心一意做這件事,這件事只要穿插在日常的計算機相關課程中間就好,比如學一些溝通,比如學一些經濟,不需要十分深入,只要了解大概就好,不需要把我們帶入這些相關領域的大門,只需要讓我們在大門口往里一窺就好。而現在學校的培養在這方面是很欠缺的,不說開設專門的課了,就連全校性的關于人文的大講座都很少,關注一下學校的講座信息,不是關于出國考研,就是關于就業的,要不然就是幾個有頭腦的碼農不小心變成了高富帥的成功經歷(比如李彥宏),可這有什么用,我們畢竟不是他們,他們的成功是不可復制的。軟件是人寫的,這些人正是軟件工程師,試想寫軟件的工程師都不能了解客戶的需求,不能與客戶有效溝通,他們可以寫出客戶需要的軟件嗎?一旦軟件寫出的軟件和客戶需要的軟件差別過大,無論這個軟件運行多流暢、bug再少、算法再好,這些又有什么意義呢?我們做軟件的最根本的目的不正是要能解決需求問題嗎?至于其它的,只是在這個繼承上的點綴而已。就好比是顧客想買一斤水果,可你遞給顧客一碗佛跳墻,你說,這是國宴里的招牌菜,他,他接不接受還真難說,這個例子有待完善。以上我想說明溝通很重要,能想人所想也很重要。畢竟做軟件不是寫C語言作業,需求就那些,也不用顧及界面友好等等,軟件是解決問題的,而且很大一部分軟件解決的問題不在計算機領域內,這就要懂相關領域的知識并且能在給領域為客戶著想,比如做財務報表,本來需要做一些假賬,結果做成了真帳,出了這種事顧客只會責怪軟件工程師,而不會承認自己的錯誤,有些東西就是不言而喻的,但對于天天coding的程序猿來說,還真未必知道。其實這也不能全怪工程師,畢竟你讓人家一邊搞技術一邊搞人事,這很難的,要怪只能怪我們這是中國,誰讓中國人說話只說三分,剩下七分要靠猜呢?
關于總問題,上面篇幅也涵蓋了一些內容,關于把計算機人員當成板磚哥一樣的培養,不對,是建筑設計師,這是個新穎的想法,這兩個職業確實有很多共同之處。有一篇文章也舉了一些例子來說明它們的共同之處,但我認為有幾個比較大的區別還是需要考慮的:1、建筑師只管規劃圖紙,至于建設過程的細節問題可以不予考慮,而且少了很多人事上的擔憂,比如說需求比較明確,設計的是學校宿舍就要有配套的浴室和開水房,設計的是商場就要有逃生避難場所,很多需求是硬性的也是相同的,需求的種類有限,更進一步,這些需求是在大框架下小的需求,和大框架可以毫無關系,比如過道中安排椅子等,這就表明考慮具體需求的人和建筑設計師可以是不同的人;反觀軟件工程師,就比較苦逼了,他們需要考慮的事情很多,而且各種各樣的軟件工作的領域跨度很大,更要命的是細節上的考慮是和通盤考慮糅合在一起的,如果不考慮周全,一個細節上的改變就可能引起程序很大的改動,這也就是說一切事情必須自己搞定,沒有除了工程師的人可以代替你完成任務。2、就是這兩個體系的差別了,建筑業已經形成了培養工程師的教學體系,所以才可以有導師帶領來更好的實踐它,而軟件工程就沒有這樣完備的并且有效的培養體系,不同的老師帶出的軟件工程師可以是長得不一樣的。在知識傳承過程中沒有形成教學體系的一個典型的行業就是算命,同一個老師帶出的學生,領悟多少就是自己的事了,不同老師帶出的學生那更是千差萬別,如果讓他們給同一個人算命,肯定每個人又不同的答案。不過軟件工程還沒有淪落到這個地步,否則這些軟件工程師也就都到街邊自己打個什么半仙的橫幅擺攤去了。至于其他的區別,我現在還沒想到。有區別但也不是說這種思路行不通,只要有共性就必然有行得通的地方,老師可以在實戰中教會學生領悟需求的能力、溝通的能力等等。
綜上,培養軟件工程師是個體力活加技術活,不過我們也不能操之過急,畢竟中醫都傳承了幾千年了,到現在也是沒弄明白什么是冷啊熱啊,什么氣啊虛啊的,不是照樣一代傳一代,照樣治病嗎?
-
軟件工程師
+關注
關注
8文章
218瀏覽量
21147
發布評論請先 登錄
相關推薦
評論