想成為優(yōu)秀程序員嗎?

好長(zhǎng)時(shí)間沒(méi)好好寫(xiě)點(diǎn)東西了,前段時(shí)間由于項(xiàng)目的需要出差了一個(gè)多月,期間各種加班,每天晚上加班到十點(diǎn),回到賓館實(shí)現(xiàn)是沒(méi)什么精力再寫(xiě)博客了。有時(shí)間能靜下來(lái)寫(xiě)點(diǎn)東西總是很好的一件事,如果寫(xiě)技術(shù)方面的博客,不僅能給讀者提供一些解決問(wèn)題的線索,也能加深自己對(duì)技術(shù)點(diǎn)的理解,如果寫(xiě)的是自己對(duì)項(xiàng)目的感悟,也算是對(duì)自己所做的工作的總結(jié)。現(xiàn)在終于有時(shí)間寫(xiě)點(diǎn)東西了,感覺(jué)還是不錯(cuò)的
大笑

今天這篇博客不是寫(xiě)關(guān)于具體技術(shù)的,而是我對(duì)程序員怎樣學(xué)習(xí)和提高自己能力的一些感悟。我是今年7月初畢業(yè)的,離開(kāi)學(xué)校后就直接進(jìn)入之前實(shí)習(xí)的公司上班了。現(xiàn)在算來(lái)工作了也將近半年了,算上實(shí)習(xí)的時(shí)間,將近一年了。在這期間,參與了幾個(gè)Android項(xiàng)目的開(kāi)發(fā),也維護(hù)過(guò)別人寫(xiě)的項(xiàng)目,雖然都不是很大的項(xiàng)目,但也學(xué)習(xí)了不少東西。在這其間,我親身經(jīng)歷了一個(gè)設(shè)計(jì)拙劣的項(xiàng)目,是怎么樣一步步趨于混亂而最終變的完全不可維護(hù)。從這件事情我了解到優(yōu)秀的程序員是多么可貴,而“不優(yōu)秀”的程序員是怎樣把項(xiàng)目一步步的搞砸搞爛,也了解到做出一款優(yōu)秀的軟件是多么的困難。什么樣的程序員才算優(yōu)秀的程序員,而什么樣的程序員是“不優(yōu)秀”的?(我不愿意說(shuō)別人壞話,只能委婉的說(shuō)“不優(yōu)秀”)作為一個(gè)工作不到半年的新人,談?wù)撨@個(gè)問(wèn)題好像沒(méi)什么權(quán)威性可言, 我也只是簡(jiǎn)單的談?wù)撘幌伦约旱目捶ǎb于自己的閱歷和經(jīng)驗(yàn)不是很豐富,難免具有局限性,讀這篇文章的讀者可以指出我的錯(cuò)誤。

我認(rèn)為,優(yōu)秀程序員和不優(yōu)秀程序員的區(qū)別首先是態(tài)度上的區(qū)別。優(yōu)秀的程序員有自己的理想,他們想做出好的東西,而不是混混日子而已,他們思考很多,不管是項(xiàng)目開(kāi)始之前還是在項(xiàng)目進(jìn)行中,項(xiàng)目完成之后也會(huì)進(jìn)行總結(jié)。他們對(duì)待問(wèn)題比較嚴(yán)謹(jǐn),思考比較全面,在動(dòng)手寫(xiě)代碼之前肯定經(jīng)過(guò)了一定的思考,對(duì)可能引入的問(wèn)題進(jìn)行預(yù)估。而不優(yōu)秀的程序員對(duì)待問(wèn)題比較隨意,也就是態(tài)度上不是那么認(rèn)真,代碼寫(xiě)的也比較隨意,從不考慮以后的變化因素,今天吃飽不管明天肚子餓,他們不會(huì)意識(shí)到他們的代碼已經(jīng)污染了整個(gè)項(xiàng)目。 在發(fā)現(xiàn)問(wèn)題時(shí),優(yōu)秀的程序員總是想辦法彌補(bǔ),他們會(huì)找出自己的代碼寫(xiě)的不好的地方,謹(jǐn)慎的修改或大膽的推翻重寫(xiě),這樣的話把問(wèn)題消滅在萌芽階段而不會(huì)讓整個(gè)項(xiàng)目偏出正軌。而不優(yōu)秀的程序員,很少能發(fā)現(xiàn)問(wèn)題,即使能發(fā)現(xiàn)問(wèn)題,也是遲遲不肯做出彌補(bǔ),他們總是僥幸的認(rèn)為這些問(wèn)題不會(huì)在后期暴露出來(lái),所以問(wèn)題越積越多,最后導(dǎo)致整個(gè)項(xiàng)目混亂不堪,錯(cuò)誤百出,無(wú)法維護(hù)。

