閱讀61 返回首頁    go 阿裏雲 go 技術社區[雲棲]


“你不適合做程序員”

我的一位同事,他帶他讀小學的孩子去學鋼琴,通過關係找了一位有點名氣的退休的老教師,學費不菲。他說其實他並不知道為什麼要學,但是看到那麼多孩子都在學 鋼琴,他想,他的孩子不能落後。一個月之後,他去問鋼琴老師,對孩子的學習有什麼建議沒有。鋼琴老師用盡了委婉的表達,最後說:

“對於你的孩子在學音樂方麵,我最大的建議,就是你的孩子最好別學音樂”。

什麼?!

這位同事聽了當然惱怒,但是轉念一想,老師未嚐不是負責任的。通常這樣的老師,賺錢之心,都會忽悠家長,或者好話歹說,很少有說“不”的。但是真話就是這麼犀利。

他說:“我們平時並不容易聽到真話,真話來臨的時候,心裏還真是‘咯噔’一下”。

世界就是這麼殘酷,老天給了不同的人不同的能力和智慧,世界上許許多多不同的事都需要不同的才學和特質,試著去尋找適合自己的方向,這無關乎你有多努力。這是一個簡單的道理,語言可以說得冠冕堂皇,可是事實就是這一個:

“如果你沒有這方麵的天賦,你最好別幹這事”。

放到程序員身上,亦然。

哪些人不適合做程序員?

  • “我不懂網絡、不會操作係統、沒聽說過Java……”,沒關係,這些具體的技術都可以學。
  • “我記憶力差,數據庫認證考試不及格……”,沒關係,記憶力差的人隻能記住深刻的、精華的東西,而且自己的想法會更多;至於認證考試……其實我們都知道那種考試有多麼浪費生命。
  • “我30歲才開始寫代碼,同事說的我都沒聽說過……”,還是沒關係,你知道的太少而已,少工作,多上網,了解更多的行業信息;積累你的經曆,總結你的故事,你就能知道得更多。
  • “我沒聽過什麼是軟件……”,好吧,我承認,這是唯一一個例外的,你是從別的世紀穿越過來的人嗎?

不是這些,那麼,到底哪些人不適合做程序員?

下麵這些話,是我眼中程序員必備的衡量標準,遺憾的是,這些都很難通過勤奮來彌補。現在,聰明的你,不妨參考一下自己,也許現在想明白什麼才是適合自己的事情,比到三十年以後再後悔起來,要有意義得多。尤其當你發現其中某一條,觸及你心中的痛處了,那麼,你真的要好好想想了。

如果你的思維缺乏條理性、邏輯性,那麼,你絕對不要嚐試去做程序員。

我不知道還有什麼比這條特質更能體現對程序員的要求了。有的人理性思維不強大,但是感情細胞異常豐富,也許你能成為藝術家、詩人,但是程序員,一個缺乏邏輯的程序員,你能期望他幹什麼?

這一條是我唯一不想做任何解釋的。 :)

如果你對事物沒有思考的習慣和耐心,那麼,你別去做程序員。

首先,不妨閱讀一下這篇文章(鏈接),裏麵提出了N個身邊的現象,每個現象都伴隨著幾個問題,小小地思考一下。

其次,如果你沒有耐心閱讀它的話,思考一個我從中隨便摘出來的一個問題:

許多年前,當我看到珊瑚蟲QQ把IP轉成地實際地址的時候,我就在思考,如果我有一個IP網段的數據(全球IP地址數據),我怎麼來完成這個功能呢?比如: 某地點的IP網段是:10.10.1.* – 10.10.5.*。我要有一個IP地址是:10.10.3.20,我怎麼匹配這個網段?用Hash表嗎?好像有問題。把IP字串轉成整型?排序+二分 法,好像更容易解決一些,但是如果有一些修改的話好像有點不方便。用樹型結構(森林)會不會更好一些呢?如果我要通過地點反查IP段呢?

我本來想給出另一個例子的,但是上麵這個例子在這裏更合適,我就保留了下來。

好,現在從你的思考回到本文中來。

如果你閱讀了上麵文章的鏈接,並且考慮了其中的某幾個問題,至少說明你是有閱讀和思考耐心的。

如果你沒有閱讀鏈接裏的文章,但是思考了上麵引用的問題,那麼,這方麵,你也還好。

如果你直接跳過它,閱讀到此了,是你太忙了吧?太不經意了吧?還是……盡管你不願意承認,其實是沒有思考的耐心和習慣呢?

