1. 程式人生 > >我為什麼要轉到軟體工程專業

我為什麼要轉到軟體工程專業

作為一個轉專業的降級生,從計劃轉專業到現在,總是會聽到有人問,“為什麼想要轉專業啊”。而我每每只能尷尬一笑,然後搪塞過去——不是別的,只是覺得考慮實在太多了,很難一言以蔽之。所以在這個人技術部落格的第一篇,我想我有必要再好好梳理下我想要轉專業的理由,作為今後走在技術之路上前進的動力與方向。

興趣

我一直覺得,在考慮專業的選擇或人生的規劃問題時,興趣應當是最重要的因素。我相信只有對一件事感興趣、有熱情,才有把這件事做下去、做好的可能。但同時我還覺得,真正意義上的興趣的發現是很難的事,在深入學習一門學科之前,我們往往並不知道自己是真的對它有興趣,還是隻是崇拜一些高手,或是隻看到了它某些光鮮亮麗的部分。因此,我不敢大言不慚的直接說“我對軟體工程專業有濃厚的興趣”。但我仍認為自己在自我發現的道路上,已積累了一些對自我的認識。當把理性作為感性的旁觀者,我認識到了一些自我在直覺層面的好惡。而這些,在許多方面是與我對軟體工程專業的認識是匹配的。

對秩序和構建秩序的創造力的興趣

我喜歡秩序。相比混亂的、不穩定的、不斷趨於惡化和膨脹的,我更偏愛井然有序的、穩定的和健康平衡的——前者往往帶給我一種不適甚至恐慌的感受,而後者則令我安心而嚮往。我發現自己有著遇到問題總試圖找到程式化的解決方案的思維習慣。小到房間的整理,大到高考的準備,我總是樂意在腦中生成一個條理清晰的、類似程式的執行方案,並不斷的完善優化其中的“演算法”。你可能會覺得這是一種死板和缺乏活力,是一種“裝在套子裡”的表現,但我相信任何“套子”表現出的死板都是“套子”不夠大不夠好造成的。而把“套子”做好的過程中體現的創造力更是非常具有活力甚至魅力的事。也許面對一個較為複雜的問題,當前的程式化解決方案會引發各種“bug”,那麼改進這個程式,修復這些“bug”在我看來是非常充滿智慧和趣味的。對這一點的認識,是我認為我會喜歡軟體工程專業的重要原因。“程式”這個東西的本質恰好與我上述所向往的事物屬性相符:計算機會根據你編寫的程式按照一種絕對的邏輯和秩序執行,不會出錯,一旦有問題,則一定是你編寫的程式不夠好。這一點無需多言。更高一個層次講,整個軟體行業對我有著同樣的吸引力。通讀過一遍《

構建之法》後,我得到的最直觀感受就是軟體行業的從業者和軟體工程學科的研究者們始終在為建設軟體工程的秩序而不斷努力,書中的幾乎每個知識點,各種各樣的框架模型流程,在我看來處處體現著秩序與秩序構建的美。

對寫程式碼的興趣

僅僅是對秩序與秩序構建這樣比較形而上的東西感興趣是不夠的,畢竟學習軟體工程,作軟體工程師,最多的時間還是在與程式碼打交道。如果對寫程式碼毫無興趣,甚至有所排斥,那一定是不適合這個專業的。幸好,通過自學並寫一些入門級的小程式,我至少可以確認自己不排斥坐在電腦前寫程式碼這件事。更重要的是,在某幾次較為複雜的練習中我甚至隱約體驗到了忘我的快感。這讓我想到高中時讀到的阿里巴巴的神級程式設計師

多隆的故事

多隆是阿里巴巴首批合夥人裡唯一的程式設計師,他做事一個人能頂一個團隊,比如說寫一個檔案系統,別人很可能是一個專案組,甚至一個公司在做,而他從頭到尾都是一個人,在很短的時間內就完成了。從 03 年到 07 年,淘寶搜尋引擎就是他一個人在寫,一個人在維護,而且這還不是他全部的工作,另外他還做了其他很多事情。多隆不擅交際,不常分享,也不玩什麼社交網路,一般很難在公眾場合見到他,只要能不參加的會議、採訪,他都不會參加。就算去,他也常常會帶上筆記本。據說他也曾經帶著筆記本去outting,在車上寫程式碼。雖然被所有人視為神,但他真的由心底覺得自己是一個凡人,他做的最多的就是默默的坐在工位上,對著螢幕上的黑框,寫程式碼、解決問題。在別人糾結著是不是要轉型管理,是不是要轉型業務,是不是要發揮更大的影響力,是不是要獲得更多的權力,是不是要得到更多的回報時,他卻從一直在考慮怎麼通過技術改進,把問題解決得更好。

我想多隆在寫程式碼時的狀態就是我一直以來追求的所謂 flow的心理狀態。這是一種完全忘我的狀態,全身心的投入到正在做的事情中。我相信這是人能經歷的最優體驗,我把它構建為我人生的意義之一。多隆的故事,自己做練習的經歷,讓我相信寫程式碼是很有可能為我帶來這樣的體驗的,起碼我有絕對強烈的意願追求之。

對創造和程式設計藝術的興趣

我熱愛藝術。在高中,我漸漸從一個只知道學習和運動的學生變成一個文藝愛好者,藝術成為我生命中最不可或缺的東西。我對一切與藝術有關的事情感興趣,並有意識的在培養自己的藝術素養和品味。然而,我深知僅僅是有品味,懂欣賞是遠遠不夠的,我必須學會一門手藝,有所創造。世界上最著名的程式設計師之一 why the lucky stiff (_why) 先生曾在推特上說過這樣一段對我影響至深的話:

