清华大学 现代软件工程 - 实战经验分享
在前兩節(jié)課中, 老師給大家描繪了關(guān)于軟件工程和創(chuàng)新的理論和美景。 那么在實踐中, 我們的軟件工程師是怎么創(chuàng)新的? 我們請兩位清華的校友和大家聊聊他們自己做的項目, 也和大家探討一下軟件工程師的工作, 生活和職業(yè)發(fā)展。
?
分享題目1:? Sora Project? - turn cutting edge research into great product
SORA 被業(yè)內(nèi)專家稱為最近幾年在無線領(lǐng)域最重要的論文之一, 論文中提出的思想是怎么變?yōu)楝F(xiàn)實的呢?
?
??
分享題目2:?? How Engkoo Innovates
做中英文詞典/翻譯的應(yīng)用軟件,這不是老一套么? 還能創(chuàng)新么? 請看微軟亞洲研究院的回答:
?
?
課程的詳情在這里。
============================
這次經(jīng)驗分享是由我們在一線工作的工程師主講。?
很多人對微軟研究院的 RSDE (Research Software Design Engineer) 這一職位不了解, 我從這本書里抄下來幾段話:
?
Q:微軟及很多其他軟件公司都有不少研發(fā)職位,名稱不盡相同,而且還是縮寫,能不能講解一下?
A:不少同學對微軟公司的各種研發(fā)職位(Discipline)并不太了解,我們在面試進行到一半的時候,經(jīng)常發(fā)現(xiàn)一個應(yīng)聘者其實更適合做其他類型的工作。當然這時我們可以調(diào)換面試的方向,但是對應(yīng)聘者來說總不是一件好事。我剛好在BBS上看到了一篇文章,這篇文章從個人的角度出發(fā),非正式地講了R&D各個方向的特點,雖然并非完全正確,介紹也不一定全面,但是我們不妨看看。
aR:Associate Researcher,副研究員,主要在“R&D”的“R”這一端,工作是讀論文,提想法,被否決后再提想法(如此反復(fù)N次),趕在截止時間之前提交論文。AR的想法得到初步驗證之后,還要跟其他部門推銷自己的想法,爭取把想法變成產(chǎn)品。AR的樂趣是能在一個領(lǐng)域中深入研究,發(fā)表論文,申請專利,每個專利申請(無論是否批準)都能讓自己得一塊黑色立方體石頭(如圖)。好多人的桌面上堆了不少石頭,好像他們沒什么苦惱。?
?
AR有時做的事情和RSDE差不多。AR以后會成長為 Researcher(研究員)、高級研究員,杰出科學家, 等等??傊?#xff0c;最后就成了大家小時候特別夢想做的“科學家”。
?
圖1 申請專利得到的石頭
?
Dev:正式的名稱叫SDE(Software Development Engineer),是在“R&D”的“D”這一端。他們在一個產(chǎn)品團隊中,按照嚴格的流程開發(fā)產(chǎn)品。MS的一個產(chǎn)品發(fā)布之后,所有成員會得到一小塊鐵皮(學名叫“Ship-it Award”,如圖2所示),上面寫著產(chǎn)品的名字和發(fā)布日期。資深的Dev會收集到不少,他們會認真地把這些小鐵皮整齊地貼起來,擺在辦公桌最高的位置上。Dev的樂不少,這里就不列舉了。但是苦也有不少,比如產(chǎn)品的周期有時非常長,過程定義得非常完備(有時不免覺得太完備了);比如要維護老版本;比如要用比較成熟的技術(shù),而不是用最時髦的東西來開發(fā)產(chǎn)品。另外,Dev要負責一個或幾個模塊,這些模塊不一定和最終用戶打交道,未必是整個產(chǎn)品的核心模塊。做一個好的Dev要生活在代碼中,對代碼和平臺的各種細節(jié)要非常熟悉,掌握非常底層的技術(shù),有些人以此為樂,有些人則未必。Dev的職業(yè)發(fā)展道路很多,如果只想鉆研技術(shù),不樂意做很多管理工作,Dev可以成為非常高級的工程師,直到杰出工程師(Distinguished Engineer)。當然,Dev也可以成長為開發(fā)主管(Dev Lead)、開發(fā)總經(jīng)理(Dev Manager),等等。
圖2 Dev得到的小鐵片Ship-it
?
Test:正式名稱是Software Development Engineer in Test(SDET),簡稱為Test或SDET(讀作S-DET)。這個職位看似沒有Dev和aR酷,但是很有前途,首先中國的同學由于種種原因(不了解,看不起,做不來)不太愿意做這種工作,因此,公司找人非常急迫,相對容易進入。這一職位所謂的苦(也反映了一些人的偏見和誤解)從傳統(tǒng)意義上說,SDET得等著上家(PM/Dev)給你東西,你才能“測試”。然而現(xiàn)代軟件工程要求TEST 從項目一開始就積極參與項目的規(guī)劃,了解客戶需求,制定測試計劃,設(shè)計測試架構(gòu),實現(xiàn)測試自動化,等等。事實上這些都是開發(fā)的工作,所以他們叫 SDE in Test。而且SDET 能更深入地了解產(chǎn)品的各個模塊是如何合作,如何在實際情況下被用戶使用的。從代碼之外理解程序,這是測試之樂。那種“產(chǎn)品發(fā)布前一個星期讓測試人員來測一下”的情況在微軟是不會發(fā)生的。用足球比賽作比喻,QA/Test就是最后一道防線.? 如果你沒有防守好bug,bug就會跑到顧客那里去,因此Test工作非常重要。Test的職業(yè)發(fā)展和Dev類似,一直到有專門管Test工作的副總裁(VP)。
PM:這恐怕是外界誤解最多的行當,簡而言之,Program Manager(程序經(jīng)理)做的是開發(fā)和測試之外的所有事情。有些同學會問 -
“我寫程序都不用測試,那么除了開發(fā)和測試之外還有什么事兒?”
在公司里開發(fā)商業(yè)軟件可沒有那么簡單,比如有10個Dev和5個Test 要在一起開發(fā)下一個版本的MSN Messenger,那我們到底要做多長時間才能完成?什么事情先做,什么事情后做?項目進行到一半的時候,領(lǐng)導(dǎo)說我們改名叫Live Messenger吧,那這一改名意味著什么?如何調(diào)整進度?最后還剩下兩個月的時候,看起來我們的確完不成全部任務(wù),那要怎么辦?你又不是Dev和Test的老板,他們憑什么聽你的呢?這也是PM的苦。PM的樂看起來在于,他們可以全盤掌控一個產(chǎn)品,廣泛了解一個行業(yè),和用戶打交道,代表團隊出席各種會議,在公司內(nèi)部的曝光度也比較高。Dev/Test/PM 在產(chǎn)品開發(fā)中各負其責,互相協(xié)助,為共同的目標努力。產(chǎn)品成功發(fā)布之后,他們都會得到Ship-it 小鐵片兒。
?
RSDE:好了,我們最后看看RSDE(Research SDE),這是微軟研究院一個比較特殊的隊伍。RSDE的樂趣在于可以接觸到各種最新的研究成果,并用它來解決挑戰(zhàn)性的問題。RSDE的苦在于項目都是V0.1版,而且做得成功的項目大多數(shù)會轉(zhuǎn)化(Transfer)到產(chǎn)品組中,由別人推向市場。
RSDE在和研究部門合作的時候,就要負起 AR和PM(甚至Test)的責任。剛開始,RSDE既沒有R的黑石頭,又沒有D的SHIP-IT小鐵片。RSDE參與的項目有比較大的風險,經(jīng)常會不如預(yù)期,或者會失敗(這也是科學研究的特點)。項目失敗后,RSDE掩埋了項目的尸體,擦干自己的血跡,又得找新的領(lǐng)域和新的項目。RSDE 還有“創(chuàng)新”的任務(wù),這個詞人人都會說,但是要做出來就不是那么容易了,全世界有這么多人在琢磨計算機,你能在什么地方做得比其他任何人都更進一步呢?這也是RSDE 的樂趣吧。有些同學能力很強,興趣廣泛,但是一時也拿不準自己要深入研究哪一個領(lǐng)域,這時不妨來做RSDE。做得好的RSDE,他們的工作成果推進了研究,又走向了市場,這樣就既可以拿到黑石頭,又可以拿到SHIP-IT小鐵片兒。我個人認為能有機會做 RSDE 是很令人自豪的事情,相當于參軍當上了特種兵,很好,很強大。
Q:看起來真是眼花繚亂……
A:總之,每類職位都很重要,都有存在的理由,都有不錯的發(fā)展前景,都有自己的苦和樂。微軟有很多不同的機構(gòu)和部門,這也意味著有許多機會,讓有能力的同學嘗試aR、Dev、Test、RSDE、PM的職位。
總結(jié)
以上是生活随笔為你收集整理的清华大学 现代软件工程 - 实战经验分享的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中setDocument_Jav
- 下一篇: 顶级程序员的心得 - Coders at