專訪《構建之法——現(xiàn)代軟件工程(第三版)》作者鄒欣

      網(wǎng)友投稿 1113 2025-03-31

      鄒欣,現(xiàn)任微軟Windows中國工程團隊首席研發(fā)總監(jiān)。


      1996–2003年,鄒欣在微軟Outlook團隊從事開發(fā)工作; 2003–2005年,他在微軟內(nèi)部質(zhì)量工具團隊和Visual Studio團隊負責軟件項目管理工具的開發(fā); 2005–2012年,他擔任微軟亞洲研究院技術創(chuàng)新組研發(fā)主管,負責研究成果的產(chǎn)品化和創(chuàng)新項目; 2012–2014年,他擔任微軟亞洲互聯(lián)網(wǎng)工程院首席研發(fā)總監(jiān),負責必應搜索客戶端、必應輸入法、必應詞典等產(chǎn)品。 2014–現(xiàn)在,他擔任微軟Windows工程院首席研發(fā)總監(jiān),負責Edge,Cortana,UWPApp在中國的發(fā)展。

      鄒欣于1991年獲北京大學計算機軟件專業(yè)學士學位。1996年獲美國美國韋恩州立大學(Wayne State University)計算機軟件專業(yè)碩士學位。他在2007年出版了《移山之道》,于2008年出版了《編程之美》(合作),于2014年出版了《構建之法——現(xiàn)代軟件工程》。

      問:您在《構建之法》前言中提到,高一(1984年)的時候就接觸到計算機語言和計算機,當時是在什么情況下開始對計算機語言及計算機感興趣的呢?

      鄒欣:當時我的中學“柳州高中”還挺重視計算機的,派了兩個老師去外地學,然后就來教我們。其中一個老師我在這個文章里面提到了(回憶老師)。我大概是在高中一年級接觸的計算機,當時老師們從各個年級中選出一些學生參加計算機興趣小組,我記得講課的是教數(shù)學的婁國榮老師,他剛參加完了一個培訓班,就來給我們講BASIC的語法,我們沒有任何電腦的實物,就看著黑板抄寫B(tài)ASIC語句。幾乎與此同時,我父親單位里買了一臺電腦(PC—1500),我才看到電腦是什么模樣,并且有機會在上面敲了一些程序。

      過了不久,龐中堅老師來管理計算機興趣小組,我們有時晚上到柳州計算中心上機,那時候用的都是蘋果機或者是Laser310,計算中心據(jù)說有一臺IBMAT,在一個單獨的有空調(diào)的辦公室里,學生都不能進去看,我每次路過都敬仰地往里瞅瞅。計算中心的工作人員在興奮地討論從dBase II升級到dBase III。后來柳高也買了二十多臺電腦,上面運行的是CP/M某個版本的操作系統(tǒng),用起來沒有蘋果或者Laser310好用,龐老師后悔地說——我上當了,計算機沒買對。龐老師在暑假還開了培訓班,但是學生們上課時都用電腦玩游戲,龐老師一怒之下,把總電源關了,大家的注意力才集中到程序上。

      培訓完之后,進行了一次廣西范圍的計算機競賽,我好像通過了初試,但是在復試中成績不好,據(jù)說當時判卷的方式是把同學們在試卷上寫的程序都原樣輸入到電腦中運行,如果能夠運行并得出正確結(jié)果,則得分,否則得零分。在一個題目中我別出心裁地用了一個自認為巧妙的辦法,但是好像并沒有被賞識,看來我的基本功還是不行。我記得獲獎的一個高年級同學由于卷面寫得太亂,剛開始得分也不高,后來龐老師找到競賽組織者,復查卷子,分析程序思路,然后才讓這位同學得了應得的高分。后來我和龐老師講了我的想法,他說想法不錯,如果程序語法都寫對了,肯定能得三等獎。

      大概也就是那一年的暑假,《少年計算機世界》上有一個程序比賽,我看了題目(好像是和判斷三角形的類型有關),覺得可以試一試,于是自己在紙上寫了程序,但是沒有電腦調(diào)試,開學后,我就找到了龐老師,想借用一下電腦調(diào)程序。于是,一天中午,他帶我去了學校的機房,我在計算機前敲敲打打,總算把程序調(diào)通了。忙完之后,看到龐老師已經(jīng)趴在桌子上睡著了。我的程序寄出去后,得了獎,龐老師很高興,他還想讓我寫一些高中物理的課件,但是后來我要準備高考了,就沒有再花太多時間在計算機興趣小組上。回想起來,我接觸計算機已經(jīng)是30多年前的事情了,當時真是懵懂少年,多虧了幾個老師的幫助和提攜,才走上了這條職業(yè)道路。

      問:在大學分專業(yè)的時候,計算機科學與技術和軟件工程要選哪個好?對今后的就業(yè)方向您有什么看法?

      鄒欣:一個比較偏“科學”,一個比較偏“工程”。大學也有像計算機/軟件工程那樣相關的一對專業(yè),例如化學/化學工程,建筑學/土木工程,你也可以問一下這些專業(yè)的學長,它們之間的關系,就業(yè)方向有什么不同。

      《構建之法》第一章就援引了托尼·霍爾(Tony Hoare)的論述,比較計算機科學和軟件工程的不同側(cè)重點。

      表1_2計算機科學和軟件工程的不同側(cè)重點

      計算機科學

      軟件工程

      發(fā)現(xiàn)和研究長期的、客觀的真理

      短期的實際結(jié)果(具體的軟件會過時)

      理想化的

      對各種因素的折衷

      確定性,完美,通用性

      對不確定性和風險的管理,足夠好,具體的應用

      各個學科獨立深入研究,做出成果

      關注和應用各個相關學科的知識,解決問題

      理論的統(tǒng)一

      百花齊放的實踐方法

      強調(diào)原創(chuàng)性

      最好的、成熟的實踐方法

      形式化,追求簡明的公式

      在實踐中建立起來的靈感和直覺

      正確性

      可靠性

      如果你想走科研為主的道路,或者你想做和計算機體系結(jié)構,算法,硬件相關的工作,那么建議你讀CS,否則二者差不多。當然,在中國,這還要看某個具體大學的水平如何,是否真的有計算機科研的實力。

      給大家一個實踐題目:做個視頻采訪。在校園里,找到計算機系的老師或者研究生,問他們,請問你發(fā)現(xiàn)了、或者正在研究哪方面長期的、客觀的真理?

      找到軟件工程學院的老師或者研究生,問他們,請問你在軟件構建方面取得了哪些實際結(jié)果,總結(jié)了什么成熟的實踐方法?

      (請盡量將你的采訪分享給我們,可以發(fā)在社區(qū),或是微博上,記得@程序員鄒欣和@人郵異步社區(qū)哦~)

      問:有人說,考研的不是特別熱愛科研的就是逃避現(xiàn)實的懦夫。您怎么看?工作三年等于讀研三年嗎?

      鄒欣:討論問題,不必搞“懦夫”這種標簽。趨利避害,人之常情。這些問題不能用非白即黑這樣的模式。

      的確,有些人是為了科學而主動考研,有些人是因為工作不好、換專業(yè)、換學校找而考研。有些人讀了碩士,考慮各種出路的優(yōu)劣之后,就決定讀個博,讀博之后,考慮了各種出路的優(yōu)劣,就留校。后來一些留校的年輕教師,雖然沒有在外面真正打拼過,就當了學生的就業(yè)指導或者大學生創(chuàng)新創(chuàng)業(yè)輔導員,這是人間喜劇,值得好好品味。

      問:您的大學生涯是如何度過的呢?在韋恩州立大學您又接觸了怎樣不同的教育呢?

      鄒欣:大學,一袋煙的功夫,就過了,就像北京的春夏之交那么短,然而總是有些回憶揮之不去。

      那時候,北大的老師挺不錯的,由于沒有PPT和投影儀,老師都寫板書,你可以看到一些推理的過程。有一個老師,一上課就開始板書,一直到最后,大家都刷刷地抄筆記……我當時挺不爽的,不想抄筆記。現(xiàn)在想想,這也許是她能做到的最好水平了,也不容易。

      我工作幾年后,去Wayne State University讀碩士,由于有工作的經(jīng)驗和感悟,知道要學什么,在什么地方投入,所以結(jié)果還不錯。它是典型的美國公立大學,而且還坐落在底特律的市中心,底特律地區(qū)還是美國中東裔移民的最大的居住地之一,我還認識了幾個從約旦,巴勒斯坦來的同學。在這個地方對美國會有更深的了解。我很快地拿到了所有學分(好像都是A),寫了論文,就離開了。我的碩士指導老師還想讓我在那里讀博士,但是我婉拒了。

      當時我也想搞個名校的博士,但是名校不理我:)

      我的導師和我還時不時有聯(lián)系,他也是搞軟件工程的,最近還出了一本書:Software Engineering:The Current Practice

      問:對于進入IT這一行業(yè),學校專業(yè)力量是否重要?985相比211所占優(yōu)勢有多大呢?想進好一點的公司或高校深造,211學歷會不會直接先被刷掉呢?

      鄒欣:這個看個人。不太看學校的級別。

      我個人不清楚985和211的含義。當然可能“級別”高一點,但是級別能說明啥?市級廳級省部級,都有人尸位素餐,或犯下大數(shù)據(jù)的罪行,貪污的數(shù)目都不能用16位整數(shù)表示,你說級別能說明啥?

      當然,從統(tǒng)計意義上,我們可以說某個三本學校的學生的優(yōu)秀的“概率”稍低,但是在IT專業(yè)的學習上,大家?guī)缀醵际瞧降鹊摹H松哪康闹唬褪且蚱苿e人給你定義的統(tǒng)計意義。在今天,你如果有持續(xù)更新的技術博客和一定質(zhì)量的公開源代碼庫(github),你就比99%的人優(yōu)秀了。

      問:您對后生有什么寄語和忠告嗎?

      鄒欣:寫一萬行代碼,再說其他。

      問:您作為微軟的研發(fā)經(jīng)理,您的研究方向是什么呢?您平常每天都做些什么?或者說您典型的一天是如何度過的?

      鄒欣:我現(xiàn)在在微軟Windows操作系統(tǒng)工程部工作,就是改進Windows 10(包括Windows 10 Mobile)的操作系統(tǒng),App,和生態(tài)系統(tǒng)。這么大的系統(tǒng)有很多人在開發(fā)。我負責的團隊只做其中很小的一個部分-例如, 中文版Cortana(小娜)的前端工作, 瀏覽器Edge的工作, Window App生態(tài)系統(tǒng),服務的改進, 等。 研究的方向就是-build to win。

      典型的一天: 早上開一兩個電話會議,因為合作的很多同事在美國。 上班 和組里的同事聊天,討論項目進展,看看有什么問題需要解決。 有時和同事一對一地討論問題。 參加項目的各個階段的復審-spec,code,test plan,bugs,release readiness. 計劃下面一個階段的工作,做調(diào)查,分析數(shù)據(jù),等 中間回復郵件 下班 回復郵件,看看網(wǎng)絡上對windows 10的一些反饋,提出想法,回復一些反饋 周五下午通常搞點小活動,慶祝一下大家取得的成績。

      問:除了這份工作,您似乎也在高校教書是嗎?那么這兩份工作您是如何權衡的呢?

      鄒欣:這件事的緣起是2006年的時候和微軟亞洲研究院清華大學合作教學,我2007年開始講課,沒有報酬,就是原來工作的一部分。后來在北航講課是想看怎么改進軟件工程的教學。通常我的課都安排在周一晚上,我周末備課,周一下午去講課。

      現(xiàn)在我已經(jīng)不親自講課了,從2015年開始,有越來越多的學校在用《構建之法》講軟件工程,我用這本書的稿費(以及以前編程之美的稿費)在網(wǎng)上招聘了一些有實際工作經(jīng)驗的助教,讓他們和任課老師合作,一起改進教學。我就是看看同學們的博客,給老師和助教出些主意。都是通過cnblogs或者微信來保持聯(lián)系。這個活動是大家自發(fā)組織的,有不少能人在幫忙維護,我們希望每一年都有改進,把中國的軟件工程教育搞好。

      我覺得,不必權衡太多,既然教了課,寫了書,就要做到最好。你覺得我們的軟件工程課哪里不夠好,可以告訴我。

      問:經(jīng)過這么多年的將興趣轉(zhuǎn)換成職業(yè)后,您對計算機編程的感覺是否還如當年一樣熱衷?如何在繁重的工作壓力下,保持初心呢?

      鄒欣:當工作很有意思的時候,就不是太大的壓力。我雖然一直在一個公司,但是換了好幾個不同的部門,每次都重新學習,多數(shù)情況下還能做出一點成績,和團隊的成員相處得不錯。我換部門之后,還有一些同事想跟我一起走,說明我人還不錯。

      現(xiàn)在還有大學生來請教“生涯”的問題,我覺得挺好的。

      “初心”這個東西,我沒太多想。小孩子很容易被人忽悠的,我小時下圍棋,也沒有老師,就自己看書學,不料想打入了全市前32名,獲得本市乙級棋手稱號(據(jù)說高考可以加5分),我老爸說,如果大學有圍棋系,你就可以下,否則不能下棋,要好好學習!

      我高考報志愿的時候,老師說,生物學會***展,下個世紀的科學!我覺得計算機也不錯,還有某個學校的招生老師說,你來學數(shù)量經(jīng)濟學吧,以后可以。。。。我有一天放學路上,看到我的語文老師生急病被拉到醫(yī)院,我當時想學醫(yī)也很有用。。。結(jié)果我們班主任說,醫(yī)學類招生水很深啊,你別去!

      想來想去,我大學第一志愿是生物,結(jié)果分數(shù)不夠高,去了計算機系。:)

      問:從事這份工作應該具備哪些知識、技能和素質(zhì)呢?

      鄒欣:這樣的問題。。。我覺得下面這些很重要,是一個綱要,綱舉目張。

      離散數(shù)學

      形式語言與自動機&編譯原理

      一門基礎編程課

      操作系統(tǒng)

      軟件工程

      還要具備這個素質(zhì): 自己寫一萬行代碼,混在別人寫的10萬行代碼中,還能愉快地工作。

      問:一個好的產(chǎn)品經(jīng)理如何提升需求分析的能力并控制溝通成本?

      鄒欣:我先說一個故事,我的一個同事愛好葡萄酒,要成為評酒師,于是他就參加了各種學習班,并且每天做家庭作業(yè):

      -拿四瓶不同的酒,撕掉標簽和其它標識。

      -喝掉這些酒,每次換酒之前還要漱口,然后分析每一種酒的口感,風味,以及各種特點,并寫下來。

      專訪《構建之法——現(xiàn)代軟件工程(第三版)》作者鄒欣

      -和標準答案對照,總結(jié)自己的差距。

      第二天繼續(xù)。

      第三天繼續(xù)。

      后來他的肝受不了,他就喝酒不下咽,馬上吐掉。

      用上面的例子做參照看***IT行業(yè)產(chǎn)品經(jīng)理的情況,我認為,絕大部分產(chǎn)品經(jīng)理的分析能力都有很大的提升空間。很多產(chǎn)品經(jīng)理的“分析能力”體現(xiàn)在看看微信,微博上的文章,然后轉(zhuǎn)發(fā)給團隊。這當然是遠遠不夠的。醫(yī)學院的學生要解剖尸體,MBA的學生要讀案例,寫案例,為何計算機行業(yè)的人生轉(zhuǎn)發(fā)一下微信就夠了?不夠,一個產(chǎn)品經(jīng)理至少要分析本行業(yè)和幾個相關行業(yè)產(chǎn)品的前10名,對每一個產(chǎn)品仔細使用,研究(相當于喝酒),寫出研究報告。自己獨立寫完10到50個報告的產(chǎn)品經(jīng)理,全中國有多少呢?

      而且軟件產(chǎn)品比葡萄酒要復雜得多,需求從哪里來?來自好些地方:

      a. ? ?從用戶明確的反饋來 b. ? ?從用戶不明確的反饋來 c. ? ?從各種技術發(fā)展的趨勢來 d. ? ?從各個利益相關者來 e. ? ?從各個監(jiān)管部門來 f. ? ?從產(chǎn)品技術團隊來

      怎么分析,排序,驗證,管理這些需求?請看《構建之法》第八章。

      在軟件工程的教學中,我們也要求學生團隊做產(chǎn)品分析作業(yè),請看部分學生團隊的回答(link,link2)。這種作業(yè)顯示出他們花力氣去分析了么?他們會是優(yōu)秀的產(chǎn)品經(jīng)理么?

      關于“控制溝通成本”,不知道你具體指的是那些成本需要控制。把分析報告寫好,可能溝通起來成本會降低。

      問:目前我自己(異步社區(qū)用戶)的軟件開發(fā)團隊就幾個人,因為人手和技術都有些欠缺,基本上以實現(xiàn)功能為目標,沒有完全根據(jù)軟件工程的過程進行開發(fā),請問如何從0到1建立起一套切實可行的基于軟件開發(fā)過程的體系呢?

      鄒欣:如果你的團隊把功能都實現(xiàn)得非常好,用戶都滿意,而且團隊成員也愿意繼續(xù)做下去,那么,這個團隊肯定不是在0這個水平。 你可以做下面的幾件事,幫助團隊把原來不成文的、零散的協(xié)作方式變成有記錄的、互相協(xié)調(diào)的流程和共識:

      a. ? ?如果團隊新來了一個成員,他能否只看一個文檔,不用和其他人交流,就能把最新版本的源代碼構建成一個能運行的軟件,并運行一些基本的測試用例?如果這個文檔沒有,那就把它寫出來。

      b. ? ?如果這個團隊成員要修改代碼,他能否只看一個文檔,就能領會本項目的設計規(guī)范,代碼簽入規(guī)范,并且把代碼簽入?

      c. ? ?如果新來的員工不是工程師,而是一個產(chǎn)品經(jīng)理(!),而且他發(fā)現(xiàn)了這個產(chǎn)品的一個問題(bug)!那么,你是否也有一個文檔/網(wǎng)站,介紹產(chǎn)品的各個版本,每個版本都做了什么,有什么經(jīng)驗教訓?過去的bug都在什么地方,如何記錄一個bug?

      把這三種文檔做好(可能要經(jīng)過幾輪改進),讓大家都同意,就已經(jīng)有巨大的進步了。其他的方面,請看《構建之法》,《人件》這些書。碰到問題就去研究并解決問題,你沒有必要非得去外面請一個高大上的“軟件工程的過程”的牌位到家里供著。

      問:對于架構的大方向或非常復雜的架構,我(異步用戶)一直認是敏捷開發(fā)方式無法處理的。因為這需要參與者的水平比較高。而敏捷方法中大都沒有超級程序員或架構師的位置。請問您是怎么看待敏捷的?尤其是大型軟件的開發(fā)中,敏捷是否有一席之地?

      鄒欣:首先,敏捷對于不迷信的人來說,是好處大于壞處的。請看酒后的敏捷。

      其次,大型軟件是由各種小型模塊組成的,如果你把各個模塊之間的關系變得比較松耦合,那么,各個小型模塊是可以由小型團隊來控制它的開發(fā)流程,對吧?如果你說的大型軟件是各個模塊緊密耦合,還有很多意大利面條式的代碼,而且時間緊,任務重,那么,各種軟件開發(fā)方法都是無力的。

      問:創(chuàng)新更多是需要領域內(nèi)的一定的學術或技術積累,還是更需要像阿基米德那樣的“靈光閃現(xiàn)”?或者說,創(chuàng)新者大多來自于務實派,還是空想派?

      鄒欣:這個問題,請看《創(chuàng)新的迷思》系列博客,里面提到了很多和創(chuàng)新相關的書籍,也可以參考一下。

      問:您認為IT行業(yè)是否客觀存在性別差異問題?您的同事、學生中女性大概占多少呢?

      鄒欣:差異就是客觀存在的。護士,廚師,幼兒園老師,建筑工人,某個偶像的腦殘粉。。。都有差異。例如,在護士行業(yè)是否存在性別差異問題?

      我周圍的同事大約女生有1/3-1/4吧,考慮到大學IT專業(yè)的男女比例,這個數(shù)字說明,只要努力,女生也能學得比男生好(統(tǒng)計意義上),找到很好的IT行業(yè)的工作。 還是那句話,把自己的事情做好,別想太多統(tǒng)計意義。

      問:您能給我們描述下IT行業(yè)當前的現(xiàn)狀嗎?未來的前景又如何呢?

      鄒欣:現(xiàn)狀令人驚喜地好,有些學生大學自己就沒寫過1000行程序,結(jié)果也能找到工作。我真是又驚又喜,以驚為主。 IT行業(yè)前景不錯。你看一個小小的例子:http://www.microsoft.com/microsoft-hololens/en-us

      問:俗話說,隔行如隔山。聽說IT行業(yè)內(nèi)也是如此。不同方向的人才一般一直專攻一個方向還是會有所轉(zhuǎn)換?是否容易呢?

      鄒欣:我倒不覺得隔行如隔山,你看現(xiàn)在做英語培訓失敗的,說笑話的,做空調(diào)的,,,,都可以開發(fā)布會要做最好的智能手機了。他們翻山很容易啊。

      你只要選一個方向,一直專攻,到碰到困難的時候,就知道是要換,還是要繼續(xù)了。當你到了那個地步,自然就有解法。

      問:您是如何平衡工作,寫書,家庭?

      鄒欣:事情較多,要分輕重緩急。除了你提到的工作,寫書,家庭,別的事我不太做,所以還能應付。堅持做好一件事也不容易,比如寫書,一個小領域?qū)懞芏嗄辏拇_會產(chǎn)生厭煩情緒。我經(jīng)常就上微博,看一些有趣搞笑的東西,發(fā)發(fā)牢騷,勞逸結(jié)合。一本書在絕大部分時間里,都是一個草稿,就像一杯水,也可以說一半是滿的,或者一半是空的。為了把這個杯子裝滿,有時要不斷鼓勵自己。也得到周筠老師很多鼓勵,樂觀看待已經(jīng)完成的部分,不斷改進。就像《高效人士的7個習慣》提到的那樣,可以想象這杯“水”滿了以后獲得的樂趣和成就感,這樣又可以繼續(xù)做下去一段時間。堅持到最后,咦,書寫好了,孩子也長大了!

      問:您為什么會對軟件工程教學有這么濃厚的興趣,以至于投入這么多精力去做這件事?

      鄒欣:我1991年從北大計算機系本科畢業(yè),不久就出國念書和工作了。2005年,我回到北京,在微軟亞洲研究院工作。由于工作的關系,我走訪了好幾個學校的計算機系和軟件學院,還作為工業(yè)界的代表,參加了一些軟件學院的評審。我當時想“十幾年過去了,這些學校每年都說繼續(xù)深化改革,即使每年深化改革改進了5%,這些年積累下來,現(xiàn)在大學的軟件教育一定是非常不錯的…”,沒想到看到的情況嚇了我一跳(請看這里,評審感想)。我剛開始講軟件工程和軟件開發(fā)培訓的時候,水平也一般,不過,在給同學和實習生講課之后,看到反饋還不錯,就繼續(xù)做下去,每次上課,都在上一次的基礎上改進一些,同時也把自己學到的知識和教訓加進去。

      這個教學逐漸變成了線上和線下結(jié)合的一個活動,有編輯,老師,工業(yè)界的助教,學生在一起發(fā)生各種化學反應,很有意思,所以我對此興趣還是很濃。

      2014年,我把積累的教案和經(jīng)驗匯集出版了《構建之法》,現(xiàn)在主要是各個學校的老師在教課,一些助教在做實際工作,編輯在做不少組織工作,我只是用一些業(yè)余時間在鼓勵大家。

      問:您在推行軟件工程的創(chuàng)新教學方法的這幾年遇到了哪些方面的困難?是如何應對的?

      鄒欣:首先,這個教學方法中的很多元素并沒有什么“創(chuàng)新”的地方,只不過是國外大學習以為常的做法,或者是中國大學本來就要求做到的。大家覺得“新”,可能是看到這樣大運動量,嚴格的訓練居然搞成了,同學們覺得的確有收獲,而不是“進一步深化改革”,“打造一個全新的教學平臺”之類的表面文章,因此覺得“新”而已。

      要做成一件不一樣的事情,特別是在天朝的大學,困難總是很多的。經(jīng)過幾年的努力,現(xiàn)在我們形成了這樣的循環(huán):

      -學校老師開課,使用《構建之法》為教材 -我們給學校老師配一個有工業(yè)經(jīng)驗的助教(報酬來自學校或者我的書的版稅) -所有學生的作業(yè)都上網(wǎng)發(fā)布,助教和老師在網(wǎng)上批改作業(yè) -獎勵最優(yōu)秀的同學和團隊 -收集老師和學生的反饋,改進下一個學期的教學

      我們希望和一些學校進行長期的合作,把更多的專業(yè)課,教學體系都改進到符合教學規(guī)律,符合現(xiàn)代人才培養(yǎng)理念的狀態(tài)。

      最大的困難是心理上的,很多人都有“過早退出”的心理問題。 -教師和助教想改革,但是能堅持一個學期么?能持續(xù)改進么? -學生想學好,是真的付諸實踐,還是在琢磨“如何以最小的努力,過了這門課”?

      如何應付這些困難呢?最好調(diào)整自己的期望值,選擇能夠合作的對象來合作,在堅持中不斷改進,在爭執(zhí)中協(xié)調(diào)步伐。

      問:您強調(diào)“做中學”,那么在軟件工程的學習當中,理論學習和技能訓練是否有先后順序和側(cè)重?

      鄒欣:如果沒有理論的知道,技能的訓練是事倍功半;如果沒有技能的訓練,工具的支持,來自現(xiàn)實世界的反饋,那么理論只是空中閣樓。

      大家如果沒有寫一萬行代碼,沒有和幾個同伴做出一個有人用的軟件,那么還不用擔心這個先后順序和側(cè)重的問題。

      問:現(xiàn)在網(wǎng)上有快速成為全棧工程師的培訓班,收費不少,你覺得這種辦法有道理么?會取代學校的傳統(tǒng)方法么?

      鄒欣:首先,如果人們是充分了解了這種培訓班的信息,然后去上課,那是他們的自由選擇,對他們來說,這是有道理的。這個培訓班的價值,應該由市場來決定。 大學要教什么?打一個冰山的比方,大學就是讓你在能力上形成一大坨冰!這一大坨冰,扔到海里,就會有大約1/8的部分露出水面。這個姑且認為就是能解決目前工作需求的那些技能。

      大學的教學目的,就是教你一大坨冰,等你走到社會,就相當于把這一大坨冰往海里一扔,露出水面的部分就夠你解決問題了。

      也有學者這么說:

      We are currently preparing students for jobs that do not exist, using technologies that have not been invented, in order to solve problems we do not even know are problems.

      ——KarlFish

      大學生們應該為那些尚未出現(xiàn)的工作做準備,用那些還沒有發(fā)明出來的技術,解決我們目前還不知道的問題。這是我們理解的大學之道。既然這樣,我們就不必太在意今天市場上時髦的東西,而是要學好深層的規(guī)律,原理,打好基礎。比如你學好計算機、數(shù)學的基礎課程,走上社會見招拆招就好!今天時髦的技術并不是要避免,或者不重視,而是把它們當作學習規(guī)律,原理的參考,做各種實驗的原料。例如,你要學操作系統(tǒng),你可以拿現(xiàn)在時髦的操作系統(tǒng)做實驗,為了實驗的效率,你要熟悉各種命令行參數(shù),但“熟悉命令行參數(shù)”并不是大學教育的目的,而是做深入分析的副產(chǎn)品。

      學霸能把各門課的知識,技能聚合成一坨冰,學渣只能收攏一些冰渣,這些冰渣很快就融化了。

      有人說這太花時間了,太乏味了,如果我只學露在水面上的那一塊冰就好了!臨時學一下實用技能,就是在露出水面的部分加一些冰。很多同學沒有意識到---沒有水下面那一大坨冰的支持,水面上的那一小坨就會大部分沉到水下。 有人說一個人就可以快速成長成為一個全棧工程師,這讓我想起街頭賣藝的“One-man-band”,他們什么都會一些,可以很快地演奏一些曲子。

      與之對的,是只鉆研某一樂器的:

      你愿意花錢聽哪種演奏呢?當一個小孩說–我長大了要做音樂家!你會讓他走上one-man-band的道路么?

      那為啥這種“快速全棧”補習班這么熱門呢?有好幾種原因。

      1) ? ?大學教學水平太差,想讓學生學到一大坨冰,結(jié)果教的課都很“水”!學生沒辦法,只好上培訓班補習。 2) ? ?學生先懶后急,沒畢業(yè)的時候,看不到水下那一大坨冰的作用,覺得大學的教學計劃枯燥,不愛學。快要畢業(yè)時,再搞一大坨冰,已經(jīng)來不及了,聽到大家經(jīng)常談論小冰山,只好另外花幾萬塊錢去上培訓班,想馬上復制那些小冰山。 3) ? ?會玩幾種樂器比學精一種樂器容易多了,而且容易收錢。 所以:

      -要珍惜大學的時光,搞出一大坨冰! -可以玩一下one-man-band,但一定要要精通一兩個技能。

      小記者:龍星鏢局

      問:假如要學習編程,是不是越早越好,不一定非要等到上大學?

      鄒欣:興趣愛好什么時候開始都行。

      問:有些人建議學編程語言時先從Python這樣的語言入手,而后再學習C、C++這樣復雜的語言,這和很多國內(nèi)高校的順序是相反的。你是什么建議?

      鄒欣:類似的討論不少,例如這個2009年的博客和評論討論了MIT的入門課從講授Scheme轉(zhuǎn)到Python的故事。今年斯坦福大學也換了入門課的語言,從Java 換到 JavaScript。 我覺得,在教學的時候,可以從各個方向給學生介紹CS的核心知識及計算機語言,條條道路通羅馬,下面的各種道路都可以試一試:

      物理 -> 電子 -> 某種底層嵌入式應用 -> 機器代碼 -> 匯編 –> 高級語言

      數(shù)學 -> 數(shù)理邏輯 -> 形式語言與自動機 -> 計算機語言理論 -> 某種計算機語言 (這種道路讓人想起高德納老師)

      容易理解的語言如VB和計算機游戲 ->學習UI編程 -> 學習語言設計 –> 設計符合自己要求的語言和工具 (參見?輪子哥的成長)

      學校的教學有它自己的很多限制, 學生的質(zhì)量和基礎,老師的能力,學校的培養(yǎng)計劃,學期的長度(13 – 15 周),等等。 我認為入門課不妨生動活潑一些, 讓學生有足夠的動手機會。 另外,語言是否 “復雜“,是由各種因素決定的,如果你隱藏了細節(jié), 很多復雜的東西也很簡單,例如: C++的cout/cin語句就比C語言的 printf()/scanf()簡單多了, 當然,如果把這些問題都講透了,這些都不是太復雜。

      問題是:

      老師有沒有能力把這些講清楚

      把這些講清楚,對學生后續(xù)的學習有沒有直接的幫助?

      國內(nèi)和國際上對軟件工程的教育差別在哪里?比較雙方代碼量的區(qū)別就知道了。另外看看學生的吐槽:http://www.cnblogs.com/xinz/archive/2013/02/06/2908169.html

      國外的好老師,真的把教學當作一個嚴肅的課題來做,按照規(guī)律來搞教學,請看這個例子:https://zhuanlan.zhihu.com/p/20610349

      問:計算機系和軟件工程的老師有區(qū)別么?

      鄒欣:你在校園里面碰到老師,如果她是計算機系的,你可以問老師: 你發(fā)現(xiàn)了計算機科學的什么客觀規(guī)律? 如果是軟件工程的,你可以問:你構建了什么樣的軟件?你發(fā)現(xiàn)了工程的什么規(guī)律?

      問:公司面試,如何看待面試前先刷題?

      鄒欣:這個沒啥好說的,別人面試前做什么,公司管不著。如果公司看不出一個人的真正水平,那就是這個公司的問題。

      問:你帶過很多程序員,你覺得優(yōu)秀程序員有哪些共同的特點?

      鄒欣:動手能力強, 發(fā)自內(nèi)心地想把事情做好。

      問:業(yè)界有很多設計模式相關的書籍,讀的時候很有感覺,但具體應用時候又覺得無所適從,這是為什么?

      鄒欣:我喜歡下圍棋,也看過不少圍棋書。有這樣一個說法,如果光下棋不看書,水平就停滯;看一本圍棋書再實戰(zhàn),棋力就會下降一級。當然,如果繼續(xù)實戰(zhàn),棋力會漲回去,甚至超過原來的水平。所以,要理論和實戰(zhàn)相結(jié)合。

      問:你是軟件工程領域的行家,出版過《構建之法——現(xiàn)代軟件工程》一書,如何理解書名的“現(xiàn)代”?軟件工程方法論有過時的說法么?

      鄒欣:古書上說 “世易時移,變法宜矣”,方法論當然要隨著時代的變化而調(diào)整。 我們要問的是, 世易了么?時移了么? 開發(fā)軟件的需求方變化了么? 開發(fā)軟件的理論基礎變了么?開發(fā)軟件的工具變了么?軟件從業(yè)者的情況變了么?團隊交流的情況變了么?這些變化的因素是本質(zhì)的變化, 還是非本質(zhì)的變化?

      很早以前就有嵌入式開發(fā), 這個和最近興起的IoT開發(fā)有什么異同呢?

      很早以前有批處理系統(tǒng),寫數(shù)值計算的程序,通過紙帶輸入,過一天才有結(jié)果輸出。現(xiàn)在有深度學習,投進去數(shù)據(jù)和各種參數(shù),也要很久才能得到一個結(jié)果。 這兩種是一樣還是不一樣?改變的因素是本質(zhì)的, 還是非本質(zhì)的?

      問:你的《構建之法》以及和老師的合作 (http://edu.cnblogs.com),似乎很看重實戰(zhàn),我也聽到不少大學領導說 “我們大學的教育使命,和職業(yè)培訓是有區(qū)別的,我們要講大學之道,培養(yǎng)科學家...”,你怎么看這個問題?

      鄒欣:

      中國的大部分大學,培養(yǎng)學生的目的是讓他們成為合格的職業(yè)人士;還有一些學校,要培養(yǎng)學生當科學家,當然也很好。不過,一些人把科學家和其他職業(yè)人士對立起來了。 科學家也是一種職業(yè),不能以特殊性否定普遍規(guī)律 ?-- “我要培養(yǎng)白馬,所以培養(yǎng)馬的規(guī)律不適用于我“。 ?中國的大學在招 “科學家” 的時候,招聘流程和其他行業(yè)招人也很類似,說明也是按 “職業(yè)” 的規(guī)律來招人的, 而且有些學校通常會限定許多條件, 例如必須在國外獲得某些學位等等, 這么說中國的大學培養(yǎng)不了科學家? 這不是和上面提到的中國大學主要目的互相打臉了么?

      科學家作為一種職業(yè),也要持續(xù)地給自己充電,有些通過脫產(chǎn)讀更高一級的學位,博士后,有些通過出席研討會、閱讀、參加課程來學習。例如最近一些科學家都參加了如何使用 “云計算” 來幫助科研的課程,或者參加 “教育心理學” 的課程。 科學家在參加這種課程的時候, 也有企業(yè)的人員或老師參加, 大家不都是一樣職業(yè)的培訓么? 為何看不起職業(yè)培訓呢? 在培訓過程中,有人獲得頓悟,立即成為 “完整的人,高尚的人”; 也有人是漸悟,逐漸提高了自己的修養(yǎng);還有人就是學到了一些技能,這也無妨,對吧?

      或曰:"大學是培養(yǎng)人心智的地方,急于把自己安塞到社會中的某個崗位會讓大學生急功近利,失去本真的學習快樂。" ?對IT 專業(yè)來說,心智如何培養(yǎng)?平時抄作業(yè),考前哀求老師畫重點,就能得到心智? 想偷懶,不想面對現(xiàn)實,那就直說,不要拿“心智”來搪塞, 要格物致知,要深入研究,練習,要分析IT行業(yè)發(fā)展的源和流。 沒有腳踏實地的實踐而奢談 “心智”, 仿佛臨淵羨魚,或幻想空中樓閣。

      “大學之道,在明明德...” ?, "為天地立心,為生民立命,為往圣繼絕學..." ?古人的話,真的很美。但別自我麻痹太多,現(xiàn)代的大學之道應該能分解為可衡量的,可執(zhí)行的,可具體傳授的各個部分。教育者要分而治之,把大學生的職業(yè)培養(yǎng)搞好,讓大學生畢業(yè)后能躋身于一流的研究院或大學,一流的企業(yè),或者,畢業(yè)生去了一些普通的單位,甚至沒有單位,但是他們有信心在社會上自立。這,就是最基本的大學之道。

      問:很多計算機、軟件工程領域的同學看了很多編程方面的書,但實踐中還是感覺寫不出來好代碼,你覺得最大的原因是什么?

      鄒欣:看得太多,想得太多,寫得少,從實際世界得到的反饋太少。

      問:當前計算機領域的工作越來越細分,很多職位只負責算法模型調(diào)研,實際的編程實現(xiàn)有工程團隊在做,經(jīng)常出現(xiàn)需求不能正確實現(xiàn)的情況,有沒好的建議?

      鄒欣:就像足球隊那樣,有分工,但是目標是一致的 ?-- 贏得比賽。需要的時候,后衛(wèi)也要射門,前鋒也要防守。負責模型調(diào)研的應該要把全棧做一兩遍,才有全局的感覺。 寫程序,搞研究,目的是各種各樣的,要想清楚自己和團隊的目的是啥。

      更多詳情請看https://zhuanlan.zhihu.com/p/20003750

      本文轉(zhuǎn)載自異步社區(qū)

      軟件開發(fā)

      版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。

      版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。

      上一篇:業(yè)務流程圖制作模板大全(業(yè)務流程圖制作模板大全圖片)
      下一篇:為啥有的excel表格只能預覽一半(一張excel表,預覽出來怎么只有半張?)
      相關文章
      亚洲爆乳无码专区| 亚洲国产日韩在线视频| 亚洲狠狠久久综合一区77777| 在线精品亚洲一区二区三区| 色天使色婷婷在线影院亚洲| 狠狠色香婷婷久久亚洲精品| 亚洲另类小说图片| 亚洲国产日韩在线人成下载| 亚洲欧洲视频在线观看| 亚洲成人免费网址| 亚洲卡一卡2卡三卡4麻豆| 亚洲特级aaaaaa毛片| 亚洲女人18毛片水真多| 亚洲成aⅴ人在线观看| 亚洲国产精品综合久久网各| 亚洲国产精品日韩在线| 亚洲AV综合色区无码二区偷拍 | 国产精品亚洲片在线花蝴蝶| 亚洲av成人片在线观看| 亚洲AV无码之日韩精品| 亚洲综合区小说区激情区| 日韩精品亚洲aⅴ在线影院| 亚洲人成色7777在线观看| 国产成人亚洲综合色影视| 亚洲AV乱码一区二区三区林ゆな| 亚洲AV区无码字幕中文色 | 日本中文一区二区三区亚洲| 国产成人不卡亚洲精品91| 亚洲精品WWW久久久久久| 国产亚洲精品无码拍拍拍色欲 | 天天爽亚洲中文字幕| 亚洲人成网亚洲欧洲无码| 精品韩国亚洲av无码不卡区 | 亚洲AV无码一区二区三区国产| 久久久亚洲精品蜜桃臀| 亚洲综合精品网站在线观看| 亚洲成av人片在线观看无码不卡| 久久久久亚洲精品无码蜜桃| 亚洲不卡在线观看| 亚洲国产精品无码久久98| 亚洲国产午夜中文字幕精品黄网站|