when you don’t create things, you become defined by your tastes rather than ability. your tastes only narrow & exclude people. so create.

(當你停止創造,你的才能便不再重要,剩下的只有品味。而你的品味會裹挾你,讓你變得排斥他人。所以,創造。)

而程式設計,正是這樣一門手藝,一種藝術,一種最適合我在大學本科作為專業學習的創作手段。我相信程式設計是門藝術,雖然我知道它與其他更傳統的藝術形式相比有很大不同——更多時候它是以使用者需求為創作導向的——但我仍然認為這裡有非常廣闊的創作空間和藝術美感。《通靈晶片:計算機運作的簡單原理》中對程式設計作為藝術有如下描述:

程式設計師的藝術是把心中的構思精確的描述出來的藝術。

對於每種計算機語言,都有莎士比亞級的大師。讀它們編寫的原始碼無異於一種享受。一個編寫的好的程式,同樣具有風格、技巧,甚至幽默——條理之清晰可與最優秀的散文媲美。

我想程式設計,是一個足夠大的平臺,足以滿足我對藝術和創造的興趣。

_why's self-portrait from Why's (poignant) Guide to Ruby
_why先生的自畫像

現實

興趣很重要,但同時也要考慮到現實的因素。我相信未來的世界是屬於軟體的。2011年美國著名風投Andreessen Horowitz創始人Marc Andreessen的文章 Why Software Is Eating The World 中預測了軟體吞噬世界的大趨勢。我相信在未來,軟體行業將會變得越來越重要,對優秀的程式設計師和軟體工程師的需求將會越來越大,他們的待遇和薪資會越來越好,地位越來越高。而更重要的是,我認為軟體行業的工作者與科學研究的工作者不同——勤奮與能力相比運氣佔據更重要的地位——或者說更有確定感,發力點更明確。因此我相信自己能夠通過努力成為一個優秀的待遇不錯的軟體工作者。雖說要“工作上講究,生活上將就”,但客觀的講,我認為自己是工作生活都比較講究的人。我絕非一個沉迷物質享受的人,但我還是非常看重物質生活的品質。這不是什麼值得驕傲的事,但坦率地講是我對自己的認識,是我想要學習軟體工程專業的理由之一。

理想

除了興趣和現實因素外,更加巨集大的理想和願景也是我選擇軟體工程專業的重要原因。

參與到世界的秩序設計中

事實上,我相信目前的世界已經不只是被軟體吞噬,更可以說是在被軟體重新定義1。越來越多的行業開始用軟體替代傳統的人力勞動,世界虛擬化的程度越來越高。世界將會因軟體變的越來越有秩序,而我非常渴望能夠參與到世界的秩序設計中。我有一個偉大的構想:實現出這樣一個搜尋引擎,它能夠讀懂自然語言,並提供一切客觀可知世界的答案。比如某個地鐵站的第幾個閘門離出口最近,某一首音樂的作詞編曲或者錄音師是誰,奧萊莉亞內莫爾在1972年創作的畫作《白色騎士》長什麼樣(我在上海的蓬皮杜現代藝術大師展上看到後印象很深,回來後卻查不到了)……這些問題完全不涉及主觀因素,也許經過一定程度的調查都能知道答案,那麼為什麼不能有一個搜尋引擎可以為我們提供所有的客觀資訊並且不需要任何所謂“搜商”呢?試想這樣的世界將會是多麼高效而美好。當然我知道這只是一個構想,要實現還是有很長的路要走,包括人工智慧和機器學習技術的發展,還要滿足一定的商業邏輯,平衡各方利益,等等。但我願意為之付出努力,因為我相信它的實現能夠實現一定程度的資訊平等,即我所理解的現代社會真正意義上的平等。學習軟體工程,進入軟體行業無疑會對實現這一理想有很大幫助。

白色騎士
奧萊莉亞內莫爾,《白色騎士》,1972

以計算機為創作工具,成為一名藝術家

成為一名傑出的軟體人才是我的職業目標,而成為一名真正的藝術家則是我人生的終極追求。這兩者並非平行線,我相信掌握計算機和程式設計技術可以對我今後的藝術創作有所幫助。軟體工程師、藝術家Golan Levin在Ted上的表演讓我驚歎不已,他的藝術家網站更是令我看到了新的人生可能性。我漸漸產生了利用計算機來成為藝術家的想法。這個理想可能聽來更加虛無縹緲,所謂藝術家並不指向某種特定的藝術形式,只關乎個人對世界和自我的探索和相關的藝術表達;而在這種情況下,計算機是最佳的創作工具,我相信它有無限的潛能,只要具備足夠的知識和技術,它能實現各種各樣的藝術創想。而學習軟體工程專業,無疑是我在這條道路上的最佳選擇。
Golan Levin
Golan Levin, Augmented hand series, 2014

最後

這篇文章作為我的第一篇部落格,其實並不是為了要提醒自己“不忘初心”。我一直不相信什麼“初心”,我覺得所謂成長,就是不斷否定過去的自己。所以可以想見,將來的我也一定會對這篇文章的某些文字感到幼稚,甚至嗤之以鼻。都沒關係。以上只是我當前的一些想法,而非要指導我接下來的整個生涯。希望自己在未來還是要時刻保持理性,不斷思考前進的方向,然後記錄下來。不怕被打臉,持續的成長。

  1. 參見:微信公眾號:歪理邪說. 作者:霍炬. 《為什麼你招聘不到程式設計師,以及軟體如何定義現實世界》