高大偉
作為建筑師的軟件工程師
一個軟件工程師其實是一個“建筑設(shè)計師”。(當(dāng)然我們不會真的蓋出房子來)。我們使用計算機(jī)編程語言來“蓋房子”。當(dāng)前我們使用的所有軟件,大到衛(wèi)星發(fā)射的控制系統(tǒng),小到手機(jī)上運行的游戲。其實都是非常復(fù)雜的系統(tǒng)。為了實現(xiàn)這些系統(tǒng),蓋出軟件的“高樓大廈”,首先是規(guī)劃整個“大廈”的結(jié)構(gòu)。這個工作在我們的術(shù)語里叫做“架構(gòu)設(shè)計”。這個過程十分重要。一個系統(tǒng)可能會有多種架構(gòu)的實現(xiàn)方式,不同的架構(gòu)有著不同的優(yōu)缺點。這些優(yōu)缺點影響著性能、穩(wěn)定性、安全性等多個方面。所以,做一個架構(gòu)師需要有高瞻遠(yuǎn)矚的眼光。
在“大廈”的“鋼筋結(jié)構(gòu)”搭建完成后,“添磚加瓦”的工作-設(shè)計編碼,就正式開始了。不要小看這個部分的工作,誰也不會住在只是個框子的屋子里不是嗎?這才是真正軟件功能的實現(xiàn)部分。這個工作有點像室內(nèi)裝修設(shè)計師。好的室內(nèi)設(shè)計師設(shè)計出的房子會讓你住著舒適而且美觀。好的程序員需要用到許多專業(yè)的技術(shù),來更好地實現(xiàn)軟件功能。從事這個角色需要細(xì)心與耐心,因為我們既要實現(xiàn)真實的功能,又要避免把錯誤引入到系統(tǒng)中。在大的軟件公司里,我們不總是設(shè)計新的軟件系統(tǒng),而是經(jīng)常為已有的軟件系統(tǒng)增加新的功能。
好了,在設(shè)計編碼完成后,整個“大廈”就蓋好了。但現(xiàn)在還不能“入住”。我們還需要進(jìn)行測試,也就是“大廈”的驗收階段。這個過程才是“工程”這個詞的含義所在。在這個環(huán)節(jié),我們需要測試很多的東西。首先需要測試的是系統(tǒng)的功能。這個測試的目的是查看“添磚加瓦”階段是否引入了錯誤。如果發(fā)現(xiàn)了錯誤,我們就需要改正它。在功能測試之后,我們還需要測試系統(tǒng)的性能,包括能力(多快)、穩(wěn)定性(長時間運行無錯誤)、安全性(不會被黑)。在這些工作都完成之后,好吧,“大廈”終于完工了。
看完這些,今后你在玩游戲之前,一定會雙手合十放在胸前,心中默默念著:“感謝偉大軟件工程師們付出的青春與生命,我們才有這么好的游戲可以玩,阿門……”(開個玩笑了。)不過說真的,每個成功的軟件背后確實包含著許多工程師有形的或無形辛勤工作。如果你覺得這個工作很醋。歡迎你在未來加入到我們的行列中來。其實這個工作真的很酷,特別是在工程師們討論技術(shù)問題的時候,在外行看來他們說的就是“天書”。如果天真懵懂的女生,看到這樣“神秘”的男生,一定會為之傾倒!
軟件工程師的日常
作為一位在外企工作的軟件工程師,他的一天通常是這么開始的。早上10點,到達(dá)公司,查看郵件。外企一般實行彈性工作制,保證8小時工作就好,對上班時間沒有太嚴(yán)格的要求。郵件一般有兩塊,一塊是成型需求,一塊是跟蹤bug。如果你的stakeholder有外國的同事,那么你不用急著回郵件,由于時差的原因,下班前發(fā)出回復(fù)就好。軟件工程師的另一個工作就是開會,尤其是實行敏捷開發(fā)的項目會有每天的例會,另外我們還要開需求討論會,這通常是很費精力的事情,但是要協(xié)調(diào)開發(fā),測試各個環(huán)節(jié),這種會還是很有必要的。此外還有一些經(jīng)驗介紹和培訓(xùn)的會。想成為一名好的軟件工程師,多學(xué)習(xí),多交流是非常重要的!之后的工作就是打開你的開發(fā)工具,去寫新的代碼,修改bug,或者是測試新的case。在編程工具大豐富的今天,好的開發(fā)工具,會幫我們很大的忙。忙碌了一天,要下班了,如果你在更加繁忙的公司,那么恭喜你了,開始加班了。如果你像我一樣在外企,通常情況不會那么糟糕,但是因為時差的原因,可能有些會議是安排在晚上的,盡管這種會是可以在家里用電話call in的,但是這個可不算是加班哦。
在北京:軟件從業(yè)者的奮斗地圖
好了,說了那么多嚴(yán)肅的話題,來聊一些北京的軟件產(chǎn)業(yè)分布圖吧。北京的軟件產(chǎn)業(yè)大體集中在幾個地方,第一個地方是中關(guān)村以及鄰近的五道口。中關(guān)村方圓幾公里是大學(xué)、中科院等研究所的密集分布地。因此這里從最初的科研院校發(fā)展出完善的軟件產(chǎn)業(yè)鏈:除了電子數(shù)碼賣場之外。無數(shù)的軟件公司在附近的寫字樓和教育園內(nèi)蓬勃發(fā)展。微軟、谷歌、新浪、網(wǎng)易、雅虎、Adobe等大公司都在中關(guān)村附近。這附近的商業(yè)配套、生活配套非常發(fā)達(dá),還有著名的堵車勝景,是北京的一個主要觀光地(開玩笑)。
第二個地方是上地西二旗一線,上地是中關(guān)村五道口的延長線,在其北10公里的地方,中間隔著世界聞名的圓明園。上地和西二旗一起,是軟件產(chǎn)業(yè)的后起之秀,是按照發(fā)展軟件產(chǎn)業(yè)整體設(shè)計修建的軟件園區(qū)。如果說中關(guān)村五道口這邊還具有一些城市的喧囂的話,上地和西二旗這邊更像是中國的硅谷。這里修建的辦公樓都不會過高,3或者4層,街道也是整齊劃一。西二旗還有一個中關(guān)村軟件園,更是花園式的辦公環(huán)境:園中央有湖以及綠地。這邊也有很多知名的軟件公司,比如IBM,我所在的甲骨文公司,百度、神州數(shù)碼、小米、金山等等。這邊相對來說更加偏僻一些。城市配套不是特別完善。但是確是軟件業(yè)未來發(fā)展的主力。
另外一個軟件業(yè)集中的地方是國貿(mào)CBD附近,這里是北京的City Jungle。阿里巴巴和淘寶、卓越亞馬遜、英特爾等著名公司都在國貿(mào)那邊。高層林立,早上高級寫字樓的大堂里會站滿了各個公司的等電梯的人。雖然我沒有在那邊上班的經(jīng)驗,卻聽說過那邊的幾個傳聞,其中一個傳聞就是國貿(mào)的車位很搶手,路邊一個車位停一天都需要50元。另一個傳聞是一頓午飯是30元到40元??傊畤Q(mào)附近的生活很城市很fashion,很職業(yè)!所以這里的同行們最像電視里描述的職場精英!
不是碼農(nóng),是軟件工程師
碼農(nóng)是最近這兩三年的時間流行起來的詞。這詞是一部分軟件工程師們對自己職業(yè)的自嘲:人數(shù)多以及集中分布,勤奮和熱愛編程技術(shù),愛上網(wǎng)以及宅。
由于我們軟件工程師在北京有很多兄弟姐妹,待遇相對豐厚,這個行業(yè)就越來越龐大。又由于我們喜歡住在公司附近,所以在上地、西二旗、中關(guān)村那邊,你可能在地鐵站、商場、超市的會遇到很多同行。對住的需求量這么高,帶高了周邊的房價。所以有些人說我們真是人傻(厚道)錢多的那一類。而由于好多男同行們比較宅,更加喜歡技術(shù)和工作,喜歡逛水木社區(qū)等網(wǎng)站,卻忽略了多樣的生活,所以“碼農(nóng)”這個詞才會被拿來自嘲。
雖然很搞笑,但我還是不推崇這種文化的!在下了班之后,我會拿起吉他,彈奏民謠樂曲?;蛘呷OSTA喝杯咖啡,或者去看場話劇或者電影。所以如果你喜歡軟件行業(yè),并且成為一名軟件工程師的話,也希望你讓軟件工程師的人生更加多彩!我們不是碼農(nóng),我們是IT精英!