豆瓣網Qa主管解彥博演講實錄:好鋼用在刀刃上

2021-10-15    分類: 網站建設

我今天演講題目是好鋼用在刀刃上,回顧一下豆瓣在這些年發(fā)展過程,我覺得我們之所以能夠在比較少人氣下實現(xiàn)豆瓣所有功能做得相對還算不錯,非常 重要一 個原因是我們一直保持一種創(chuàng)業(yè)公司的團隊文化、工作方法。所以我今天想跟大家分享的是如何把我們最好的優(yōu)勢以大的精力放在應該做的事情上。

開發(fā)過程,這個事我也沒有真正研究過,我想英國維基百科上,我看了一大廢話,軟件開發(fā)過程是開發(fā)軟件的過程,我找了中文的說軟件開發(fā)是根據(jù)用戶 要求建 造出軟件產品開發(fā)的過程, 這兩個哪個好一點豆瓣開發(fā)是在有限人力資源下按照網站需要開發(fā)的過程,豆瓣一直到現(xiàn)在雖然我們也出了一些手持設備應用,但是從基本上所有應用都需要聯(lián)在 網上,還是一個互聯(lián)網公司?;ヂ?lián)網公司最重要一個特制是快,需求變化也快,上線也快,產品經理天天追你,工程完成沒有,今天能不能上,但是豆瓣有另外一個問題,我們人員相對比較少,是因為我們經營一些技術還有說我們一些想法理念,在后面會談到。


所以,我們總結了一下,我認為這個豆瓣開發(fā)部門文化,創(chuàng)業(yè)團隊的文化我覺得有兩點特別重要,所以我想分享一下一個就是效率,我們非常堅持效率, 不管是工作效率還是開發(fā)效率,這個是非常重要的,因為會直接影響到你的效率。另外是團隊熱忱,創(chuàng)業(yè)團隊,開發(fā)一個東西的時候什么時候是最有效率,什么時候產出率 生產出來代碼好,自己一個人有一個特別好的點子剛想出來熬夜做出來,這個時候你的工作效率是特別高的,最后豆瓣反映在創(chuàng)業(yè)團隊里面就是熱情,如果沒有熱情不能一直非常高效的開發(fā)工作。


說到效率豆瓣有一些經驗是非典型的,比如說第一個我們選擇用python這個語言,愿意就是大蟒蛇,這個高級語言對我們來說其實是有利有弊,首 先它的語法是類函數(shù)式編成混合,很符合開發(fā)人員胃口,想這樣做就這樣做,那樣做就那樣做,兩個都支持,都可以考慮,另外是腳本語言,騰訊說到上線過程中要有專門 服務器,我們不需要對準服務器,我們是腳本上去以后我們就可以直接跑了,但是也有一些弊端,是高級語言是動態(tài)化,帶來一些非常難解決的問題,在運營過程中 某些問題才能體現(xiàn)出來,我們發(fā)現(xiàn)已經非常常見問題,循環(huán)進入,但是當你代碼規(guī)模越來越大的時候,之間交互關系特別復雜,一旦沒有控制好模塊,我引用你,你 引用我,跑的時候邏輯不是這么簡單,涉及三四個模塊,人沒有發(fā)現(xiàn)這個循環(huán),上線跑程序直接就不行了,這個是很要命的,我們也做了一些工作,還沒有解決這個也是我們需要解決的問題。中國有一個很活躍的python圈子,python語言用于web是非常好的選擇。


說一些實際例子我們看一看實際怎么用的,這里面一個任務是一個交互式直行頁面,python非常大的優(yōu)勢是可以交互式執(zhí)行,在交互式可以直接用 一條,這個文件前面出現(xiàn)第一個提示符做了一大堆工作,把所有豆瓣網站代碼都已經啟動起來,可以無縫調用代碼,做一些調試,運維工作特別重要,因為有些工作比如說 我把某一個有問題緩存清理掉,有一個人什么東西丟了,我查一下看看具體后臺數(shù)據(jù)有沒有,這些工作是用代碼里面的某一行調一下就知道了,這個東西節(jié)省我們大量時間。


