思否有約丨夏磊:拒絕做只會“複製-貼上”的程式設計師

語言: CN / TW / HK

本期對話嘉賓:@夏磊

訪談編輯:芒果果

英國倫敦泰晤士河旁的威斯敏斯特大教堂裡有一座無名墓碑,上面刻著一段流傳甚廣,關於改變世界,關於夢想與現實的文字。大意是“最初想改變世界發現目標太巨集大而難以實現,如果從小事做起也許真的能改變世界”。

夏磊目前是一家知名網際網路公司的高階後端開發工程師,與他聊天的時候,我真切地感受到了他仍像當初那個少年,仍然對寫程式碼充滿熱情。

從高中起夏磊就堅定了學習計算機的目標,把程式設計看作極具創造力的事。現在,28 歲的夏磊說:“ 只要你有好的點子、想法,都可以藉助計算機實現,這是多麼美好的一件事情!

夢想=興趣+實踐+上進心

Q:嘗試用兩種不同的方式介紹一下自己吧

程式設計師中最會講段子的,段子手中最會程式設計的。用三個詞來形容的話就是:樂觀、幽默風趣、好奇心強。

姓名和性別的話相信通過我的 ID 應該能發現了:夏磊,年齡28,在現階段還是可以說一下的,可能往後就沒那麼好意思說了,哈哈。

Q:您覺得 28 歲對一個程式設計師來說應該是職業的什麼階段,有什麼規劃嗎?

28歲是一個具體的年齡,實際上每個人進入行業工作的年齡不盡相同。

工作的第一個五年是個分水嶺,五年之內可以根據興趣換語言、換技術棧甚至是換行業等等, 用五年的時間去熟悉業界的技術、語言,根據自己的興趣去選擇一個方向深入鑽研,構建起屬於自己的知識體系和技術棧。 另外,就是要有一點點上進心,拒絕只會“複製-貼上”的程式設計師。

Q:什麼時候開始接觸程式設計的,契機是什麼?

大學吧,高考志願填報的計算機系。說到契機,應該還是興趣吧,能夠通過自己的雙手實現那麼多有創造力的事情。

Q:掌握的技術棧?目前主要使用的程式語言是?

參加工作這麼多年,主旨就是一個“用合理的語言解決需求”。

常言道:“沒有程式設計師不會的,只有程式設計師沒學的”,由於工作需求,在前端、服務端、App 端均有涉獵,服務端語言主要是 Go+Java,偶爾寫寫 PHP和 Node.js。前端的話主要是Typescript+Node.js,對Vue/React/Angular 三大框架均有使用,目前傾向於 Vue 和 React 框架。App 端的話主要是 React Native,如果對效能要求不高而對稽核敏感的話一般是 Cordova+Vue 組合。

Q:您在前端、服務端、App 端都有涉獵,哪一種您覺得更得心應手?

得心應手的話目前談不上,具體問題具體分析吧,隨著前端工程化和 App 框架的興起,相對來說,前端和 App 是比服務端簡單一點的。根據不同的業務場景,可能會有差別,目前主要還是以服務端為主。

Q:工作中最常使用的幾個工具是什麼?好用的外掛推薦?

工作中主要還是 Jetbrains 全家桶吧,要說推薦的外掛的話,外掛那麼多,我只推一個:PlantUML,對於我這種寫程式碼之前會把架構理清楚的人來說,UML 必不可少。而通過純文字的方式就能編寫 UML,節省了大部分排版、美化的時間。

Q:不同工作階段會學習不同的語言嗎?是處於什麼原因呢?

學習語言的目的應該說是為了彌補短板,比如使用 PHP 幾年之後發現效能瓶頸確實不好解決,因此學習了 Node.js 去開發一些高效能、實時性強的程式,而 Node.js 的弊端應該算是工程方面,沒有全棧框架,這一點 Java 做的非常好,所以逐步去學習 Java 了,而 Java 雖然開發效率、執行效率都不差,但是挺佔用伺服器資源,隨著微服務的興起,就去學習 Go了,學習語言的時間都不算太長,更多的時候應該花在了生態上,語言提供的功能都不會差太多,畢竟不能讓語言成為門檻。

Q:最近有沒有嘗試新的程式語言?

嘗試過 Kotlin和 C#,但是對於語言這個東西,我還是覺得內功最重要,語言只不過是武器罷了,而內功部分包括的東西比較多,但是我覺得最重要的是發現問題與解決問題的能力,這是核心競爭力。

編碼之前、設計先行、流程圖/UML 圖先行。早前喜歡邊想邊寫,後面遇到複雜的業務邏輯時經常需要推到重來,浪費時間,所以後面養成了畫圖的習慣,有什麼問題在編碼之前就能夠暴露出來解決掉,可以極大地提高生產力。

Q:嘗試 Kotlin和 C# 的原因是什麼?

