胡陽 前搜狐資深開發工程師,現任知乎資深開發工程師前端
2008年開始,他寫博客11年了。僅最近兩年內,博客的訪問量累計超過600萬。程序員
2017年,他發佈了《Django企業開發實戰》視頻課,廣受學員好評。2019年,實體書出版。數據庫
「時間在我看來並非虛無的,是很是具體的東西,一分一分,一秒一秒,都很具體。」——胡陽編程
胡陽說,他是「笨鳥先飛」的那種人。後端
高考後,胡陽第一志願報的是機械工程專業,他查了下專業背景,須要繪圖,因而就開始在家自學。安全
不過這番準備沒派上用場,由於報考結果出來後,他的專業是信息計算科學。restful
他想起高中發過一本 Visual Basic 的教材,但由於高考複習緊張,沒時間上機。因而,在等待大學入學的這段時間,他把書翻了出來開始研究。網絡
入學後,他發現 VB 是大學的基礎課,上課教的居然就是暑假本身學的內容。全校不管什麼專業的人都在學,而當其餘同窗上機仍是一臉懵的時候,他已經會寫了。antd
胡陽說:「咱們爲何會對一件事情感興趣?一種狀況是你對這件事情真的有天分,一開始上手就比別人學得快。另一種是你比別人起跑要快。」框架
成就感激起了他的興趣。除了 VB 以外,互聯網有無數的未知在引人探索。
爲何電腦運行得慢?什麼是中病毒?所謂的「黑客」怎麼入侵網站?懷着好奇,大一那年,他把課餘時間大多花在學習研究網絡安全上。
他在網上能找到不少黑客類的教程,好比演示怎麼去入侵一個網站。可是怎麼去實踐呢?這類教程的時效性過高,網站不會敞開門在那等着。
固然,方法也是有的。那時就有 X-scan 掃描器、挖掘雞這類傻瓜式工具,只要填一個網址,它會幫你掃描有什麼漏洞。
但問題是,這不太有趣,就算黑進網站了也只能說明是人家這個工具寫得好。
因而,胡陽的興趣轉向了加密與解密的方向,與脫殼相關的內容。當時仍是桌面 APP 的時代,下載以後就能夠很方便地實驗,不少方法他試事後,發現徹底可行,這給了他信心。
不過,軟件終究是程序員寫出來的,胡陽以爲本身仍是得去學編程。
恰在這時,學校有一個信息技術興趣提升班來招生,他想:那就去試試吧。這個決定徹底改變了他接下來兩年的大學生活。
米老師一手創立了興趣提升班,他不只一我的教全部的計算機基礎課,並且引導你們探索性地學習,相比於照本宣科,他更在乎的是啓發你們從不同的角度看問題。
胡陽說:「你會感受整個視野被打開了。」
在興趣提升班,你們由於一樣的熱情彙集在一塊兒,甚至寒暑假也留在學校。這兩年,時間和汗水爲他打下了堅實的地基。
畢業時,在其餘人在就業市場中迷茫的時候,他已經去了師兄的公司搞開發。他說:「這個行業可以讓你以本身的方式去作有價值的東西。由於開發一個軟件須要依賴的外部成本很低,只須要有一臺電腦就能搞定。對我來講比較幸運的是,這個事恰好是我感興趣的,而且能夠有不錯的收入,可以養家餬口。」
2011年,他從 Java 轉到 Python 開發。
HR 問他:你學了多久 Python 並能正式工做?他回答:「一兩天。」
他在回答裏推薦了3本書,還有本身作過的項目練習代碼。
爲何會選擇作出這樣的改變呢?
那時,胡陽纔剛畢業不久。工做後,他發現公司會接各類項目,好比Java、.NET、PHP、VB,哪一個方向他都沒辦法去深刻地學習。他想給本身定一個計劃,殊不知道怎麼作,前路一片迷茫。
展轉反側了幾個月後,他決定辭職。
那一年,他在博客中寫道:「我選擇走軟件這條路,不是爲了一份工做,是從純對技術的熱愛出發的。或許我尚未那麼多的人生經歷,不瞭解生活的本質。可是我一直在告訴本身,有些事,你要是想作的話,即使不知道是否是和你想的同樣,那你應該去作,由於這樣你纔可以看得更多。」
一年後,他加入了搜狐。
他說:「在搜狐六年的時間,至關於又上了一個大學了。」
第一年,他天天都在拼命學習。他說,雖然以前有了一年的工做經驗,但仍是以爲本身什麼都不知道。
這樣的狀態持續了一段時間後,他的學習曲線逐漸平緩。不過很快,他又面臨了全新的挑戰。
部門變更對於一名普通員工意味着什麼?有人只能被挑選,也有人擁有更多的選擇權。由於在部門變更或業務擴展後,總會有一些機會出現。那些作得好的人,這時會浮現出來,他會被提拔到更高的位置,帶團隊負責更大、更多的業務。
因此,胡陽發現,攻克了業務和技術以後,他得帶團隊了。
一開始,他沒有多想,只是用以前老大的方法來帶你們。不過,管理會分散精力,在業務膨脹以後,甚至面對全新業務的時候,他有點手忙腳亂了。
因而,他開始思考:技術人應該怎麼作管理呢?
新手管理者的痛苦在於,他會糾結:「這哥們怎麼寫得這麼慢?我寫早就寫完了。」
不過,他發現本身能夠換個角度想問題:「把這件事情交給他,就等於你已經作了。爲何呢?至關於你原本是一個單核的 CPU,變成多核了,對吧?你能夠同時接多個任務,雖然其中一個跑得比較慢,可是其餘的都運轉得很是快,因此總體你的產出仍是足夠高的。何況他也會成長,會不斷變快的。」
他總結,本質上 leader 要思考的是團隊總體,從而不斷地把這個項目的 feature 往前推動。
不過,管理的確會消耗精力,他沒有足夠時間持續地輸出或輸入代碼,也不能具體負責某個項目的開發,但會寫一些「打雜的」代碼,解決出現的小問題。
他說,本身會在業餘時間學習,保持對技術的感受或者敏銳性。
搜狐媒體大廈
胡陽進搜狐的初衷很簡單,就是想找一個流量大的平臺,參與作一個好產品。
從他剛加入時,搜狐就是一家成熟的公司,擁有成熟的系統。他從慢慢熟悉新聞業務開始,維護了它大概六年的時間。
2018年,在搜狐的最後一年,他其實有點沮喪。
尤爲是參與團隊管理以後,他對公司變革的意義有了更深的體會。「你發如今部門變更或者商業調整以後,技術的價值其實沒有那麼大。就是說,你能夠把這件事作好,可是若是換一我的來作,哪怕作得不是很好,結果也沒有太大差異。」
對於技術人來講,最大的否認莫過於此。
但是,怎樣才能最大程度地發揮他技術的價值呢?
他想要參與一個本身喜歡的產品的構建。這也是他選擇加入知乎的緣由。
他不太愛看新聞。他認爲,對於新聞這種高流量產品,雖然也存在一些正經的報道,但更可能是所謂的「標題黨」,不管標題再誘人,它的信息對你毫無用處。而知乎成立不久他就註冊了帳號,他以爲,你們貢獻的內容更偏知識和經驗,對用戶來講更有價值。
因而,他登上了知乎這艘「海盜船」。
來到知乎,他的第一感受是:這個地方後端真多。
由於和以前相比,搜狐門戶是媒體屬性,把新聞發佈出來,你們去看,流程就結束了。而知乎是一個 UGC(用戶原創內容)的社區平臺,全部人都是可參與的,業務更加複雜,儘管功能整合在一個社區裏面,但下面細分的內容都是獨立的產品。並且你們常常在羣裏交流,技術氛圍很是濃。
他以爲上家公司像一個大的船羣,你們朝着共同的目標各自前進。而如今的則像一艘大船,你們一塊兒讓船駛向共同的目標。
從 2008 年開始,胡陽已經寫博客 11 年了。
博客內容不只包括技術,還有他的讀書筆記、對某事的感想、找工做的歷程、年度總結,等等,像是一條河流,沿着過去流淌到如今,一路的景色清晰可見。
他前幾年有一個習慣,看到一個好博客的時候,會從頭開始把全部內容看一遍。除了看內容,他還會揣測做者當時是什麼狀態、想法、這我的的成長過程是怎樣的。這是他會堅持寫博客的一個緣由,把本身的經歷共享給你們也是某種意義上的開源。
2017 年,搜狐部門變更,上層戰略都在調整,他手上的事情停了,時間忽然空了出來。他想:畢竟工做時間也挺長,在搜狐已經呆了五年,他但願能有一些具體的東西留下來。
「爲何這麼講?好比說我有不少同事換公司以後,就再也不用 Python 了。不管他以前的經驗有多少,只對他本身來講是有價值的。由於有這些經驗,他能夠快速地去適應另外一種新的技術。
「當你跟他共事,你會發現,原來他懂這麼多。而他轉行了以後,其餘人可能也有一樣的感受,可是確定不如你也用 Python 時的這種體驗更直接。這在必定程度上是一種浪費。
「但若是他把經驗變成書或者視頻,哪怕以後真的不作這個語言,或者不作這個行業了,它對別人仍是有幫助的,由於這是沉澱下來的東西。」
另外一方面,這樣也有助於技術的學習。
他說:「怎樣學技術才能作到又快又好呢?一是帶着問題去學習。好比你遇到一個 bug,怎麼都搞定不了,恰好有一本書能解決,那你確定會特別投入地把書看完。另一種就是我經常使用的方式——以教代學。」
既有輸入,又有輸出,中間就是大腦在提煉總結,理解吸取。
那年,他作了《Django企業開發實戰》的視頻課,學員的反饋很好。後來,他把內容進一步細化完善,整理成了紙質書,2019 年初在圖靈出版。
Django是基於MVC(model,template,views)構造的開源Web開發框架,能夠顯著提升工做效率。 胡陽舉了個具體的例子:「若是用Tornado框架寫一個新feature,我須要先把數據庫設計好,以後寫model層增刪改查的部分,寫controler層數據整合的部分,再寫HTTP層接口部分,而後用阿里開源的antd去寫前端。不管你的feature有多簡單,這套都要走完,很繁瑣。
「而用Django的話就會簡單不少。由於Django是基於model構建的,把模型設計好數據庫就有了,而後再配置一下admin,頁面就已經有了。按照先後端分離的邏輯,你只須要配一個Django REST framework,全部restful 接口就有了。而後你根據model寫rest framework的配置,就基本上已經完善了,剩下只要花時間寫前端邏輯就行了。因此它是生產工具,能極大地提升生產力。」
「時間在我看來並非虛無的,是很是具體的東西,一分一分,一秒一秒,都很具體。」
有多少人會執着地記錄本身十年的變遷呢?有人以爲這毫無心義,由於過去發生的已經消散。
但這是關於一我的的歷史。咱們沒法想象一個只凝固於如今的,沒有歷史的國家;而若是一我的走在一步一消散的臺階上,也沒法判斷本身是向前,在原地,仍是在倒退。
除此以外,胡陽也更明白本身時間的定義。
「你看老大爺大媽,滿頭白髮,在街邊走路,你知道你之後也會是這個樣子,這是不可避免的。有時候我以爲人生是一眼能夠望到頭的,每一個人都這麼幾十年的時間。
「對我來講,時間是一個刻度,它也是一個容器。
「若是說它是刻度的話,好比說一個小時,人生實際上是由無數這樣的一個小時組成的,對吧?而說它是容器,是指你能夠填充不一樣的內容。好比咱們每一個小時都在閒扯,這個容器也一樣填滿了。」
它有什麼樣的意義呢?他舉了一個程序員們很熟悉的例子——編程馬拉松(Hackathon)。
「不少科技公司都會按期組織 Hackathon 活動,若是你沒有參與過,你可能體會不到 24 小時內能完成多少任務。當咱們被限制,要把一些內容放到固定的時間容器中,每每咱們會千方百計來達成目標。
「它會有一個倒計時,你看還剩一個小時的時候,還有兩個工做沒作,你嘩嘩譁就開始寫,這時候效率會很是高。
「因此你參加完 Hackathon 就會知道,24 個小時,每一個小時你能作到什麼。
「不少剛入行的程序員,他們估算時間的單位都是一天或半天,有時候說‘OK這個需求我排一下’,可能就排到兩週。你們早上起來往這一坐,就11點了,還沒進入狀態,中午該吃飯了。而後下午2點睡醒以後,把上午沒作的事情再作一下。
「說到時間管理,其實最關鍵的就是:你真正的單位時間是什麼?
「一樣是一個小時的單位,你能完成多少事,能往時間容器裏填充多少東西,在你放 10% 的精力和 100% 的精力的時候是不同的,後者纔是真正的單位時間。只是不少人會有意無心地忽視。」
如何作到這一點呢?胡陽說,祕訣就在於「狀態的切換」。萬事開頭難,因此關鍵的是先把本身切換到那個狀態裏面。
舉個實際的例子,他分享了本身寫博客時的經驗。「平時工做比較忙的時候,其實回家是不想寫東西的。你往那一坐,不想再對着電腦輸出,由於太累了。
「這時候的解決方案,就是你先隨便寫個開頭。而後,當你繼續寫完一段以後,會以爲本身寫得很差,這時你已經在這個狀態裏面了。那就再去寫一些好的東西出來,最後把開頭刪掉,或者把開頭再從新寫一遍。」
不管是大學時的「笨鳥先飛」、職場上作的選擇,以及這些年不斷地學習和分享,驅動他的馬達是什麼? 胡陽說:「其實我自制力沒那麼好,特別累的時候,也不太想作比較消耗大腦精力的事。
「可是我不太能接受長時間去作一樣的事情,或者說我長時間沒有信息攝入,我會以爲特別可怕,以爲特別枯燥。
「因此我不管是寫博客,去看技術或者其餘書,我實際上是在不斷地瞭解新的東西。由於,本質上我會特別懼怕,我始終在重複一件事情。」
他盡心盡力,一心探尋本身的極限,永不停息地向前,時間會給全部付出一個完美的答案。
文:李冰
採訪:樂馨,李冰
圖片來源:胡陽
Django企業開發實戰 做者:胡陽
掃一掃京東購
資深開發工程師the5fire多年開發經驗總結
本書以從零開發一個博客系統爲例,介紹Django在平常工做中的應用。