架構師(2021年11月)

卷首語:二十年老程序員的五條心得

作者:Justin Etheredge

1. 我懂的並不多

“你怎麼會不知道什麼是 BGP?”“你難道沒聽說過 Rust?”

類似的問題可能每天都會出現在我們面前。沒錯,投身於軟件行業的很多人之所以熱愛這份工作,就是因爲它敦促着我們終身學習。

在軟件領域,無論我們朝哪個方向前進,都有着廣闊的知識空間不斷延伸而且每一天都有所變化。換句話說,這是一份能夠承載我們度過幾十年的職業生涯,而兩位在類似崗位上分別工作了幾十年的人之間也很可能存在巨大的知識差距。我們越早意識到這一點,就能越快擺脫“冒充者綜合症”,成爲一個樂於向他人學習、也樂於教導他人的積極分子。

2. 軟件裏最難的部分,是構建正確的東西

我知道這種話大家肯定聽過無數遍了,但大多數軟件工程師仍拒不承認,理由是這種說法似乎在貶低他們的工作成果。我個人覺得這樣的心態大可不必,這類表達其實是在突出軟件開發環境中的複雜性與非理性因素,而這些都會加劇我們面臨的挑戰。我們當然可以設計出在技術上最令人印象深刻的東西,但卻沒人願意用——這類困境隨時都會出現。

軟件設計主要是一種聆聽活動,開發者往往身兼軟件工程師、通靈師乃至人類學家等多重角色。而我們對這種設計能力的每一點投資,無論是引入專業的用戶體驗師還是接受更進一步的自我教育,都能給開發成果帶來巨大提升。畢竟與打磨設計能力相比,開發一款“沒人用”的軟件成本還是太高了、太高太高。

3. 頂尖軟件工程師會像設計師那樣思考

偉大的軟件工程師會深入思考代碼成果的用戶體驗。雖然使用的術語或者切入點不同,但無論是對於外部 API、編程 API、用戶界面、協議還是其他接口,優秀的工程師都會考慮由誰來使用、爲什麼要使用、如何使用以及對用戶來說哪些因素真正重要等。總之,牢記用戶需求才是實現良好體驗的核心所在。

4. 最好的代碼就是沒有代碼,或者說不需要維護的代碼

“程序員就是管編程的”,而且跟其他專業人士一樣,我們也會在自己最擅長的方面犯錯。這是人的本性,沒辦法。大多數軟件工程師編寫出的代碼總是有點錯誤,而且往往無法用非技術方案來解決。

另外有一種很神奇的現象,越是有大量相當成熟的解決方案存在,工程團隊就越是想“重新發明輪子”。想表達自我、加快專業成長當然是好事,但還請大家分清場合與需求,過度氾濫的發明慾望恐怕不利於編寫出無需維護的代碼。

5. 如果沒法理解所有可能性,就設計不出優秀的系統

這也是我個人一直在努力解決的問題。我的職責變化導致自己距離常規軟件工程任務越來越遠,我發現跟上開發者生態的發展速度越來越難,有時候自己甚至不理解哪些趨勢真正重要。總之,如果不能理解特定生態當中的那些可行性與可用選項,那麼我們根本沒辦法爲所有問題找到合理的解決方案。

總而言之,務必警惕那些已經很久沒寫過代碼、也沒設計過系統的所謂“大牛”

目錄

熱點 | Hot

Facebook 史上最嚴重宕機:互聯網企業是時候重新審視架構了?

阿里雲正式開源 PolarDB-X 數據庫,曾歷經各屆雙 11 考驗,現已登陸 GitHub

推薦文章 | Article

Kubernetes 上分佈式系統的演化

Hadoop 生態裏,爲什麼 Hive 活下來了?

GitHub 關係型數據庫垂直分庫實踐

觀點 | Opinion

Java 之父 James Gosling:你需要的軟件可靠性越高,靜態類型語言的幫助就越大

程序員薪資倒掛嚴重,只能跳槽換高薪,IT 公司爲什麼不願加錢留住老員工?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章