- 程序員成長手記
- 涂阿燃編著
- 3424字
- 2024-05-10 13:44:26
1.2 程序員獨特的職業氣質
程序員有一些獨特的職業氣質,比如對技術充滿熱忱、不斷追求卓越、習慣用代碼說話、有不錯的讀寫文檔的能力,以及對事情有著求真務實的態度。本節將展開介紹程序員的這些獨特的職業氣質。
我們從事的職業會塑造我們的大腦、改變我們的思考方式、指導我們的行為。
如果你希望在某個職業長久發展,那么首先可以考慮自身個性是否和職業特質契合。如果契合,那么你將會對這份工作產生更大的興趣,會全身心地投入進去。
1.2.1 對技術充滿熱忱
大多數程序員都保持著對技術的熱忱。程序員以技術起家,技術就是他們的看家本領、立身之道。他們往往相信技術、熱愛技術、樂于探究技術。
(1)對技術充滿好奇和興趣
熱愛能使人保持專注、不斷引發人的好奇心和興趣,而好奇和興趣是非常好的老師。
有一道前端面試題:“從輸入URL到頁面展示,該過程中到底發生了什么?”
當你嘗試解答這個問題時,先要將這個問題拆解,形成多個小問題,然后逐個深入研究,各個擊破,最后才能找到答案。如果你只是想找到一個官方解答,然后死記硬背,那么這并不會真正地幫助到你。尋求答案、追問才是鍛煉思維能力的關鍵。只有對技術充滿好奇和興趣,才能讓你接觸到更多、更深的知識點。

(2)鍛煉技術思維能力
通過學習優秀的架構設計、閱讀底層源碼,以及深入研究實戰調試技巧、如何在業務場景下落地性能優化技術等,程序員鍛煉自身的計算機思維能力、工程化思維能力、解決問題的能力。
從興趣啟發開始,在解決問題的過程中鍛煉技術思維能力,這能切實地幫助程序員在軟件行業中成長。
(3)對技術充滿熱情
擁有對計算機編程技術的熱情,比單純提高編程水平有更深遠的影響。
當你在IT行業工作了多年之后,熱情會讓你在早上起床之后期待今天的工作。沒有了熱情,程序員就會失去工作的動力。
看到這里,可能有的讀者會擔心,自己想入行程序員或已經做程序員一段時間了,但又確實對技術沒太大興趣,這該怎么辦?猿山羊爺爺給出了它的答案。

所以,要保持一顆尊重技術、向往技術的心,持續去追問,慢慢就會找到答案。
1.2.2 追求卓越
追求卓越是程序員的另一特質,因為程序員的工作是不斷推進技術發展和提高效率的。程序員喜歡挑戰難題,并不斷尋找更好的方法來解決問題。他們也喜歡學習新技術,不斷提高自己的技能,以便能夠在競爭激烈的科技行業中保持領先。程序員還要求自己的代碼能夠達到較高的標準,不斷完善和改進,以保證其可靠性和可維護性。

(1)卓越并非完美
很多人以為“追求卓越”就是信奉完美主義,然而并非如此。一名合格的程序員一定能在完美主義和實用主義之間找到平衡。
成熟的程序員往往能快速、熟練地給出不是那么完美的解決方案,同時留下后續迭代、改進的方法。如果你停留在對細節的極致追求上,很容易就會陷入完美主義的陷阱中。
追求卓越是不斷修正的過程。一些未入門的程序員會對調試代碼感到厭惡和恐懼,他們擔心被提出問題,也擔心自己無法解決問題,而一名合格的程序員會用修改代碼bug的能力來證明自己,為定位到bug并成功修復它而感到高興,這個過程是有趣的,這種成就感也是無法比擬的。
(2)保持懷疑
追求卓越還包括保持懷疑的態度。在一個問題出現的時候,程序員會問它的前提是什么、條件是什么、背景是什么、目的是什么等問題。保持懷疑的態度,內心存有疑問,不斷追問,再獲取答案,不斷精確定位問題,就是不斷追求卓越的過程。這個過程很辛苦,因為在不斷動腦筋。不要過于相信看似可行的解決方案,因為合格的程序員都會在對代碼做充分的測試后,才會相信它。
(3)精益求精
只有不斷追求卓越的人,才可以走向卓越。應該說,大部分程序員都是有所追求的,他們或追求更高的工資,或追求更高的職位,或追求更尖端的技術。有追求是一個很好的開始,但首先還是要將工作中分內的事情做好,在允許的范圍內精益求精。
比如,在開發過程中,追求卓越的一個基本要求是,不容忍代碼中的bug。有些剛入門的程序員把代碼編譯通過了,但沒有完整運行頁面功能,就以為完成工作了,然后把軟件交給測試人員去測試,這是不負責任的體現。隨著資歷的提升,經歷會告訴他:程序員不應過分依賴測試人員,即使沒有專職測試人員,也應該能開發出高質量的軟件。
過于追求卓越,合格的程序員會經常思考如何使代碼更高效、易懂、易維護。
1.2.3 用代碼說話
在程序員界有一句非常著名的話:“Talk is cheap,show me the code”,翻譯過來就是:“說的話很廉價,不如給我看看你的代碼”。這句話出自著名程序員Linus Torvalds,他就是Linux操作系統的創造者。Linus Torvalds經常強調實際行動的重要性,空談沒有任何價值,真正重要的是實際的行動,也就是編寫代碼。

