程序員的自我修養(yǎng)(1)

前言

回家之前刷了兩天圖書館嫂冻,找到幾本好書伊脓,仔細(xì)閱讀后做下讀書筆記,然后準(zhǔn)備動(dòng)手開發(fā)之前都先過一遍凤优。來讓自己能夠訓(xùn)練出寫高質(zhì)量的代碼。第一本來自《The pragmatic programmer》(中文名《程序員修煉之道-從小工到專家》)

本書引申推薦書籍 《代碼大全》 《UNIX編程藝術(shù)》 早讀課微信群里有小伙伴推薦《編程匠藝》蜈彼,建議配套閱讀

正文

在所有弱點(diǎn)中筑辨,最大的弱點(diǎn)是害怕暴露弱點(diǎn)。注重實(shí)效的程序員對(duì)他的職業(yè)生涯負(fù)責(zé)柳刮,出錯(cuò)或者交付晚了都是無法避免的挖垛,我們必須誠實(shí)面對(duì)。在考慮回答之前秉颗,先在腦海里預(yù)演一遍“我試過這個(gè)了嗎”痢毒,“除此之外我沒有辦法解決了嗎”要提供各種選擇,不要找借口

dont’t repeat yourself蚕甥!一定要閱讀別人的源碼和文檔哪替。

你的知識(shí)和經(jīng)驗(yàn)是你最重要的職業(yè)財(cái)富,遺憾的是它們是有時(shí)效的菇怀,隨著知識(shí)價(jià)值的降低凭舶,你的價(jià)值也在降低。因此你需要經(jīng)營你的知識(shí)資產(chǎn)爱沟。

1.定期投資(這里我提供幾個(gè)思路:參加會(huì)議帅霜,參與社區(qū),閱讀新書呼伸,看新文章)

2.多元化是長期成功的關(guān)鍵身冀。(這里我的解讀有兩種,一是你需要掌握的技術(shù)是多元化的括享,不要局限于某個(gè)技術(shù)搂根。二,你的業(yè)務(wù)需要多元化铃辖,長期從事開發(fā)某個(gè)業(yè)務(wù)會(huì)讓你的腦袋僵化剩愧,比如開發(fā)系統(tǒng)的可以去嘗試自己寫個(gè)小游戲,PC端開發(fā)可以考慮折騰下移動(dòng)端開發(fā)娇斩,讓腦袋不停運(yùn)轉(zhuǎn)起來仁卷。)

3.定期性的重新評(píng)估和平衡資產(chǎn)(因?yàn)槟闼莆盏氖怯袝r(shí)效的,技術(shù)發(fā)展很快犬第,你需要時(shí)刻把握新技術(shù)潮流五督,憑借扎實(shí)的基礎(chǔ)快速上手。)(因此我覺得最關(guān)鍵的是不要將自己視為某個(gè)職位的開發(fā)瓶殃,而是將自己視為程序員充包,我現(xiàn)在從事某項(xiàng)專業(yè)工作開發(fā),如果需要,我可以隨時(shí)轉(zhuǎn)為別的開發(fā)基矮,因此牢固的基礎(chǔ)是必備的淆储。)可以定個(gè)目標(biāo):1.每年至少學(xué)習(xí)一種新語言2.每季度閱讀一本技術(shù)書籍3.閱讀非技術(shù)書籍

4.上課(這里可以是mooc,國內(nèi)外的都可以家浇,在現(xiàn)今知識(shí)大爆炸的時(shí)代本砰,你想學(xué)是都可以學(xué)的「直花錢的免費(fèi)的都有点额。)

5.跟上潮流(這里我提供我的部分方法:每天關(guān)注本職工作開發(fā)領(lǐng)域的文章和新聞。在程序員招聘貼中看新技術(shù)的動(dòng)態(tài)莺琳,對(duì)比自己掌握程度还棱,薄弱的自己補(bǔ)。)

6.設(shè)法把你學(xué)到的用到你的當(dāng)前的項(xiàng)目中惭等,(比如學(xué)會(huì)了面向?qū)ο笳涫郑陀闷浞绞骄幊獭W(xué)會(huì)了設(shè)計(jì)模式辞做,就用不同模式設(shè)計(jì)接口琳要,自己感受一下哪種更適合。)

曳光彈:我們需要找到某種東西秤茅,讓我們能快速稚补,直觀和可重復(fù)的從需求出發(fā),滿足最終系統(tǒng)的某個(gè)方面請(qǐng)求框喳。(類似于開發(fā)一個(gè)將接口結(jié)合的結(jié)構(gòu)课幕,它一開始只有單一功能就是連接端對(duì)端接口。但是一旦完成帖努,你就有了可演示的產(chǎn)品,可擴(kuò)展的架構(gòu)粪般,隨即你只需要把預(yù)留的內(nèi)容填充完畢即可拼余。)

