清華大學 現代軟體工程 實戰經驗分享

2021-06-21 13:13:58 字數 3578 閱讀 2260

在前兩節課中, 老師給大家描繪了關於軟體工程和創新的理論和美景。 那麼在實踐中, 我們的軟體工程師是怎麼創新的? 我們請兩位清華的校友和大家聊聊他們自己做的專案, 也和大家**一下軟體工程師的工作, 生活和職業發展。

分享題目1

:  sora project  - turn cutting edge research into great product

sora 被業內專家稱為最近幾年在無線領域最重要的**之一, **中提出的思想是怎麼變為現實的呢?

分享題目2

:   how engkoo innovates

做中英文詞典/翻譯的應用軟體,這不是老一套麼? 還能創新麼? 請看微軟亞洲研究院的回答:

課程的詳情在這裡。

這次經驗分享是由我們在一線工作的工程師主講。 

很多人對微軟研究院的 rsde (research software design engineer) 這一職位不了解, 我從這本書裡抄下來幾段話:

q:微軟及很多其他軟體公司都有不少研發職位,名稱不盡相同,而且還是縮寫,能不能講解一下?

a:不少同學對微軟公司的各種研發職位(discipline)並不太了解,我們在面試進行到一半的時候,經常發現乙個應聘者其實更適合做其他型別的工作。當然這時我們可以調換面試的方向,但是對應聘者來說總不是一件好事。我剛好在bbs上看到了一篇文章,這篇文章從個人的角度出發,非正式地講了r&d各個方向的特點,雖然並非完全正確,介紹也不一定全面,但是我們不妨看看。

ar:associate researcher,副研究員,主要在「r&d」的「r」這一端,工作是讀**,提想法,被否決後再提想法(如此反覆n次),趕在截止時間之前提交**。ar的想法得到初步驗證之後,還要跟其他部門推銷自己的想法,爭取把想法變成產品。ar的樂趣是能在乙個領域中深入研究,發表**,申請專利,每個專利申請(無論是否批准)都能讓自己得一塊黑色立方體石頭(如圖)。好多人的桌面上堆了不少石頭,好像他們沒什麼苦惱。

ar有時做的事情和rsde差不多。ar以後會成長為 researcher(研究員)、高階研究員,傑出科學家, 等等。總之,最後就成了大家小時候特別夢想做的「科學家」。

圖1 申請專利得到的石頭

dev:正式的名稱叫sde(software development engineer),是在「r&d」的「d」這一端。他們在乙個產品團隊中,按照嚴格的流程開發產品。ms的乙個產品發布之後,所有成員會得到一小塊鐵皮(學名叫「ship-it award」,如圖2所示),上面寫著產品的名字和發布日期。資深的dev會收集到不少,他們會認真地把這些小鐵皮整齊地貼起來,擺在辦公桌最高的位置上。dev的樂不少,這裡就不列舉了。但是苦也有不少,比如產品的週期有時非常長,過程定義得非常完備(有時不免覺得太完備了);比如要維護老版本;比如要用比較成熟的技術,而不是用最時髦的東西來開發產品。另外,dev要負責乙個或幾個模組,這些模組不一定和終端使用者打交道,未必是整個產品的核心模組。做乙個好的dev要生活在**中,對**和平台的各種細節要非常熟悉,掌握非常底層的技術,有些人以此為樂,有些人則未必。dev的職業發展道路很多,如果只想鑽研技術,不樂意做很多管理工作,dev可以成為非常高階的工程師,直到傑出工程師(distinguished engineer)。當然,dev也可以成長為開發主管(dev lead)、開發總經理(dev manager),等等。

圖2 dev得到的小鐵片ship-it

test:正式名稱是software development engineer in test(sdet),簡稱為test或sdet(讀作s-det)。這個職位看似沒有dev和ar酷,但是很有前途,首先中國的同學由於種種原因(不了解,看不起,做不來)不太願意做這種工作,因此,公司找人非常急迫,相對容易進入。這一職位所謂的苦(也反映了一些人的偏見和誤解)從傳統意義上說,sdet得等著上家(pm/dev)給你東西,你才能「測試」。然而現代軟體工程要求test 從專案一開始就積極參與專案的規劃,了解客戶需求,制定測試計畫,設計測試架構,實現測試自動化,等等。事實上這些都是開發的工作,所以他們叫 sde in test。而且sdet 能更深入地了解產品的各個模組是如何合作,如何在實際情況下被使用者使用的。從**之外理解程式,這是測試之樂。那種「產品發布前乙個星期讓測試人員來測一下」的情況在微軟是不會發生的。用足球比賽作比喻,qa/test就是最後一道防線.  如果你沒有防守好bug,bug就會跑到顧客那裡去,因此test工作非常重要。test的職業發展和dev類似,一直到有專門管test工作的副總裁(vp)。

