色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

程序員談學(xué)習(xí):我為什么要學(xué)習(xí)Linux?

程序員學(xué)習(xí)

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

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

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

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

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

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

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

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

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

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

  寫到這里文章就寫完了,由于比較困,可能寫的有些散亂,在最后總結(jié)一下這篇文章的主要觀點。

  總結(jié):

  1. 我們要做優(yōu)秀的程序員,不要做“不優(yōu)秀”的程序員;

  2. 學(xué)習(xí)是有用的,如果有人給你的建議是學(xué)XXX沒用,那么你可要當心;

  3. 底層的知識和高層的知識不是不能相容的,真正優(yōu)秀的程序員應(yīng)該兩者兼顧。

it知識庫程序員談學(xué)習(xí):我為什么要學(xué)習(xí)Linux?,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 巴南区| 江川县| 衡阳市| 象州县| 修武县| 金堂县| 峨边| 芦山县| 昭平县| 溆浦县| 兖州市| 余干县| 拜城县| 慈溪市| 巴里| 西平县| 凤山市| 集贤县| 繁昌县| 栖霞市| 张家界市| 正定县| 淮安市| 河间市| 太白县| 万山特区| 库车县| 即墨市| 稷山县| 曲麻莱县| 正安县| 新巴尔虎左旗| 绥宁县| 乌拉特后旗| 隆德县| 怀安县| 临武县| 红安县| 枞阳县| 论坛| 青龙|