原型制作是一種學(xué)習(xí)經(jīng)驗(yàn),其價(jià)值并不在于所產(chǎn)生的代碼亩歹,而在于所學(xué)到的經(jīng)驗(yàn)教訓(xùn)匙监。適合制作原型的有:架構(gòu),已有系統(tǒng)中的新功能小作,外部數(shù)據(jù)結(jié)構(gòu)或內(nèi)容亭姥,第三方工具或組件。性能問題顾稀。用戶界面設(shè)計(jì)达罗。

訓(xùn)練自己,編寫出足夠好的程序。你所制作的系統(tǒng)的范圍和質(zhì)量應(yīng)該作為系統(tǒng)需求的一部分規(guī)定下來粮揉。(質(zhì)量是個(gè)抽象巡李,但其實(shí)大多數(shù)情況下應(yīng)該是可控的,比如讓你的代碼更簡潔一點(diǎn)扶认,讓你的接口更語義化侨拦,從小細(xì)節(jié)定下質(zhì)量規(guī)范然后堅(jiān)持下去。)

嚴(yán)格遵守正交性(改動(dòng)A辐宾,絕對(duì)不會(huì)影響B(tài))讓你的代碼保持解耦狱从,避免用全局變量,避免寫相似的函數(shù)(參考?設(shè)計(jì)模式?策略模式)叠纹。修改BUG的時(shí)候也是評(píng)估整個(gè)系統(tǒng)正交性的好時(shí)候季研,當(dāng)你遇到問題時(shí),評(píng)估修正的局部化成都吊洼。運(yùn)用正交性原則训貌,可以降低各組件間的相互依賴。(這點(diǎn)我覺得尤其適合你開發(fā)中期的時(shí)候重新審視你的項(xiàng)目代碼和組件依賴冒窍。)

要持續(xù)不斷的觀察周圍發(fā)生的事情递沪,而不是你自己在做的事情。(偏個(gè)題综液,作為獨(dú)立開發(fā)者需要關(guān)注的是開源社區(qū)款慨,還有新技術(shù),新思想谬莹。)

避免考巧合編程檩奠,要深思熟慮的編程:

1.總是意識(shí)到你在做什么(這點(diǎn)很重要,因?yàn)橥阍趯懝δ苣K的時(shí)候?qū)懼鴮懼葸M(jìn)去附帽,太投入以至于忘記初衷是做什么埠戳,可能你的功能越寫越多,但是這些都不在需求之內(nèi)蕉扮。)

2.不要盲目編程(開發(fā)之前做好計(jì)劃整胃,編寫文檔,畫UML圖喳钟,或者思維導(dǎo)圖屁使,將你的思路一個(gè)個(gè)羅列出來整合。當(dāng)然小黑板方法也是可以的奔则。)

3.按照計(jì)劃行事(千萬不要多事蛮寂,就是你必須盡量在開發(fā)之前把需求標(biāo)明,不然你會(huì)在開發(fā)過程中時(shí)不時(shí)多一個(gè)需求易茬。酬蹋。。然后陷入破窗)

4.依靠可靠地事物

5.為你的假定建立文檔

6.為你的工作劃分優(yōu)先級(jí),把時(shí)間花在最重要的方面除嘹。如果你的基本原則或者基本設(shè)施不正確写半,其他都是空的。

7.不要做歷史的奴隸尉咕,不要讓已有的代碼支配將來的代碼叠蝇。如果不適用,可以把所有代碼替換年缎。準(zhǔn)備好重構(gòu)悔捶。

架構(gòu)原型中解答具體問題:

1.主要組件的責(zé)任是否得到了良好定義

2.主要組件的協(xié)作是否得到良好定義

3.耦合是否最小化

4.你能否確定重復(fù)的潛在來源

5.接口定義和各項(xiàng)約束是否可以接受

6.每個(gè)模塊在執(zhí)行過程中是否能訪問其所需要的數(shù)據(jù),能否在需要的時(shí)候進(jìn)行訪問(這段讓我思考到我們?cè)O(shè)計(jì)分析需求的時(shí)候往往是憑借個(gè)人經(jīng)驗(yàn)去組合模塊单芜,但是一些潛在的比如約束等等都不大會(huì)想到蜕该,當(dāng)然這些我也是在軟件工程這門課備考的時(shí)候所看到的,這對(duì)于開發(fā)的確是起到引領(lǐng)性的作用洲鸠。)

規(guī)劃你想說出的東西堂淡,簡略記下你想要交流的想法,并準(zhǔn)備幾種測試將講清楚扒腕。了解你的聽眾:

