一名合格的程式設計師應該是什麼樣子
6 月 25 號,母親打來電話,說妹妹的高考成績離二本線差 9 分。我聽完隨口扔了一句,“在我的意料之中。”因為她平時的成績也就在二本線上下徘徊。
這句話挺傷人的,尤其是對於高考失利的妹妹來說,她聽完我的話,立馬就哭了起來,情緒非常激動,質問母親為什麼要打電話告訴我(玻璃心)。
我參加高考了兩次,兩次都離二本差了 6 分,最後不得已上了大專——當時也陷入了人生的低谷,情緒很低落。一路走來,能體會到學歷對於一個人的重要性,尤其像我這種從農村走出來,缺乏生意頭腦,不善言談,急於改變命運的人。
後來,我通過培訓正式進入了程式設計師的行業,自認為是一名合格的程式設計師吧——把本職工作做得很好,對得起自己的薪水,在生活與工作之間也找到了平衡點。
鑑於我的“成功”——買了房、結了婚、生了娃、買了車、出了書,父母就打算讓我妹也成為一名程式設計師。說實話,我也有這樣的打算,還曾創作過《教妹學 Java》的系列文章。
程式設計師屬於一個僧多粥少的群體,女性自然而然的會受到男性的照顧。因為在我做程式設計師的 8 年時間裡,就無償、自願、主動地幫助過不少(此處不能用許多)程式媛。
不管怎麼說,我是熱愛“程式設計師”這個職業的,假如妹妹也有做程式設計師的意願,那我這個做哥哥的就要給出 3 條真誠的建議了——這也是義不容辭的事情。
01、能夠解決問題
我認為,作為一名合格的程式設計師,首先要具備的能力就是“階段性”解決問題。
所謂的階段性,指的是初級程式設計師解決初級問題,中級程式設計師解決中級問題,高階程式設計師解決高階問題。
記得有一名小夥伴在知識星球提問題說,“二哥,我有不到 1 年的工作經驗,領導總讓我看原始碼去解決問題,我看得頭大,有什麼好的建議嗎?”
我只能安慰這名小夥伴說,“你的領導不是一名稱職的領導啊。”看原始碼是一件好事,這是毋庸置疑的,但如果強迫 1 年工作經驗不到的程式設計師去看原始碼解決問題就屬於強人所難了——天賦異稟的除外。
說實話,在我 8 年多的職業生涯中,很少通過看原始碼解決問題。當然了,你可以指責我不是一名優秀的程式設計師,我接受,因為我的首要目標是做一名合格的程式設計師。
合格的程式設計師,有自己解決問題的手段,比如我的手段就是:
1)找度娘。
2)找谷歌。
3)在部落格園問題社群提問。
4)在 CSDN 論壇提問。
5)在 Stack Overflow 提問。
6)找同事幫忙。
7)找領導幫忙。
8)在大牛的群裡提問。
實在是解決不了,也不要熬夜通宵,哭天喊地,回家踏踏實實地睡一覺,沒準第二天一早就想到了解決辦法。
你可能會覺得我這話很玄乎,但我時常有這種感覺,第二天睜開眼的時候,突然就有一個叫“答案”的東西慢慢地從天花板上飄落下來,然後我就伸出雙手接住了它。
怎麼解釋這種感覺呢?我也說不清楚,但有個英文單詞似乎可以解釋——“epiphany”,中文意思為“對事物真諦的頓悟”,我喜歡稱之為“天啟”(靈感來自於 X 戰警)。
可以這麼說,這 8 年來,我還沒有遇到解決不了的問題(就是這麼信誓旦旦)。隨著年紀的增長、技術能力的提升,看原始碼也就不像年輕時那麼痛苦——漸漸地,看原始碼成為了我解決問題最後的殺手鐗。
02、一顆不是“玻璃”的心
不得不承認,年輕的時候,我的心非常非常的“玻璃”。把自己拿出來做例子,實在是情非得已啊。
把時間撥回到 7 年前,我當時還在蘇州的一家日企工作。有一次,團隊中的一名成員在使用 if
進行條件判斷的時候,使用了 =
而不是 ==
,導致程式出現了嚴重的 bug,而作為 Team Leader 的我竟然沒有在 Review 和測試的時候檢出這個“見不得人”的 bug。
領導在日本出差,被日本人罵的狗血噴頭;而我,被領導的越洋電話罵的狗血噴頭。當時氣不過的我,躲在廁所委屈得流淚,還伴隨著難以抑制的抽噎聲。
當時的畫面現在依然記憶猶新。
現在想想,真沒啥好哭的,自己的確負有一定的責任,被領導罵一罵出出氣,也是再正常不過的事了。但那時候的“玻璃心”經受不住批評,哭過之後還鬧著要換部門。
我勸你們忍住別笑啊。
初入職場時,我們不被領導當眾訓斥的概率幾乎為零。如果這時候玻璃心作怪的話,幾乎會毀掉我們的職業生涯。我慶幸自己當時沒有換部門,因為領匯出差回來後,還特意請我吃了一頓大餐;後來漲薪的時候還特意照顧了一下。
作為一名程式設計師,我們要懂得自嘲、自黑,懂得釋放自己的壓力,我現在覺得,敢於稱呼自己為“碼農”、“IT 民工”的程式設計師特別可愛,特別有勇氣。
如果是現在的我,再因為少個 =
被領導訓斥的話,我就敢肆無忌憚地說:“領導大人請息怒!寫個 bug 咋地啦,小王同學又不是故意的,我現在去改一下,馬上再發佈一個版本;另外,下次 Review 的時候我一定再仔細一點。”
領導沒準還會被逗笑。你看,不是玻璃心多好啊。
03、樂於分享
首先說一下我為什麼樂於分享的原因:
- 作為知識的總結
- 作為備忘錄
- 想幫助他人
- 建立個人品牌
說句實在話,我已經分享了數百篇文章,但這些文章並沒有給我帶來金錢上的直接利益。我之所以還在堅持,是因為我覺得未來有一天,我可能因此掙到一些錢;假如還掙不到的話,我在分享的過程中已經自我昇華了。
很多程式設計師不敢分享的原因也很簡單:
- 大牛已經分享過了
- 分享出來會不會被噴
- 技術深度不夠
- 詞不達意
- 沒啥可分享的
再說句實在話,我在程式生涯的前 3 年時間裡,也從來不分享。原因不外乎上面列的這幾種。但當我從蘇州回到洛陽後,自由時間一大把,沒開始分享的那段時間裡,除了打遊戲就是看遊戲攻略——遊戲玩膩了,就覺得生活百無聊賴。
實在是不知道幹啥,就開始讀書,讀完書,總覺得想說點啥,就開始在部落格上分享讀書筆記。寫了一段時間後,竟然還有人閱讀和評論;再加上公司也開始鼓勵寫部落格(績效獎),我就把工作當中解決 bug 的辛酸歷程也分享了出來。
寫著寫著,我就發現了一個天大的好處:有些 bug 竟然在十天半月後重新跑出來嚇我,但嚇不著我了,因為之前的解決辦法已經被我記下來了,按圖索驥,輕鬆搞定。再也不用重新找解決辦法,省掉大量的時間。
再寫著寫著,我發現寫作水平也提高了(你可以翻看一下我以前寫的文章,感受一下之前和現在之間的差距),所謂輸出倒逼輸入,技術功底也更紮實了,解決問題的知識庫也更豐富了。如果稿費能再多點,就更完美了。
04、最後
我是一名極其普通的程式設計師,勉強算是合格,但和優秀的程式設計師相比,真的是自慚形穢。
但我總覺得自己身上有著某種特質,往好裡說就是持之以恆的精神,尤其是在寫作方面,我希望我的分享能夠給你帶來一點啟發,那真是再好不過了。如果你真的從中得到了一點點益處,我會感到非常的高興。
為了能夠首尾相應,我還得透露一點我妹妹最新的情況,究竟是選擇復讀,還是上大專成為一名程式設計師(重複我當年的老路),她還在猶豫當中。如果你有更好的建議,還請和我交流交