MC是我們內部用的一個訪問緩存系統(tǒng)標準接口,后面可以把這個頁面取出來,這里面也涉及到python另外一個優(yōu)點,高級語言優(yōu)勢在這兒顯示出 來。另外一個節(jié)省時間python是一個非常有歷史語言,出現(xiàn)時間跟Java是一樣,這些年發(fā)展過程中有第三方人寫一些非常好的代碼功能,我們是可以直接拿出來 用,這個是豆瓣代碼里面截取出來,上面三行PL是美國一家公司開發(fā)處理圖象的一個軟件包,我把某個圖片調一下透明度,下面可以給某個圖片加上一個水印,這兩個簡單功能有這些第三方工具支持下可以很容易的寫出來了。


另外一個非常重要的高效率的方式我認為也是創(chuàng)業(yè)公司,并不是說特別注重我們現(xiàn)在每個團隊都是創(chuàng)業(yè)團隊,我們做任何事情并不是說把這個東西限制 死,我現(xiàn)在上線系統(tǒng)啟動起來,有一個專門做這個上線事,我們發(fā)布一個上線流程,最后大家都來批單子,豆瓣是說有需要上線事物過來跟我說,我們相信內部溝通比煩瑣過 程更有效,尤其是豆瓣人數(shù)并不多的情況下,我不是攻擊其他大公司,我相信人數(shù)到一定數(shù)量的時候有一些必要的流程是要走的??匆幌麻_發(fā)流程,對于一個開發(fā)者 來說基本上這些東西都是每天每個星期都要接觸的,要做一個事情,今天我要給圖書頻道加一個新功能,程序員把程序主干搞出一份作為分支,生出一個新的小芽, 這樣的話,不管我提交跟其他代碼不影響,剩下就是開發(fā),改程序提交,測試,甚至把其他人拉過來,工程師有沒有時間幫我測一側,這些事都做完以后,剩下最沒技術含量上線工作。


但是這個開發(fā)流程并不是唯一的流程,我們流程隨時是可以拿掉的,可以看一下這個,作為一個很常見情況要預測所有事情有可能出問題,包括硬盤我們 覺得用幾年沒有問題,到機房一百臺機器基本上每天都有硬盤壞,比如說緊急上線我出問題,導致上線上人完全不可用,用了以后會有各式各樣的問題,這種時候要緊急上 線,出了一個問題趕緊修,兩分鐘修完了,大家看看修的有沒有問題,沒有問題,馬上幫你上這個就是過程,可以說一個例子,星期五有一次緊急上線,這次上線是 四分鐘,發(fā)現(xiàn)問題,到修改,最后所有都完畢,這個能力是非常重要的,因為作為一個互聯(lián)網公司我們保留一個傳統(tǒng),帶來一個問題不可能把所有大的都在前期解決 掉,因為現(xiàn)在要維護產品也是非常多的,在所有這些每天都會有代碼提交情況下,要保障完全覆蓋兩個測試中心每個公司都做不到,我們允許出現(xiàn)問題,所以上線的時候大家要在那盯著,一出問題上線工程師直接把上線過程暫停,誰誰出問題了趕緊修,這個是非常好的辦法,如果我沒計錯是從Facebook學來的。


把上線流程詳細說一下,實際上后面還是有正常環(huán)節(jié)下還是有很多工作要做,比如說開發(fā)以后首先代碼要復審,在開發(fā)過程中每天團隊要看看這個代碼怎 么樣,復審過程中圖片上看到一大堆人對你的代碼指指劃劃,團隊復審是促進團隊交流系統(tǒng)越來越大,里面架構,各種需要注意的地方越來越多,這個事情并不是每個人都 能意識到,尤其是對于新加入豆瓣的員工,通過代碼復審,尤其是新員工入職前保證基礎開發(fā)知識,代碼規(guī)范在團隊內進行良好溝通,包括團隊內部也是每個人做不同事情,做這個產品我之前沒有接觸,如果沒有代碼復審團隊內部交流,雖然在同一個團隊工作對某一些代碼是不清楚的。