1.你想讓他們學(xué)到什么绢淀?

2.他們對(duì)你講的什么感興趣?

3.他們是否具備經(jīng)驗(yàn)?

4.他們想要多少細(xì)節(jié)?

5.你想要讓誰擁有這些信息瘾腰?

6.你如何促使他們聽你說話皆的?

你說什么和你怎么樣說同樣重要。

批判地思考你讀到的和聽到的蹋盆,你需要確保你資產(chǎn)的至少是準(zhǔn)確的费薄,沒有受到炒作或者跟風(fēng)的影響。(這點(diǎn)全靠經(jīng)驗(yàn)栖雾,該交的智商稅都少不了的大家楞抡。想要少交多讀書多實(shí)驗(yàn)。)

準(zhǔn)備重構(gòu)之前考慮:1.是否重復(fù)2.非正交的設(shè)計(jì)3.過時(shí)的需求4.性能

開發(fā)項(xiàng)目時(shí)的心理有時(shí)候決定了你的項(xiàng)目衰敗析藕。(這點(diǎn)深有感觸召廷,有時(shí)候開發(fā)周期延長或者自己開發(fā)之前沒有預(yù)設(shè)好風(fēng)險(xiǎn),就會(huì)出現(xiàn)破窗戶噪径,然而最后又要逼著自己去修復(fù)使項(xiàng)目達(dá)到最基本可運(yùn)行的狀態(tài)柱恤。)當(dāng)出現(xiàn)第一個(gè)破窗戶時(shí)不要等到情況迅速惡劣化数初,而是一開始就采取行動(dòng)使情勢處于可控狀態(tài)找爱。

總結(jié)

在我獨(dú)立開發(fā)過程中,我往往遇到的問題不是技術(shù)問題泡孩,而是架構(gòu)問題车摄,當(dāng)你想轉(zhuǎn)型將代碼邏輯組織關(guān)系提升一個(gè)層次,會(huì)發(fā)現(xiàn)發(fā)自內(nèi)心的無力,但是閱讀這本書的過程中我發(fā)現(xiàn)了我該從哪些方面入手去突破吮播。因此閱讀經(jīng)典的意義就在于此变屁,你往往束手無策的時(shí)候它給你點(diǎn)亮一盞燈,讓你明明接下去的路該如何走意狠。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粟关,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子环戈,更是在濱河造成了極大的恐慌闷板,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件院塞,死亡現(xiàn)場離奇詭異遮晚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拦止,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門县遣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人汹族,你說我怎么就攤上這事萧求。” “怎么了鞠抑?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵饭聚,是天一觀的道長。 經(jīng)常有香客問我搁拙,道長秒梳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任箕速,我火速辦了婚禮酪碘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盐茎。我一直安慰自己兴垦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布字柠。 她就那樣靜靜地躺著探越,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窑业。 梳的紋絲不亂的頭發(fā)上钦幔,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音常柄,去河邊找鬼鲤氢。 笑死搀擂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卷玉。 我是一名探鬼主播哨颂,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼相种!你這毒婦竟也來了威恼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤寝并,失蹤者是張志新(化名)和其女友劉穎沃测,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體食茎,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒂破,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了别渔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片附迷。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖哎媚,靈堂內(nèi)的尸體忽然破棺而出喇伯,到底是詐尸還是另有隱情,我是刑警寧澤拨与,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布稻据,位于F島的核電站,受9級(jí)特大地震影響买喧,放射性物質(zhì)發(fā)生泄漏捻悯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一淤毛、第九天 我趴在偏房一處隱蔽的房頂上張望今缚。 院中可真熱鬧,春花似錦低淡、人聲如沸姓言。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽何荚。三九已至,卻和暖如春猪杭,著一層夾襖步出監(jiān)牢的瞬間餐塘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工胁孙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唠倦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓涮较,卻偏偏與公主長得像稠鼻,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狂票,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,504評(píng)論 25 707
  • 櫻花在雨中爛漫候齿,會(huì)不會(huì)香消身殞? 在路口左思右慮闺属,末了還是選擇此時(shí)去看望紀(jì)君慌盯。 春天看起來是早早到來了,然這些天還...
    如丹閱讀 277評(píng)論 0 0
  • 遂不及防的好感度掂器,沐云淺表示男配這種生物果然奇怪亚皂。 “你就是新般來的鄰居嗎?” “嗯国瓮∶鸨兀” “我叫...
    淺貓巷閱讀 305評(píng)論 2 3
  • 今天早出門了15分鐘,最重要的坐車比較順利乃摹,擠上了第一班公交車禁漓,一路上聽著廣播不知不覺已經(jīng)到了地鐵站,出站后看下時(shí)...
    平凡精靈閱讀 413評(píng)論 0 1