還 有一個活生生的例子,以前有位同事和我抱怨,每天都要做一件事情,就是把報表數據錄入excel中去,然後每周會給領導提供一次數據報告。但是每天錄入數 據的工作很枯燥,就是從網頁上把一項項數據拷貝出來,粘貼到excel中,每天都要花十分鍾的時間,每次雖然時間不長,但是日日如此,很枯燥。就這樣,他 在抱怨中做這個工作做了有半年之久。

看到這裏,你想到了什麼?

是的,為什麼不做一個“懶惰”的程序員,為什麼不寫一個腳本之類的小程序去做這件事呢?

本質上,這依然是那個不願意思考的問題,我沒法評論其他行業對於思考的要求,但是程序員所解決的問題,都是不一樣的,有的可以借鑒,有的可以模仿,但是你不能完完整整地抄襲整個問題解決的辦法,總有很多問題需要用你的腦子去解決。

最後,看看這篇文章和其中的視頻,關於碼農和程序員,我想,之後你會有一點想法的。

如果你對新技術不感興趣,那麼,你還是不要去做程序員。

有的人會對新技術有一種排斥感,覺得“我學好C語言、操作係統和網絡這些基礎科目,把基礎打紮實就夠了,不需要接觸那麼多新技術”,並且往往認定新事物未必有什麼新花樣,萬變不離其宗,沒有什麼的學習價值。

我認識的人中,抱著這樣看法的人其實有很多,有些人甚至已經寫了十幾年代碼。但是軟件行業是更新換代速度極其頻繁的行業,“萬變不離其宗”是有其中道理的,但是“沒有學習價值”隻是逃避新事物的托辭罷了。

這樣的情形有這麼一種典型現象,覺得沒有必要學習多種編程語言,因為“深入地掌握一兩種語言就夠了,語言都是相通的”。

很明顯,這樣說的人沒有看到那些“不通”的地方,那些足以改變你視角和思維方式的地方。

再了解了解你心目中成功的程序員,我想這些人中,尚在做技術的程序員,無論到了哪一個層次,幾乎都關注著互聯網和開源社區。

如果你耐不住寂寞,那麼,你可能不應該去做程序員。

你不需要非得在半夜裏編碼,你不需要非得穿奇異的衣服、做Geek的事情,你甚至不需要很辛苦地工作,但是,如果你“隻想和大家一起討論、一起研究”,而不願意自己學習、自己寫代碼的話,你還是別做程序員了。

程序員不是一個孤獨的工作,溝通能力是幾乎每一個行業必備的技能,但是,你會有很多很多的時間自己學習、思考問題,上網搜索,寫代碼、測試、部署……甚至包括等待程序響應,分析程序崩潰的原因。

程序員需要獨立解決問題,程序員解決問題不是民主選舉。世界上絕大部分優秀的係統的絕大部分,總是由很少的人設計出來的。

總想把困難的問題留給和大家一起解決的人,往往存在一種依賴感,以及一定程度的不自信,你說是不是?

如果你隻想把問題解決,特別不願意尋根究底、精益求精,你大概不適合做程序員。

沒有比這篇文章更可以說明“尋根究底”這四個字了,但是這四個字其實和本文中提到的第一點本質是相同的,故不贅述。

有的人不願意做測試,問他為什麼,他說,“我喜歡創造一個東西,但是我討厭去驗證一個東西的正確性”。這樣的人寫不優秀的代碼,因為他不會不斷去追求高質量和更理想、更美的代碼,更優秀的產品,他隻適合做一個短期的項目,這樣的項目很可能在不久後就變成一個爛攤子,當然,他可不願意收拾爛攤子。

測試,無論是測試設計還是測試執行,很大程度上都是程序員工作的一部分。優秀的程序員總是能把程序寫的容易測試,總是可以設計出好的測試方案。如果你討厭測試,我希望你隻是因為討厭那些重複勞動——同時,停止抱怨,不如想個辦法解決它吧。

許多Geek的心理有那麼一點異於常人,如果你對於界麵上幾個像素的偏差都感到難以接受,如果你對維護自己的代碼細致到格式、命名等方方麵麵的細節,說不定你就是那個能成為“極致”的程序員。

如果你接受了我的觀點,發現自己就是個程序員的料,那麼恭喜你,祝你成為令人尊敬的同行;如果你發現自己實在不適合做程序員,那麼還是恭喜你,盡管抱怨和咒罵程序員的工作吧,事實上,那的確真不是什麼好差事,而且,真相越早看到,就越不那麼殘酷,不是嗎? :)


最後更新:2017-04-03 16:48:56

  上一篇:go ZED Board從入門到精通(二):AXI簡介
  下一篇:go syslog 引發死鎖