軟體工程師是靠培養就能成才的嗎

danei2017發表於2019-07-16

軟體工程師應該怎樣培養,軟體工程師能培養成功嗎,透過自學或者選擇培訓班可以成為軟體工程師嗎?也許你在培訓班裡學會了程式碼,學會了程式設計,可這些都是基礎,懂得的人很多,做成軟體的卻很少,所以就造成了懂得程式設計的多,能開發軟體的卻寥寥無幾了。

軟體工程師應該算是稀缺人才了,會程式設計的人一抓一筐,可是會做軟體的人就不那麼多了,而軟體工程師更是這些人中的鳳毛麟角。軟體工程師的培養是有難度的,而且這個培養過程沒有章法可循,更重要的是培養出的產品的合格率比較低,因為我們培養出的大部分人都將成為碼農,而碼農顯然是與軟體工程師有較大差距的。幾篇文章也在談論軟體工程師培養的困難和軟體工程這個學科本身面臨的問題,我總結一下幾篇文章的主要內容,即為對於軟體工程師的培養還沒有形成一個很好的體系與方法,而軟體工程不等於電腦科學所提出的觀點正是這一大問題的子問題,就是我們著重於培養軟體工程師的計算機方面相關素養而忽略了其它,歸根結底還是因為沒有很好的培養體系,不知道如何培養所致,所以我把它歸為主要內容的子問題。

軟體工程師是靠培養就能成才的嗎_

那我們先來看看子問題,我覺得這個問題是普遍存在的,如果說有解決辦法的話,我認為需要讓計算機系畢業的同學繼續深造,在文科專業深造,或者,讓學文科的人來程式設計。第一種辦法週期太長,恐怕計算機系的同學不願意幹也幹不了,這純粹屬於趕鴨子上架,讓計算機系這種典型的工科男學習文科,還不如把我們殺了來的痛快是吧;第二種方法,顯然不可行,不是我有對文科的偏見,畢竟術業有專攻,文科的人很難理會計算機的本質,讓他們學個C語言還行,到計算機組成原理就不太吃得消了,到了編譯原理的話恐怕得有一半人跳樓,然後剩下一半人回家。所以,這兩個方法均不行。軟體工程這個活真不是什麼好活,一邊是計算機,一邊是人,明明軟體工程師是人,可是非得把他們變成人和計算機的紐帶,這個要求就高了,一邊他得懂計算機,一邊他得懂人。所以好的軟體工程師為什麼這麼難就可以理解了,我們真的沒有辦法培養這樣的人才嗎?

我覺著還是有的,我們在課餘是否可以培養一些人文素養,其實不要求我們專門去一心一意做這件事,這件事只要穿插在日常的計算機相關課程中間就好,比如學一些溝通,比如學一些經濟,不需要十分深入,只要瞭解大概就好,不需要把我們帶入這些相關領域的大門,只需要讓我們在大門口往裡一窺就好。而現在學校的培養在這方面是很欠缺的,不說開設專門的課了,就連全校性的關於人文的大講座都很少,關注一下學校的講座資訊,不是關於出國考研,就是關於就業的,要不然就是幾個有頭腦的碼農不小心變成了高富帥的成功經歷(比如李彥宏),可這有什麼用,我們畢竟不是他們,他們的成功是不可複製的。軟體是人寫的,這些人正是軟體工程師,試想寫軟體的工程師都不能瞭解客戶的需求,不能與客戶有效溝通,他們可以寫出客戶需要的軟體嗎?

一旦軟體寫出的軟體和客戶需要的軟體差別過大,無論這個軟體執行多流暢、bug再少、演算法再好,這些又有什麼意義呢?我們做軟體的最根本的目的不正是要能解決需求問題嗎?至於其它的,只是在這個繼承上的點綴而已。就好比是顧客想買一斤水果,可你遞給顧客一碗佛跳牆,你說,這是國宴裡的招牌菜,他,他接不接受還真難說,這個例子有待完善。以上我想說明溝通很重要,能想人所想也很重要。畢竟做軟體不是寫C語言作業,需求就那些,也不用顧及介面友好等等,軟體是解決問題的,而且很大一部分軟體解決的問題不在計算機領域內,這就要懂相關領域的知識並且能在給領域為客戶著想,比如做財務報表,本來需要做一些假賬,結果做成了真帳,出了這種事顧客只會責怪軟體工程師,而不會承認自己的錯誤,有些東西就是不言而喻的,但對於天天coding的程式猿來說,還真未必知道。其實這也不能全怪工程師,畢竟你讓人家一邊搞技術一邊搞人事,這很難的,要怪只能怪我們這是中國,誰讓中國人說話只說三分,剩下七分要靠猜呢?

關於總問題,上面篇幅也涵蓋了一些內容,關於把計算機人員當成板磚哥一樣的培養,不對,是建築設計師,這是個新穎的想法,這兩個職業確實有很多共同之處。有一篇文章也舉了一些例子來說明它們的共同之處,但我認為有幾個比較大的區別還是需要考慮的:

1、建築師只管規劃,至於建設過程的細節問題可以不予考慮,而且少了很多人事上的擔憂,比如說需求比較明確,設計的是學校宿舍就要有配套的浴室和開水房,設計的是商場就要有逃生避難場所,很多需求是硬性的也是相同的,需求的種類有限,更進一步,這些需求是在大框架下小的需求,和大框架可以毫無關係,比如過道中安排椅子等,這就表明考慮具體需求的人和建築設計師可以是不同的人;反觀軟體工程師,就比較苦逼了,他們需要考慮的事情很多,而且各種各樣的軟體工作的領域跨度很大,更要命的是細節上的考慮是和通盤考慮糅合在一起的,如果不考慮周全,一個細節上的改變就可能引起程式很大的改動,這也就是說一切事情必須自己搞定,沒有除了工程師的人可以代替你完成任務。

2、就是這兩個體系的差別了,建築業已經形成了培養工程師的教學體系,所以才可以有導師帶領來更好的實踐它,而軟體工程就沒有這樣完備的並且有效的培養體系,不同的老師帶出的軟體工程師可以是長得不一樣的。在知識傳承過程中沒有形成教學體系的一個典型的行業就是算命,同一個老師帶出的學生,領悟多少就是自己的事了,不同老師帶出的學生那更是千差萬別,如果讓他們給同一個人算命,肯定每個人又不同的答案。不過軟體工程還沒有淪落到這個地步,否則這些軟體工程師也就都到街邊自己打個什麼半仙的橫幅擺攤去了。至於其他的區別,我現在還沒想到。有區別但也不是說這種思路行不通,只要有共性就必然有行得通的地方,老師可以在實戰中教會學生領悟需求的能力、溝通的能力等等。

其實做一名出色的軟體工程師()不難,難的是我們沒有恆心,沒有繼續學習的毅力,很多學子畢業後,都不再繼續學習了,如此怎麼能成為優秀的軟體工程師呢?培養軟體工程師是個體力活加技術活,不過我們也不能操之過急,畢竟中醫都傳承了幾千年了,到現在也是沒弄明白什麼是冷啊熱啊,什麼氣啊虛啊的,不是照樣一代傳一代,照樣治病嗎?


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31501076/viewspace-2650737/,如需轉載,請註明出處,否則將追究法律責任。

相關文章