測試在豆瓣也有非典型,測試這個活由開發(fā)測試時工程師共同復雜,單元測試,web測試,所有這些東西開發(fā)工程師必須了解,學習,必須使用,這個 過程中為了提過效率有一些自動化系統(tǒng)幫助工程師做這個事情。一個最重要目的就是說測試并不是由軟件質量代碼質量并不是由測試工程師決定,這個工程師起到事后彌補 作用,代碼質量源頭是開發(fā)工程師,沒有對測試美的追求的話,可能寫不出好的代碼,應付一下今天要上,趕緊拷貝粘貼。所以我們希望每個人都有質量意識,有了 前面這些東西以后,對于豆瓣來說工具是一個很大程度提高工作效率一種手段,工具包括很多方面,豆瓣我們可以看一下這幾個例子,交互式執(zhí)行,有些東西是不適 合我們做,有些東西雖然不是上線給用戶用,但是也是一長段代碼,tools有大量上百個腳本是以往留下來,這些腳本實際上我認為凝結前人一些智慧知識,比 如說我下來要發(fā)一些信,考慮我從頭寫,學習一下豆瓣內部怎么發(fā)郵件,有了tools有人會告訴新員工不用,搜一下,搜一下就可以發(fā)現(xiàn)很多版本,每個代碼是經過很多人驗證的,在線上運行很久是經過實踐的經驗。


下面是有一些截圖,是做代碼靜態(tài)掃描,很多毛病只有真的跑起來才知道,但是軟件寫到后面分支那么多沒有辦法在測試的時候把所有分支再跑一次,需 要掃描所有原代碼元件,包括這里面顯示,有一個自己擴展能力,寫了一些豆瓣自己掃描代碼的小工具放進去,掃描話段引用,發(fā)現(xiàn)三個元件可能有問題,這行代碼要用某一個函數(shù)處理一下,這個可以提醒開發(fā)者有一些隱患,這個里面已經包含一些問題,寫的時候不用說自己要去跑來跑去的,把所有東西都折騰一次。錯誤日志是web公司強項,所有錯誤都在自己的服務器上,但是有產生另外一個問題,同樣分布在很多機器上,可能尤其是有運維人員維護并不是每臺服務器都能上去,我們 開發(fā)了這樣一個工具,目的把所有出現(xiàn)錯誤日志抓下來,會把每一個當時出錯現(xiàn)場涉及每行代碼留下來,把每個當時涉及變量值保留下來,包括用戶當時訪問這個的 時候帶著各式各樣變量之類的,讓我們的程序員可以專注于說在一個地方發(fā)現(xiàn)所有問題,比如說我上線了,代碼上線出沒出錯,首先要高優(yōu)先級錯誤,我刷半個小時 發(fā)現(xiàn)沒有錯誤,可能出新一兩個其他的東西,看一看,是我還是其他人,出去是其他人可以通知他一下,讓程序員調試里面解脫了,包括出錯怎么回事,點開可以看到當時出錯用戶請求傳過來的東西,大多數(shù)時候可以改程序不用做本地環(huán)境復建等等。


另外我們也需要一些提高網站效率的工具,豆瓣資源少不光指人,包括我們服務器也很少,所以服務器上面程序執(zhí)行效率對我們來說意義很重大,可以幫 我們省很多錢,我們很早的時候做了一個工具,可以在線跑,刷一個頁面,底層有哪些語句,運行情況怎么樣,哪些是熱點,執(zhí)行特別多,花費時間特別長等等之類的,這個是對我們非常有效率的工具,用了這個工具以后平均訪問時間保持在一個比較小的范圍之內。


這些工具還是需要人去執(zhí)行。我們希望這個工具讓計算機自動做,我們可以做更多事了,最簡單web測試,我們把它框架建設起來,也建立起來自動化 的方式,之前程序員一個一個測試,跟我們報表結合起來,只有在程序員做完以后提交,提交以后程序自動考,沒有消息就是好消息,沒有收到郵件說明你的代碼很好已經通過了,如果收到郵件就要趕緊修,所有后面人也會收到同樣報告,這里面只有功能失效才會發(fā)警告信。


說了這么多東西,但是我覺得最核心一個,也是對豆瓣來說保持開發(fā)團隊創(chuàng)造力的一個很重要方面,就是我們給大家提供很靈活選擇空間,回想一下現(xiàn)象 獨立開發(fā),創(chuàng)業(yè)團隊高效率原因,一心鋪到上面去,他做的是一個全新前人沒有做過的事情,因為沒有前人經驗,所以從用戶角度對這個東西做設想,分析所有里面利益, 他會選擇一個最好的方案去做,這個過程中如果沒有這些東西只給他限定一條路線,你只能用python就不好玩了,我們希望程序員有一個更靈活選擇空間,希望團隊能夠不斷接觸新的機制,技術,把這些技術應用到豆瓣開發(fā)里面來。


