|
我一直在IT企業(yè)的研究部門(mén)任職,迄今經(jīng)歷了三家公司:NEC、微軟、華為。工作都是既有基礎(chǔ)研究,又有產(chǎn)品開(kāi)發(fā)。其實(shí),這兩者既有密切聯(lián)系,性質(zhì)上又迥然不同。前者在于發(fā)現(xiàn)或發(fā)明普適性的理論與方法,后者在于開(kāi)發(fā)實(shí)用性的系統(tǒng)與工具。可以說(shuō),前者需要的思維方式、基本技能與素質(zhì)是科學(xué)家的,而后者是工程師的。我經(jīng)常提醒自己,一定要明確在具體項(xiàng)目中自己到底帶著什么“帽子”在工作,是科學(xué)家,還是工程師?
我曾經(jīng)將如何成為優(yōu)秀科學(xué)家的體會(huì)整理成若干篇博文發(fā)表,而本文來(lái)談?wù)勅绾纬蔀閮?yōu)秀工程師的一些心得。我認(rèn)為,做工程時(shí)應(yīng)該遵循五項(xiàng)原則,并在實(shí)際的工作中把它們作為行為指南。這些原則是:面對(duì)問(wèn)題、解決問(wèn)題,系統(tǒng)地解決問(wèn)題,站在用戶角度看問(wèn)題,以最小的代價(jià)獲得最大的效益,磨在細(xì)處。在這里做一總結(jié),僅供大家參考。
面對(duì)問(wèn)題,解決問(wèn)題
西方有句諺語(yǔ):“當(dāng)手中拿著榔頭的時(shí)候,你會(huì)覺(jué)得看到的東西都像是釘子”。根據(jù)自己的喜好、特長(zhǎng)、習(xí)慣來(lái)解決問(wèn)題是工程師的大忌。做工程時(shí)最重要的是要面對(duì)問(wèn)題、解決問(wèn)題。可取的策略應(yīng)該是探明問(wèn)題的本質(zhì),弄清問(wèn)題的機(jī)理,用最直接、最有效的辦法解決問(wèn)題。經(jīng)驗(yàn)告訴我們,拐彎抹角地解決問(wèn)題,效果總是不好的。做工程時(shí)并不一定需要理論。只要能夠有效地解決問(wèn)題,其實(shí)什么方法都行。“不管白貓黑貓,捉住老鼠就是好貓”在這里也是適用的。當(dāng)然有理論指導(dǎo)的方法 往往更能抓住問(wèn)題的本質(zhì),以其為工具常常能把問(wèn)題解決得更好。
在NEC工作時(shí),我曾參加一個(gè)自然語(yǔ)言研究小組的立項(xiàng)會(huì)議。他們建議開(kāi)發(fā)語(yǔ)音系統(tǒng)來(lái)幫助用戶遙控電視機(jī),因?yàn)楝F(xiàn)在的遙控器操作都過(guò)于復(fù)雜,不利于老人與兒童使用。用語(yǔ)音聲控電視,當(dāng)然是很好的想法,現(xiàn)在仍有許多企業(yè)在進(jìn)行這項(xiàng)應(yīng)用的開(kāi)發(fā)。印象特別深的是他們斷言,除了通過(guò)語(yǔ)音的辦法,不存在其他解決方案。當(dāng)時(shí),我也認(rèn)為他們的想法很有道理。
不料,沒(méi)過(guò)幾個(gè)月,日本的其他幾家電器公司推出了用編碼遙控電視的方法,更簡(jiǎn)單、更實(shí)用。遙控器的操作主要靠數(shù)字輸入,每個(gè)電視節(jié)目都配上一個(gè)編碼,報(bào)紙每天將編碼在電視節(jié)目欄中公布,用戶只要輸入編碼即可觀看或錄制相應(yīng)的節(jié)目。
這件事對(duì)我的內(nèi)心產(chǎn)生了很大的震動(dòng),自問(wèn)為什么NEC的同事們只想到自然語(yǔ)言這條路,而忽視了其他路?不正是因?yàn)樗麄兪掷锬弥匀徽Z(yǔ)言這個(gè)榔頭的緣故嗎?
系統(tǒng)地解決問(wèn)題
動(dòng)畫(huà)片《沒(méi)頭腦與不高興》描寫(xiě)了兩位少年:“沒(méi)頭腦”與“不高興”。“沒(méi)頭腦”做起事來(lái)總是丟三落四,“不高興”待人處事總愛(ài)別別扭扭。不久,“沒(méi)頭腦”當(dāng)上了工程師,“不高興”當(dāng)上了演員。“沒(méi)頭腦”設(shè)計(jì)了一座一百九十九層高的少年宮,樓建好以后,才發(fā)現(xiàn)忘記了設(shè)計(jì)電梯。孩子們?yōu)榱嗽谶@個(gè)大樓頂層的劇院看戲,需要帶著鋪蓋、干糧爬一個(gè)月的樓梯,害人不淺。其實(shí),我們?cè)谌粘I钪幸材芸吹讲簧?ldquo;沒(méi)頭腦”的作品。工程師需要構(gòu)建的一定是一個(gè)系統(tǒng)。系統(tǒng)一定需要全面、整體、有機(jī)的設(shè)計(jì),不能有缺陷與差錯(cuò)。切忌成為“沒(méi)頭腦”的工程師。
在微軟,與唐朝暉博士等合作開(kāi)發(fā)了SQL Server 2005中的文本數(shù)據(jù)挖掘功能。其中的Term Extraction工具可以從數(shù)據(jù)庫(kù)中的英文文本中自動(dòng)抽取名詞短語(yǔ)。這個(gè)工具的輸入通常是英文文本,看似單一,但設(shè)計(jì)這個(gè)工具時(shí),必須考慮處理其他非正常輸入,應(yīng)對(duì)所有可能,比如,亂碼、非英文、特殊字符、全文本大寫(xiě)、不含標(biāo)點(diǎn)符號(hào)文本,等等。記得開(kāi)發(fā)團(tuán)隊(duì)一起構(gòu)建了一張巨大的邏輯圖表,將所有可能的輸入列出,準(zhǔn)備處理方案,力圖做到“兵來(lái)將擋,水來(lái)土掩”。這個(gè)項(xiàng)目確實(shí)鍛煉了大家系統(tǒng)解決問(wèn)題的能力。
站在用戶角度看問(wèn)題
蘋(píng)果公司的產(chǎn)品,如iPad,用戶界面非常簡(jiǎn)單、直觀與易用。據(jù)說(shuō)兩歲的兒童也能無(wú)師自通,自如地使用iPad。理由很簡(jiǎn)單,蘋(píng)果的產(chǎn)品都是為用戶著想,站在用戶的角度上設(shè)計(jì)的。正是因?yàn)槿绱耍O(píng)果的產(chǎn)品能夠得到廣大用戶的喜愛(ài)和追捧。道理雖然簡(jiǎn)單,但我們會(huì)發(fā)現(xiàn),許多工程師在開(kāi)發(fā)系統(tǒng)時(shí)常常做不到這一點(diǎn), 所以做出的東西,根本不好用。
在NEC參加的第一個(gè)項(xiàng)目是個(gè)失敗的項(xiàng)目。目標(biāo)是開(kāi)發(fā)自然語(yǔ)言的用戶界面,自動(dòng)將用戶輸入的日語(yǔ)問(wèn)句轉(zhuǎn)換成 SQL語(yǔ)句,以便讓普通用戶很方便地訪問(wèn)數(shù)據(jù)庫(kù)。這個(gè)項(xiàng)目的初衷很好,但面臨的最大挑戰(zhàn)是,語(yǔ)言的表現(xiàn)力極其強(qiáng)大,同樣一個(gè)意思,可以有許多種不同的說(shuō)法。開(kāi)發(fā)到最后,系統(tǒng)只能接受受限的自然語(yǔ)言輸入(當(dāng)時(shí)還沒(méi)有基于統(tǒng)計(jì)學(xué)習(xí)解決問(wèn)題的想法,也許可以通過(guò)大數(shù)據(jù)、統(tǒng)計(jì)學(xué)習(xí)的方法在一定程度上能夠解決這個(gè)問(wèn)題,這也是自然語(yǔ)言處理今后研究的一個(gè)方向)。拿給用戶使用,反饋非常差,因?yàn)閷?duì)用戶來(lái)說(shuō)掌握受限的自然語(yǔ)言比掌握SQL語(yǔ)言還要困難。沒(méi)有能站在用戶 的角度上考慮問(wèn)題導(dǎo)致了項(xiàng)目的失敗。
以最小代價(jià)獲得最大效益
汽車大王福特曾說(shuō):“對(duì)實(shí)業(yè)家來(lái)說(shuō),一條重要法則就是盡可能地以最低的代價(jià)生產(chǎn)出最高質(zhì)量的產(chǎn)品,給工人發(fā)出最高的工資。”福特公司1908年出的 Model T汽車價(jià)格是825美元,當(dāng)時(shí)沒(méi)有多少人能夠買(mǎi)得起,到1924年Model T價(jià)格降到290美元,成為一款大眾車,在美國(guó)每?jī)膳_(tái)售出的汽車中就有一臺(tái)是Model T。
其原因是福特公司導(dǎo)入了生產(chǎn)流水線,大大地降低了生產(chǎn)成本。在流水線上,Model T的零部件被標(biāo)準(zhǔn)化,維修成本也大幅下降。工程與其他領(lǐng)域(如科學(xué)、藝術(shù))的不同在于它必須考慮代價(jià),包括開(kāi)發(fā)的代價(jià)、推廣的代價(jià)、使用的代價(jià)和維護(hù)的代 價(jià)。工程師開(kāi)發(fā)系統(tǒng)與工具時(shí),必須權(quán)衡效益與代價(jià),力圖以最小的代價(jià)獲得最大的效益。
我在微軟參與了Office 2007、Office 2010、Office 2012中SharePoint的開(kāi)發(fā),具體從事元數(shù)據(jù)抽取與企業(yè)搜索功能的開(kāi)發(fā)。我所在的研究團(tuán)隊(duì)開(kāi)發(fā)了文件元數(shù)據(jù)自動(dòng)抽取工具,有兩種方法實(shí)現(xiàn):CRF與SVM。CRF的精度比SVM高1個(gè)百分點(diǎn),但就抽取部分的代碼量而言,CRF是SVM的若干倍。找SharePoint的架構(gòu)師Meyerzon商量,到底采用哪種方法好?Meyerzon毫不猶豫地答道:當(dāng)然選SVM,因?yàn)樗木戎坏?個(gè)百分點(diǎn),但所需開(kāi)發(fā)維護(hù)的代碼量卻少得多。對(duì)產(chǎn)品來(lái)說(shuō),開(kāi)發(fā)的代價(jià)是不能不考慮的因素。
磨在細(xì)處
對(duì)工程師而言,上帝就存在于細(xì)處!只有精雕細(xì)琢、潛心造作,才能做好工程項(xiàng)目。好的系統(tǒng)與工具是靠一點(diǎn)一滴打磨出來(lái)的。工程師必須在實(shí)際工作中不斷磨練自己的技能,以達(dá)到手藝精湛、技術(shù)嫻熟的境地,能夠像庖丁一樣游刃有余地解牛,像賣油翁一樣點(diǎn)滴不濺地倒油。
在NEC期間,一起工作的工程開(kāi)發(fā)團(tuán)隊(duì)的負(fù)責(zé)人叫濱田,從他那里學(xué)到了許多編程的技能。特別是在他指導(dǎo)下,開(kāi)發(fā)了文本數(shù)據(jù)分析系統(tǒng)TopicScope中的核心算法。我不是編程高手,編程只有普通程序員水平,但同事們都說(shuō)我的代碼寫(xiě)得很好,條理清晰,結(jié)構(gòu)合理,內(nèi)容精煉。
這是因?yàn)槲以跒I田的影響下,花了很多功夫?qū)懘a。對(duì)項(xiàng)目的設(shè)置、文件的分配都反復(fù)斟酌,函數(shù)、變量的命名都細(xì)心推敲,對(duì)系統(tǒng)的執(zhí)行效率都不斷優(yōu)化。寫(xiě)好了程序,過(guò)一段時(shí)間又拿出來(lái)檢查、評(píng)價(jià)、修改,直至不能找出毛病為止(可惜加入微軟以后,幾乎沒(méi)有時(shí)間再寫(xiě)代碼,真希望今后能做一些編程工作)。
從實(shí)際工作做起
以上這些原則都很簡(jiǎn)單,但真正做好卻并不容易,可謂“知之非難,行之惟艱”。重要的是在實(shí)際工作中努力依照這些原則去做,養(yǎng)成成為優(yōu)秀工程師的習(xí)慣。培養(yǎng)自己直接解決問(wèn)題,系統(tǒng)地解決問(wèn)題,從用戶的角度解決問(wèn)題,考慮效益與代價(jià)解決問(wèn)題的能力。不斷提高自己的專業(yè)技能,在工作中努力做好細(xì)節(jié)。你一定知道一些優(yōu)秀的工程師,他們甚至就在身邊,可以把他們作為榜樣,虛心向他們請(qǐng)教,學(xué)習(xí)他們的長(zhǎng)處,不斷提高自己作為工程師的素質(zhì)和能力。另外,敢于嘗試,不怕失 敗,在失敗中及時(shí)吸取教訓(xùn),總結(jié)經(jīng)驗(yàn)也是非常重要的。
結(jié)束語(yǔ)
有人說(shuō)漢字的“工”,上面一橫代表天,下面一橫代表地,整體表示頂天立地的事業(yè)(較一般的說(shuō)法是,象形漢字的“工”代表工具)。能做好工程,成為優(yōu)秀的工程師的確是一件了不起的事兒。特撰寫(xiě)本文,與大家共勉。
作者李航,華為諾亞方舟實(shí)驗(yàn)室首席科學(xué)家。曾任職于日本NEC、微軟亞洲研究院。研究方向包括信息檢索、自然語(yǔ)言處理、統(tǒng)計(jì)機(jī)器學(xué)習(xí)及數(shù)據(jù)挖掘等。
it知識(shí)庫(kù):努力成為優(yōu)秀的工程師,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。