全棧程序員這個月寫了啥代碼?
猜猜寫了多少行?都寫了哪些語言呢?
大家好,我是魚皮。
時間過得真是太快了,又到月底了。對于程序員來說,總結還是挺重要的,我也一直保持著一個習慣,就是每個月末都要看一下自己這個月的代碼統(tǒng)計情況,比如寫了多少行代碼、寫了哪些語言的代碼、占比是多少等等。
接下來就帶大家看一看咯~
本月不摸魚情況
首先,代碼統(tǒng)計肯定不是我自己來做的,總不可能一行行代碼去數(shù)、再去分類吧!所以,我一般直接看公司提供的代碼提交報告,根據(jù)你每個月的代碼 git 提交數(shù),自動統(tǒng)計生成。
比如下面這個代碼提交語言餅圖:

從餅圖中,就能看出我這個月寫了 23.58 % 的 Java、寫了 30 % 左右的前端(TypeScript + JavaScript + CSS)、寫了 12.67 % 的 Markdown、還有 30 % 左右的其他語言。
等等,Others 是其他我能理解,這個 UNKNOWN 是什么鬼?!我就當是系統(tǒng)的 Bug 了吧哈哈。

那大家是否好奇這其他語言都有什么呢?
我舉一些例子,比如 Java 和前端項目的一些配置和數(shù)據(jù)交換文件,比如 xml、yaml、yml、properties、conf、 json、proto 等。還有一些腳本文件,像 bash 腳本、bat 腳本、SQL 腳本等。還有一些工程化的文件,比如 gradle 項目管理,以及自動構建項目用到的 jenkinsfile 等。
之前有小伙伴質疑我的工作不是全棧(啥都干),這回可以相信了吧!

不過,不是說只有全棧工程師才要寫各種語言。要做一個完整的項目,不可能只局限于一個編程語言本身,相關的技術棧像上面提到的配置文件、數(shù)據(jù)交換文件、腳本、工程化文件等,其實是每個程序員都應該熟悉或了解的。只有這樣,你才能算是一名工程師,而不是靠復制粘貼度日的碼農(nóng)。
哦對,好像我現(xiàn)在大部分代碼也靠復制粘貼,我擱這兒打臉放鞭炮呢?
這個月我新寫了 1.58 萬行代碼,平均每天 500 行,也不是很多。但是這個只會統(tǒng)計你最后通過提交的代碼,也就是經(jīng)過我優(yōu)化后的,所以實際上每天估計也會寫近千行代碼吧。

不過,關注代碼行數(shù)也沒太大的意義,自己看著爽就完事兒,也能側面反映出我沒怎么摸魚哈哈!
意義何在?
看自己的代碼統(tǒng)計有什么意義呢?對我來說至少有三點:
1. 復盤
首先,幫我回顧這個月的工作和效率。
其實這半年來,大部分情況下我都是在做調研、技術選型和場景分析,除了這個月寫的代碼比較多之外,其他時間很少寫代碼。因此,當我意識到代碼寫的少了時,我會有意在工作之余去花更多的時間來做自己的項目,多寫一些代碼,不讓自己生疏。
那這個月代碼寫的比較多了,我又會警醒自己不要只沉迷于寫代碼,成為了項目和老板的工具人。我會在之后有意讓自己更多關注代碼之外的東西,比如業(yè)務場景;還會思考寫這么多代碼來實現(xiàn)這個需求是否真的有意義,能否換一種方式。
另外不知道大家是否注意,Markdown 文檔語言在我本月的代碼中占比 12 % 左右,也意味著最近我寫了不少文檔,多寫文檔對項目來說是很有幫助的!

2. 未來
通過分析代碼統(tǒng)計,可以確定我未來的重點學習方向,比如有個月我在做一個用 Java 實現(xiàn)的項目,寫了 80 % 的 Java 代碼,那我自然會把重心放在 Java 上,在工作之余去深入看一些 Java 的東西。
3. 成就感
不要小瞧這一點,回顧自己寫的代碼數(shù)的確能幫助你收獲成就感,就像是打怪升級一樣,看看自己上個月刷了多少只怪、爆了多少裝備,這個月才會更有動力去沖!
當然,代碼寫的多也不一定是好事,有些程序員老奸巨猾的,為了湊行數(shù),特么的一行代碼后面跟一個空行,一行代碼寫完的功能拆成十行來寫!沒必要沒必要。

如何統(tǒng)計?
看到這里,肯定有同學也想統(tǒng)計下自己寫的代碼行數(shù),這里簡單介紹幾種方式。
1. GitHub
如果使用 GitHub 來管理你的代碼,可以進入 insights
面板,能夠看到指定時期的提交數(shù)、文件修改數(shù)、代碼新增和刪除數(shù)。

2. 編輯器插件
很多編輯器像 WebStorm、IDEA、VSCode 等,都提供了代碼行統(tǒng)計插件,比如 JetBrains 全家桶通用的 Statistic
插件。

安裝之后,就能看到代碼中各個語言的行數(shù)、占比等信息了。

3. 工具
還有一些現(xiàn)成的代碼統(tǒng)計工具,比如 cloc
。通過命令行使用,可以直接分析本地或者 GitHub 上的代碼包。支持按語言分類統(tǒng)計代碼空行、注釋行、自然行數(shù)等,還能單獨分析指定提交。

4. 硬核命令
如果你的 git 命令耍的很溜,也可以直接寫命令來統(tǒng)計代碼,根本不需要什么工具!
不過看這狗命令就知道,這種方式過于硬核:
git?log?--author="_your_name_"?--pretty=tformat:?--numstat?|?awk?'{?add?+=?$1;?subs?+=?$2;?loc?+=?$1?-?$2?}?END?{?printf?"added?lines:?%s,?removed?lines:?%s,?total?lines:?%s\n",?add,?subs,?loc?}'?-
5. 軟件
也有一些現(xiàn)成的開發(fā)統(tǒng)計軟件,比如 WakaTime,可以靈活配置自己的開發(fā)指標看板,記錄自己的代碼工作。

好了,以上就是本期分享,原創(chuàng)不易,如果覺得文章不錯,希望 點贊 支持下,給俺點創(chuàng)作動力。
最近還在開發(fā)我的 編程導航( https://www.code-nav.cn ),一個幫大家找編程資源的項目,歡迎使用!

我是如何在大學期間通過自學,拿到騰訊、字節(jié)等大廠 offer 的,可以看這篇文章,不再迷茫!
我學計算機的四年,共勉?。?https://t.1yb.co/q0mS )