溝通創(chuàng)造價值酥艳,分享帶來快樂摊溶。這里是程序員周刊,歡迎您每周五和我一起做時間的朋友充石。
當程序員冰墩墩脫掉帽子
并不是社會不尊重程序員更扁,只要你能幫上大忙,就一定會贏得別人的尊重。所以浓镜,開玩笑說溃列,我們可能都是在寫一樣的 for 語句,但是膛薛,你寫在那個地方一文不值听隐,而我寫在這個地方,這行代碼就值 2000 元哄啄。
大咖思維
本期繼續(xù)和大家分享陳浩關于未來技術發(fā)展的趨勢,因為是個人最近一直在追他的文章咨跌,干貨非常多沪么,大家不妨體驗看是否有道理。
一個技術能不能發(fā)展起來锌半,關鍵還要看三點:
1禽车、一個比較好的技術社區(qū):像 C、C++刊殉、Java殉摔、Python 和 JS 生態(tài)圈都是非常豐富和火爆。
2记焊、一個工業(yè)化的標準:像 C逸月、C++、Java 這些編程語言都是有標準化組織的遍膜。尤其是 Java碗硬,它在架構上還搞出了像 J2EE 這樣的企業(yè)級標準。
3瓢颅、一個或多個殺手級應用:C肛响、C++ 和 Java 的殺手級應用不用多說了,就算是對于 PHP 這樣還不能算是一個優(yōu)秀的編程語言來說惜索,因為是 Linux 時代的第一個殺手級解決方案 LAMP 中的關鍵技術特笋,所以,也發(fā)展起來了巾兆。
上面三點至關重要猎物,新的技術只需要占到其中一到兩點就已經(jīng)很不錯了,何況有的技術角塑,比如 Java 三點全都滿足蔫磨,所以,Java 蓬勃發(fā)展也在情理之中圃伶。
用這些標尺來衡量一下 Go 語言:
Go 語言容易上手堤如;
Go 語言解決了并發(fā)編程和底層應用開發(fā)效率的痛點蒲列;
Go 語言有 Google 這個世界一流的技術公司在后面;
Go 語言的殺手級應用是 Docker 容器搀罢,而容器的生態(tài)圈這幾年可謂是發(fā)展繁榮蝗岖,也是熱點領域。
最后陳浩得到的判斷是:
Go 不可限量榔至,會吞食 C抵赢、C++、Java 的項目唧取,吞噬主要是中間層的項目铅鲤,也就是說,Go 不會吞食底層到 C 和 C++ 那個級別的枫弟,也不會吞食到上層如 Java 業(yè)務層的項目邢享。Go 語言能吞噬的一定是 PaaS 上的項目,比如一些消息緩存中間件淡诗、服務發(fā)現(xiàn)骇塘、服務代理、控制系統(tǒng)袜漩、Agent、日志收集等等湾碎,他們沒有復雜的業(yè)務場景宙攻,也到不了特別底層(如操作系統(tǒng))的軟件項目或工具。
程序員的個人財富
財富的定義遠遠不限于金錢介褥,而是任何有價值座掘,能產(chǎn)生收入的東西,《富爸爸柔滔,窮爸爸》中溢陪,把一個人的財富歸為了下面幾大類:
無需本人到場就可以正常運作的業(yè)務;
股票睛廊;
債券形真;
能夠產(chǎn)生收入的房地產(chǎn);
版稅超全,如音樂咆霜、圖書、專利等嘶朱;
其他任何有價值蛾坯、可產(chǎn)生收入,或者有增值潛力疏遏,并且有很好銷路的東西脉课,比如藝術品救军。
這本書不僅改變了我對“財富”定義的認識,更重要的是讓我明白了這一點:人生在世倘零,最重要的事情不是打工賺工資唱遭,而是積累真正的財富。想清楚這個视事,你才能實現(xiàn)從“打工者思維”到“財富管理者思維”的轉(zhuǎn)變胆萧,才有可能真正走上“財富自由”的道路。
作為一名程序員俐东,我們是比其他職業(yè)的人更幸運的跌穗,因為我們可以積累的財富遠不止上面提到的幾項。這里羅列一下我能想到的財富積累:
Code Review
LinkedIn 的高效代碼審查技巧:(https://thenewstack.io/linkedin-code-review/)
這篇文章介紹了 LinkedIn 內(nèi)部實踐的 Code Review 形式虏辫。具體來說蚌吸,LinkedIn 代碼復查有以下幾個特點。
1砌庄、從 2011 年開始羹唠,強制要求在團隊成員之間做代碼復查。Code Review 帶來的反饋意見讓團隊成員能夠迅速提升自己的技能水平娄昆,這解決了 LinkedIn 各個團隊近年來因迅速擴張帶來的技能不足的問題佩微。
2、通過建立公司范圍 Code Review 工具萌焰,這就可以做跨團隊的 Code Review哺眯。既有利于消除 bug,提升質(zhì)量扒俯,也有利于不同團隊之間的經(jīng)驗互通奶卓。
3、Code Review 的經(jīng)驗作為員工晉升的參考因素之一撼玄。
4夺姑、Code Review 的一個難點是,Reviewer 可能不了解某塊代碼修改的背景和目的掌猛。所以 LinkedIn 要求代碼簽入版本管理系統(tǒng)前盏浙,就對其做清晰的說明,以便復查者了解其目的荔茬,促進 Review 進行只盹。
從Code Review 談如何做技術 | 酷 殼 - CoolShell
這篇文章通過阿里巴巴內(nèi)部因為業(yè)務代碼不做Code Review案例進行的復盤,詳細地講解了為什么要Code Review兔院,Code Review為什么會有問題殖卑,結(jié)合實際情況進行反思,是一篇深度思考的好文坊萝。
本文是我之前對代碼審查的總結(jié)孵稽,分別從為什么要審查许起,審查的困境和爭議,審查的形式菩鲜,審查的對象园细,審查人員,審查對象等維度出發(fā)接校,系統(tǒng)性的學習筆記猛频,希望對你有所啟發(fā)。
編程語言和代碼質(zhì)量
這是一項有趣的研究蛛勉。有四個人從 GitHub 上分析了 728 個項目鹿寻,6300 萬行代碼,近 3 萬個提交人诽凌,150 萬次 commits毡熏,以及 17 種編程語言(如下圖所示),他們想找到編程語言對軟件質(zhì)量的影響侣诵。
然后痢法,他們還對編程語言做了一個分類,想找到不同類型的編程語言的 bug 問題杜顺。如下圖所示:
以及财搁,他們還對這眾多的開源軟件做了個聚類,如下圖:
對 bug 的類型也做了一個聚類躬络,如下圖:
我們來看一下相關的結(jié)果尖奔。
首先,他們得出來的第一個結(jié)果是洗鸵,從查看 bug fix 的 commits 的次數(shù)情況來看越锈,C仗嗦、C++膘滨、Objective-C、PHP 和 Python 中有很多很多的 commits 都是和 bug fix 相關的稀拐,而 Clojure火邓、Haskell、Ruby德撬、Scala 在 bug fix 的 commits 的數(shù)上明顯要少很多铲咨。下圖是各個編程語言的 bug 情況。如果你看到是正數(shù)蜓洪,說明高于平均水平纤勒,如果你看到是負數(shù),則是低于平均水平隆檀。
第二個結(jié)論是摇天,函數(shù)式編程語言的 bug 明顯比大多數(shù)其它語言要好很多粹湃。有隱式類型轉(zhuǎn)換的語言明顯產(chǎn)生的 bug 數(shù)量要比強類型的語言要少很多。函數(shù)式的靜態(tài)類型的語言要比函數(shù)式的動態(tài)類型語言的程序出 bug 的可能性要小很多泉坐。
每個程序員都應該要讀的書
在 Stack Overflow 上有用戶問了一個問題为鳄,大意是想讓大家推薦一些每個程序員都應該閱讀的最有影響力的圖書。雖然這個問題已經(jīng)被關閉了腕让,但這真是一個非常熱門的話題孤钦。排在第一位的用戶給出了一大串圖書的列表,看上去著實嚇人纯丸,不過都是一些相當經(jīng)典又相當有影響力的書偏形。
有大家耳熟能詳?shù)臅热?/p>
《代碼大全》 雖然這本書有點過時了液南,但是這絕對是一本經(jīng)典的書壳猜。
《程序員修練之道》 這本書也是相當經(jīng)典,可以是你的指路明燈滑凉。
《計算機的構造和解釋》 經(jīng)典中的經(jīng)典统扳,必讀。
《算法導論》 美國的本科生教材畅姊,這本書應該也是中國計算機學生的教材咒钟。
《設計模式》 這本書是面向?qū)ο笤O計的經(jīng)典書籍。
《重構》 代碼壞味道和相應代碼的最佳實踐若未。
《人月神話》 這本書可能也有點過時了朱嘴。但還是經(jīng)典書。
《代碼整潔之道》 細節(jié)之處的效率粗合,完美和簡單萍嬉。
(地址:https://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read)
程序員書單
永不過時的技能
什么是永不過時的技能呢?左耳朵耗子的答案非常具有參考性隙疚,也就是編程能力壤追、架構能力和工程能力。
編程能力供屉,就是用代碼解決問題的能力行冰。你編程能力越強,就能解決越復雜的問題伶丐,細分之下悼做,要有調(diào)試能力、算法哗魂、數(shù)據(jù)結(jié)構肛走、操作系統(tǒng)原理等基礎技能的支撐,你才能解決各種麻煩的問題录别。
架構能力朽色,就是掌控復雜系統(tǒng)的能力故硅。當一個系統(tǒng)足夠復雜時,你會寫每一塊代碼纵搁、能解決每一個問題吃衅,不等于你能搞定整個系統(tǒng),這就需要架構能力腾誉。架構能力包含了一些意識徘层,也包含認識業(yè)務建立抽象模型,還有一些常見的模式等利职。
工程能力趣效,其實核心就是成事的能力。你要知道猪贪,當系統(tǒng)規(guī)模越來越大時跷敬,光靠你一個人是沒辦法完成的。那如何保證幾個高手能夠互相配合好热押?如何保證項目里面水平最差的人不拖后腿西傀?工程化建設往往會跨越多個業(yè)務,又如何保證質(zhì)量和代碼風格呢桶癣?
這三項能力不管對于前端還是后端開發(fā)來說拥褂,可以說都是從初級、中級走向高級必須要跨越的鴻溝牙寞,也是作為一名程序員永不過時的技能饺鹃。
GitHub
V8引擎系列教程
V8 是 Google Chrome 瀏覽器和微軟 Edge 瀏覽器的 JavaScript 執(zhí)行引擎。本課程介紹如何成為 V8 的開發(fā)人員间雀。注意這是硬核技術培訓悔详,每次視頻請預留10個小時的上機編程練習時間。
Github地址:github.com/plctlab/v8-internals
vue移動端組件庫
一個開箱即用vue移動端組件庫惹挟,基于 Vue茄螃、uniApp、 ColorUi匪煌、uView 的web移動端解決方案责蝠,包含地圖党巾、電子簽名萎庭、證照識別等。
自定義TabBar與頂部齿拂、地圖軌跡回放驳规、電子簽名、圖片編輯器署海、自定義相機/鍵盤吗购、拍照圖片水印医男、在線答題、證件識別捻勉、周邊定位查詢镀梭、文檔預覽、各種圖表踱启、行政區(qū)域报账、海報生成器、視頻播放埠偿、主題切換透罢、時間軸、瀑布流冠蒋、排行榜羽圃、課程表、漸變動畫抖剿、加載動畫朽寞、請求封裝等~ 該項目使用最新的前端技術棧,它可以幫助你快速搭建移動端項目斩郎。