七年程序員生涯,我學到的重要六課
作者 | Tomasz ?akomy
譯者 | 薛命燈
時間如梭,不是嗎?
我的編程之旅始於 2012 年,當時我還只是個 C 編程實習生。說實話,我根本不知道自己在做什麼。即使是到了現在,這種狀況依然沒有改變。不過,在這個過程中,我確實學到了很多東西。
問題來了:在編程過程中,什麼語言才是最重要的?
是英語?西班牙語?中文?波蘭語?還是其他在工作中用來與其他人進行溝通的語言?
與人溝通比與機器溝更重要
編程是一項團隊活動。很少有出色的軟體產品是完全由一個人從頭到尾做出來的(CodeSandbox 算是一個,但後來 Ives 還是請了一些人),大多數產品需要一個團隊來打造。
溝通技巧可以成就一個項目,也可能會毀了它。相比存粹的技術,軟技能對一個項目的成功起到更重要的作用。試想一下,你把世界上最好的 5 個資料庫專家都請來了,但如果他們各自為政,互不溝通,最後他們會給你搞出 5 個不同的 MySQL、Aurora 或 MongoDB 實例。
了解你在做什麼以及為什麼
人一旦有了目標感,就會感覺好一些,這在工作中也是一樣的。
作為軟體開發人員,你的目標不應該只是把 JIRA 中的問題變成 JavaScript,或者把 Trello 中的項目變成 C#。
你的目標應該是用代碼來解決問題。
如果你對正在構建或維護的系統很了解,就可以拋開技術做決策。這個功能是必需的嗎?它解決了什麼問題?可以用其他方式來解決這個問題嗎?真的有必要解決這個問題嗎?
這些都是業務問題,如果你想把工作做好,不僅要理解這些業務,還要主動參與其中。即使你在公司里不是 C 級別的人,也不影響你這麼做,至少,你要明白自己在做什麼。
如果代碼評審讓你感到有壓力,那肯定是打開方式出錯了
雖然我們沒有必要那麼想,但把自己寫的代碼放出來讓其他人「圍觀評論」,這種體驗跟寫代碼還真是有點不一樣,也難怪人們會感到焦慮。
有人因為不堪忍受某些人的吹毛求疵,選擇在這個人不在公司的時候提交代碼評審。試想,如果你在一個新手的 PR 底下轟炸式地給出 50 個不那麼友好的評論,你其實不只是在證明自己作為一名高級程序員的優越感,也是在證明你不是一個「好人」。
那麼,正確的打開方式應該是怎樣的?
你可以私底下找那個人,跟他好好聊聊,問他為什麼把代碼寫成那樣。
其實大多數人也不想把代碼寫臭,如果你看到臭代碼,可能其中會有一些不為人知的原因。當然,也有可能是因為他們的編程技能還不夠好,這個時候你要承擔起「導師」的角色,給他們提供一些指導。
未雨綢繆
墨菲定律:會出錯的事情就一定會出錯。
這就像是一個真理,在設計系統時總會有一些東西會出錯。
在開發一個登陸表單時,你要假設會有一些居心叵測的人把整本書的內容拷貝到密碼輸入框里。
在開發一個可見即所得的窗口時,你要假設會有人試圖搞破壞,而且他們通常都能如願以償。
如果系統中使用了資料庫,它一定會在某個時刻掛掉。如果你沒有嘗試使用備份來恢復資料庫,那它們就算不上是備份。
如果你在給別人做演示,請確保這個演示在任何情況下都能正常進行,哪怕把它翻個底朝天,甚至是把它丟到水底下。
不要害怕讓別人看到自己的無知
作為高級程序員的一個好處是,當別人問一些我不懂的問題時,我可以很淡然地告訴他們:
這個東西我也不懂,因為以前沒有遇到過,不過我可以看一下,然後再告訴你。
當我還是一個初級程序員的時候,我總是很害怕別人會看到我的無知。經過幾年的磨練,我才明白,如果碰到了自己不懂的東西,說明學習的機會來了。終身學習絕對不只是一個「口頭禪」,它應該被付諸實踐。
分享
等你把不懂的東西搞懂了,就要把它們分享出來。寫一篇博客,錄個教學視頻,或者在公司里搞個分享演講……你不要認為你剛學會的東西別人也都懂,即使是一個非常資深的人,他們也能從初級人員身上學到東西,反過來也是。
分享的過程其實是一個檢驗你是否真正理解所學的東西的過程。有句話說得好:
當你在教一個人的時候,其實有兩個人在學。
英文原文:
https://dev.to/tlakomy/7-years-as-a-developer-lessons-learned-29ic
Q 言 Q 語時刻
在你的職業生涯中,學到了哪些受益一生的道理呢?
歡迎在留言區和大家一起交流。
點個在看少個 bug
TAG:InfoQ |