“你不適合做程序員”
我的一位同事,他帶他讀小學(xué)的孩子去學(xué)鋼琴,通過(guò)關(guān)系找了一位有點(diǎn)名氣的退休的老教師,學(xué)費(fèi)不菲。他說(shuō)其實(shí)他并不知道為什么要學(xué),但是看到那么多孩子都在學(xué) 鋼琴,他想,他的孩子不能落后。一個(gè)月之后,他去問(wèn)鋼琴老師,對(duì)孩子的學(xué)習(xí)有什么建議沒(méi)有。鋼琴老師用盡了委婉的表達(dá),***說(shuō):
“對(duì)于你的孩子在學(xué)音樂(lè)方面,我***的建議,就是你的孩子***別學(xué)音樂(lè)”。
什么?!
這位同事聽(tīng)了當(dāng)然惱怒,但是轉(zhuǎn)念一想,老師未嘗不是負(fù)責(zé)任的。通常這樣的老師,賺錢(qián)之心,都會(huì)忽悠家長(zhǎng),或者好話歹說(shuō),很少有說(shuō)“不”的。但是真話就是這么犀利。
他說(shuō):“我們平時(shí)并不容易聽(tīng)到真話,真話來(lái)臨的時(shí)候,心里還真是‘咯噔’一下”。
世界就是這么殘酷,老天給了不同的人不同的能力和智慧,世界上許許多多不同的事都需要不同的才學(xué)和特質(zhì),試著去尋找適合自己的方向,這無(wú)關(guān)乎你有多努力。這是一個(gè)簡(jiǎn)單的道理,語(yǔ)言可以說(shuō)得冠冕堂皇,可是事實(shí)就是這一個(gè):
“如果你沒(méi)有這方面的天賦,你***別干這事”。
放到程序員身上,亦然。
哪些人不適合做程序員?
- “我不懂網(wǎng)絡(luò)、不會(huì)操作系統(tǒng)、沒(méi)聽(tīng)說(shuō)過(guò)Java……”,沒(méi)關(guān)系,這些具體的技術(shù)都可以學(xué)。
- “我記憶力差,數(shù)據(jù)庫(kù)認(rèn)證考試不及格……”,沒(méi)關(guān)系,記憶力差的人只能記住深刻的、精華的東西,而且自己的想法會(huì)更多;至于認(rèn)證考試……其實(shí)我們都知道那種考試有多么浪費(fèi)生命。
- “我30歲才開(kāi)始寫(xiě)代碼,同事說(shuō)的我都沒(méi)聽(tīng)說(shuō)過(guò)……”,還是沒(méi)關(guān)系,你知道的太少而已,少工作,多上網(wǎng),了解更多的行業(yè)信息;積累你的經(jīng)歷,總結(jié)你的故事,你就能知道得更多。
- “我沒(méi)聽(tīng)過(guò)什么是軟件……”,好吧,我承認(rèn),這是唯一一個(gè)例外的,你是從別的世紀(jì)穿越過(guò)來(lái)的人嗎?
不是這些,那么,到底哪些人不適合做程序員?
下面這些話,是我眼中程序員必備的衡量標(biāo)準(zhǔn),遺憾的是,這些都很難通過(guò)勤奮來(lái)彌補(bǔ)?,F(xiàn)在,聰明的你,不妨參考一下自己,也許現(xiàn)在想明白什么才是適合自己的事情,比到三十年以后再后悔起來(lái),要有意義得多。尤其當(dāng)你發(fā)現(xiàn)其中某一條,觸及你心中的痛處了,那么,你真的要好好想想了。
如果你的思維缺乏條理性、邏輯性,那么,你絕對(duì)不要嘗試去做程序員。
我不知道還有什么比這條特質(zhì)更能體現(xiàn)對(duì)程序員的要求了。有的人理性思維不強(qiáng)大,但是感情細(xì)胞異常豐富,也許你能成為藝術(shù)家、詩(shī)人,但是程序員,一個(gè)缺乏邏輯的程序員,你能期望他干什么?
這一條是我唯一不想做任何解釋的。 :)
如果你對(duì)事物沒(méi)有思考的習(xí)慣和耐心,那么,你別去做程序員。
首先,不妨閱讀一下這篇文章(鏈接),里面提出了N個(gè)身邊的現(xiàn)象,每個(gè)現(xiàn)象都伴隨著幾個(gè)問(wèn)題,小小地思考一下。
其次,如果你沒(méi)有耐心閱讀它的話,思考一個(gè)我從中隨便摘出來(lái)的一個(gè)問(wèn)題:
許多年前,當(dāng)我看到珊瑚蟲(chóng)QQ把IP轉(zhuǎn)成地實(shí)際地址的時(shí)候,我就在思考,如果我有一個(gè)IP網(wǎng)段的數(shù)據(jù)(全球IP地址數(shù)據(jù)),我怎么來(lái)完成這個(gè)功能呢?比如: 某地點(diǎn)的IP網(wǎng)段是:10.10.1.* – 10.10.5.*。我要有一個(gè)IP地址是:10.10.3.20,我怎么匹配這個(gè)網(wǎng)段?用Hash表嗎?好像有問(wèn)題。把IP字串轉(zhuǎn)成整型?排序+二分 法,好像更容易解決一些,但是如果有一些修改的話好像有點(diǎn)不方便。用樹(shù)型結(jié)構(gòu)(森林)會(huì)不會(huì)更好一些呢?如果我要通過(guò)地點(diǎn)反查IP段呢?
我本來(lái)想給出另一個(gè)例子的,但是上面這個(gè)例子在這里更合適,我就保留了下來(lái)。
好,現(xiàn)在從你的思考回到本文中來(lái)。
如果你閱讀了上面文章的鏈接,并且考慮了其中的某幾個(gè)問(wèn)題,至少說(shuō)明你是有閱讀和思考耐心的。
如果你沒(méi)有閱讀鏈接里的文章,但是思考了上面引用的問(wèn)題,那么,這方面,你也還好。
如果你直接跳過(guò)它,閱讀到此了,是你太忙了吧?太不經(jīng)意了吧?還是……盡管你不愿意承認(rèn),其實(shí)是沒(méi)有思考的耐心和習(xí)慣呢?
還 有一個(gè)活生生的例子,以前有位同事和我抱怨,每天都要做一件事情,就是把報(bào)表數(shù)據(jù)錄入excel中去,然后每周會(huì)給領(lǐng)導(dǎo)提供一次數(shù)據(jù)報(bào)告。但是每天錄入數(shù) 據(jù)的工作很枯燥,就是從網(wǎng)頁(yè)上把一項(xiàng)項(xiàng)數(shù)據(jù)拷貝出來(lái),粘貼到excel中,每天都要花十分鐘的時(shí)間,每次雖然時(shí)間不長(zhǎng),但是日日如此,很枯燥。就這樣,他 在抱怨中做這個(gè)工作做了有半年之久。
看到這里,你想到了什么?
是的,為什么不做一個(gè)“懶惰”的程序員,為什么不寫(xiě)一個(gè)腳本之類的小程序去做這件事呢?
本質(zhì)上,這依然是那個(gè)不愿意思考的問(wèn)題,我沒(méi)法評(píng)論其他行業(yè)對(duì)于思考的要求,但是程序員所解決的問(wèn)題,都是不一樣的,有的可以借鑒,有的可以模仿,但是你不能完完整整地抄襲整個(gè)問(wèn)題解決的辦法,總有很多問(wèn)題需要用你的腦子去解決。
***,看看這篇文章和其中的視頻,關(guān)于碼農(nóng)和程序員,我想,之后你會(huì)有一點(diǎn)想法的。
如果你對(duì)新技術(shù)不感興趣,那么,你還是不要去做程序員。
有的人會(huì)對(duì)新技術(shù)有一種排斥感,覺(jué)得“我學(xué)好C語(yǔ)言、操作系統(tǒng)和網(wǎng)絡(luò)這些基礎(chǔ)科目,把基礎(chǔ)打扎實(shí)就夠了,不需要接觸那么多新技術(shù)”,并且往往認(rèn)定新事物未必有什么新花樣,萬(wàn)變不離其宗,沒(méi)有什么的學(xué)習(xí)價(jià)值。
我認(rèn)識(shí)的人中,抱著這樣看法的人其實(shí)有很多,有些人甚至已經(jīng)寫(xiě)了十幾年代碼。但是軟件行業(yè)是更新?lián)Q代速度極其頻繁的行業(yè),“萬(wàn)變不離其宗”是有其中道理的,但是“沒(méi)有學(xué)習(xí)價(jià)值”只是逃避新事物的托辭罷了。
這樣的情形有這么一種典型現(xiàn)象,覺(jué)得沒(méi)有必要學(xué)習(xí)多種編程語(yǔ)言,因?yàn)?ldquo;深入地掌握一兩種語(yǔ)言就夠了,語(yǔ)言都是相通的”。
很明顯,這樣說(shuō)的人沒(méi)有看到那些“不通”的地方,那些足以改變你視角和思維方式的地方。
再了解了解你心目中成功的程序員,我想這些人中,尚在做技術(shù)的程序員,無(wú)論到了哪一個(gè)層次,幾乎都關(guān)注著互聯(lián)網(wǎng)和開(kāi)源社區(qū)。
#p#
如果你耐不住寂寞,那么,你可能不應(yīng)該去做程序員。
你不需要非得在半夜里編碼,你不需要非得穿奇異的衣服、做Geek的事情,你甚至不需要很辛苦地工作,但是,如果你“只想和大家一起討論、一起研究”,而不愿意自己學(xué)習(xí)、自己寫(xiě)代碼的話,你還是別做程序員了。
程序員不是一個(gè)孤獨(dú)的工作,溝通能力是幾乎每一個(gè)行業(yè)必備的技能,但是,你會(huì)有很多很多的時(shí)間自己學(xué)習(xí)、思考問(wèn)題,上網(wǎng)搜索,寫(xiě)代碼、測(cè)試、部署……甚至包括等待程序響應(yīng),分析程序崩潰的原因。
程序員需要獨(dú)立解決問(wèn)題,程序員解決問(wèn)題不是民主選舉。世界上絕大部分優(yōu)秀的系統(tǒng)的絕大部分,總是由很少的人設(shè)計(jì)出來(lái)的。
總想把困難的問(wèn)題留給和大家一起解決的人,往往存在一種依賴感,以及一定程度的不自信,你說(shuō)是不是?
如果你只想把問(wèn)題解決,特別不愿意尋根究底、精益求精,你大概不適合做程序員。
沒(méi)有比這篇文章更可以說(shuō)明“尋根究底”這四個(gè)字了,但是這四個(gè)字其實(shí)和本文中提到的***點(diǎn)本質(zhì)是相同的,故不贅述。
有的人不愿意做測(cè)試,問(wèn)他為什么,他說(shuō),“我喜歡創(chuàng)造一個(gè)東西,但是我討厭去驗(yàn)證一個(gè)東西的正確性”。這樣的人寫(xiě)不優(yōu)秀的代碼,因?yàn)樗粫?huì)不斷去追求高質(zhì)量和更理想、更美的代碼,更優(yōu)秀的產(chǎn)品,他只適合做一個(gè)短期的項(xiàng)目,這樣的項(xiàng)目很可能在不久后就變成一個(gè)爛攤子,當(dāng)然,他可不愿意收拾爛攤子。
測(cè)試,無(wú)論是測(cè)試設(shè)計(jì)還是測(cè)試執(zhí)行,很大程度上都是程序員工作的一部分。優(yōu)秀的程序員總是能把程序?qū)懙娜菀诇y(cè)試,總是可以設(shè)計(jì)出好的測(cè)試方案。如果你討厭測(cè)試,我希望你只是因?yàn)橛憛捘切┲貜?fù)勞動(dòng)——同時(shí),停止抱怨,不如想個(gè)辦法解決它吧。
許多Geek的心理有那么一點(diǎn)異于常人,如果你對(duì)于界面上幾個(gè)像素的偏差都感到難以接受,如果你對(duì)維護(hù)自己的代碼細(xì)致到格式、命名等方方面面的細(xì)節(jié),說(shuō)不定你就是那個(gè)能成為“***”的程序員。
如果你接受了我的觀點(diǎn),發(fā)現(xiàn)自己就是個(gè)程序員的料,那么恭喜你,祝你成為令人尊敬的同行;如果你發(fā)現(xiàn)自己實(shí)在不適合做程序員,那么還是恭喜你,盡管抱怨和咒罵程序員的工作吧,事實(shí)上,那的確真不是什么好差事,而且,真相越早看到,就越不那么殘酷,不是嗎? :)