欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      (總結(jié))程序員的思維修煉(推薦閱讀)

      時(shí)間:2019-05-15 09:28:14下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《(總結(jié))程序員的思維修煉》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《(總結(jié))程序員的思維修煉》。

      第一篇:(總結(jié))程序員的思維修煉

      程序員的思維修煉

      開發(fā)認(rèn)知潛能的九堂課

      我的總結(jié)

      第一章:嘗試改變自己。

      第二章:德雷福斯模型。從整體角度看待問(wèn)題。保持實(shí)踐。學(xué)習(xí)如何學(xué)習(xí)的技能。

      第三章:雙cpu,L與R。多用腦,多記錄想法。積極的情感。什么是創(chuàng)作?。多編碼,深思熟慮,專注實(shí)踐。

      第四章:增加感觀體驗(yàn)。R型開路,L型緊跟(從整體到局部)。使用隱喻(異類聯(lián)想,培養(yǎng)幽默)。改變解決問(wèn)題的角度

      第五章:“很少”不意味著“沒(méi)有”。從多個(gè)角度看待問(wèn)題。你確信?你怎么知道的。凡事總有兩面性。

      第六章:學(xué)習(xí)能力可能是成功的最重要因素。技術(shù)不是最重要的,持續(xù)學(xué)習(xí)才是最重要的。教育的含義:從學(xué)習(xí)者那里引導(dǎo)出一些東西。僅僅掌握知識(shí),而不去實(shí)踐,沒(méi)有用,隨機(jī)的方法,沒(méi)有目標(biāo)和反饋,往往導(dǎo)致隨機(jī)的結(jié)果。DMART目標(biāo)。對(duì)主動(dòng)學(xué)習(xí)的投資做好計(jì)劃。很多教育家把學(xué)習(xí)者分為三大類:視覺(jué)型,聽覺(jué)型和動(dòng)覺(jué)型。

      SQ3R學(xué)習(xí)一本書(或其他?)的方法:1,調(diào)查:掃面目錄和每章總結(jié),得出總體看法。2,問(wèn)題:記錄所有問(wèn)題。3,閱讀:閱讀全部?jī)?nèi)容。5復(fù)述:總結(jié)做筆記,用自己的話來(lái)描述。5,回顧:重讀,擴(kuò)展筆記,與同事討論。

      主動(dòng)閱讀。R->L:首先是一種全盤,淺顯但是廣泛的調(diào)查,然后轉(zhuǎn)換到傳統(tǒng)的L型活動(dòng),擴(kuò)大多重感官的參與(討論,筆記,圖片,隱喻等)。

      使用思維導(dǎo)圖。

      同時(shí)用R型和L型做筆記。寫文檔的過(guò)程比文檔本身更重要。觀察,實(shí)踐,教學(xué)。

      第七章:積累經(jīng)驗(yàn)是學(xué)習(xí)和成長(zhǎng)的關(guān)鍵--我們通過(guò)實(shí)踐的方法學(xué)習(xí),效果最好。趣味性很重要。為了更好地學(xué)習(xí),請(qǐng)更好地玩。在你的環(huán)境中安全地探索,創(chuàng)造和應(yīng)用。當(dāng)大腦受到壓力,它會(huì)主動(dòng)停止一些思考,眼界會(huì)縮小,不再考慮可能的選擇,更糟糕的是,你會(huì)把R型完全拒之門外,L型主導(dǎo)一切,當(dāng)你認(rèn)為時(shí)間至關(guān)重要時(shí),R型根本沒(méi)機(jī)會(huì)工作。讓大腦為成功形成慣例。從相似點(diǎn)中學(xué)習(xí),從差異中忘卻。記憶的每一次讀取都是一種寫入。

      第八章:冥想:注意呼吸,順其自然,不做任何判斷和回應(yīng)。

      你需要隨時(shí)隨地做好準(zhǔn)備捕捉信息,但是,一旦你捕捉到它,不能只讓它呆在那里,這對(duì)你沒(méi)有任何用處,你需要處理這些材料,組織它,發(fā)展它,合并不同的材料,并將整體的想法提煉和劃分為更具體的想法。以為我們絕大多數(shù)人都沒(méi)有百科全書的記憶力,一旦你讀過(guò)一次,記得去什么地方找到對(duì)應(yīng)的細(xì)節(jié)就足夠了。一旦你選擇一組工作,就要持續(xù)進(jìn)行,避免情境切換。動(dòng)態(tài)刷新頭腦中的清單是相當(dāng)昂貴的,應(yīng)該在外部信息系統(tǒng)中保持待辦事項(xiàng)清單。

      第九章:真正的發(fā)現(xiàn)之旅不在于追求新大陸,而在于擁有新的視野?!安蛔鳛椤笔菙橙?,而“錯(cuò)誤”不是。當(dāng)你變成專家之后,你最想追求的事情是。。新手的思維。

      第一章 緒論(p1)

      軟件并不是在集成開發(fā)環(huán)境IDE或者其他工具上設(shè)計(jì)出來(lái)的,它是在我們大腦中想象和創(chuàng)建

      出來(lái)的。(p2)

      當(dāng)前最重要的兩項(xiàng)技能就是:溝通能力,學(xué)習(xí)和思考能力(p2)

      利用計(jì)算機(jī)模型類比人類的思維過(guò)程(p4)

      生命中沒(méi)有什么是恒久不變得,只有死魚才隨波續(xù)流,嘗試改變自己(p4)

      訣竅1:始終關(guān)注情景(p5)

      第二章 從新手到專家的歷程(p11)

      德雷福斯技能獲取模型,概括了從新手到專家必須經(jīng)歷的五個(gè)階段。(p11)

      德雷福斯模型的5個(gè)階段:1新手,2高級(jí)新手,3勝任者,4精通者(他們能夠糾正以往不好的工作表現(xiàn)他們會(huì)反思以前是如何做的,并修改其做法,期望下一次表現(xiàn)的更好,到這個(gè)階段,自我改進(jìn)才會(huì)出現(xiàn)),5,專家(直覺(jué)是專家的工具)

      我已經(jīng)見(jiàn)過(guò)很多年輕的程序員(1-5年經(jīng)驗(yàn))從來(lái)沒(méi)有做過(guò)一個(gè)成功的項(xiàng)目(p22)訣竅2:新手使用規(guī)則,專家使用直覺(jué)(p24)

      新手到專家,重要的三個(gè)變化:(1)從依賴規(guī)則到依賴直覺(jué)的轉(zhuǎn)變(2)觀念的改變,問(wèn)題已經(jīng)不再是一個(gè)相關(guān)度等同的所有單元的集合體,而是一個(gè)完整的獨(dú)特的整體。(3)最后,從問(wèn)題的旁觀者轉(zhuǎn)變?yōu)閱?wèn)題涉及的系統(tǒng)本身的一部分。(p24)

      訣竅3:知道你不知道什么(p25)

      你需要實(shí)踐,積極的實(shí)踐需要四個(gè)條件:(1)需要一個(gè)明確定義的任務(wù),(2)任務(wù)需要有適當(dāng)?shù)碾y度,有挑戰(zhàn)但可行(3)任務(wù)環(huán)境可以提供大量反饋,以便于你采取行動(dòng)(4)提供重復(fù)犯錯(cuò)和糾正錯(cuò)誤的機(jī)會(huì)。(p27)

      訣竅4:通過(guò)觀察和模仿來(lái)學(xué)習(xí)(p29)模仿->吸收->創(chuàng)新

      我們需要研究如何在項(xiàng)目中實(shí)踐盡可能多的現(xiàn)有技能(p30)訣竅5:保持實(shí)踐以維持專家水平(p31)

      訣竅6:如果你需要?jiǎng)?chuàng)造力,直覺(jué)或者獨(dú)創(chuàng)能力,避免使用形式方法(p34)

      在系統(tǒng)思維中,往往是事物之間的聯(lián)系最讓人感興趣,而不是事物本身,這些聯(lián)系有助于形成情境,而正是情境讓這些事物各不相同。(p35)

      訣竅7:學(xué)習(xí)如何學(xué)習(xí)的技能(p37)

      第三章 認(rèn)識(shí)你的大腦(p37)

      大腦是雙cpu,每次只有一個(gè)cpu可以訪問(wèn)內(nèi)存,這兩個(gè)cpu對(duì)應(yīng)著大腦中兩種不用的處理方式,線性L模式,異步,綜合處理的R富模式。:R型對(duì)直覺(jué)問(wèn)題解決和創(chuàng)造性非常重要,R型沒(méi)有做任務(wù)語(yǔ)言處理,L型讓你細(xì)致工作并實(shí)現(xiàn)目標(biāo)。(p39)大腦必須刷新,必須使用,否則就會(huì)丟失記憶.(p40)

      隨時(shí)記錄想法(p42)

      訣竅8:捕獲所有的想法以從中獲益更多(p44)

      面對(duì)復(fù)雜的設(shè)計(jì)問(wèn)題或者難以修改的bug,優(yōu)秀的程序員通常都有沖動(dòng)去編碼和構(gòu)建,由此可以從中學(xué)習(xí),這就是R型的綜合而不是L型的分析。(51)

      訣竅9:綜合學(xué)習(xí)與分析學(xué)習(xí)并重(p51)

      積極的情感對(duì)學(xué)習(xí)和創(chuàng)造性思維非常關(guān)鍵,處于“高興”的狀態(tài)可以擴(kuò)展你的思維過(guò)程,激

      活更多的大腦物質(zhì)。

      如果處于一個(gè)豐富的環(huán)境中,里面充滿了需要學(xué)習(xí),觀察和交互的事物,你就會(huì)產(chǎn)生大量的新細(xì)胞和新的神經(jīng)聯(lián)系(p55)

      訣竅10:爭(zhēng)取好的設(shè)計(jì),它真的很有效(p55)

      創(chuàng)造來(lái)自于選擇和組裝,他要選擇最合適的部件,并將它們組裝成最合適的表現(xiàn)形式,這就是創(chuàng)作。(56)如果你想發(fā)現(xiàn)全局,整體的模式,需要R型,如果需要分析部分和細(xì)節(jié),需要L型。(57)訣竅11:重新連線大腦,堅(jiān)信這一點(diǎn)并不斷實(shí)踐(p58)

      好程序員,多編碼,深思熟慮,專注實(shí)踐。(59)

      第四章 你用右腦(p60)

      訣竅12:增加感觀體驗(yàn)以促進(jìn)大腦的使用(p61)

      大腦善于持續(xù)適應(yīng)變化的環(huán)境,因此,要定期改變環(huán)境,滿足你的大腦(p62)很多常見(jiàn)得活動(dòng)都能夠激活r型停止L型的占用:聽音樂(lè),繪畫,靜思,慢跑,等。(p63)訣竅13:R型開路,L型緊跟(p68)

      學(xué)習(xí)過(guò)程中,不要太迫于學(xué)會(huì)和記憶,首先只是適應(yīng)它,試著理解其意思,掌握主旨思想,然后再采取傳統(tǒng)的L型活動(dòng)走下一步。(p69)

      L型和R型在隱喻上(也就是創(chuàng)建類比的過(guò)程中)是想通的(p71)

      訣竅14:使用隱喻作為L(zhǎng)型和R型相融之所(p71){電腦的隱喻:窗,鼠標(biāo),老鼠,回收站,垃圾桶}

      當(dāng)異類聯(lián)想時(shí),這種聯(lián)系越不可能(兩參照系相距越遠(yuǎn)),創(chuàng)造性的成果就越大。

      輕聲!那邊窗子里亮起來(lái)的是什么光?那就是東方,朱麗葉就是太陽(yáng)!;;愛(ài)情是嘆息吹起的一陣煙;;哲學(xué)是逆境中的蜜乳。(p73)

      幽默既不是浪費(fèi)時(shí)間,也不是無(wú)害的消遣,而是反映了思維,學(xué)習(xí)和創(chuàng)造所必須的重要能力,他與聯(lián)系有關(guān)。(75)

      語(yǔ)鋒陡轉(zhuǎn)真是幽默的來(lái)源(p75)

      訣竅15:培養(yǎng)幽默感以建立更強(qiáng)大的隱喻(p75)

      訣竅16:離開鍵盤區(qū)解決難題(p84)

      努力從不同的角度看待問(wèn)題,這是獲取洞察力的訣竅(p87)

      訣竅17:改變解決問(wèn)題的角度(p88)

      第五章 調(diào)試你的大腦(p93)四大類問(wèn)題:認(rèn)知偏見(jiàn),時(shí)代影響,個(gè)性傾向;(p94)

      訣竅18:“很少”不意味著“沒(méi)有”(p99)

      訣竅19:適應(yīng)不確定性(p100)

      隨著項(xiàng)目進(jìn)展,你會(huì)逐步找到答案,最終一切都有答案(p100)

      好記性不如爛筆頭(p101)

      訣竅20:信任記錄而不是記憶,每一次思維的輸出都是一次輸入(p101)

      訣竅21:從多個(gè)角度看待問(wèn)題(p109)

      訣竅22:尊重不同人的不同性格(p109)

      訣竅23:像高級(jí)動(dòng)物一樣行動(dòng),請(qǐng)坐深呼吸,而不要張口鳴(p115)

      R型到L型,該開始思考時(shí)是全局和經(jīng)驗(yàn)性的,然后轉(zhuǎn)換到更常規(guī)的實(shí)踐和技能,從而實(shí)現(xiàn)學(xué)習(xí)過(guò)程。(p116)

      訣竅24:相信直覺(jué),但要驗(yàn)證(p116)

      當(dāng)你堅(jiān)信某件事情的時(shí)候問(wèn)問(wèn)自己原因。你確信老板在報(bào)復(fù)你,你怎么知道的?(要抱有懷疑和追尋根源的態(tài)度)(p117){p167:雞蛋不一定都是白色的}

      凡事總有兩面性,仔細(xì)權(quán)衡,積極和消極的兩面,有助于確保你更全面地評(píng)估形勢(shì)。(p118)我們通過(guò)邏輯來(lái)證明,通過(guò)直覺(jué)去發(fā)現(xiàn)--龐加萊(p118)

      第六章 主動(dòng)學(xué)習(xí)(p119)

      在當(dāng)今技術(shù)和環(huán)境下,學(xué)習(xí)能力可能是成功的最重要因素,它決定了你是“大獲全勝”,還是“勉強(qiáng)通過(guò)”。(p119)

      技術(shù)不是最重要的,持續(xù)學(xué)習(xí)才是最重要的。(p119)

      教育的含義:從學(xué)習(xí)者那里引導(dǎo)出一些東西(p120)

      學(xué)習(xí)不是強(qiáng)加于你的,而是你需要主動(dòng)做的事情。僅僅掌握知識(shí),而不去實(shí)踐,沒(méi)有用。隨機(jī)的方法,沒(méi)有目標(biāo)和反饋,往往導(dǎo)致隨機(jī)的結(jié)果。(p121)

      DMART目標(biāo)(specific,measurable,achievable,relevant,and time-boxed),具體的,可度量的,可實(shí)現(xiàn)的,相關(guān)的和時(shí)間可控的。(123)

      訣竅25:建立DMART任務(wù)實(shí)現(xiàn)你的目標(biāo)(p116)

      你創(chuàng)建小任務(wù)越多,你就越容易看清自己與目標(biāo)的距離。(p126)

      訣竅26:對(duì)主動(dòng)學(xué)習(xí)的投資做好計(jì)劃(p128)

      很多教育家把學(xué)習(xí)者分為三大類:視覺(jué)型,聽覺(jué)型和動(dòng)覺(jué)型(p130)訣竅27:發(fā)現(xiàn)你的最佳學(xué)習(xí)方式(p134)

      訣竅28:組織學(xué)習(xí)小組學(xué)習(xí)和輔導(dǎo)(p136)

      我們都是天生的模仿者,最佳而且最有效的學(xué)習(xí)方式是觀察和模仿別人(p136)

      SQ3R學(xué)習(xí)一本書(或其他?)的方法:1,調(diào)查:掃面目錄和每章總結(jié),得出總體看法。2,問(wèn)題:記錄所有問(wèn)題。3,閱讀:閱讀全部?jī)?nèi)容。5復(fù)述:總結(jié)做筆記,用自己的話來(lái)描述。5,回顧:重讀,擴(kuò)展筆記,與同事討論。(p137)

      訣竅29:主動(dòng)閱讀(p139)

      R->L:首先是一種全盤,淺顯但是廣泛的調(diào)查,然后轉(zhuǎn)換到傳統(tǒng)的L型活動(dòng),擴(kuò)大多重感官的參與(討論,筆記,圖片,隱喻等)。(p139)

      使用思維導(dǎo)圖(p140)訣竅30:同時(shí)用R型和L型做筆記(p143)

      訣竅31:寫文檔的過(guò)程比文檔本身更重要(p146)

      訣竅32:觀察,實(shí)踐,教學(xué)(p149)

      第七章 積累經(jīng)驗(yàn)(p150)

      積累經(jīng)驗(yàn)是學(xué)習(xí)和成長(zhǎng)的關(guān)鍵--我們通過(guò)實(shí)踐的方法學(xué)習(xí),效果最好。(p150)

      真正的學(xué)習(xí)--對(duì)你有用的學(xué)習(xí)--來(lái)自實(shí)踐和認(rèn)知,而不是外部的教學(xué)活動(dòng)或者死記硬背。(p151)

      趣味性很重要(p152)

      訣竅33:為了更好地學(xué)習(xí),請(qǐng)更好地玩(p53)

      把事情分成大腦足以容納的幾部分(p154)訣竅34:從相似點(diǎn)中學(xué)習(xí),從差異中忘卻(p155)

      訣竅35:在你的環(huán)境中安全地探索,創(chuàng)造和應(yīng)用(p156)

      訣竅36:觀察,不做判斷,然后行動(dòng)(p161)

      當(dāng)大腦受到壓力,它會(huì)主動(dòng)停止一些思考,眼界會(huì)縮小,不再考慮可能的選擇,更糟糕的是,你會(huì)把R型完全拒之門外,L型主導(dǎo)一切,當(dāng)你認(rèn)為時(shí)間至關(guān)重要時(shí),R型根本沒(méi)機(jī)會(huì)工作。(p164)

      訣竅37:允許失敗,你會(huì)走向成功(p164)

      想象自己成功被證明是一種達(dá)到成功的有效的方法(p167)

      訣竅38:讓大腦為成功形成慣例(p168)

      記憶的每一次讀取都是一種寫入(p170)

      第八章 控制注意力(p171)

      好的問(wèn)題是沒(méi)有答案的,它不是一個(gè)需要擰緊的螺栓,而是一顆種下的種子,由他可以收獲一片思想的綠洲(p171)

      訣竅39:學(xué)習(xí)集中注意力(p174)

      冥想:注意呼吸,順其自然,不做任何判斷和回應(yīng)(p175)

      在任何情況下,都要保持呼吸的意識(shí),感受空氣在你的肺中,并讓其他的想法自然溜走(p176)拖延與浸泡:如果某個(gè)任務(wù)你真的不想做,那么任何分散注意力的努力很可能只是耗費(fèi)時(shí)間。如果你仍然有興趣,但感覺(jué)“困難”,那么思想其實(shí)是在繼續(xù)發(fā)酵,這當(dāng)然沒(méi)問(wèn)題。(p178)訣竅40:擠出思維的時(shí)間(p178)

      你需要隨時(shí)隨地做好準(zhǔn)備捕捉信息,但是,一旦你捕捉到它,不能只讓它呆在那里,這對(duì)你沒(méi)有任何用處,你需要處理這些材料,組織它,發(fā)展它,合并不同的材料,并將整體的想法提煉和劃分為更具體的想法(p180)

      以為我們絕大多數(shù)人都沒(méi)有百科全書的記憶力,一旦你讀過(guò)一次,記得去什么地方找到對(duì)應(yīng)的細(xì)節(jié)就足夠了。(p181)

      愛(ài)因斯坦也深諳此道,據(jù)稱他曾經(jīng)被問(wèn)到一英里有多少英尺,他回答說(shuō),他不會(huì)在頭腦中填滿能輕易找到的東西,這就是參考書籍的用處,這是一種有效使用資源的方式(p181)訣竅41:使用wiki來(lái)管理信息和知識(shí)(p183)

      多任務(wù)處理對(duì)生產(chǎn)力會(huì)造成重大損失,一項(xiàng)研究發(fā)現(xiàn),一般情況下,多任務(wù)處理將耗費(fèi)你20%到40%的生產(chǎn)力。我們大腦沒(méi)有“保存?!被颉爸匦录虞d?!钡牟僮鳎╬186)

      科學(xué)家認(rèn)為,試圖把注意力同時(shí)放在幾件事上,意味著你在每件事情上都會(huì)處理得很差。so,無(wú)論你做什么請(qǐng)不要同時(shí)都做。(p187)

      一旦你選擇一組工作,就要持續(xù)進(jìn)行,避免情境切換。動(dòng)態(tài)刷新頭腦中的清單是相當(dāng)昂貴的,應(yīng)該在外部信息系統(tǒng)中保持待辦事項(xiàng)清單。(p190)訣竅42:制定交流規(guī)則來(lái)管理干擾(p192)

      訣竅43:少發(fā)送郵件,你就會(huì)少收到郵件(p193)

      訣竅44:為郵件通信選擇你自己的進(jìn)度(p193)

      你一直在持續(xù)努力地工作,你覺(jué)得越來(lái)越困難,或煩惱,或只是需要休息一下??梢?,在白紙上隨手涂鴉,或者隨意走走,保持對(duì)情境友好的狀態(tài)(p194)

      訣竅45:屏蔽中斷來(lái)保持注意力(p194)

      如何保持注意力:我們鼓勵(lì)你把冥想作為保持思維敏銳和清晰的工具。記住你需要集中注意力做什么。記住下面三件事:(1)學(xué)會(huì)安撫喋喋不休的L型思維,(2)主動(dòng)在前進(jìn)中思考和增強(qiáng)思想,即使是不成熟的。(3)明確情境切換的昂貴代價(jià),盡可能地避免。(p199)

      第九章 超越專家(p200)

      真正的發(fā)現(xiàn)之旅不在于追求新大陸,而在于擁有新的視野(p200)

      危險(xiǎn)不在于做了錯(cuò)事,而在于根本沒(méi)有去做事。(“不作為”是敵人,而“錯(cuò)誤”不是)(p201)不管你能做什么,或者期望自己做什么,現(xiàn)在就開始做吧,勇敢可以給人智慧,力量和神奇,現(xiàn)在就開始做吧--歌德(p202)

      當(dāng)你變成專家之后,你最想追求的事情是。。新手的思維。(新手的大腦有很多可能性,但是專家心理只有很少){專家太相信自己的專業(yè)水平,對(duì)其他的可能忽然不見(jiàn)}(p203)維梅爾鼓勵(lì)女孩像他一樣看待世界:充滿復(fù)雜和豐富的細(xì)節(jié),這是我們都在面對(duì)的挑戰(zhàn)--完全看清世界,不斷看清世界,和我們自己。(p204)

      訣竅48:抓住方向盤,你不能自動(dòng)駕駛(p205)

      第二篇:程序員修煉 收藏

      程序員修煉 收藏

      程序就是一系列按步驟進(jìn)行的操作序列,它有好多種級(jí)別,比如最低級(jí)的微程序、次低級(jí)的匯編程序、高級(jí)的各種編程語(yǔ)言程序、最高級(jí)的腳本語(yǔ)言程序,也許我列的不對(duì),但沒(méi)關(guān)系,我要說(shuō)的是不管是那個(gè)級(jí)別的程序,其本質(zhì)都是操作的邏輯序列。大多數(shù)系統(tǒng)和應(yīng)用程序都是建立在高級(jí)編程語(yǔ)言上的,比如C、C++、C#、FORTRAN、BISIC、JAVA等等,就讓我們只關(guān)注這一級(jí)的編程能力吧。因此如果一個(gè)程序員的邏輯能力不高,他永遠(yuǎn)都不能成為一名具有合格職業(yè)水準(zhǔn)的程序員,我們?cè)谙旅娴挠懻撚嘘P(guān)編程能力的方方面面,最終都是為了最大程度地提高和實(shí)現(xiàn)一名程序員的邏輯能力。

      一、掌握基礎(chǔ)知識(shí):十六年寒窗的持續(xù)積累

      從7歲讀小學(xué)起,經(jīng)過(guò)16年的學(xué)習(xí),你從軟件專業(yè)本科畢業(yè)后,必須完成以下幾門專業(yè)課程的學(xué)習(xí):計(jì)算機(jī)組成、操作系統(tǒng)原理、匯編語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)、編譯原理、數(shù)據(jù)庫(kù)原理、軟件工程、結(jié)構(gòu)性設(shè)計(jì)語(yǔ)言(PASCAL、C)、面向?qū)ο笤O(shè)計(jì)語(yǔ)言(C++、C#)、計(jì)算機(jī)網(wǎng)絡(luò)等,你最好還懂一些算法分析、分布式系統(tǒng)、計(jì)算機(jī)圖形學(xué)、形式邏輯、人工智能原理、軟件設(shè)計(jì)模式、軟件構(gòu)架/框架等研究生的課程,16年來(lái),你積累的除了知識(shí),更重要的是形成最適合自己的學(xué)習(xí)方法和工作方法。這些是你具備程序員職業(yè)水準(zhǔn)的基礎(chǔ)能力,不要受什么計(jì)算機(jī)軟件怪杰之類傳奇的影響,那不過(guò)是小概率事件,而且這些怪杰們就算沒(méi)有讀過(guò)軟件本科和研究生,也往往自學(xué)了大多數(shù)專業(yè)課程,很可能比在校學(xué)習(xí)的學(xué)生對(duì)這些課程的精髓部分理解的更好,還有他們的工作方法和思維方式是特別而高效的,但普遍性差,可以借鑒,不宜模仿。好,所以現(xiàn)在你只需要問(wèn)問(wèn)自己,那些課程和知識(shí)都學(xué)會(huì)并掌握了嗎?如果是,那就準(zhǔn)備好進(jìn)行實(shí)踐了。

      二、在實(shí)踐中提高:成為一名高水平的Coder

      好了,你畢業(yè)了,在校功課都不錯(cuò),也找了一個(gè)專業(yè)對(duì)口的工作,你想大展鴻圖了,可是別急,你的翅膀還不夠硬,不信我們說(shuō)來(lái)看看。

      通常,你在工作中都會(huì)用到某一種單位/公司固定的操作系統(tǒng)和編程語(yǔ)言開發(fā)環(huán)境,比如Windows、UNIX、LINUX等操作系統(tǒng),又比如用VC、VB、PB、Delph、JAVA、Motif/XWindow、QT、OpenGL、OpenInventor等編程語(yǔ)言和開發(fā)環(huán)境,我們?cè)诤竺姘阉鼈兒戏Q為開發(fā)環(huán)境。就在校學(xué)習(xí)的有關(guān)開發(fā)環(huán)境的知識(shí)而言,大概你距工作需要的差距是不小的,當(dāng)某個(gè)操作系統(tǒng)和編程語(yǔ)言環(huán)境成為你的飯碗時(shí),就不應(yīng)也不能用通過(guò)課程/認(rèn)證考試之類的眼光和要求來(lái)評(píng)價(jià)你的能力,即使你能考100分。你需要深入地學(xué)習(xí)該操作系統(tǒng)和編程語(yǔ)言環(huán)境的各類開發(fā)手冊(cè)的所有內(nèi)容,你會(huì)說(shuō)大多數(shù)你都用不上,其實(shí)你既對(duì)又不對(duì),對(duì)的是單從使用的角度而言,你確實(shí)用不上開發(fā)手冊(cè)的大多數(shù)內(nèi)容,比如龐大的VC開發(fā)類庫(kù)和復(fù)雜的開發(fā)環(huán)境,你在實(shí)際工作中能用到的不到總數(shù)的1/10或1/5,不對(duì)的地方在于,你用到的部分不是孤立存在的,它們是整個(gè)體系中的一部分,只有對(duì)整個(gè)體系有了一個(gè)較完整的了解,才能得心應(yīng)手、隨心所欲地用好你用到的部分,你才算初步具備在這種開發(fā)環(huán)境下進(jìn)行Coding的職業(yè)水準(zhǔn)(還遠(yuǎn)不夠程序員的職業(yè)水準(zhǔn)呢),而這只是剛開始。如何才能真正掌握一種開發(fā)環(huán)境的全面的知識(shí)呢,最原始的辦法就是讀開發(fā)指南/教程、參考手冊(cè),一般來(lái)講,學(xué)習(xí)開發(fā)指南/教程時(shí),你如果是一個(gè)認(rèn)真的人,都會(huì)完成5/10~7/10左右內(nèi)容的學(xué)習(xí)和練習(xí),如果你想成為職業(yè)選手,就應(yīng)該完成9/10以上內(nèi)容的學(xué)習(xí)和練習(xí)。參考手冊(cè)不同,大多數(shù)所謂的“程序員”們只是用到了才翻翻,這差的太遠(yuǎn)了,你應(yīng)該象讀開發(fā)指南/教程一樣,每個(gè)環(huán)節(jié)都要讀,比如VC,參考手冊(cè)中的每個(gè)類,類的每個(gè)函數(shù),都要讀上幾遍,它們往往是一小伙一小伙地糾纏在一起使用的,開始時(shí)讀得你毫無(wú)頭緒、心煩意亂,不要緊,還有一手呢,如果你開發(fā)環(huán)境安裝的全面,它們往往都有開發(fā)商做的demo例子可看,你就進(jìn)入另一個(gè)境界了,開始時(shí)你關(guān)注demo中的具體技術(shù),后來(lái)你發(fā)現(xiàn)這些demo的程序?qū)懙亩歼€算不錯(cuò),結(jié)構(gòu)簡(jiǎn)單但合理,如果你真的用心,就一定能發(fā)現(xiàn)一些個(gè)別的demo是極品,它所展現(xiàn)的程序邏輯結(jié)構(gòu)是你設(shè)計(jì)不出來(lái)的,你現(xiàn)在有點(diǎn)更關(guān)心它的程序設(shè)計(jì)構(gòu)架,甚于對(duì)你原始目的(某種相關(guān)的技術(shù)/技巧)的關(guān)注,這時(shí)的你,開始了從一名Coder向一名Programmer的轉(zhuǎn)變,你會(huì)忍不住要看看開發(fā)商提供的源程序,比如.h和.cpp,通常你會(huì)找到include路徑下所有的.h程序,你才知道,哇!好多好多東東在參考手冊(cè)中都沒(méi)提到,你要學(xué)的太多了,沒(méi)時(shí)間顧及其它的業(yè)余愛(ài)好了,現(xiàn)在知道為什么程序員是年輕人的職業(yè)了吧,你要有足夠多的時(shí)間才行,即使你的智商有160。如果你走到這一步,在你工作的團(tuán)隊(duì)中,已經(jīng)是經(jīng)常有人向你請(qǐng)教技術(shù)問(wèn)題,經(jīng)常有人請(qǐng)求你幫忙debug,你已是公認(rèn)的“高手”了,別得意,因?yàn)槟闳匀皇莻€(gè)Coder,為什么這么說(shuō)呢,你想想,你已深入了解了這個(gè)開發(fā)環(huán)境中的各種技能,知道一名Coder如何用好這些東西,可是你能設(shè)計(jì)的出提供給Coder們用的東西嗎?唔??,你想了想,可能還不太行。對(duì)了,就是這樣,你還是一名小我境界的程序員呢,本質(zhì)是個(gè)Coder,當(dāng)然已是一名高水平的Coder了,然而你需要進(jìn)一步登堂入室才能成為一名真正的程序員。

      讓我們繼續(xù)吧,通常你都是從精通一種編程環(huán)境開始的,假設(shè)你已經(jīng)較為精通在Windows下用VC開發(fā)軟件了,這時(shí)在技術(shù)和技巧方面你將面臨一小一大兩個(gè)挑戰(zhàn),第一個(gè)小挑戰(zhàn)是如果公司/單位改換了開發(fā)環(huán)境,比如用LINUX下的QT交互語(yǔ)言工具進(jìn)行開發(fā),你不過(guò)是把前面掌握VC的過(guò)程再來(lái)一遍,由于在主觀上經(jīng)歷了VC工具的學(xué)習(xí)過(guò)程,在客觀上各種開發(fā)環(huán)境都有太多相似的方面,這回你掌握的應(yīng)該較快。要小心,在這時(shí)第一次誘惑之門打開了,因?yàn)槟愀杏X(jué)良好,看!這回這么快,我就這么好地掌握了新的開發(fā)環(huán)境,你開始關(guān)注其它暫時(shí)還用不到的同類環(huán)境,比如VB、Delph、JAVA,如饑似渴地掌握各種開發(fā)工具,證明自己的學(xué)習(xí)能力和價(jià)值,但你忘了一點(diǎn),你仍然是個(gè)Coder,只不過(guò)是一個(gè)在好多開發(fā)環(huán)境下都能編程的Coder,就像你生活在中國(guó),因而精通了漢語(yǔ),工作需要你又掌握了英語(yǔ),然后你就來(lái)了勁,把俄語(yǔ)、日語(yǔ)、阿拉伯語(yǔ)、拉丁語(yǔ),等等等等,都學(xué)習(xí)個(gè)遍,我只能說(shuō),有點(diǎn)BT。你忘了自己是個(gè)職業(yè)人,同一類的東西工作中用得到才需學(xué)習(xí),太多太多的Coder們喜歡在一起比較和炫耀自己會(huì)掌握了幾種開發(fā)工具,不信你看看招聘時(shí)的求職書就知道了,sigh!他們中絕大多數(shù)人永遠(yuǎn)都只能停留在這個(gè)層次上,心浮氣躁,一生都再也當(dāng)不成真正的程序員了??偨Y(jié)一下,其實(shí)你在這時(shí)需要的是對(duì)自己掌握新開發(fā)環(huán)境的能力的自信,而不是一遍遍地重復(fù)來(lái)證明自己。第二個(gè)大挑戰(zhàn)就是你明白了只掌握VC是不夠的,你發(fā)現(xiàn)自己有點(diǎn)淺薄,有很多東東你會(huì)用但你不太懂,很多方面支持VC編程的知識(shí)你都沒(méi)掌握,比如操作系統(tǒng)的源碼、網(wǎng)絡(luò)協(xié)議知識(shí)、Windows 的注冊(cè)表、進(jìn)程和線程的基礎(chǔ)知識(shí)、硬件驅(qū)動(dòng)方面的知識(shí)、ActiveX、Windows 龐大的 API,又是一個(gè)等等等等,這些基礎(chǔ)知識(shí)的學(xué)習(xí)和掌握可是要花費(fèi)大量時(shí)間的,你再一次深切地感到時(shí)間太不夠用了,因?yàn)檫@時(shí)的你大概有許多俗務(wù)纏身了,所以有點(diǎn)沮喪,還不用提IT業(yè)每天不知有多少新東西在發(fā)布,KAO,永遠(yuǎn)都跟不上,越拉越遠(yuǎn)了。哎!別氣餒,振作一點(diǎn),你還是忘記了自己是個(gè)職業(yè)人,既然好多東東在工作中你永遠(yuǎn)都沒(méi)機(jī)會(huì)用,那么干嘛要學(xué)呢?用什么才學(xué)什么,最多預(yù)測(cè)到馬上要用什么,先一步學(xué)什么好了,要知道沒(méi)有人是真正的、無(wú)所不精的全科大夫,除非你是神,但如果你還在耐著性子看這篇文章,你肯定是個(gè)人嘛。

      OK,一般工作后三五年,你經(jīng)歷了上述過(guò)程,經(jīng)受了誘惑和考驗(yàn),終于明白了一個(gè)道理:你要的是強(qiáng)勁的學(xué)習(xí)知識(shí)的能力,是對(duì)某種軟件知識(shí)/技能的有深度的精通,一種摸到它的根的深度,而不是已掌握的技能的種類和數(shù)量。這時(shí)無(wú)論誰(shuí)用他掌握了多少種你不會(huì)的技能來(lái)嚇唬你都沒(méi)用,你對(duì)他的層次只有蔑視。通過(guò)幾年的學(xué)習(xí)和工作,要記住最重要的一點(diǎn),永遠(yuǎn)最重要:對(duì)自己學(xué)習(xí)IT知識(shí)能力的自信,一個(gè)程序員一生都要不停地進(jìn)行高強(qiáng)度的學(xué)習(xí),用心問(wèn)問(wèn)自己,有沒(méi)有這個(gè)自信?別用虛榮心來(lái)騙自己哦,如果沒(méi)有的話,那就不必花費(fèi)你寶貴的時(shí)間向下看了,作者在此感謝你有耐心看到這里,現(xiàn)在建議你關(guān)閉這篇文章,趁著年輕,當(dāng)機(jī)立斷轉(zhuǎn)行吧!

      三、注重邏輯:成為一名職業(yè)程序員

      好,再前進(jìn)一點(diǎn)點(diǎn),你就要成為一名職業(yè)程序員了,讓我們繼續(xù)來(lái)完成這個(gè)任務(wù)吧!我們?cè)谇耙还?jié)提到過(guò),“你發(fā)現(xiàn)一些個(gè)別的demo是極品,它所展現(xiàn)的程序邏輯結(jié)構(gòu)是你設(shè)計(jì)不出來(lái)的,你現(xiàn)在有點(diǎn)更關(guān)心它的程序設(shè)計(jì)構(gòu)架,甚于對(duì)你原始目的(某種相關(guān)的技術(shù)/技巧)的關(guān)注”,其實(shí)你是在關(guān)注這個(gè)demo程序作者的思維邏輯,所有程序的本質(zhì)就是邏輯。技術(shù)你已經(jīng)較好地掌握了,但只有完成邏輯能力的提高,你才能成為一名職業(yè)程序員。打一個(gè)比方吧,你會(huì)十八般武藝,刀槍棍棒都很精通,但就是力氣不夠,所以永遠(yuǎn)都上不了戰(zhàn)場(chǎng),這個(gè)力氣對(duì)程序員而言就是邏輯能力(其本質(zhì)是一個(gè)人的數(shù)學(xué)修養(yǎng),注意,不是數(shù)學(xué)知識(shí))。邏輯能力也是逐步提高的,開始時(shí)你一定是用直觀的邏輯能力來(lái)編程的,怎么想就怎么編,不對(duì)就再改,在改進(jìn)中提高自己的邏輯能力,從直觀邏輯能力提高到抽象邏輯能力,這是很正常的。提前說(shuō)一句吧,到達(dá)邏輯能力的至高境界,其表現(xiàn)是用數(shù)學(xué)語(yǔ)言來(lái)描述問(wèn)題和問(wèn)題的解決辦法,高度抽象!好,說(shuō)回來(lái)吧,你要提高邏輯能力,最快的辦法就是讀別人寫的結(jié)構(gòu)優(yōu)秀的程序。優(yōu)秀的代碼是百讀不厭的(這句話是我抄來(lái)的),暫時(shí)放放對(duì)其中某種技術(shù)和技巧的關(guān)注吧,你要推導(dǎo)和學(xué)習(xí)的是這些好程序的邏輯結(jié)構(gòu),它們是被精心設(shè)計(jì)出來(lái)的。你可以先捂住這個(gè)demo程序,自己設(shè)計(jì)一個(gè)功能相同的程序結(jié)構(gòu),然后比較一下demo的程序結(jié)構(gòu),如果差距較大,那你就不應(yīng)簡(jiǎn)單地改進(jìn)一下,而是要把demo作者設(shè)計(jì)的過(guò)程在心里復(fù)原一遍,做到這一點(diǎn)也許有點(diǎn)困難,但這種事干的多了,你就會(huì)越干越快,越來(lái)越得心應(yīng)手,你的邏輯能力飛速提升,你能看得上的邏輯結(jié)構(gòu)優(yōu)秀的程序開始不多了,下一步就是練習(xí)。從工作中開始吧,如果你有空閑,你需要做至少兩類練習(xí),一類是算法練習(xí),所有的經(jīng)典算法都是經(jīng)典的邏輯,題目有的是,像個(gè)好學(xué)生一樣吧,每年的國(guó)內(nèi)國(guó)際編程競(jìng)賽都有邏輯要求非常高的題,你可以只選一兩道難題來(lái)做做。當(dāng)你可以把復(fù)雜的單遞歸程序(只有A調(diào)A)變成非遞歸程序時(shí),已經(jīng)不錯(cuò)了,如果你能看得懂雙遞歸程序(A調(diào)A、A調(diào)B、B調(diào)A、B調(diào)B都有),我為你鼓掌!你不必往下看了,我有點(diǎn)不好意思啦――班門弄斧,你快滾蛋吧!另一類是把以前和當(dāng)前你工作中你不滿意的程序推倒重新設(shè)計(jì)一遍,這非常重要,省時(shí)省力,因?yàn)槟闶煜ば枨?,技術(shù)上也沒(méi)問(wèn)題,目的就是改進(jìn)程序的邏輯結(jié)構(gòu),很劃算哦,唯一要克服的就是:你對(duì)推翻以前工作中那點(diǎn)小小成就的心理障礙,如果你真想優(yōu)秀,說(shuō)句粗話:這點(diǎn)心理障礙算個(gè)屁,一遍遍反復(fù)地推倒已有的成果只能使自己快速進(jìn)步,放手干吧,沒(méi)什么好可惜的,馬恩早就在《共.產(chǎn).黨宣言》里說(shuō)過(guò)了:在這個(gè)過(guò)程中,你失去的只有鎖鏈(禁錮你思想的鎖鏈)。

      讓我們來(lái)總結(jié)一下,經(jīng)過(guò)自我否定后,再生的你盡管對(duì)過(guò)去的“業(yè)績(jī)”還有一些眷戀,但已是一個(gè)初步具備職業(yè)水準(zhǔn)的程序員了,掌握了相應(yīng)的技術(shù)和技巧,具備了較高的抽象邏輯思維能力,最主要的特征是:能自覺(jué)地自我否定,不斷地追求更高水平的邏輯能力。

      在這個(gè)過(guò)程中,如果你能注意以下一些小的方面,你前進(jìn)的步伐也許會(huì)快一些。

      l 從編譯原理的角度來(lái)理解你工作中使用的高級(jí)語(yǔ)言,如果你做到這一點(diǎn),至少有兩個(gè)好處,第一個(gè)好處是避免一大堆低水平重復(fù)出現(xiàn)的編譯錯(cuò)誤。一名優(yōu)秀的Coder平均在一個(gè)工作日中應(yīng)該完成200行以上的源碼,其編譯錯(cuò)誤應(yīng)該控制在5個(gè)以下,要知道這200行源碼不是一次完成的,所以大多數(shù)情況下你都要追求一次編譯通過(guò),而一名職業(yè)水準(zhǔn)的程序員,應(yīng)該進(jìn)一步做到即使用purify這類的工具來(lái)檢查源碼,也不會(huì)存在嚴(yán)重的內(nèi)存泄露。第二個(gè)好處是可以提高源碼的可讀性和效率。規(guī)范地編寫你的代碼使你自己的邏輯清晰,因?yàn)槟忝靼锥嗉訋讉€(gè)括號(hào)和空行、多換行對(duì)齊、多注釋,編譯器是會(huì)自動(dòng)識(shí)別的,不影響程序執(zhí)行的效率,反過(guò)來(lái),控制好遞歸調(diào)用和循環(huán)內(nèi)的if語(yǔ)句才是提高程序效率的關(guān)鍵,要全力避免遞歸,但要深刻理解遞歸,能通過(guò)自己建立堆棧來(lái)把遞歸程序轉(zhuǎn)換成非遞歸程序,要求還是較高的哦!

      l 避免思維陷阱,只要你是人就一定有自己的思維慣性,這一定又會(huì)表現(xiàn)在你的程序邏輯中,有時(shí)你就是從這個(gè)慣性中跳不出來(lái)(誰(shuí)都有這個(gè)時(shí)候),但要心里有數(shù)才行,所以你需要幫助,如果你有幾個(gè)水平相若或更高的職業(yè)伙伴,太好了,當(dāng)遇到花30分鐘還打不下的bug時(shí),就別浪費(fèi)時(shí)間了,找他們吧,最要緊的是能思路清晰明確地表述你的問(wèn)題,通常你自己在這個(gè)過(guò)程中或者伙伴中就有人把問(wèn)題解決了,又快又好。另外,有幾個(gè)可以良性競(jìng)爭(zhēng)的職業(yè)伙伴是人生的一件幸事,1+1>2,大家各有所長(zhǎng),你最好做到及時(shí)公開你的成果,技不壓身嘛,IT發(fā)展的這么快,你再優(yōu)秀,那點(diǎn)東東也沒(méi)有什么值得隱藏的,所以你可以技術(shù)或水平不夠高,但千萬(wàn)不可以讓真正具有職業(yè)水準(zhǔn)的選手鄙視你的職業(yè)品質(zhì)和行為。

      l 有自己debug的特點(diǎn),下面的說(shuō)法作者不敢太肯定,只是經(jīng)驗(yàn)之談。即使在VC這種高度完善的開放環(huán)境下,你仍然應(yīng)該要求自己僅憑打印語(yǔ)句就能debug。這也有兩點(diǎn)好處,第一個(gè)好處是,遇到bug你會(huì)認(rèn)真想問(wèn)題所在,而不是用debug工具一步步簡(jiǎn)單地追蹤卡在哪兒了,你定位bug范圍的方式是從大到小、從粗到精,這是一種自頂向下的思維方式,而用工具追蹤,容易形成自底向上的思維方式,這不算好,你應(yīng)該先看到森林,再看到樹木。我反復(fù)提及:程序就是邏輯過(guò)程,大多數(shù)程序從main函數(shù)開始,是由數(shù)據(jù)結(jié)構(gòu)和功能子程序組成的一個(gè)樹形結(jié)構(gòu)的邏輯過(guò)程(要認(rèn)清即使是面向?qū)ο蟮某绦蛘Z(yǔ)言也是一樣的),它的執(zhí)行過(guò)程是深度優(yōu)先的,但你定位bug應(yīng)該是廣度優(yōu)先的,好好想想這一點(diǎn),嗯?第二個(gè)好處是強(qiáng)迫你思考并記住而不是用工具看到調(diào)用過(guò)程,你大腦的抽象邏輯思維能力和胳膊上肌肉的力量一樣,都是練出來(lái)的,如果你的bug是程序結(jié)構(gòu)上的邏輯錯(cuò)誤引起的,這一點(diǎn)就非常重要了,順便說(shuō)一句,最難打的bug就是程序邏輯結(jié)構(gòu)錯(cuò)誤導(dǎo)致的bug。你要是真正明明白白地認(rèn)識(shí)到這兒了,那我就沒(méi)什么東西可以告訴你了。總之,程序員的職業(yè)水準(zhǔn):生產(chǎn)效率和程序質(zhì)量,主要是取決于源碼中bug的數(shù)量和debug的速度,而不是取決于編寫源碼的速度。給你一個(gè)我自己定義的考查一個(gè)職業(yè)程序員的指標(biāo):一個(gè)合格水準(zhǔn)的職業(yè)程序員,編程的時(shí)間如果算一份的話,其累計(jì)debug的時(shí)間不能超過(guò)一份,真正職業(yè)高手累計(jì)debug的時(shí)間應(yīng)該控制在0.5份以下,如何?你關(guān)上門悄悄問(wèn)問(wèn)自己,你花費(fèi)在編程和debug上的時(shí)間比例是多少?如果你把程序員作為自己一生的職業(yè),那么就永遠(yuǎn)都要牢記一點(diǎn):追求做一個(gè)0 bug的優(yōu)秀程序員!這是任何一個(gè)想成為職業(yè)程序員的人的理想,請(qǐng)相信:堅(jiān)忍不拔地追求實(shí)現(xiàn)這個(gè)理想將讓你出類拔萃!

      l 做好程序的單元測(cè)試,這是另一項(xiàng)考查你是否是一名具有合格職業(yè)水準(zhǔn)的程序員的一個(gè)必要指標(biāo)。其實(shí)在你拿到需求的時(shí)候就要準(zhǔn)備單元測(cè)試用例了,并且這些用例將直接影響你的詳細(xì)設(shè)計(jì)(有關(guān)軟件設(shè)計(jì)本來(lái)是該放在第四節(jié)講的)。我們還是打比方吧,當(dāng)你拿到一個(gè)需求時(shí),除了分析它靜態(tài)的功能外,還應(yīng)明確它動(dòng)態(tài)的操作/執(zhí)行過(guò)程,把這個(gè)動(dòng)態(tài)過(guò)程明確地用流程圖畫出來(lái),比如分為A~Z的26步,其中A又可以進(jìn)一步分解為A1~A5的5步,直到不能再分解為止。又比如說(shuō)A3步不可分解了,那么你應(yīng)該把A3步的正常操作和所有五花八門的異常操作都列出來(lái),確保正常的操作肯定正確,異常的操作起碼程序不退出才行。這樣你就要寫好多好多的測(cè)試用例,說(shuō)句老實(shí)話,我也從來(lái)不寫!但我一般會(huì)列一個(gè)提綱,比如A3步有正常的操作a、b、c、d、e共5項(xiàng),異常的操作有f、g、h、i、j、k、l、m、n共9項(xiàng),你在進(jìn)行單元測(cè)試時(shí)都應(yīng)該跑一遍,這樣的程序都還不敢說(shuō)質(zhì)量如何好,但起碼可以說(shuō)較穩(wěn)定吧!如果要想在進(jìn)行單元測(cè)試時(shí)干得快、效率高,那么在進(jìn)行詳細(xì)設(shè)計(jì)時(shí),你就應(yīng)該把A3步中對(duì)所有正常操作和異常操作的判斷都設(shè)計(jì)好,在編程實(shí)現(xiàn)A3步時(shí),使得程序的結(jié)構(gòu)合理高效,對(duì)不對(duì)?所以,如果你在工作中是割裂地看待軟件工程中從需求、分析、設(shè)計(jì)、編程、測(cè)試等各個(gè)環(huán)節(jié),恐怕水平很有限喔!但如果你在分析需求時(shí)就能看到測(cè)試的問(wèn)題,并改進(jìn)設(shè)計(jì)和實(shí)現(xiàn),為此做好相應(yīng)的準(zhǔn)備工作,嘿嘿,整個(gè)軟件開發(fā)過(guò)程你的效率會(huì)高很多,通常你在一個(gè)開發(fā)團(tuán)隊(duì)中就會(huì)高度自信的,你已越過(guò)當(dāng)一名偏頗、露骨的高手的境界,成為一個(gè)平靜的高手,這可是The best in the best!,用周星星的話說(shuō):是高手之高高手,因?yàn)閯e人看不出你高在哪兒,沒(méi)見(jiàn)你有什么高招或特拚命干,但反正你就是干得又快又好、又省力。關(guān)于進(jìn)行單元測(cè)試還有很多復(fù)雜的方法,在此本文只提到了最基本的一點(diǎn),目的是讓你在工作上考慮周全、安排有序,其它的自己琢磨吧,沒(méi)有人能替你吃飽飯!

      l 如果你是用C++編程,我再簡(jiǎn)單談?wù)動(dòng)嘘P(guān)內(nèi)層釋放的一個(gè)小技巧,就是對(duì)所有你編寫的類,在構(gòu)造和析構(gòu)函數(shù)中加打印語(yǔ)句,統(tǒng)計(jì)每個(gè)類在運(yùn)行程序時(shí)構(gòu)造和析構(gòu)的地方,如果是配對(duì)的,那么起碼沒(méi)有對(duì)象類一級(jí)的內(nèi)層在程序運(yùn)行結(jié)束時(shí)沒(méi)有釋放,然后你就可以把打印語(yǔ)句刪掉了,招數(shù)雖土,但管用!

      l 還有其它一些好習(xí)慣,在這里我隨筆寫一些,你要是有不同看法也請(qǐng)一笑過(guò)之吧。編程時(shí)應(yīng)該對(duì)齊縮進(jìn),一個(gè)縮進(jìn)用一個(gè)tab鍵,一般是4個(gè)空格,嚴(yán)格遵守開發(fā)團(tuán)隊(duì)的編程規(guī)范也是非常重要的。一個(gè)子程序不應(yīng)超過(guò)30行(不算空行),其內(nèi)多重循環(huán)不應(yīng)超過(guò)3層,否則都應(yīng)該分裂成兩個(gè)子程序,個(gè)別算法程序可以長(zhǎng)一些,但也不宜超過(guò)200行。通常一個(gè)類的所有成員函數(shù)總和不宜超過(guò)1500行,多了就應(yīng)該考慮分解成兩個(gè)類(這個(gè)工作最好在設(shè)計(jì)時(shí)就完成)。每完成一小段程序,比如15~30行,就立即編譯運(yùn)行,不要假裝高手,先敲它一大堆程序,再編譯運(yùn)行,妄想一次成功,體驗(yàn)一種假爽的、虛榮的快感,或炫耀給別人看,這么做只能證明自己是一個(gè)不折不扣的傻瓜,裝酷而已。因?yàn)橹灰幸淮尾怀晒?,你就?huì)花費(fèi)大量的時(shí)間來(lái)調(diào)程序,別人的進(jìn)度在這時(shí)就遠(yuǎn)遠(yuǎn)地超過(guò)你了,平常心是道,還是修煉真功夫吧!孫子兵法里關(guān)于這一點(diǎn)有明確的闡述,我就不引用了,但建議你真的不要這么干,除非你確實(shí)就是這樣總是一次就成功的天才,那你還看這篇文章干什么呢?我又不是寫給你們這些天才們看的。再就是有學(xué)會(huì)買好書、讀好書,關(guān)于計(jì)算機(jī)和軟件方面的書太多了,時(shí)間有限,比如有一個(gè)叫侯捷的家伙,幾乎寫的每本書都不錯(cuò),張國(guó)峰的C++編程也不錯(cuò),這只是我的個(gè)人意見(jiàn)啊,好書多著呢,列出來(lái)比這篇文章長(zhǎng)好多倍,我就不多說(shuō)了。還有一招,要是你運(yùn)氣好,能搞到一些著名軟件系統(tǒng)的源碼,好好讀讀吧,在此我只能告訴你,Linux操作系統(tǒng)的一些源碼不錯(cuò),是開放的,你可以合法地搞到,其它的不要說(shuō)是我建議你侵犯知識(shí)版權(quán)??!

      四、天生神力:成為系統(tǒng)分析員

      本來(lái)就論述如何成為一名職業(yè)程序員而言,本文已基本完成任務(wù)了,但《菜根譚》有言:竭世機(jī)樞,似一滴投于巨壑,窮諸玄辯,若一毫置于太虛。既已乘興到此,何妨多置一毫于太虛呢,作者不才,干脆盡興寫算了。

      你要是運(yùn)氣好,直接進(jìn)入了一個(gè)嚴(yán)格規(guī)范生產(chǎn)的軟件企業(yè)就業(yè),剛開始就應(yīng)該是按別人做好的軟件設(shè)計(jì)來(lái)實(shí)現(xiàn)編程,你可以有機(jī)會(huì)直接學(xué)習(xí)軟件設(shè)計(jì),當(dāng)你積累的足夠多了,能夠?qū)ζ渲械囊恍┰O(shè)計(jì)提出好的改進(jìn)建議,而且干得又快又好,就會(huì)漸漸地展露頭角,我相信你終有一天成為一名軟件設(shè)計(jì)人員(注意,不是軟件產(chǎn)品設(shè)計(jì)人員),步入系統(tǒng)分析員的行列,但這還需其它的一些條件和自我修煉。如果你在一個(gè)不規(guī)范的軟件企業(yè)工作,那也不錯(cuò),你很可能直接就有機(jī)會(huì)進(jìn)行軟件設(shè)計(jì),然后開發(fā)、測(cè)試,甚至還不得不自己定義需求,把軟件開發(fā)過(guò)程的各個(gè)環(huán)節(jié)走一個(gè)遍,當(dāng)然這樣對(duì)你的要求更高,而且你也不容易得到及時(shí)有益的指點(diǎn),在正態(tài)分布的情況下,你應(yīng)該是成長(zhǎng)的很慢。但不管就業(yè)的單位如何,如果你決心要成為頂尖軟件職業(yè)選手,通常什么客觀困難都阻擋不了你,然而你個(gè)人的因素可能會(huì)阻止你的前進(jìn)。下面提出的觀點(diǎn)純屬一己之見(jiàn),傷人自尊之處作者在此提前道歉,并建議你除非對(duì)本文有強(qiáng)烈的興趣,否則就請(qǐng)直接看第五節(jié)或放下別看了。丑話已說(shuō)在前頭了,在各種軟件開發(fā)組織的發(fā)展過(guò)程中的事實(shí)也證明,只有少數(shù)程序員能成為系統(tǒng)分析員,我想這一點(diǎn)不是我杜撰的吧,因此你要是在看接下來(lái)的部分時(shí)感到氣憤難當(dāng),那也實(shí)在沒(méi)著,純屬活該,因?yàn)樽髡咧皇窃谡f(shuō)明自己的觀點(diǎn)而已,你最多可以呲之以鼻,表示一下你的輕蔑好了,但沒(méi)有任何理由可以罵人!

      作者自己沒(méi)有到微軟面試過(guò),但身處軟件行業(yè),關(guān)于微軟的許多東東當(dāng)然還是有耳聞的,據(jù)說(shuō)微軟招聘一名程序員要過(guò)五個(gè)已經(jīng)成為微軟程序員的面試關(guān),而且是一票否決制,又據(jù)說(shuō)大多數(shù)面試題并非編程,而是一些有關(guān)邏輯和智力的題,作者私下也做過(guò)許多流傳的微軟面試題,并對(duì)此做法深以為然。程序的本質(zhì)就是邏輯,所以幾十年前就有人提出編程是一門藝術(shù),而藝術(shù)是要靠天份的,這一點(diǎn)少有人反對(duì)。一個(gè)人的邏輯能力可以不斷提高,但其能到達(dá)的終極邏輯能力的層次必定為其天生智力所限制,這一點(diǎn)就讓人不易接受了。好笑??!人們可以公開承認(rèn)自己沒(méi)有某種或全部的藝術(shù)天份,但要說(shuō)自己邏輯天份不夠,換句話說(shuō)承認(rèn)自己笨、IQ不夠高,往往是要怒發(fā)沖冠的,其實(shí)這又有什么區(qū)別呢?話都說(shuō)到這兒了,再次建議你如果不夠自信,就跳過(guò)這一節(jié)吧,直接看第五節(jié),好嗎?

      好了,把話題說(shuō)回來(lái),你已經(jīng)成為一門合格的職業(yè)程序員了,如果要想成為從事軟件系統(tǒng)設(shè)計(jì)的職業(yè)系統(tǒng)分析員,第一件事就是悄悄找一個(gè)標(biāo)準(zhǔn)智商測(cè)試的網(wǎng)站或其它渠道,嚴(yán)格認(rèn)真的測(cè)一測(cè)自己的智商,如果IQ低于130(正常智商是110),就請(qǐng)別費(fèi)勁了,打消掉成為系統(tǒng)分析員的念頭吧!好!好!先請(qǐng)你冷靜一下,好好想想,其實(shí)微軟面試時(shí)就是在測(cè)你的智商和邏輯數(shù)學(xué)素質(zhì)呢,這就是本節(jié)的標(biāo)題為“天生神力”的原因,因?yàn)樵O(shè)計(jì)就是從無(wú)到有地進(jìn)行創(chuàng)造,無(wú)論是軟件還是其它行業(yè)都一樣,可以有借鑒的,沒(méi)有現(xiàn)成的,設(shè)計(jì)就是創(chuàng)造!如果你IQ在130以上,又決心要當(dāng)一名職業(yè)軟件系統(tǒng)分析員,其實(shí)你不過(guò)是要準(zhǔn)備好吃更大的苦而已,有什么好虛榮的呢?

      修煉還是從基本功開始的,過(guò)程和成為一名職業(yè)程序員差不多。必須使用設(shè)計(jì)工具這一點(diǎn)是不用多說(shuō)的。在工作中,你基本上遇到的是兩類方式的設(shè)計(jì),一個(gè)是結(jié)構(gòu)化設(shè)計(jì),另一個(gè)是面向?qū)ο笤O(shè)計(jì),就個(gè)人經(jīng)驗(yàn)而言,面向?qū)ο蟮脑O(shè)計(jì)更好。如果你工作中不得不采用結(jié)構(gòu)化的設(shè)計(jì),你必須熟練地掌握數(shù)據(jù)流圖和控制流圖的分析和設(shè)計(jì),一般來(lái)講,如果你把一個(gè)軟件中用到的數(shù)據(jù)模型設(shè)計(jì)好了,針對(duì)功能化的流程,不難設(shè)計(jì)出數(shù)據(jù)流圖,但下一步設(shè)計(jì)控制流圖才是挑戰(zhàn),如果你按照需求走不通設(shè)計(jì)好的控制流圖,那么你或別人在按照這個(gè)設(shè)計(jì)編程實(shí)現(xiàn)時(shí),必定也走不通,沒(méi)有奇跡會(huì)發(fā)生,還是在設(shè)計(jì)階段嚴(yán)格要求吧,又有一點(diǎn)需要牢記:返工是最慢的。當(dāng)你在進(jìn)行控制流圖的設(shè)計(jì)時(shí),也不要妄想得到需求人員提供給你明確的指點(diǎn),通常他們要是能夠把需求的功能和操作次序?qū)懲暾脑?,你?yīng)該就感恩戴德了,從需求中整理出功能、操作的拓?fù)浯涡蚝蜅l件是你作為系統(tǒng)分析員的職責(zé)??纯矗菦](méi)有一點(diǎn)圖論的基礎(chǔ)和拓?fù)鋵W(xué)的入門知識(shí),你是當(dāng)不好一個(gè)職業(yè)系統(tǒng)分析員的,即使你天賦不錯(cuò),必要的數(shù)學(xué)和邏輯素質(zhì)仍然不可或缺。也不用氣餒,永遠(yuǎn)沒(méi)有最好的設(shè)計(jì),只有更好的設(shè)計(jì),反復(fù)地進(jìn)行設(shè)計(jì)迭代,勇于推翻舊的設(shè)計(jì),你將快速進(jìn)步。如果你在工作中是采用面向?qū)ο筮M(jìn)行設(shè)計(jì)的,那就更有利了,有關(guān)面向?qū)ο笤O(shè)計(jì)的書太多了,不用作者在此多費(fèi)口舌,建議精讀一本經(jīng)典的書,比如北大邵維忠等編譯的《面向?qū)ο蟮姆治觥?,有些方法和技巧可能過(guò)時(shí),但其邏輯的基本原理是非常正確的,其本質(zhì)是,你在邏輯上是如何認(rèn)識(shí)這個(gè)世界的,你就是如何設(shè)計(jì)軟件體系結(jié)構(gòu)的,然后讀讀其它書,觸類旁通,自己創(chuàng)造機(jī)會(huì)多實(shí)踐,成功自然會(huì)到來(lái)的,總之,不管是結(jié)構(gòu)化設(shè)計(jì)還是面向?qū)ο笤O(shè)計(jì),評(píng)價(jià)一下自己的軟件系統(tǒng)設(shè)計(jì)方案吧,有好多指標(biāo)呢,比如是否均勻和平衡?局部獨(dú)立性強(qiáng)不強(qiáng)?有沒(méi)有歧異的結(jié)構(gòu)?有沒(méi)有層次太多或太少?有沒(méi)有某個(gè)層次太大、太廣?是不是邏輯結(jié)構(gòu)先復(fù)雜了再化簡(jiǎn)的?還是只會(huì)設(shè)計(jì)簡(jiǎn)單的,復(fù)雜不起來(lái)(這一點(diǎn)是笨哦,如果出現(xiàn)多次,請(qǐng)你不要意氣用事,轉(zhuǎn)行吧)?最重要的一點(diǎn),是否容易理解、實(shí)現(xiàn)和改進(jìn)?你自己會(huì)得出評(píng)價(jià)的。如果有機(jī)會(huì)看到別人的設(shè)計(jì),一定不要錯(cuò)過(guò)學(xué)習(xí)的機(jī)會(huì),自己推導(dǎo)一遍,認(rèn)真比較比較,獲益會(huì)較多。

      走到這一步,你就應(yīng)該關(guān)注設(shè)計(jì)模式了,首先還是學(xué)習(xí),這方面的好書有的是,但一般在工作中用到的設(shè)計(jì)模式較為單一,應(yīng)該多嘗試一下其它的設(shè)計(jì)模式。其次必須要明白設(shè)計(jì)模式不是設(shè)計(jì)思路,也不能代替設(shè)計(jì)思路,比方你要從A到B修一條路,設(shè)計(jì)模式只是讓你選擇,是修水泥的還是柏油的?是高架路還是普通的,但線路必須你自己定,而線路就是設(shè)計(jì)思路,模式對(duì)思路是有影響,但不能代替,所以如果你的智商高達(dá)250,我相信你直接用匯編語(yǔ)言也能寫出面向?qū)ο蟮某绦騺?lái)。第三在此有一個(gè)陷阱,很多系統(tǒng)分析員生搬硬套設(shè)計(jì)模式,全然不懂如何融會(huì)貫通,在你的一項(xiàng)具體工作中,往往是以一種設(shè)計(jì)模式為主,其它模式為輔的,思維不拘泥于形式才是關(guān)鍵,而且也為你到達(dá)更高的軟件設(shè)計(jì)的境界做好準(zhǔn)備。

      唉!都不知該怎么向下寫好了,因?yàn)橐堰_(dá)到作者水平的極限了,我胡亂說(shuō)一點(diǎn),你湊合看吧。軟件設(shè)計(jì)最終的層次是:以無(wú)法為有法、以無(wú)限為有限,這句話是李小龍說(shuō)的,不是我說(shuō)的。再拾人牙慧一把,類比一個(gè)故事吧,金大俠在《倚天屠龍記》里講到張無(wú)忌初學(xué)太極,學(xué)會(huì)的標(biāo)志是把剛學(xué)的招數(shù)全忘了,記住的是太極的道理和精神,和李小龍有些相似喔,軟件設(shè)計(jì)也一樣,忘記所有的設(shè)計(jì)模式,隨心所欲進(jìn)行設(shè)計(jì)才是至高境界,所以你能到達(dá)多高的軟件設(shè)計(jì)的境界最終將取決于你的哲學(xué)素質(zhì),這一點(diǎn)實(shí)在是不好寫啊,你自己領(lǐng)悟吧!作者只有祝福了!

      五、職業(yè)人的終極目標(biāo):全面修煉,成為L(zhǎng)eader

      這一節(jié)更不好寫,涉及到太多其它非技術(shù)方面的因素,特別是個(gè)人人生觀和世界觀的修煉,如果本帖的點(diǎn)擊率超過(guò)作者私下期望的一個(gè)數(shù)值,那我就爭(zhēng)取盡力厚著臉皮再補(bǔ)上吧。我只說(shuō)一句,雖然大家都知道軟件開發(fā)是一個(gè)團(tuán)隊(duì)性的工作,但追求參與一個(gè)大型軟件系統(tǒng)的成功開發(fā),是一名軟件人員的本能,就像拿破侖說(shuō)的不想當(dāng)元帥的士兵不是好士兵,所以不追求實(shí)現(xiàn)大系統(tǒng)的軟件人員,也不是一個(gè)好的職業(yè)軟件人員,但你只有成為L(zhǎng)eader,領(lǐng)導(dǎo)一個(gè)優(yōu)秀的軟件開發(fā)團(tuán)隊(duì),才有機(jī)會(huì)實(shí)現(xiàn)這個(gè)終極職業(yè)目標(biāo),對(duì)不對(duì)? 好吧,不管你現(xiàn)在的感受如何,我都謝謝你能讀到這里!我不習(xí)慣假謙虛,就不說(shuō)什么作者水平有限,本文拋磚引玉,歡迎大家批評(píng)斧正之類的客套話了,雖然作者水平確實(shí)有限。所以我認(rèn)為你盡管有權(quán)砸磚,但實(shí)在沒(méi)必要搞回帖、或回罵、或頂之類的玩意兒,我只是盡興寫一點(diǎn)多年從事軟件開發(fā)工作的體驗(yàn),因此接下來(lái)我就高掛免戰(zhàn)牌,不回復(fù)任何回帖了。再次謝謝你能有耐心讀到這里!希望本文對(duì)你有所裨益,祝你成功!再見(jiàn)!

      本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/carefree31441/archive/2008/07/10/2635287.aspx

      第三篇:程序員內(nèi)功修煉篇

      進(jìn)入專業(yè)的編程領(lǐng)域,算法、數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)模型、計(jì)算機(jī)原理等這樣的計(jì)算機(jī)科學(xué)專業(yè)需要學(xué)習(xí)的理論知識(shí)是必須要學(xué)習(xí)的。下面我們先來(lái)講述數(shù)據(jù)結(jié)構(gòu)和算法。

      數(shù)據(jù)結(jié)構(gòu)和算法

      算法是比較難學(xué)習(xí)的,而且學(xué)習(xí)“ 算法 ” 是需要智商的。數(shù)組、鏈表、哈希表、二叉樹、排序算法等一些基礎(chǔ)知識(shí),對(duì)大多數(shù)人來(lái)說(shuō)是沒(méi)什么問(wèn)題的。但是一旦進(jìn)入到路徑規(guī)劃、背包問(wèn)題、字符串匹配、動(dòng)態(tài)規(guī)劃、遞歸遍歷等一些比較復(fù)雜的問(wèn)題上,就會(huì)讓很多人跟不上了,不但跟不上,而且還會(huì)非常痛苦。是的,解決算法問(wèn)題的確是可以區(qū)分人類智商的一個(gè)比較好的方式,這也是為什么好些公司用算法題當(dāng)面試題來(lái)找到智商比較高的程序員。

      然而,在很多時(shí)候,我們?cè)诠ぷ髦袇s發(fā)現(xiàn)根本用不到算法,或是一些基本的算法也沒(méi)有必要實(shí)現(xiàn),只需要使用一下第三方的庫(kù)就好了。于是,導(dǎo)致社會(huì)上出現(xiàn)很多 “ 算法無(wú)用論 ” 的聲音。

      對(duì)此,我想說(shuō),算法真的很重要。我這 20 年的經(jīng)歷告訴我,無(wú)論是做業(yè)務(wù)還是做底層系統(tǒng),經(jīng)常需要使用算法處理各種各樣的問(wèn)題。比如,業(yè)務(wù)上我需要用算法比較兩個(gè)數(shù)組中差異的布隆過(guò)濾器,或是在做監(jiān)控系統(tǒng)時(shí)實(shí)時(shí)計(jì)算過(guò)去一分鐘的 P99 統(tǒng)計(jì)時(shí)的蓄水池算法,或是數(shù)據(jù)庫(kù)的 B+ 樹索引,還有 Linux 內(nèi)核中的 epoll 的紅黑樹,還有在做服務(wù)調(diào)度里的 “ 背包問(wèn)題 ” 等都會(huì)用算法,真的是會(huì)本質(zhì)上幫助到你,也是會(huì)讓你非常有成就感的一件事。

      雖然算法很難,需要智商,但我還是想鼓勵(lì)你,這其中是有很多的套路是可以學(xué)習(xí)的,一旦學(xué)會(huì)這些套路,你會(huì)受益無(wú)窮的。這里有幾本書著重推薦一下。

      ?

      基礎(chǔ)知識(shí)?!端惴ā罚撬惴I(lǐng)域經(jīng)典的參考書,不但全面介紹了關(guān)于算法和數(shù)據(jù)結(jié)構(gòu)的必備知識(shí),還給出了每位程序員應(yīng)知應(yīng)會(huì)的 50 個(gè)算法,并提供了實(shí)際代碼。最不錯(cuò)的是,其深入淺出的算法介紹,讓一些比較難的算法也變得容易理解,尤其是書中對(duì)紅黑樹的講解非常精彩。其中,還有大量的圖解,詳盡的代碼和講解,也許是最好的數(shù)據(jù)結(jié)構(gòu)入門圖書。不好的是不深,缺乏進(jìn)一步的算法設(shè)計(jì)內(nèi)容,甚至連動(dòng)態(tài)規(guī)劃都未提及。另外,如果你覺(jué)得算法書比較枯燥的話,你可以看看這本有趣的《算法圖解》。

      ?

      ?

      理論加持。如果說(shuō)上面這本書偏于實(shí)踐和工程,而你看完后,對(duì)算法和數(shù)據(jù)結(jié)構(gòu)的興趣更濃了,那么你可以再看看另一本也是很經(jīng)典的偏于理論方面的書——《算法導(dǎo)論》。雖然其中的一些理論知識(shí)在《算法》那本書中也有提過(guò),但《算法導(dǎo)論》這本書更為專業(yè)一些,是美國(guó)計(jì)算機(jī)科學(xué)本科生的教科書。

      ?

      ?

      思維改善。還有一本叫《編程珠璣》的書,寫這本書的人是世界著名計(jì)算機(jī)科學(xué)家喬恩·本特利(Jon Bentley),被譽(yù)為影響算法發(fā)展的十位大師之一。你可能不認(rèn)識(shí)這個(gè)人,但是你知道他的學(xué)生有多厲害嗎?我例舉幾個(gè),一個(gè)是 Tcl 語(yǔ)言設(shè)計(jì)者約翰·奧斯德奧特(John Ousterhout),另一個(gè)是 Java 語(yǔ)言設(shè)計(jì)者詹姆斯·高斯林(James Gosling),還有一個(gè)是《算法導(dǎo)論》作者之一查爾斯·雷斯?fàn)柹–harles Leiserson),還有好多好多。這本書也是很經(jīng)典的算法書,其中都是一些非常實(shí)際的問(wèn)題,并以其獨(dú)有的洞察力和創(chuàng)造力,來(lái)引導(dǎo)讀者理解并學(xué)會(huì)解決這些問(wèn)題的方法,也是一本可以改善你思維方式的書。

      ?

      然后,你需要去做一些題來(lái)訓(xùn)練一下自己的算法能力,這里就要推薦 LeetCode 這個(gè)網(wǎng)站了。它是一個(gè)很不錯(cuò)的做算法訓(xùn)練的地方?,F(xiàn)在也越做越好了?;旧蟻?lái)說(shuō),這里會(huì)有兩類題。

      ?

      基礎(chǔ)算法題。其中有大量的算法題,解這些題都是有套路的,不是用遞歸(深度優(yōu)先 DFS,廣度優(yōu)先 BFS),就是要用動(dòng)態(tài)規(guī)劃(Dynamic Programming),或是折半查找(Binary Search),或是回溯(Back tracing),或是分治法(Divide and Conquer),還有大量的對(duì)樹、數(shù)組、鏈表、字符串和 hash 表的操作。通過(guò)做這些題能讓你對(duì)這些最基礎(chǔ)的算法的思路有非常扎實(shí)的了解和訓(xùn)練。對(duì)我而言,Dynamic Programming 是我的短板,尤其是一些比較復(fù)雜的問(wèn)題,在推導(dǎo)遞推公式上總是有思維的缺陷(數(shù)學(xué)是我的硬傷)。做了這些題后,我能感到我在動(dòng)態(tài)編程的思路上受到了很大的啟發(fā)。

      ?

      ?

      編程題。比如:atoi,strstr,add two nums,括號(hào)匹配,字符串乘法,通配符匹配,文件路徑簡(jiǎn)化,Text Justification,反轉(zhuǎn)單詞等,這些題的 Edge Case 和 Corner Case 有很多。這些題需要你想清楚了再干,只要你稍有疏忽,就會(huì)有幾個(gè) case 讓你痛不欲生,而且一不小心就會(huì)讓你的代碼寫得又臭又長(zhǎng),無(wú)法閱讀。通過(guò)做這些題,可以非常好地訓(xùn)練你對(duì)各種情況的考慮,以及你對(duì)程序代碼組織的掌控(其實(shí)就是其中的狀態(tài)變量)。

      ?

      我覺(jué)得每個(gè)程序員都應(yīng)該花時(shí)間和精力做這些題,因?yàn)槟銜?huì)從這些題中得到很大的收益。我在 Leetcode 上做的一些題的代碼在這——我的 Github 上,可以給你一些參考。

      如果能夠把這些算法能力都掌握了,那么你就有很大的概率可以很容易地通過(guò)這世界上最優(yōu)的公司的面試,比如:Google、Amazon、Facebook 之類的公司。對(duì)你來(lái)說(shuō),如果能夠進(jìn)入到這些公司里工作,那么你未來(lái)的想像空間也會(huì)大得多得多。

      最后,我們要知道這個(gè)世界上的數(shù)據(jù)結(jié)構(gòu)和算法很多很多,下面給出了兩個(gè)網(wǎng)站。

      ? List of Algorithms,這個(gè)網(wǎng)站羅列了非常多的算法,完全可以當(dāng)成一個(gè)算法字典,或是用來(lái)開闊眼界。? 還有一個(gè)數(shù)據(jù)結(jié)構(gòu)動(dòng)畫圖的網(wǎng)站 Data Structure Visualizations。

      其它理論基礎(chǔ)知識(shí)

      下面這些書,基本上是計(jì)算機(jī)科學(xué)系的大學(xué)教材。如果你想有科班出生的理論基礎(chǔ),那么這些書是必讀的。當(dāng)然,這些理論基礎(chǔ)知識(shí)比較枯燥,但我覺(jué)得如果你想成為專業(yè)的程序員,那么應(yīng)該要找時(shí)間讀一下。

      ?

      《數(shù)據(jù)結(jié)構(gòu)與算法分析》,這本書曾被評(píng)為 20 世紀(jì)頂尖的 30 部計(jì)算機(jī)著作之一,作者 Mark Allen Weiss 在數(shù)據(jù)結(jié)構(gòu)和算法分析方面卓有建樹,他在數(shù)據(jù)結(jié)構(gòu)和算法分析等方面的著作尤其暢銷,并廣受好評(píng),已被世界 500 余所大學(xué)用作教材。

      ?

      ?

      《數(shù)據(jù)庫(kù)系統(tǒng)概念》,它是數(shù)據(jù)庫(kù)系統(tǒng)方面的經(jīng)典教材之一。國(guó)際上許多著名大學(xué)包括斯坦福大學(xué)、耶魯大學(xué)、德克薩斯大學(xué)、康奈爾大學(xué)、伊利諾伊大學(xué)、印度理工學(xué)院等都采用本書作為教科書。這本書全面介紹了數(shù)據(jù)庫(kù)系統(tǒng)的各種知識(shí),透徹闡釋數(shù)據(jù)庫(kù)管理的基本概念。不僅討論了數(shù)據(jù)庫(kù)查詢語(yǔ)言、模式設(shè)計(jì)、數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)庫(kù)應(yīng)用開發(fā)、基于對(duì)象的數(shù)據(jù)庫(kù)和 XML、數(shù)據(jù)存儲(chǔ)和查詢、事務(wù)管理、數(shù)據(jù)挖掘與信息檢索以及數(shù)據(jù)庫(kù)系統(tǒng)體系結(jié)構(gòu)等方面的內(nèi)容,而且對(duì)性能評(píng)測(cè)標(biāo)準(zhǔn)、性能調(diào)整、標(biāo)準(zhǔn)化以及空間與地理數(shù)據(jù)、事務(wù)處理監(jiān)控等高級(jí)應(yīng)用主題進(jìn)行了廣泛討論。

      ?

      ?

      《現(xiàn)代操作系統(tǒng)》,這本書是操作系統(tǒng)領(lǐng)域的經(jīng)典之作,書中集中討論了操作系統(tǒng)的基本原理,包括進(jìn)程、線程、存儲(chǔ)管理、文件系統(tǒng)、輸入 / 輸出、死鎖等,同時(shí)還包含了有關(guān)計(jì)算機(jī)安全、多媒體操作系統(tǒng)、掌上計(jì)算機(jī)操作系統(tǒng)、微內(nèi)核、多核處理機(jī)上的虛擬機(jī)以及操作系統(tǒng)設(shè)計(jì)等方面的內(nèi)容。

      ?

      ? 《計(jì)算機(jī)網(wǎng)絡(luò)》,這本書采用了獨(dú)創(chuàng)的自頂向下方法,即從應(yīng)用層開始沿協(xié)議棧向下講解計(jì)算機(jī)網(wǎng)絡(luò)的基本原理,強(qiáng)調(diào)應(yīng)用層范例和應(yīng)用編程接口,內(nèi)容深入淺出,注重教學(xué)方法,理論與實(shí)踐相結(jié)合。新版中還增加了無(wú)線和移動(dòng)網(wǎng)絡(luò)一章,并擴(kuò)充了對(duì)等網(wǎng)絡(luò)、BGP、MPLS、網(wǎng)絡(luò)安全、廣播選路和因特網(wǎng)編址及轉(zhuǎn)發(fā)方面的材料。是一本不可多得的教科書。

      ?

      ?

      《計(jì)算機(jī)程序的構(gòu)造和解釋》,這本書也很經(jīng)典,是 MIT 的計(jì)算機(jī)科學(xué)系的教材。這本書中主要證實(shí)了很多程序是怎么構(gòu)造出來(lái)的,以及程序的本質(zhì)是什么。整本書主要是使用 Scheme/Lisp 語(yǔ)言,從數(shù)據(jù)抽象、過(guò)程抽象、迭代、高階函數(shù)等編程和控制系統(tǒng)復(fù)雜性的思想,到數(shù)據(jù)結(jié)構(gòu)和算法,到編譯器 / 解釋器、編程語(yǔ)言設(shè)計(jì)。

      ?

      ?

      《編譯原理》,這本書又叫 “ 龍書 ”,其全面、深入地探討了編譯器設(shè)計(jì)方面的重要主題,包括詞法分析、語(yǔ)法分析、語(yǔ)法制導(dǎo)定義和語(yǔ)法制導(dǎo)翻譯、運(yùn)行時(shí)刻環(huán)境、目標(biāo)代碼生成、代碼優(yōu)化技術(shù)、并行性檢測(cè)以及過(guò)程間分析技術(shù),并在相關(guān)章節(jié)中給出大量的實(shí)例。與上一版相比,本書進(jìn)行了全面的修訂,涵蓋了編譯器開發(fā)方面的最新進(jìn)展。每章中都提供了大量的系統(tǒng)及參考文獻(xiàn)。

      ?

      小結(jié)

      好了,最后我們來(lái)總結(jié)一些今天分享的內(nèi)容。在這篇文章中,我建議想進(jìn)入專業(yè)編程領(lǐng)域的人,一定要算法、數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)模型、計(jì)算機(jī)原理等理論知識(shí),并推薦了相應(yīng)的學(xué)習(xí)素材,給出了我的思考和建議。

      我認(rèn)為,雖然這些理論知識(shí)枯燥難學(xué),而且通常學(xué)完了在工作中也并不是馬上就能用上,但這些知識(shí)是必須要學(xué)好的。這些理論知識(shí)可以說(shuō)是計(jì)算機(jī)科學(xué)這門學(xué)科最精華的知識(shí)了,認(rèn)真學(xué)習(xí),理解其背后的邏輯和思維方式,會(huì)令你受益匪淺。不管是未來(lái)學(xué)習(xí)新知識(shí),還是解決什么疑難問(wèn)題,都能在這些知識(shí)中獲得靈感或者啟發(fā)。

      第四篇:Java程序員修煉之道

      從2002開始接觸Java學(xué)會(huì)HelloWorld這么經(jīng)典的程序到如今不知不覺(jué)已經(jīng)十年啦,十年中

      親耳聽到過(guò)不少大牛的演講,見(jiàn)到過(guò)項(xiàng)目中的神人在鍵盤上運(yùn)指如飛的編程速度,當(dāng)時(shí)就

      被震撼了。當(dāng)編程越來(lái)越成體力活,我們還能有自己的思想,還能修煉為Java系統(tǒng)級(jí)別的

      程序員嘛?學(xué)習(xí)與修煉以下知識(shí)與技能,幫你早日達(dá)成愿望。

      一:Java語(yǔ)言學(xué)習(xí)

      對(duì)線程(thread),串行化,反射,網(wǎng)絡(luò)編程,JNI技術(shù),容器(Map,List, Iterator), 類加載器

      (ClassLoader),輸入輸出流,垃圾回收機(jī)制,有比較深入的了解,最起碼做過(guò)項(xiàng)目應(yīng)用。有

      過(guò)Java項(xiàng)目的性能優(yōu)化經(jīng)驗(yàn),最起碼掌握一種性能監(jiān)視工具的使用,熟悉JVM參數(shù),最起

      碼知道可以在JVM啟動(dòng)時(shí)指定不同垃圾回收機(jī)制,以及不同垃圾回收機(jī)制之間的

      差別,熟悉JVM參數(shù)優(yōu)化。

      二:J2EE方面

      最好知道JDBC規(guī)范是怎么回事情,面對(duì)Oracle數(shù)據(jù)庫(kù)如果告訴你JDBC驅(qū)動(dòng)不能用了,你

      還知道有OCI驅(qū)動(dòng)可以。掌握常見(jiàn)的SQL語(yǔ)句,熟悉JMS,JNDI等組件,掌握一套web開

      發(fā)模式,從前臺(tái)到后臺(tái),有能力整合好這樣的框架。理解并掌握MVC思想,像SSH已經(jīng)實(shí)

      現(xiàn)了MVC的分層,幾乎不需要你自己再實(shí)現(xiàn),假設(shè)你開發(fā)一個(gè)簡(jiǎn)單的Swing程序,你能MVC

      就說(shuō)明你真的掌握了MVC的精髓。有能力在J2EE前端開發(fā)中構(gòu)建自己的MVC模式,知道

      什么是WEB2.0,知道什么是SOA,SaaS,SaaP等含義

      三:理解并能合理運(yùn)用設(shè)計(jì)模式,UML建模

      知道并理解設(shè)計(jì)模式中蘊(yùn)含的幾種基本原則如:里氏替換原則,開閉原則,合成復(fù)用原則,依賴倒置原則有很好的理解,并能舉例說(shuō)明。對(duì)常用的設(shè)計(jì)模式如工廠模式,單例模式,觀

      察者模式,責(zé)任鏈模式,橋接模式等知道靈活運(yùn)用,明白什么是回調(diào)(Callback)。最后用一位

      高人話來(lái)總結(jié)設(shè)計(jì)模式,它是為了讓軟件更容易被別人讀懂,更容易維護(hù)而產(chǎn)生,設(shè)計(jì)模

      式本質(zhì)是程序員之間的交流,如果A用工廠模式設(shè)計(jì)一個(gè)模塊B來(lái)接替,A只要說(shuō)該模塊是

      工廠模式實(shí)現(xiàn),B維護(hù)起來(lái)應(yīng)該容易得多,所以設(shè)計(jì)模式是關(guān)于交流,不關(guān)于代碼。切忌濫

      用設(shè)計(jì)模式。學(xué)會(huì)使用UML建模工具至少熟悉一種URL建模工具。

      四:注重用戶體驗(yàn),掌握KISS原則,知道歐卡姆剃刀原則

      顧客就是上帝這個(gè)口號(hào)我們已經(jīng)喊了N年了,程序員的勞動(dòng)成果最終也需要轉(zhuǎn)換為服務(wù)提

      供給客戶,用戶體驗(yàn)至關(guān)重要,常??吹降膱?chǎng)景是功能實(shí)現(xiàn)了,軟件很難使用,程序員有個(gè)

      很充足的理由我不是美工,其實(shí)注重用戶體驗(yàn)跟美工八桿子也打不到一起,F(xiàn)oxMail的成功

      在很大程度是用戶體驗(yàn)的成功,友好,清晰的用戶提示,強(qiáng)的容錯(cuò)與糾錯(cuò)設(shè)計(jì)是獲得好的

      用戶體驗(yàn)的不二法門。傻瓜相機(jī)顧名思義傻子都會(huì)使用,這個(gè)就著名的KISS原則(Keep it

      simple and stupid)意思是UI設(shè)計(jì)要簡(jiǎn)單明了,傻子一看就知道怎么用,想想我們做出來(lái)的

      東西,對(duì)照說(shuō)明書都不知道怎么用。另外一個(gè)就是最著名的例子IPhone手機(jī)外觀設(shè)計(jì),是 典型的歐卡姆剃刀設(shè)計(jì)原則來(lái)完成人機(jī)交互。

      五:自動(dòng)測(cè)試與軟件配置管理(SCM)實(shí)現(xiàn)

      知道什么是軟件配置管理,知道Hudson微機(jī)原理鬧危機(jī),匯編語(yǔ)言不會(huì)變,實(shí)變函數(shù)學(xué)

      十遍。計(jì)算機(jī)基礎(chǔ)知識(shí)被大家普遍忽視。從今天開始好好學(xué)習(xí)吧……

      十一:Java代碼反編譯與代碼保護(hù)

      Java編譯產(chǎn)生字節(jié)碼,因而可以被輕松的逆向工程(反編譯),微軟的C#生產(chǎn)的DLL也一樣可

      以被輕松反編譯。正式由于這個(gè)原因產(chǎn)生了許多Java開源的代碼保護(hù)工具,而Proguard是

      其中佼佼者,已經(jīng)被google集成在android之中用于Java代碼保護(hù),訪問(wèn)這里了解更多:

      http://proguard.sourceforge.net/

      十二:努力成為某個(gè)行業(yè)或者領(lǐng)域骨干

      面對(duì)漫長(zhǎng)的職業(yè)生涯,要想不被淘汰,必須具備一招鮮吃遍天下的能力,選擇自己感興趣的

      方向,努力而深入的研究,計(jì)算機(jī)技術(shù)發(fā)展到今天已經(jīng)細(xì)分很細(xì),努力研究一種Java開源

      框架或者開源HTTP服務(wù)器源碼或者研究過(guò)網(wǎng)絡(luò)爬蟲源碼或者WEBKIT內(nèi)核,不愁沒(méi)有人要

      你。如果你是非常了解金融,企業(yè)ERP,證券,保險(xiǎn),移動(dòng)應(yīng)用行業(yè)的應(yīng)用開發(fā)業(yè)務(wù)的人,一樣不用愁工作。這些知識(shí)不隨語(yǔ)言而改變,努力做一個(gè)有核心競(jìng)爭(zhēng)力的Java程序員。

      十三:提高語(yǔ)言與書面表達(dá)能力,掌握基礎(chǔ)的項(xiàng)目管理知識(shí)

      文檔與語(yǔ)言表達(dá)能力是最好的向外界展現(xiàn)自己能力的方式,很多程序員編程能力很高,表達(dá)

      能力一般,Linux能夠成功,除了歸功于網(wǎng)絡(luò)社區(qū)的力量之外,也得益于Linux作者本人給各

      大基金會(huì)寫信,宣傳推廣,試想如果沒(méi)有良好的書面語(yǔ)言表達(dá)能力,即使Linux系統(tǒng)再優(yōu)秀,卻無(wú)法被準(zhǔn)確表達(dá),失去各大基金會(huì)的支持,Linux還會(huì)像今天這么好的局面嘛。所以重視

      文檔,重視提升溝通與表達(dá)能力,才有可能成為Java系統(tǒng)程序員。掌握基本的2/8原則,學(xué)

      會(huì)將模塊細(xì)化分配給不同的人,預(yù)見(jiàn)并控制項(xiàng)目風(fēng)險(xiǎn),把握項(xiàng)目進(jìn)度,優(yōu)化流程,合理的時(shí)

      間管理,了解TDD,熟悉敏捷開發(fā)模式,常規(guī)軟件開發(fā)模式。

      十四:掌握英語(yǔ),良好的讀寫能力

      英語(yǔ)是計(jì)算機(jī)的母語(yǔ),掌握好英語(yǔ)對(duì)于閱讀英文資料學(xué)習(xí)新技術(shù)大有幫助,我的建議是盡量

      讀英文原版書,如果是算法方面的可能會(huì)困難一點(diǎn),但是其它像設(shè)計(jì)模式,軟件工程,OO

      編程思想等盡量讀原版,提高自己的英文水平,多多訪問(wèn)開發(fā)者,code project,程序員天堂,Pc-magazine等英文IT網(wǎng)站。英語(yǔ)絕對(duì)是你必須修煉與提高的技能。此外英語(yǔ)好在外資企業(yè)

      尤其重要,只有外語(yǔ)足夠好才可能在外資企業(yè)中突破職業(yè)瓶頸,向上發(fā)展。

      第五篇:Java程序員修煉十大過(guò)程

      Java程序員修煉十大過(guò)程

      學(xué)習(xí)java這么久,見(jiàn)到過(guò)項(xiàng)目中的神人在鍵盤上運(yùn)指如飛的編程速度,當(dāng)時(shí)就被震撼了。當(dāng)編程越來(lái)越成體力活,我們還能有自己的思想,還能修煉為Java系統(tǒng)級(jí)別的程序員嘛?學(xué)習(xí)與修煉以下知識(shí)與技能,幫你早日達(dá)成愿望。

      一、努力成為某個(gè)行業(yè)或者領(lǐng)域骨干

      面對(duì)漫長(zhǎng)的職業(yè)生涯,要想不被淘汰,必須具備一招鮮吃遍天下的能力,選擇自己感興趣的方向,努力而深入的研究,計(jì)算機(jī)技術(shù)發(fā)展到今天已經(jīng)細(xì)分很細(xì),努力研究一種Java開源框架或者開源HTTP服務(wù)器源碼或者研究過(guò)網(wǎng)絡(luò)爬蟲源碼或者WEBKIT內(nèi)核,不愁沒(méi)有人要你。如果你是非常了解金融,企業(yè)ERP,證券,保險(xiǎn),移動(dòng)應(yīng)用行業(yè)的應(yīng)用開發(fā)業(yè)務(wù)的人,一樣不用愁工作。這些知識(shí)不隨語(yǔ)言而改變,努力做一個(gè)有核心競(jìng)爭(zhēng)力的Java程序員。

      二、保持謙虛,三人行必有我?guī)?/p>

      喬幫主說(shuō)他要保持初心,努力學(xué)習(xí),我等更應(yīng)該保持謙虛,IT技術(shù)發(fā)展日新月異,在你眼中不可能實(shí)現(xiàn)的技術(shù),也許別人早已經(jīng)有思路。保持謙虛就有機(jī)會(huì)吸取別人身上的長(zhǎng)處,古人有云:滿招損,謙受益。一個(gè)得道的高人更是說(shuō)出了“下下人,上上智”的禪語(yǔ)。永遠(yuǎn)不要拒絕幫助你周圍的人解決難題,解決難題是進(jìn)步最快途徑。不要放棄任何一次可以提升自己技術(shù)與能力的機(jī)會(huì)。

      三、熟悉常見(jiàn)的網(wǎng)絡(luò)通信協(xié)議

      對(duì)HTTP協(xié)議,知道POST, GET的區(qū)別是什么,閱讀過(guò)HTTP相關(guān)的RFC文檔。學(xué)會(huì)使用sniffer工具查看數(shù)據(jù)包,幫助查找與調(diào)試程序,知道TCP與UDP的區(qū)別,知道并理解E-Mail發(fā)送與接受的協(xié)議如SMTP,POP3,IMAP等協(xié)議,了解MIME與Base64編碼。知道組播是怎么回事情。

      四、理解并能合理運(yùn)用設(shè)計(jì)模式,UML建模

      知道并理解設(shè)計(jì)模式中蘊(yùn)含的幾種基本原則如:里氏替換原則,開閉原則,合成復(fù)用原則,依賴倒置原則有很好的理解,并能舉例說(shuō)明。對(duì)常用的設(shè)計(jì)模式如工廠模式,單例模式,觀察者模式,責(zé)任鏈模式,橋接模式等知道靈活運(yùn)用,明白什么是回調(diào)(Callback)。最后用一位高人話來(lái)總結(jié)設(shè)計(jì)模式,它是為了讓軟件更容易被別人讀懂,更容易維護(hù)而產(chǎn)生,設(shè)計(jì)模式本質(zhì)是程序員之間的交流,如果A用工廠模式設(shè)計(jì)一個(gè)模塊B來(lái)接替,A只要說(shuō)該模塊是工廠模式實(shí)現(xiàn),B維護(hù)起來(lái)應(yīng)該容易得多,所以設(shè)計(jì)模式是關(guān)于交流,不關(guān)于代碼。切忌濫用設(shè)計(jì)模式。學(xué)會(huì)使用UML建模工具至少熟悉一種URL建模工具。

      五、自動(dòng)測(cè)試與軟件配置管理(SCM)實(shí)現(xiàn)

      知道什么是軟件配置管理,知道Hudson-http://java.net/projects/hudson/運(yùn)用該工具SCM,知道怎么獲取測(cè)試代碼覆蓋率,Java有效代碼行數(shù)(NCSS),完成firebug,JDepend等工具集成ant/maven.熟悉并注重在開發(fā)過(guò)程中使用JUnit單元測(cè)試,理解白盒測(cè)試規(guī)范。

      六、Java語(yǔ)言學(xué)習(xí)

      對(duì)線程(thread),串行化,反射,網(wǎng)絡(luò)編程,JNI技術(shù),容器(Map,List, Iterator),類加載器(ClassLoader),輸入輸出流,垃圾回收機(jī)制,有比較深入的了解,最起碼做過(guò)項(xiàng)目應(yīng)用。有過(guò)Java項(xiàng)目的性能優(yōu)化經(jīng)驗(yàn),最起碼掌握一種性能監(jiān)視工具的使用,熟悉JVM參數(shù),最起碼知道可以在JVM啟動(dòng)時(shí)指定不同垃圾回收機(jī)制,以及不同垃圾回收機(jī)制之間的差別,熟悉JVM參數(shù)優(yōu)化。

      七、掌握英語(yǔ),良好的讀寫能力

      英語(yǔ)是計(jì)算機(jī)的母語(yǔ),掌握好英語(yǔ)對(duì)于閱讀英文資料學(xué)習(xí)新技術(shù)大有幫助,我的建議是盡量讀英

      文原版書,如果是算法方面的可能會(huì)困難一點(diǎn),但是其它像設(shè)計(jì)模式,軟件工程,OO編程思想等盡量讀原版,提高自己的英文水平,多多訪問(wèn)開發(fā)者,code project,程序員天堂,Pc-magazine等英文IT網(wǎng)站。英語(yǔ)絕對(duì)是你必須修煉與提高的技能。此外英語(yǔ)好在外資企業(yè)尤其重要,只有外語(yǔ)足夠好才可能在外資企業(yè)中突破職業(yè)瓶頸,向上發(fā)展。

      八、養(yǎng)成總結(jié)的習(xí)慣,不斷反思

      上學(xué)的時(shí)候老師常讓寫小結(jié),也沒(méi)總結(jié)出來(lái)所以然,以至于工作以后再也不提這檔子事情,建議每個(gè)項(xiàng)目做完以后對(duì)自己都有個(gè)小結(jié),總結(jié)自己在項(xiàng)目里面學(xué)到了什么,反問(wèn)自己能不能完成在不需要?jiǎng)e人幫助的情況下自己完成這樣的系統(tǒng)搭建,是否熟悉與掌握項(xiàng)目中所用到的技術(shù),即使有些東西不是你負(fù)責(zé)完成的但是什么也不能阻擋一顆求知的心,總結(jié)要盡量詳細(xì)記錄你遇到那些難題是怎么一個(gè)一個(gè)的解決的,下次再遇到你是否可以很快解決或者避免這樣的問(wèn)題。有總結(jié)才有提高,孔子曰:學(xué)而不思則罔,如果我們只是coding到吐血,不思考,不總結(jié)提高,永遠(yuǎn)不可能有能有本質(zhì)提高,秦相李斯有云:“泰山不讓土壤,故能成其大,河海不擇細(xì)流,故能就其深”,點(diǎn)滴積累不斷總結(jié)方能量變導(dǎo)致質(zhì)變。

      九、Java代碼反編譯與代碼保護(hù)

      Java編譯產(chǎn)生字節(jié)碼,因而可以被輕松的逆向工程(反編譯),微軟的C#生產(chǎn)的DLL也一樣可以被輕松反編譯。正式由于這個(gè)原因產(chǎn)生了許多Java開源的代碼保護(hù)工具,而Proguard是其中佼佼者,已經(jīng)被google集成在android之中用于Java代碼保護(hù)。

      十、面向市場(chǎng),永遠(yuǎn)對(duì)新技術(shù)保持渴望

      計(jì)算機(jī)技術(shù)的發(fā)展日新月異,做為IT行業(yè)的軟件開發(fā)人員要不斷的給自己充電,更新自己的技術(shù)與時(shí)代保持同步,同時(shí)還要面向市場(chǎng),華為總裁任正非說(shuō)過(guò)-“華為的技術(shù)革新必須面向市場(chǎng)”,作為程序員同樣要有市場(chǎng)意識(shí),很多人都后悔沒(méi)有在android剛出來(lái)的時(shí)候加以關(guān)注學(xué)習(xí)。那些很早關(guān)注android開發(fā)技術(shù)的很多程序員因此獲得豐厚回報(bào)。如今HTML5得到越來(lái)越多的瀏覽器廠家

      支持,你是否已經(jīng)跟上腳步,開始學(xué)習(xí)。

      下載(總結(jié))程序員的思維修煉(推薦閱讀)word格式文檔
      下載(總結(jié))程序員的思維修煉(推薦閱讀).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        Java系統(tǒng)程序員修煉之道

        Java系統(tǒng)程序員修煉之道 ——?jiǎng)恿?jié)點(diǎn)java 一:Java語(yǔ)言學(xué)習(xí)對(duì)線程(thread),串行化,反射,網(wǎng)絡(luò)編程,JNI技術(shù),容器(Map,List, Iterator), 類加載器(ClassLoader),輸入輸出流,垃圾回收......

        優(yōu)秀程序員修煉之路(5篇)

        優(yōu)秀程序員修煉之路 “為人寫程序”初級(jí)的程序員或經(jīng)驗(yàn)不足的程序員往往只意識(shí)到自己的程序是寫給計(jì)算機(jī)的,而不會(huì)在意程序其實(shí)也是寫給人的,或在意得不夠、不全面。寫給機(jī)器......

        程序員的思維障礙

        漫談創(chuàng)業(yè)和管理-程序員5大思維障礙 程序員是最容易創(chuàng)業(yè)的,或者說(shuō)是創(chuàng)業(yè)成本最低的職業(yè)。只要有一臺(tái)電腦和投入自己的時(shí)間,就可以寫出暢銷天下的軟件,這是每個(gè)程序員的夢(mèng)想。更何......

        程序員思維題(范文大全)

        NO.1 有20瓶藥丸,其中19瓶裝有1克/粒的藥丸,余下一瓶裝有1.1克/粒的藥丸。給你一臺(tái)稱重精準(zhǔn)的天平,怎么找出比較重的那瓶藥丸?天平只能用一次。 NO.2 有個(gè)8×8棋盤,其中對(duì)角的角......

        修煉一名程序員的職業(yè)水準(zhǔn)[5篇材料]

        修煉一名程序員的職業(yè)水準(zhǔn)(林慶忠__署名原創(chuàng)) 作者:林慶忠,1990年畢業(yè)于昆明工學(xué)院計(jì)算機(jī)軟件專業(yè),后又于1999年畢業(yè)在南京大學(xué) 完成軟件工程專業(yè)碩士的學(xué)習(xí),現(xiàn)供職于CNPC旗下的......

        第五項(xiàng)修煉總結(jié)

        在第十一章中,首先以《斯巴達(dá)克斯》的故事作為引言,在這個(gè)故事中,每一個(gè)人都選擇受死,但是這個(gè)部隊(duì)所忠于的,不是斯巴達(dá)克斯個(gè)人,而是由斯巴達(dá)克斯所激發(fā)的“共同愿景”。這個(gè)愿景......

        程序員面試總結(jié)

        程序員面試總結(jié) 這篇側(cè)重于具體的筆試、面試的問(wèn)題,至于是哪個(gè)公司的就 不去追究了,但一定是經(jīng)常問(wèn)到的,而且我嵌入式系統(tǒng)工程師和移動(dòng) 開發(fā)工程師都參與了,問(wèn)題要區(qū)別看待,那么......

        程序員實(shí)習(xí)總結(jié)

        篇一:程序員實(shí)習(xí)總結(jié)范文 以前在校很少自己做程序,對(duì)軟件工程更是一無(wú)所知.來(lái)到公司,開始接觸大規(guī)模(其實(shí)現(xiàn)在看來(lái)實(shí)習(xí)的項(xiàng)目其實(shí)還是很小的)軟件開發(fā),一時(shí)真的有些迷茫.比......