除了態(tài)度上的不同,在能力上也有很大的差別。顯而易見(jiàn),優(yōu)秀的程序員懂得比較多,他們樂(lè)于深入研究原理,對(duì)底層的知識(shí)有一定的了解或者了解的很透徹,而不只是停留在調(diào)用一個(gè)API;而不優(yōu)秀的程序員一般不喜歡思考,對(duì)原理的興趣也不多,他們不愿意花一些時(shí)間把一些問(wèn)題搞明白,而只是簡(jiǎn)單的調(diào)用一下API,如果解決不了問(wèn)題,隨便在網(wǎng)上搜一段代碼復(fù)制過(guò)來(lái)就萬(wàn)事大吉。所以遇到比較難纏的問(wèn)題,優(yōu)秀的程序員總是能從原理出發(fā),一針見(jiàn)血的看出問(wèn)題的真正原因,進(jìn)而解決問(wèn)題,而不優(yōu)秀的程序員總是停留在表面,在網(wǎng)上搜了很長(zhǎng)時(shí)間也沒(méi)有解決問(wèn)題。我深切的認(rèn)識(shí)到,如果只是停留在調(diào)用API而不深入原理,永遠(yuǎn)也用不好API。

除此之外,優(yōu)秀的程序員的另一個(gè)特點(diǎn)是善于并樂(lè)于學(xué)習(xí),他們對(duì)自己所從事的工作有濃厚的興趣,有強(qiáng)烈的好奇心,他們總是想把問(wèn)題弄明白,他們喜歡清晰,而不是迷迷糊糊的感覺(jué)。對(duì)一個(gè)人的進(jìn)步起決定性作用的因素是刻苦的學(xué)習(xí),而不是所謂的“經(jīng)驗(yàn)”。就像有人說(shuō)的那樣,在公司里工作不會(huì)使你成為大牛,只有持續(xù)的學(xué)習(xí)才能讓你有長(zhǎng)足的進(jìn)步。現(xiàn)在很多招聘職位要求有幾年的工作經(jīng)驗(yàn),這是最容易讓人誤導(dǎo)的。工作時(shí)間長(zhǎng)的就能力一定強(qiáng)嗎?舉個(gè)例子,有兩個(gè)清潔工,一個(gè)干了十年,每天還在默默的工作,而另一個(gè)只干了幾天,經(jīng)過(guò)自己的思考發(fā)明了一個(gè)新的工具或方法,讓他的工作事半功倍。所以說(shuō),工作經(jīng)驗(yàn)是很虛的東西,他用時(shí)間來(lái)計(jì)量,一個(gè)人工作了5年,他可能在5年中每天都學(xué)習(xí)進(jìn)步,也可能一個(gè)經(jīng)驗(yàn)用了5年而沒(méi)有什么實(shí)質(zhì)性的提高。

扯了這么多,好像和題目沒(méi)什么關(guān)系。現(xiàn)在扯點(diǎn)和題目相關(guān)的。作為一個(gè)搞android應(yīng)用開(kāi)發(fā)的,我為什么要學(xué)Linux呢?我工作中又不會(huì)寫(xiě)linux程序,再說(shuō)Linux內(nèi)核博大精深,代碼海量,關(guān)系錯(cuò)綜復(fù)雜,學(xué)習(xí)Linux內(nèi)核肯定要耗費(fèi)大量的時(shí)間和精力,那我為什么還要學(xué)呢?在說(shuō)這個(gè)問(wèn)題之前,先談?wù)勎覍?duì)學(xué)習(xí)的看法。

在學(xué)習(xí)一個(gè)東西之前,出于保險(xiǎn)起見(jiàn),我們總是會(huì)詢問(wèn)別人的意見(jiàn),而在這些意見(jiàn)中,總是會(huì)有人說(shuō)學(xué)這個(gè)干什么,工作中又用不到。如果誰(shuí)給了你這樣的建議,那么你一定要小心,因?yàn)榛旧峡梢詳喽ㄋ且粋€(gè)不愛(ài)學(xué)習(xí)的人。有很多東西,不是因?yàn)槟恪案杏X(jué)”有用才學(xué)它,而是學(xué)了之后才能知道它有用。我的一位朋友是做C#的,他在業(yè)余時(shí)間學(xué)了Perl,當(dāng)時(shí)學(xué)的時(shí)候總是有人認(rèn)為沒(méi)有用,但是當(dāng)他學(xué)會(huì)之后,可以使用Perl強(qiáng)大的文本處理能力,去整理格式混亂的源碼文件,可以寫(xiě)個(gè)程序自動(dòng)的給領(lǐng)導(dǎo)發(fā)郵件。還有我大學(xué)的一位老師,年輕時(shí)因?yàn)橛⒄Z(yǔ)比較好,被單位派去美國(guó),獲得了深造的機(jī)會(huì),回來(lái)后做了我們學(xué)校的物理系主任,很多人也認(rèn)為英語(yǔ)沒(méi)有用,呵呵。我進(jìn)入公司實(shí)習(xí)的時(shí)候,看了設(shè)計(jì)模式,在我翻看《Head First設(shè)計(jì)模式》時(shí),被一個(gè)有經(jīng)驗(yàn)的同事看見(jiàn)了,他告訴我看設(shè)計(jì)模式?jīng)]有用,因?yàn)槲覀兊捻?xiàng)目是不會(huì)用到設(shè)計(jì)模式的。我不知道這是什么邏輯。反正當(dāng)我看完設(shè)計(jì)模式之后,真的被這些設(shè)計(jì)巧妙而又極具實(shí)用性的模式所震撼,在以后的項(xiàng)目中,我大量使用了這些模式或者設(shè)計(jì)原則。所以如果一個(gè)工作了兩三年或者更長(zhǎng)時(shí)間的程序員還沒(méi)有學(xué)習(xí)過(guò)設(shè)計(jì)模式,我會(huì)深深的鄙視他,認(rèn)為他不是一個(gè)真正的程序員。

