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

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

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

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

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

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