我們有一些基礎的設施,就是通過這種方式逐漸實現(xiàn)起來的,比如說我們有一個分布式數(shù)據(jù)庫方案,我們內部也做了一些其他東西,這個東西接口非常簡 單,只有放進去,取出來,刪除就這么幾個操作,有了這樣基礎設施開發(fā)者有省事了,這個時提高效率非常重要的方面。包括前面說的我們可以自由選擇設計方案,這個自 由也是有限度我們公司也有架構師,我們會一起討論這個新項目打算怎么做,選擇這個東西跟現(xiàn)有有什么好處,所有東西都是在大家廣泛溝通之下達成共識,比如說 豆瓣有一些項目是用django做的,還有一些其他的,類似的也有,我們開發(fā)方式,豆瓣是一個非典型,用了一個python,但是python也不是必選 項,有用C的,有一個算法R,這些東西也都有,通過給大家更好的選擇空間我們希望避免我們內部架構,技術僵化,希望提供一個更像創(chuàng)業(yè)團隊自由用最好的方式把這個事做起來。


我們相信所有這些我們自己都做完了,如果大家團隊死氣沉沉,干活沒有什么興趣,我想這個公司不用創(chuàng)業(yè),直接就可以倒閉,我們非常強調工作熱情, 里面人,環(huán)境成長這些都是非常重要的因素,我們的員工都是平等的,開發(fā)部門,技術主管,我們架構師,我們所有運維,我們開發(fā)等等所有人都是可以開發(fā)的,而且直 到今天大家也還在做開發(fā)工作,我們希望通過這個東西可以讓大家能夠感受到我們真的是一個團隊,我們討論問題的時候也不會說像一個領導,大家都懂技術大家可 以進行真正溝通,選擇我們用什么東西,所以我覺得工作熱情一個員工是肯定不行的,引用一下Facebook前工程總監(jiān)一句話,他說永遠將招聘作為你的第 一要務。
當然豆瓣雖然沒有把它作為這么嚴格的重要一點,但是豆瓣來說實際上招聘也已經相當于我們第一要務,我們對于招人非常謹慎,幾年時間下來我們人數(shù) 并不是增長特別快,我們招人有很多要求,當然這個要求并不是要求你有這個能力,那個能力,我們覺得最后最重要一關就是前面說的,我們要保持工作團隊熱情, 所以你這個人不管你再牛,要能跟團隊和諧工作,大家在一塊做得很好,不能說我能力很高,我來了以后就看其他人不順眼這個團隊就完蛋了,所以我們招聘工作會 邀請所有招聘員工團隊甚至于跟這個團隊跟他可能會產生合作的人都來面試一下,確認這個人是符合豆瓣,適合豆瓣,我有一個課題放在這兒,可以用非常好的辦法實現(xiàn),可以用一個團隊成員能夠接受方式做創(chuàng)新這個是非常重要的事。

還有一個很重要工作環(huán)境,很多人到豆瓣辦公室去過一次,用一句話說你們環(huán)境真是不太一樣,很開放。另外現(xiàn)在我們選擇在798,相信很多人去 過,798都是大廠房,科工委保密機構,甚至于之前我們租辦公室是在中間再加一層,豆瓣去了以后把那些都給拆了,我們鼓勵大家交流,討論,所有桌子是沒有隔板統(tǒng)統(tǒng)在一起,現(xiàn)在擠了一點,我們又租了一個。


我們說軟件環(huán)境,我們希望開發(fā)工程師最重要是替產品經理把事做成了,做好上線了,我們希望其他雜物能替他多節(jié)省一些時間,豆瓣集中一個例子,看 到把當前代碼直接數(shù)據(jù)庫初始化,一鍵式工作環(huán)境,希望把這個東西做成盡量簡化,這個相對來說還是算比較快。還有一些已經配制好開發(fā)虛擬機,不管你在哪,辦公室家里面聯(lián)上就可以了。