我上大學(xué)時(shí)學(xué)習(xí)了Java語(yǔ)言,當(dāng)時(shí)還費(fèi)了不少勁。基本的語(yǔ)法比較熟悉了之后,還是感覺(jué)到有些東西總是糊里糊涂,不夠清晰,比如說(shuō)不知道反射是怎樣工作的。所以找了《深入Java虛擬機(jī)》來(lái)看,當(dāng)我看了兩遍這本書(shū)之后,感覺(jué)到原來(lái)不清晰的地方都顯得自然而然,知道了class文件結(jié)構(gòu)是怎樣的,類是怎樣被加載的,指令是怎么樣被執(zhí)行的,方法是怎樣被動(dòng)態(tài)綁定的。這些知識(shí)對(duì)我有很大的幫助,假如我不學(xué)習(xí)Java虛擬機(jī),只是單純的寫(xiě)Java程序,即使寫(xiě)上10年,也不見(jiàn)的比我現(xiàn)在對(duì)Java的理解更透徹。

說(shuō)了這么多,只是想說(shuō)學(xué)習(xí)是有用的,大大的有用。一個(gè)經(jīng)驗(yàn)用5年并不等于有5年的工作經(jīng)驗(yàn),一個(gè)不學(xué)習(xí)的程序員是不會(huì)有什么發(fā)展機(jī)會(huì)的。所以,對(duì)于一個(gè)java程序員,還分不清對(duì)象和對(duì)象的引用,對(duì)于一個(gè)iOS程序員,還分不清ViewController到底是MVC中的視圖還是控制器,那么沒(méi)錯(cuò),你該學(xué)習(xí)了,該靜下心來(lái)好好鞏固一下基礎(chǔ)了。

最后,來(lái)到正題。我為什么學(xué)習(xí)Linux內(nèi)核?首先,我對(duì)Linux有很深的興趣和好奇心,我喜歡專研一下。從實(shí)用性出發(fā),我可能一輩子都沒(méi)有機(jī)會(huì)編寫(xiě)Linux內(nèi)核,也可能一輩子都不會(huì)從事Linux驅(qū)動(dòng)開(kāi)發(fā)相關(guān)的工作,但是我知道它對(duì)我是有用的。能進(jìn)一步加深對(duì)操作系統(tǒng)中概念和實(shí)現(xiàn)的理解,對(duì)底層的深入理解,能讓我打下扎實(shí)的基礎(chǔ)。一些新技術(shù)其實(shí)都是架構(gòu)在基礎(chǔ)的東西之上的。基礎(chǔ)牢固,以后再學(xué)習(xí)什么新技術(shù)都會(huì)水到渠成。有人可能會(huì)反駁,說(shuō)學(xué)習(xí)底層的東西沒(méi)用,優(yōu)秀的程序員應(yīng)該專注于設(shè)計(jì),項(xiàng)目管理或架構(gòu)等上層的知識(shí),我的觀點(diǎn)是,設(shè)計(jì),項(xiàng)目管理或架構(gòu)等上層的知識(shí)和底層的知識(shí)一點(diǎn)都不沖突,不懂底層的人,基礎(chǔ)不扎實(shí),在上層也不會(huì)走的順暢,設(shè)想一下,如果沒(méi)有深厚的基礎(chǔ)知識(shí),你怎么能知道自己架構(gòu)出來(lái)的東西能不能實(shí)現(xiàn)呢?

寫(xiě)到這里文章就寫(xiě)完了,由于比較困,可能寫(xiě)的有些散亂,在最后總結(jié)一下這篇文章的主要觀點(diǎn)。
總結(jié):
1 我們要做優(yōu)秀的程序員,不要做“不優(yōu)秀”的程序員;
2 學(xué)習(xí)是有用的,如果有人給你的建議是學(xué)XXX沒(méi)用,那么你可要當(dāng)心;
3 底層的知識(shí)和高層的知識(shí)不是不能相容的,真正優(yōu)秀的程序員應(yīng)該兩者兼顧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評(píng)論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,656評(píng)論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,697評(píng)論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,098評(píng)論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,855評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,254評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評(píng)論 3 442
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,473評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,014評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,833評(píng)論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,016評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,273評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,680評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,946評(píng)論 1 288
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,730評(píng)論 3 393
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,006評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容