搜索工程師是怎麼定位的?怎樣成為一個優秀的搜索引擎工程師?


感謝 @胡小迪 邀請

從搜索引擎發展的黃金10年來看, 搜索引擎技術自身也在不斷的自我完善, 修改, 甚至變的龐大複雜. 不可避免的需要進行分工和合作. 粗略的按照搜索引擎的功能劃分的話基本有: 抓取, 索引, 檢索以及成為標配的廣告, 4大方向.

對於一個普通的搜索引擎工程師, 需要縱向深入一個方向或者橫向參與到幾個方向當中. 技術上覆蓋的範圍比較大, 針對"搜索引擎工程師"的基本要素而言, 只能泛泛的從幾個大方向上來.

  • 背景知識(domain knowledge, 戰略級)

每個領域內的背景知識, 可能都是決定方向的重要因素. 97/98年李彥宏的鏈接分析和Larry Page的PageRank, 兩者根本性的優勢都在於背景知識上. 當大家都還在深入研究傳統的信息檢索(IR)方向時, 引入了新的鏈接關係和AnchorText作為強有力的新特徵, 可以迅速獲得技術領先. 其根源上是人對於互聯網和搜索引擎的特點的理解, 認識到了鏈接關係上的重要性. 越是新興的領域內, 背景知識帶來的優勢就越明顯. 背景知識一方面可能需要一些深入的研究作為積累, 另一方面也有非常多的聰明人, 可以迅速的達到一個領域內的絕對高度. 這方面更考驗的是視野和智慧, 具體的技術細節其實影響不大.

可能@彭鵬 講的"數據敏感性"就是一種背景知識的體現.

  • 專業技能(戰術級)

有了背景知識作為指引, 大方向基本靠譜的情況下, 能走多遠, 能不能達到預想的實際效果, 就依賴於專業技能了. 不同細分的方向上, 各種大招不一樣. 前端工程師可能需要玩轉javascript+css; 後端的演算法工程師, 可能需要數理統計, 模式識別, 數據挖掘等等; 後端的系統工程師, 需要對網路, 分散式等等有深入了解.

回到"鏈接分析"和"PageRank"的例子上看, 同樣是領先的背景知識下, 專業技能方面就顯示出差別來了. 雖然"鏈接分析"同樣是非常成功的技術, 不得不承認, "PageRank"自身的數學模型要比"鏈接分析"技術更優雅(...我是G粉...), 同時具有更好的擴展性. 這可能是造成google和百度前期的效果差距原因之一.

  • 基本功(單兵作戰級)

基本功可以算是工程師的內功, 之前實驗的效果和模型再華麗, 如果實際系統無法達到的話, 那麼都是白費. 基本功包括, 基礎編程語言的使用, 基礎演算法的實現, 性能問題分析和解決等等. 就是有能力儘可能的消除現實系統性能對與效果的影響. 當然儘可能的減少BUG, 也是基本素養.

一個無法實際實現或者運行結果有錯誤的PageRank系統, 即使再完美, 也不可能產生實際的影響.

至於三者哪個更重要的問題

從實際情況來看, 背景知識起到的效果最明顯, 也最容易體現一個工程師的個人價值. 戰略級別"指點江山"的感覺聽起來很吸引人, 但單純講遠景和拼想法門檻是很低的, 還需要後續通過實打實做出東西來, 驗證自己的想法是正確的.

從理想主義的"民工自我修養"來看, 我更傾向於是基本功- &> 專業技能- &> 背景知識, 循序漸進. 當然人的能力和精力都是有限的, 很多時候都不得不向現實妥協.


搜索引擎不管是現在還是將來,都是我們獲取各種信息或者服務的最直接的一個入口,但是現在搜索引擎收錄的網頁非常的少,很大一部分web page搜索引擎並不能爬到,這其中的原因既有商業競爭的比如淘寶屏蔽了百度的爬蟲,FB屏蔽了谷歌的蜘蛛;也有一些技術方面的;據可靠的數據,現在web搜索引擎(Note:搜索引擎並不只是web搜索引擎一種,比如:企業內網的搜索也是)只是爬到了10%的index(可以說成index,也可以說成web page),很大一部分都是在暗網;

搜索引擎其實是人工智慧最好的一個切入點,沒有之一;

請讀&<&<搜索引擎 信息檢索實踐&>&>,我比較贊同書中的觀點:

(1)搜索工程師不僅僅是搜索引擎的構建者,大部分是現有搜索引擎的維護者

(2)按照搜索引擎的架構學習:爬蟲,分散式資料庫,索引,知識庫和知識圖譜,用戶模型等

(3)參照已有的搜索,找到還沒有解決的問題

(4)使用多重編程語言,比如:python,c++,java

(5)分散式資料庫和數據模型很重要,學習谷歌的三大方向論文:Mapreduce,Bigtable,GFS


推薦閱讀:

在你看來,什麼才是好的工程師文化?
怎樣成為一個質量工程師?

TAG:工程師文化 | 搜索引擎 | 搜索工程師 |