說了各式各樣的東西,其中提到一點盡量少限制,盡量不做一些行政方面強制的東西,比如說有了測試代碼,是不是要有一個代碼覆蓋率,這個很多時候 會成為你工作一個指標,如果達不到80%,在豆瓣我們盡量不會做這種限制,我們更多是給一些建議,你這樣做會比較好,但是你也有其他選擇,如果有其他選擇溝通一 下,確實好我們就讓你做,這是一個我們高效很重要原因,如果你把所有事情限制死了,大家在一個框框里面工作就沒有什么創(chuàng)新可言了,行政限制里面有時候也是 必須做一些的,比如說要求寫單元測試,我們不要求測試的覆蓋率。


還有一點就是我們盡量鼓勵中產生一些明星出來,不像影視明星閃閃發(fā)光,開發(fā)部門出來一個牛 人,做了一個特別牛的事在開發(fā)部門都是一個明星,跟影星等級是差不多,我們更崇拜這種明星,明星有示范作用,做出一個好東西,這個人做得太好了,同樣工作 用了一天搞定了,他做出來的分布式數(shù)據(jù)庫用起來太方便了,通過他的示范效應會把這些好東西向所有團隊推廣,出這么一個人所有人都會拿來用,去學習,但是要 考慮到團隊里面有各式各樣人,性格是不一樣的,有的人特別喜歡造新東西,搞一些前人沒有做過的東西,有愛研究新技術,語言增加一個新特性,用在我們網站上特別好等等,還有有潔癖的,我也是我還跑來搞Qa,有潔癖就打發(fā)他去做Qa或者做單元測試。


這個里面還有一種是任勞任怨,默默工作,起得比雞早,大家都知道了,這種老黃牛精神人本身性格不愿意做明星,這種人我覺得必須要加以鼓勵的,可 以通過跟大家在某些時候跟大家肯定他,讓團隊人知道他這樣做法給我們帶來什么好處。每個都有自己角色,位置我相信每個人只要充分發(fā)揮他最擅長的東西,讓他做自己最感興趣的東西就能夠把事做好,像自己獨立做事情的人,對那個東西特別捉迷就能做好,很不感興趣這個事就給你撂挑子了,干也干不好。說了一大堆讓員工給我們奉獻,員工自己也是有需要,豆瓣我們希望做各式各樣事情讓大家能夠每個人都成長提高
我們做代碼復審等是一種技術標準, 另外我們有一些團隊內活動今天這位同學讀了一本書,看到有一個東西特別好,我們到會議室聊一會兒,團隊合作把團隊之間知識進行交流,我們也有一些培訓,開發(fā)部門,測試部門,我有一些知識可能大家了解不清楚,可以給大家講一講,大家一塊來探討一下,另外我們每個月允許員工購書,世面什么書特別好豆瓣沒有我們可以幫你買,看完了可以講一講,還有一個活動就是Happy Day,設計一個游戲大家一起來玩,推廣單元測試知識我們設置了一個,是一個真的游戲,有一個小游戲關于一個人配一把劍、盾,今天創(chuàng)新互聯(lián)要做的事大家都知道 a組上來以后寫單元測試,B組實踐這個單元測試,下面C組寫一個單元測試披露前面人的問題,形成挑戰(zhàn)賽,這是非常好的推廣方法,但是這個過程中一定要跟其他團隊合作協(xié)調一下,產品部門說又拉出去,一個月搞很多次,要處理好大家之間的關系。


前面所有東西都是圍繞著一點,人是最寶貴的,人來的以后不要玩命用,不要老加班,要更好的一個環(huán)境,更能激發(fā)他們環(huán)境做,這個實際上可以參考一 下自己,我相信大家都是開發(fā)出身的,自己開發(fā)過程中曾經覺得壓力很大的時候有哪些事是你不能接受,有哪些如果那樣做肯定我會工作更舒服這些事情是我們在團隊里面要時刻注意,我們要善待自己,善待員工,自己不愿意做的事情,也不要強加到員工身上。

分享標題:豆瓣網Qa主管解彥博演講實錄:好鋼用在刀刃上
分享路徑:http://www.bm7419.com/news35/131335.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供品牌網站建設、網站排名網站策劃、企業(yè)網站制作、建站公司、外貿網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司