2021-10-15 分類: 網站建設
開發過程,這個事我也沒有真正研究過,我想英國維基百科上,我看了一大廢話,軟件開發過程是開發軟件的過程,我找了中文的說軟件開發是根據用戶 要求建 造出軟件產品開發的過程, 這兩個哪個好一點豆瓣開發是在有限人力資源下按照網站需要開發的過程,豆瓣一直到現在雖然我們也出了一些手持設備應用,但是從基本上所有應用都需要聯在 網上,還是一個互聯網公司。互聯網公司最重要一個特制是快,需求變化也快,上線也快,產品經理天天追你,工程完成沒有,今天能不能上,但是豆瓣有另外一個問題,我們人員相對比較少,是因為我們經營一些技術還有說我們一些想法理念,在后面會談到。
所以,我們總結了一下,我認為這個豆瓣開發部門文化,創業團隊的文化我覺得有兩點特別重要,所以我想分享一下一個就是效率,我們非常堅持效率, 不管是工作效率還是開發效率,這個是非常重要的,因為會直接影響到你的效率。另外是團隊熱忱,創業團隊,開發一個東西的時候什么時候是最有效率,什么時候產出率 生產出來代碼好,自己一個人有一個特別好的點子剛想出來熬夜做出來,這個時候你的工作效率是特別高的,最后豆瓣反映在創業團隊里面就是熱情,如果沒有熱情不能一直非常高效的開發工作。
說到效率豆瓣有一些經驗是非典型的,比如說第一個我們選擇用python這個語言,愿意就是大蟒蛇,這個高級語言對我們來說其實是有利有弊,首 先它的語法是類函數式編成混合,很符合開發人員胃口,想這樣做就這樣做,那樣做就那樣做,兩個都支持,都可以考慮,另外是腳本語言,騰訊說到上線過程中要有專門 服務器,我們不需要對準服務器,我們是腳本上去以后我們就可以直接跑了,但是也有一些弊端,是高級語言是動態化,帶來一些非常難解決的問題,在運營過程中 某些問題才能體現出來,我們發現已經非常常見問題,循環進入,但是當你代碼規模越來越大的時候,之間交互關系特別復雜,一旦沒有控制好模塊,我引用你,你 引用我,跑的時候邏輯不是這么簡單,涉及三四個模塊,人沒有發現這個循環,上線跑程序直接就不行了,這個是很要命的,我們也做了一些工作,還沒有解決這個也是我們需要解決的問題。中國有一個很活躍的python圈子,python語言用于web是非常好的選擇。
說一些實際例子我們看一看實際怎么用的,這里面一個任務是一個交互式直行頁面,python非常大的優勢是可以交互式執行,在交互式可以直接用 一條,這個文件前面出現第一個提示符做了一大堆工作,把所有豆瓣網站代碼都已經啟動起來,可以無縫調用代碼,做一些調試,運維工作特別重要,因為有些工作比如說 我把某一個有問題緩存清理掉,有一個人什么東西丟了,我查一下看看具體后臺數據有沒有,這些工作是用代碼里面的某一行調一下就知道了,這個東西節省我們大量時間。
MC是我們內部用的一個訪問緩存系統標準接口,后面可以把這個頁面取出來,這里面也涉及到python另外一個優點,高級語言優勢在這兒顯示出 來。另外一個節省時間python是一個非常有歷史語言,出現時間跟Java是一樣,這些年發展過程中有第三方人寫一些非常好的代碼功能,我們是可以直接拿出來 用,這個是豆瓣代碼里面截取出來,上面三行PL是美國一家公司開發處理圖象的一個軟件包,我把某個圖片調一下透明度,下面可以給某個圖片加上一個水印,這兩個簡單功能有這些第三方工具支持下可以很容易的寫出來了。
另外一個非常重要的高效率的方式我認為也是創業公司,并不是說特別注重我們現在每個團隊都是創業團隊,我們做任何事情并不是說把這個東西限制 死,我現在上線系統啟動起來,有一個專門做這個上線事,我們發布一個上線流程,最后大家都來批單子,豆瓣是說有需要上線事物過來跟我說,我們相信內部溝通比煩瑣過 程更有效,尤其是豆瓣人數并不多的情況下,我不是攻擊其他大公司,我相信人數到一定數量的時候有一些必要的流程是要走的。看一下開發流程,對于一個開發者 來說基本上這些東西都是每天每個星期都要接觸的,要做一個事情,今天我要給圖書頻道加一個新功能,程序員把程序主干搞出一份作為分支,生出一個新的小芽, 這樣的話,不管我提交跟其他代碼不影響,剩下就是開發,改程序提交,測試,甚至把其他人拉過來,工程師有沒有時間幫我測一側,這些事都做完以后,剩下最沒技術含量上線工作。
但是這個開發流程并不是唯一的流程,我們流程隨時是可以拿掉的,可以看一下這個,作為一個很常見情況要預測所有事情有可能出問題,包括硬盤我們 覺得用幾年沒有問題,到機房一百臺機器基本上每天都有硬盤壞,比如說緊急上線我出問題,導致上線上人完全不可用,用了以后會有各式各樣的問題,這種時候要緊急上 線,出了一個問題趕緊修,兩分鐘修完了,大家看看修的有沒有問題,沒有問題,馬上幫你上這個就是過程,可以說一個例子,星期五有一次緊急上線,這次上線是 四分鐘,發現問題,到修改,最后所有都完畢,這個能力是非常重要的,因為作為一個互聯網公司我們保留一個傳統,帶來一個問題不可能把所有大的都在前期解決 掉,因為現在要維護產品也是非常多的,在所有這些每天都會有代碼提交情況下,要保障完全覆蓋兩個測試中心每個公司都做不到,我們允許出現問題,所以上線的時候大家要在那盯著,一出問題上線工程師直接把上線過程暫停,誰誰出問題了趕緊修,這個是非常好的辦法,如果我沒計錯是從Facebook學來的。
把上線流程詳細說一下,實際上后面還是有正常環節下還是有很多工作要做,比如說開發以后首先代碼要復審,在開發過程中每天團隊要看看這個代碼怎 么樣,復審過程中圖片上看到一大堆人對你的代碼指指劃劃,團隊復審是促進團隊交流系統越來越大,里面架構,各種需要注意的地方越來越多,這個事情并不是每個人都 能意識到,尤其是對于新加入豆瓣的員工,通過代碼復審,尤其是新員工入職前保證基礎開發知識,代碼規范在團隊內進行良好溝通,包括團隊內部也是每個人做不同事情,做這個產品我之前沒有接觸,如果沒有代碼復審團隊內部交流,雖然在同一個團隊工作對某一些代碼是不清楚的。
測試在豆瓣也有非典型,測試這個活由開發測試時工程師共同復雜,單元測試,web測試,所有這些東西開發工程師必須了解,學習,必須使用,這個 過程中為了提過效率有一些自動化系統幫助工程師做這個事情。一個最重要目的就是說測試并不是由軟件質量代碼質量并不是由測試工程師決定,這個工程師起到事后彌補 作用,代碼質量源頭是開發工程師,沒有對測試美的追求的話,可能寫不出好的代碼,應付一下今天要上,趕緊拷貝粘貼。所以我們希望每個人都有質量意識,有了 前面這些東西以后,對于豆瓣來說工具是一個很大程度提高工作效率一種手段,工具包括很多方面,豆瓣我們可以看一下這幾個例子,交互式執行,有些東西是不適 合我們做,有些東西雖然不是上線給用戶用,但是也是一長段代碼,tools有大量上百個腳本是以往留下來,這些腳本實際上我認為凝結前人一些智慧知識,比 如說我下來要發一些信,考慮我從頭寫,學習一下豆瓣內部怎么發郵件,有了tools有人會告訴新員工不用,搜一下,搜一下就可以發現很多版本,每個代碼是經過很多人驗證的,在線上運行很久是經過實踐的經驗。
下面是有一些截圖,是做代碼靜態掃描,很多毛病只有真的跑起來才知道,但是軟件寫到后面分支那么多沒有辦法在測試的時候把所有分支再跑一次,需 要掃描所有原代碼元件,包括這里面顯示,有一個自己擴展能力,寫了一些豆瓣自己掃描代碼的小工具放進去,掃描話段引用,發現三個元件可能有問題,這行代碼要用某一個函數處理一下,這個可以提醒開發者有一些隱患,這個里面已經包含一些問題,寫的時候不用說自己要去跑來跑去的,把所有東西都折騰一次。錯誤日志是web公司強項,所有錯誤都在自己的服務器上,但是有產生另外一個問題,同樣分布在很多機器上,可能尤其是有運維人員維護并不是每臺服務器都能上去,我們 開發了這樣一個工具,目的把所有出現錯誤日志抓下來,會把每一個當時出錯現場涉及每行代碼留下來,把每個當時涉及變量值保留下來,包括用戶當時訪問這個的 時候帶著各式各樣變量之類的,讓我們的程序員可以專注于說在一個地方發現所有問題,比如說我上線了,代碼上線出沒出錯,首先要高優先級錯誤,我刷半個小時 發現沒有錯誤,可能出新一兩個其他的東西,看一看,是我還是其他人,出去是其他人可以通知他一下,讓程序員調試里面解脫了,包括出錯怎么回事,點開可以看到當時出錯用戶請求傳過來的東西,大多數時候可以改程序不用做本地環境復建等等。
另外我們也需要一些提高網站效率的工具,豆瓣資源少不光指人,包括我們服務器也很少,所以服務器上面程序執行效率對我們來說意義很重大,可以幫 我們省很多錢,我們很早的時候做了一個工具,可以在線跑,刷一個頁面,底層有哪些語句,運行情況怎么樣,哪些是熱點,執行特別多,花費時間特別長等等之類的,這個是對我們非常有效率的工具,用了這個工具以后平均訪問時間保持在一個比較小的范圍之內。
這些工具還是需要人去執行。我們希望這個工具讓計算機自動做,我們可以做更多事了,最簡單web測試,我們把它框架建設起來,也建立起來自動化 的方式,之前程序員一個一個測試,跟我們報表結合起來,只有在程序員做完以后提交,提交以后程序自動考,沒有消息就是好消息,沒有收到郵件說明你的代碼很好已經通過了,如果收到郵件就要趕緊修,所有后面人也會收到同樣報告,這里面只有功能失效才會發警告信。
說了這么多東西,但是我覺得最核心一個,也是對豆瓣來說保持開發團隊創造力的一個很重要方面,就是我們給大家提供很靈活選擇空間,回想一下現象 獨立開發,創業團隊高效率原因,一心鋪到上面去,他做的是一個全新前人沒有做過的事情,因為沒有前人經驗,所以從用戶角度對這個東西做設想,分析所有里面利益, 他會選擇一個最好的方案去做,這個過程中如果沒有這些東西只給他限定一條路線,你只能用python就不好玩了,我們希望程序員有一個更靈活選擇空間,希望團隊能夠不斷接觸新的機制,技術,把這些技術應用到豆瓣開發里面來。
我們有一些基礎的設施,就是通過這種方式逐漸實現起來的,比如說我們有一個分布式數據庫方案,我們內部也做了一些其他東西,這個東西接口非常簡 單,只有放進去,取出來,刪除就這么幾個操作,有了這樣基礎設施開發者有省事了,這個時提高效率非常重要的方面。包括前面說的我們可以自由選擇設計方案,這個自 由也是有限度我們公司也有架構師,我們會一起討論這個新項目打算怎么做,選擇這個東西跟現有有什么好處,所有東西都是在大家廣泛溝通之下達成共識,比如說 豆瓣有一些項目是用django做的,還有一些其他的,類似的也有,我們開發方式,豆瓣是一個非典型,用了一個python,但是python也不是必選 項,有用C的,有一個算法R,這些東西也都有,通過給大家更好的選擇空間我們希望避免我們內部架構,技術僵化,希望提供一個更像創業團隊自由用最好的方式把這個事做起來。
我們相信所有這些我們自己都做完了,如果大家團隊死氣沉沉,干活沒有什么興趣,我想這個公司不用創業,直接就可以倒閉,我們非常強調工作熱情, 里面人,環境成長這些都是非常重要的因素,我們的員工都是平等的,開發部門,技術主管,我們架構師,我們所有運維,我們開發等等所有人都是可以開發的,而且直 到今天大家也還在做開發工作,我們希望通過這個東西可以讓大家能夠感受到我們真的是一個團隊,我們討論問題的時候也不會說像一個領導,大家都懂技術大家可 以進行真正溝通,選擇我們用什么東西,所以我覺得工作熱情一個員工是肯定不行的,引用一下Facebook前工程總監一句話,他說永遠將招聘作為你的第 一要務。
當然豆瓣雖然沒有把它作為這么嚴格的重要一點,但是豆瓣來說實際上招聘也已經相當于我們第一要務,我們對于招人非常謹慎,幾年時間下來我們人數 并不是增長特別快,我們招人有很多要求,當然這個要求并不是要求你有這個能力,那個能力,我們覺得最后最重要一關就是前面說的,我們要保持工作團隊熱情, 所以你這個人不管你再牛,要能跟團隊和諧工作,大家在一塊做得很好,不能說我能力很高,我來了以后就看其他人不順眼這個團隊就完蛋了,所以我們招聘工作會 邀請所有招聘員工團隊甚至于跟這個團隊跟他可能會產生合作的人都來面試一下,確認這個人是符合豆瓣,適合豆瓣,我有一個課題放在這兒,可以用非常好的辦法實現,可以用一個團隊成員能夠接受方式做創新這個是非常重要的事。
還有一個很重要工作環境,很多人到豆瓣辦公室去過一次,用一句話說你們環境真是不太一樣,很開放。另外現在我們選擇在798,相信很多人去 過,798都是大廠房,科工委保密機構,甚至于之前我們租辦公室是在中間再加一層,豆瓣去了以后把那些都給拆了,我們鼓勵大家交流,討論,所有桌子是沒有隔板統統在一起,現在擠了一點,我們又租了一個。
我們說軟件環境,我們希望開發工程師最重要是替產品經理把事做成了,做好上線了,我們希望其他雜物能替他多節省一些時間,豆瓣集中一個例子,看 到把當前代碼直接數據庫初始化,一鍵式工作環境,希望把這個東西做成盡量簡化,這個相對來說還是算比較快。還有一些已經配制好開發虛擬機,不管你在哪,辦公室家里面聯上就可以了。
說了各式各樣的東西,其中提到一點盡量少限制,盡量不做一些行政方面強制的東西,比如說有了測試代碼,是不是要有一個代碼覆蓋率,這個很多時候 會成為你工作一個指標,如果達不到80%,在豆瓣我們盡量不會做這種限制,我們更多是給一些建議,你這樣做會比較好,但是你也有其他選擇,如果有其他選擇溝通一 下,確實好我們就讓你做,這是一個我們高效很重要原因,如果你把所有事情限制死了,大家在一個框框里面工作就沒有什么創新可言了,行政限制里面有時候也是 必須做一些的,比如說要求寫單元測試,我們不要求測試的覆蓋率。
還有一點就是我們盡量鼓勵中產生一些明星出來,不像影視明星閃閃發光,開發部門出來一個牛 人,做了一個特別牛的事在開發部門都是一個明星,跟影星等級是差不多,我們更崇拜這種明星,明星有示范作用,做出一個好東西,這個人做得太好了,同樣工作 用了一天搞定了,他做出來的分布式數據庫用起來太方便了,通過他的示范效應會把這些好東西向所有團隊推廣,出這么一個人所有人都會拿來用,去學習,但是要 考慮到團隊里面有各式各樣人,性格是不一樣的,有的人特別喜歡造新東西,搞一些前人沒有做過的東西,有愛研究新技術,語言增加一個新特性,用在我們網站上特別好等等,還有有潔癖的,我也是我還跑來搞Qa,有潔癖就打發他去做Qa或者做單元測試。
這個里面還有一種是任勞任怨,默默工作,起得比雞早,大家都知道了,這種老黃牛精神人本身性格不愿意做明星,這種人我覺得必須要加以鼓勵的,可 以通過跟大家在某些時候跟大家肯定他,讓團隊人知道他這樣做法給我們帶來什么好處。每個都有自己角色,位置我相信每個人只要充分發揮他最擅長的東西,讓他做自己最感興趣的東西就能夠把事做好,像自己獨立做事情的人,對那個東西特別捉迷就能做好,很不感興趣這個事就給你撂挑子了,干也干不好。說了一大堆讓員工給我們奉獻,員工自己也是有需要,豆瓣我們希望做各式各樣事情讓大家能夠每個人都成長提高
我們做代碼復審等是一種技術標準, 另外我們有一些團隊內活動今天這位同學讀了一本書,看到有一個東西特別好,我們到會議室聊一會兒,團隊合作把團隊之間知識進行交流,我們也有一些培訓,開發部門,測試部門,我有一些知識可能大家了解不清楚,可以給大家講一講,大家一塊來探討一下,另外我們每個月允許員工購書,世面什么書特別好豆瓣沒有我們可以幫你買,看完了可以講一講,還有一個活動就是Happy Day,設計一個游戲大家一起來玩,推廣單元測試知識我們設置了一個,是一個真的游戲,有一個小游戲關于一個人配一把劍、盾,今天創新互聯要做的事大家都知道 a組上來以后寫單元測試,B組實踐這個單元測試,下面C組寫一個單元測試披露前面人的問題,形成挑戰賽,這是非常好的推廣方法,但是這個過程中一定要跟其他團隊合作協調一下,產品部門說又拉出去,一個月搞很多次,要處理好大家之間的關系。
前面所有東西都是圍繞著一點,人是最寶貴的,人來的以后不要玩命用,不要老加班,要更好的一個環境,更能激發他們環境做,這個實際上可以參考一 下自己,我相信大家都是開發出身的,自己開發過程中曾經覺得壓力很大的時候有哪些事是你不能接受,有哪些如果那樣做肯定我會工作更舒服這些事情是我們在團隊里面要時刻注意,我們要善待自己,善待員工,自己不愿意做的事情,也不要強加到員工身上。
分享標題:豆瓣網Qa主管解彥博演講實錄:好鋼用在刀刃上
分享路徑:http://m.newbst.com/news35/131335.html
成都網站建設公司_創新互聯,為您提供品牌網站建設、網站排名、網站策劃、企業網站制作、建站公司、外貿網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
猜你還喜歡下面的內容