pm:這恐怕是外界誤解最多的行當,簡而言之,program manager(程式經理)做的是開發和測試之外的所有事情。有些同學會問 -

「我寫程式都不用測試,那麼除了開發和測試之外還有什麼事兒?」

在公司裡開發商業軟體可沒有那麼簡單,比如有10個dev和5個test 要在一起開發下乙個版本的msn messenger,那我們到底要做多長時間才能完成?什麼事情先做,什麼事情後做?專案進行到一半的時候,領導說我們改名叫live messenger吧,那這一改名意味著什麼?如何調整進度?最後還剩下兩個月的時候,看起來我們的確完不成全部任務,那要怎麼辦?你又不是dev和test的老闆,他們憑什麼聽你的呢?這也是pm的苦。pm的樂看起來在於,他們可以全盤掌控乙個產品,廣泛了解乙個行業,和使用者打交道,代表團隊出席各種會議,在公司內部的**度也比較高。dev/test/pm 在產品開發中各負其責,互相協助,為共同的目標努力。產品成功發布之後,他們都會得到ship-it 小鐵片兒。

rsde:好了,我們最後看看rsde(research sde),這是微軟研究院乙個比較特殊的隊伍。rsde的樂趣在於可以接觸到各種最新的研究成果,並用它來解決挑戰性的問題。rsde的苦在於專案都是v0.1版,而且做得成功的專案大多數會轉化(transfer)到產品組中,由別人推向市場。

rsde在和研究部門合作的時候,就要負起 ar和pm(甚至test)的責任。剛開始,rsde既沒有r的黑石頭,又沒有d的ship-it小鐵片。rsde參與的專案有比較大的風險,經常會不如預期,或者會失敗(這也是科學研究的特點)。專案失敗後,rsde掩埋了專案的屍體,擦乾自己的血跡,又得找新的領域和新的專案。rsde 還有「創新」的任務,這個詞人人都會說,但是要做出來就不是那麼容易了,全世界有這麼多人在琢磨計算機,你能在什麼地方做得比其他任何人都更進一步呢?這也是rsde 的樂趣吧。有些同學能力很強,興趣廣泛,但是一時也拿不準自己要深入研究哪乙個領域,這時不妨來做rsde。做得好的rsde,他們的工作成果推進了研究,又走向了市場,這樣就既可以拿到黑石頭,又可以拿到ship-it小鐵片兒。我個人認為能有機會做 rsde 是很令人自豪的事情,相當於參軍當上了特種兵,很好,很強大。

q:看起來真是眼花繚亂……

a:總之,每類職位都很重要,都有存在的理由,都有不錯的發展前景,都有自己的苦和樂。微軟有很多不同的機構和部門,這也意味著有許多機會,讓有能力的同學嘗試ar、dev、test、rsde、pm的職位。

清華大學 《現代軟體工程》 專案小組名單

下面是各個專案小組的情況,每個小組有 6 10 名同學組成 no.team name leader blog 專案 構想中 1seven 杜圓calendar,todo list,lifer 2.0 2霸王移山 余江偉calendar or 食品打分 or 背單詞軟體3銣銫 楊沐依託學術搜尋的 pd...

經典軟體工程對照現代軟體工程

本文 五級的目錄及簡單分析 一 初始級 二 可重複級 計畫及 跟進 合理化建議 會議 工餘 願者參加 所用工具軟體 網路版db軟體 如erp之用sql oracle 開源版db軟體,及從此基本點自行開發具有data mining knowledge management的軟體 要點是 的保質量 自生...

清華軟體工程 三

7.單元測試方法 8.單元測試之xunit 9.單元測試之mock 二 黑盒測試方法 6.邊界值分析 7.健壯性測試 8.錯誤推測法 單元是構造軟體系統的基礎,只有使每個單元得到足夠的測試,系統的質量才能有可靠的保證,即單元測試是構築產品質量的基石 單元測試是對軟體中的最小可測試單元進行檢查和驗證 ...