沒錯,只有3件事。我多麼希望在大學期間學會很多件事,但是我深知沒有任何專業會對你進行完整而透徹的教育。一門專業是為了傳授你基本知識並且教會你學習其他知識的技巧。然而作為一名軟體開發員,隨著經驗的積累,我發現越來越後悔在工作之前沒有學習深入理解過本文中列出的3件事。
我相信,任何計算機專業如果能夠更多的關注這3件事,都會變得更有意義。如果工作之前更加深入的學習這3件事,相信我會更具實戰經驗,而不是去惡補工作所需的每件事。我會更加從容的應對工作上的需求並且成為IT界更加優秀的一員。
1. 開源開發
我發現大學裡真的從未傳授過開源。雖然一些學生自己接觸並且加入其中,但是大多數人根本就不知道。在人的一生中,沒有任何階段能與學生期間一樣,有閒暇時間去從事開源開發。並且這對彼此都有好處。而現實是兩者(學生和開源運動)經常失之交臂。
我相信大多數電腦科學學科應該鼓勵學生展開新的開源專案或者加入已有的專案。這應該成為大學課程和分級過程的一部分。開源專案可以籍此獲得寶貴的貢獻, 同時學生不僅可以獲得實戰經驗,也可以實際使用開發工具,體驗開發過程,並且獲得寶貴的人際溝通技巧。這些是學校的模擬環境中提供不了的。(編注:伯樂線上在去年10月份編譯的一篇文章就已提到“對無工作經驗的學生來說,開源專案的工作經歷絕對是簡歷上的亮點”,請參閱《程式設計師:增加程式設計經驗的3種途徑》。)
2. 敏捷開發過程(例如極限程式設計、Scrum)
我會不斷修正這一條的內容:我希望大學課程傳授任何一種開發過程,甚至是瀑布模型,但是要達到讓學生至少有所瞭解的程度。我發現有關開發過程的內容都被敷衍的帶過。的確有些課程涉及到開發過程,但是沒有一門課程真正解釋了使用開發過程的必要性並且沒有相關的實踐應用。在這種情況下學生幾乎不能接受這個概念。
學生學習敏捷開發過程本是一件很好的事情,因為當下它們和行業更相關。向大學生傳授敏捷開發過程可能是改善軟體行業一個最好的方法。學生會對如何構建軟體有一個真正的理解,並且不會被技術落後的公司洗/腦 (周圍仍然有許多這樣的公司)。而現實情況是,學生參加工作後受公司環境影響,完全忽視了正確的做事方式。這對學生和IT行業來說都是一大損失。
3. 企業政治/建立人際關係
大多數人可能覺得這件事無關緊要,但是我相信這是目前最重要的一件。在這點上,我就讀的電腦科學專業讓我失望。過分的強調技術會讓你永遠也不知道公司裡的生活是什麼樣子的。當然你自己很難理解這一點。
對剛剛從電腦科學專業畢業的學生來說,你認為技術是這個世界上最重要的事情。因此當你在公司站穩腳跟的時候你會大吃一驚:凡事看起來如此不正常並且進展緩慢。你會理解這一切,直到你明白技術根本不是最重要的,企業政治統治著一切。
即使在高科技公司,政治也處在統治地位並且政治的基石是人際關係。恰當的人際關係會讓你工作順利,生活更加稱心如意。然而政治和人際關係的定義不明確,沒有硬性的規定,凡事都是相對的並且具有彈性。當然,對於滿腦子技術的人來說,這是世界上最令人沮喪的事。
然而就像其他事物一樣,事情並非一定如此。政治和人際關係的建立具有基本準則。這些準則可以通過學習獲得。如果是這樣,那業界為什麼還到處急需具有較強人際溝通能力的技術人才?因為並非是畢業生缺乏人際溝通的技巧(許多電腦科學專業的畢業生擁有很強的這類技巧),而是他們缺乏利用這些技巧建立人際關係的能力。
這都是我的一家之言。我已經畢業好幾年了,也許在這期間情況發生了改變並且我上面提及的事情都已經成為大學課程的一部分(這不大可能,如果真是這樣那很讓我震驚)。你可能不同意我的觀點(其中幾點或全部)。你認為還有什麼其他重要的科目是電腦科學專業應該涉及的?請在回覆中告訴我。
原文作者:Alan Skorkin 編譯:伯樂線上 敏捷翻譯 – 何強
如需轉載,但請註明原文/譯文出處、譯文超連結和譯者等資訊,否則視為侵權,謝謝合作!