Kotlin 算是工作需要吧,公司的 App 需要進行迭代,剛開始用的 Java 開發安卓 App,由於語言的侷限性,確實會有一定的效率損失,所以嘗試了 Kotlin。至於 C# 的話是個人興趣,有段時間比較喜歡搗鼓 GUI程式,這一塊做的比較好的應該還是非微軟莫屬,基於 C#+WinForm 開發了一些工具。

Q:一般通過什麼方式和渠道提升自己的能力?

一般通過系統性地學習,消化之後,通過部落格的形式釋出出來,和社群成員進行討論,收穫頗多。

細節在於觀察,成功在於積累

Q:分享一下你的工作流,有什麼個人的特別的工作習慣麼?

工作中比較喜歡畫圖,而畫圖是競爭力的體現,就好比“畫一條線 1 美元,知道在哪裡畫 9999 美元”一樣。設計或者說是架構能力是非常重要的內功之一。個人的習慣就是對程式碼有潔癖,甚至於到了對齊方式上。

Q:工作之後有哪個瞬間讓你覺得很有成就感?又有哪個瞬間讓你“懷疑人生”?

有成就感的事情應該算是支付平臺流水達到千萬而沒有出現事故的情況,畢竟自己也擔心這快。

“懷疑人生”的事情一般是花了很長時長去處理 Bug,到頭來發現是個低階錯誤。又或者說是硬體故障導致的一些奇葩問題,這一塊確實需要比較強的搜尋能力。

Q:目前為止最滿意的開發專案是什麼?

在前公司開發的一個通用支付平臺,基於微信支付開發,整合了 App、H5、掃碼等渠道,業務端能夠在非常短的時間內接入微信支付,而不用理會微信支付的文件。開發時解決了非常多的疑難雜症,包括促銷活動期間下單邊界條件問題、對賬問題等等。對一個公司來說,涉及到錢的東西是不允許任何差錯的,所謂“失之毫釐,謬以千里”,在業務量非常大的情況下,哪怕是小數點級的誤差也會帶來非常大的影響。

與社群共同成長

Q:如何看待國內社群的環境和氛圍?

國內社群大體上內容重複率偏高,很多炒冷飯的現象,當然,不可否認,每個人都有成長期,所以發表的內容有重複是正常的,但是對於社群建設來說,我們需要更多的有個人見解的人來,而不是發一堆說明書。

Q:講講與思否的故事吧

註冊地比較早,是 2015 年,當初是查問題搜到了思否,發現了這個神奇的網站,接下來就是利用自己的所學知識解決社群中的問題了,成就了別人,也成就了自己。

近兩年發現光回答問題似乎幫助不了多少人,因此開始寫專題文章,用最簡單的話解釋一些難以理解的知識,這一塊在前端部分收到了大量好評。

思否在國內問答平臺這塊,個人覺得幫助了非常多的開發者解決了他們的問題,其中不乏一些其他國家或地區的人,思否是一個非常有活力的平臺,同樣也是一個對於新人非常友好的平臺。

Q:對社群有哪些建議和意見?

目前還是應該對文章和提問中的廣告採取高壓態勢,早年混跡的號稱國內第一的 PHP 論壇,由於運營問題,大量廣告得不到處理而沒落了。

這是一個很現實的問題,樹大招風的道理我們都懂。

興趣是最好的老師,年輕人不怕犯錯

Q:生活中有什麼愛好?

工作之餘也會打遊戲,畢竟暫時凡人,不是學習或者工作機器,天氣好的時候會帶上相機出去攝影,記錄一下自己的生活。

Q:如果可以重新選擇是否還會選擇這個職業 ?

應該還是會選擇,無他,興趣使然,興趣是最好的老師,而計算機這塊可以說”開局一臺機,人生全靠擼“,只要你有好的點子、想法等等都可以藉助計算機計算實現出來,這是多麼美好的一件事情!

Q:你會在什麼時候「退休」?

興趣使然,估計不會有所謂的退休。

Q:對程式設計初學者和懷抱夢想對年輕人有什麼建議?

一定要培養髮現問題和解決問題的能力,混跡過很多社群,大部分的問題其實是非常簡單的,有些初學者可能看到報錯就心裡害怕,其實沒必要,都沒上線你怕啥?藉助於翻譯工具,80%的問題都可以直接翻譯出來,從而解決。剩下的20%複製錯誤訊息之後丟到搜尋引擎基本也能解決的差不多,而對於初學者來說最難的部分是“報錯訊息到底是啥?”,這個大部分的報錯訊息找第1個 Error 或者Fatal 之類的字眼即可發現。

第二個事情就是多看書,多練手,“眼過千遍,不如手寫一遍”,寫過的東西記性還是牢一點。

我有酒你有故事麼?

歡迎有興趣參與訪談的小夥伴踴躍報名,《思否有約》將把你與程式設計有關的故事記錄下來。

報名郵箱:[email protected]