(1)代碼會說話
之前有一則新聞:“某公司被指抄襲開源項目源碼”,一眾網友紛紛批評、指責該公司的這一行為。然而,作為程序員,只要認真看看代碼,就能知道代碼中除了一兩個變量名相同以外,其他設計并不相同。程序員習慣閱讀代碼,因為可以通過代碼來溝通,從代碼中了解信息,而不是人云亦云,這樣更有技術范兒。
(2)碼如其人
對于程序員來說,一段代碼的風格和好壞就能勾勒出這個程序員的整體形象,即“碼如其人”。相比PPT、文檔,“用代碼說話”的方式往往是程序員之間無壓力溝通的有效途徑。
(3)代碼世界
一部分程序員是內斂的,他們在自己的代碼世界里自得其樂。他們會精心設計自己的代碼,比如變量名、設計模式、封裝方法等,甚至會在注釋上下功夫,使這些代碼看起來更加易讀、優雅。這樣,在團隊協作的時候,成員之間能通過代碼更好地溝通,無須再通過聊天補充信息,從代碼中就能知道前因后果,然后一起營造一個有秩序的代碼世界。
1.2.4 讀寫文檔
通常,在互聯網團隊中,很多人都會認為產品人員寫文案的能力更強,而程序員的文案能力較弱。而實際上,會寫文檔是程序員不可或缺的核心競爭力之一。
(1)文檔能力
程序員應該有良好的文檔讀寫能力,這樣才能在職業道路上快速前進。為什么語文在義務教育里所占比重這么大?因為語言能力是其他學科發展的基礎。同理,文檔讀寫能力就是開發過程中的語言能力。
擁有一個好的文檔讀寫能力,有利于團隊之間的順暢溝通,不容易出現理解上的偏差。比如,程序員寫出的好的開發文檔,可以準確地反映代碼情況,如果軟件的實現邏輯、結構有問題,則可以通過文檔定位到問題。
合格的程序員在寫代碼之前都要進行精心設計,把思路落地,更進一步,會通過流程圖展示,這樣,團隊中的其他人能一眼捕捉到設計焦點,同事或領導能及時給出建議,把問題消滅在萌芽階段,可大大提升開發效率。這樣做也有利于評估工期,以及進行任務拆解及團隊合作等。
(2)開發規范
部分程序員不太注重文檔讀寫能力培養的原因通常有二:一是思考問題的方式趨于線性思維方式,走一步看一步,沒有發散思維能力及總結概括能力;二是國內很多公司往往只注重開發速度,而忽視規范開發中的文檔輸出,這樣做的后果是欲速則不達,往往后期需要花費更多的時間來梳理代碼、重構項目。甚至有些程序員認為:寫了開發文檔后反而更容易被其他人替換掉,進而丟掉工作。
(3)知識體系
讀寫文檔是一種有效的知識積累方式,時常溫習這些文檔,避免忘記重要知識點。只有時常做總結的人,才能有更加系統的認知體系。
通過讀寫文檔,厘清思路,讓思維更加縝密。在開源世界中,文字交流協作與代碼交流一樣重要。

1.2.5 求真務實
求真務實的態度可以幫助程序員更好地理解需求,并為他們提供一種邏輯性的、基于事實的方法來思考問題,從而更快、更有效地完成任務。求真務實的態度還有助于程序員在解決問題時避免錯誤,因為他們會更加謹慎和細心。
實際上,不止在程序員職業中,在其他任何職業發展、學習教育中,求真務實都是做事哲學的基石之一。
(1)對錯誤求實
務實的程序員會自主掌控自己的職業生涯,不害怕承認錯誤、接受錯誤。
在編程中發生讓人頭疼的問題是必然的,即使最好的項目也無法避免。盡管有詳盡的開發文檔、專業的測試流程、完備的自動化構建,還是難以保證不會出一點問題。預料之外的技術問題總會出現,一旦發生這樣的事,首先,要誠實面對,承認錯誤,再去定位錯誤、解決錯誤。不把問題歸咎于別人或其他事情,也不要尋找借口。也就是說,要對自己做的事情負責。
(2)知行合一
王陽明說,“知行合一”。知是指內心的覺知,對事物的認識,行是指人的實際行為。認識事物的道理與實行其事是密不可分的。
務實的程序員在面臨問題時,總能在解決方案中透露出自己的態度、風格及理念。他們總是越過問題的表面,試著將問題放在更寬泛的上下文中綜合考慮,從宏觀結構和細微本質處著想,找到問題背后的原因。