前一段時(shí)間看了兩本書(shū)《高效程序員的45個(gè)習(xí)慣——敏捷開(kāi)發(fā)修煉之道》和《高效能程序員的修煉》。書(shū)名很相似,讀完這兩本書(shū)花的時(shí)間也差不多,都是兩個(gè)星期左右。兩本書(shū)內(nèi)容差別卻不小。不過(guò),總結(jié)起來(lái)一句話:都是好書(shū)!
《高效程序員的45個(gè)習(xí)慣》原名Practices of an Agile Developer,所以這本書(shū)主要是講敏捷開(kāi)發(fā)方法與實(shí)踐的。由于對(duì)團(tuán)隊(duì)和協(xié)作沒(méi)什么清晰的概念,而且書(shū)中大多是以團(tuán)隊(duì)開(kāi)發(fā)為實(shí)例的,看完以后有好多地 方?jīng)]太明白。所以,這本書(shū)不太適合大一的讀,估計(jì)我還需要兩年后再讀一次。
但是還是有很多收獲的,作者Andy Hunt和Venkat Subramaniam在書(shū)中傳授了很多敏捷開(kāi)發(fā)的思想,不但適用于團(tuán)隊(duì),而且對(duì)獨(dú)立開(kāi)發(fā)者也有很大借鑒意義。在這里總結(jié)一下:
過(guò)程符合標(biāo)準(zhǔn)不意味著結(jié)果是正確的。結(jié)果重于過(guò)程(“結(jié)果不重要”向來(lái)都是說(shuō)給失敗者的)。
你不需要很出色才能起步,但是你必須起步才能變得很出色?!狶es Brown
如果你自己都不清楚所談?wù)摰臇|西,就根本不可能精確地描述它?!s翰·馮·諾依曼
習(xí)慣很可能造就一個(gè)專家,但同樣也能毀了這個(gè)專家(自己想的,有點(diǎn)扯)——打破舊習(xí)慣很難,更難的是自己還沒(méi)有意識(shí)到這個(gè)問(wèn)題。
雖然這是一本關(guān)于項(xiàng)目開(kāi)發(fā)方法的書(shū),作者也通篇在講開(kāi)發(fā)中需要注意規(guī)避和正確的做法與心態(tài),但是我卻從中看到了更多程序以外的東西。
作者在第一章就總結(jié)說(shuō),敏捷開(kāi)發(fā)要不斷地使用反饋進(jìn)行自我調(diào)整和完善。這句話真的很好,只有不斷的調(diào)整和完善才能跟上技術(shù)和設(shè)計(jì)的步伐,不至于項(xiàng)目 交付時(shí)拿出來(lái)的是一個(gè)脫離了潮流甚至充滿錯(cuò)誤設(shè)計(jì)的東西。其實(shí)對(duì)生活也是這樣。經(jīng)常總結(jié)自己,當(dāng)發(fā)現(xiàn)生活偏向某個(gè)極端時(shí),就做一下調(diào)整,就像航海時(shí)發(fā)現(xiàn)偏 離航線了要及時(shí)調(diào)整航向一樣,否則因?yàn)榉磻?yīng)遲鈍帶來(lái)的痛苦與損失是要付出很多代價(jià)的,而且付出的代價(jià)往往與問(wèn)題發(fā)現(xiàn)的時(shí)間成正比。越早發(fā)現(xiàn)問(wèn)題,就越容易 修復(fù)問(wèn)題。
管理大師德魯克說(shuō)∶“世界唯一不變的是變化?!闭嬲臄橙耸亲兓?,而且你不可能打敗變化,你所能做的就是適應(yīng)變化。看完這本書(shū),個(gè)人感覺(jué),其實(shí)就一 個(gè)字就能把這本書(shū)想說(shuō)的敏捷開(kāi)發(fā)給概括,那就是“變”。如果能在變化中使自己變化以適應(yīng)變化,見(jiàn)機(jī)行事,隨機(jī)應(yīng)變,你就達(dá)到了“敏捷”(相關(guān)內(nèi)容可以看我 之前寫(xiě)的All Over Again)。
另外,書(shū)中《使用短迭代,增量發(fā)布》一文給我留下很深印象。短迭代讓人感覺(jué)非常專注且具效率。你能看到一個(gè)實(shí)際并且確切的目標(biāo)。嚴(yán)格的最終期限迫使 你做出一些艱難的決策,沒(méi)有遺留下長(zhǎng)期懸而未決的問(wèn)題。如果每個(gè)迭代時(shí)間都不夠用,要么是任務(wù)太大,要么是迭代的時(shí)間太短。把握好自己的節(jié)奏。
你要不斷從自己寫(xiě)的代碼中得到反饋,并且使用自動(dòng)化工具不斷地構(gòu)建和測(cè)試系統(tǒng)。在前進(jìn)的過(guò)程中,你都會(huì)有意識(shí)地修改一些代碼:在功能不變的情況下,重新設(shè)計(jì)代碼,改善代碼質(zhì)量。這就是所謂的重構(gòu)。
當(dāng)你把這段話中的“代碼”換成“生活”時(shí),你會(huì)發(fā)現(xiàn)它同樣是對(duì)的。所以,就像團(tuán)隊(duì)需要隔段時(shí)間重構(gòu)自己項(xiàng)目的某些代碼以減少bug、精簡(jiǎn)代碼一樣,你也要學(xué)會(huì)重構(gòu)自己的生活,來(lái)提高生活質(zhì)量。
另一本,是Stack Overflow創(chuàng)始人之一Jeff Atwood的 《高效能程序員的修煉》。這本書(shū)類似于《黑客與畫(huà)家》,文章主要取自作者的博客CodingHorror??赐曛螅c上一本不同的是,這本書(shū)淺顯易懂,而且處處體現(xiàn)出作者積極向上的幽默,通過(guò)各種實(shí)例,闡述了自己對(duì)程序員應(yīng)有的態(tài)度、學(xué)習(xí)方法、技能的看法,最后還談到了職業(yè)規(guī)劃和程序員的幸福,很適合初級(jí)程序員和學(xué)生讀。
下面是我對(duì)書(shū)中主要內(nèi)容的一些筆記(主要是自己總結(jié)的,想了解更多還是去看書(shū)吧):
對(duì)于創(chuàng)意來(lái)說(shuō),執(zhí)行是一個(gè)增倍器。它能放大創(chuàng)意的價(jià)值,甚至更多。(閑扯一下,你如果在07年之前說(shuō)你有一個(gè)關(guān)于手機(jī)的棒極了的點(diǎn)子:它有 一個(gè)智能系統(tǒng),可以裝應(yīng)用;還有一個(gè)觸摸屏,可以用手觸摸,還可以用多個(gè)手指!這個(gè)點(diǎn)子線塊錢(qián)上一邊去!因?yàn)檫@只是個(gè)點(diǎn)子,不是 iPhone)
嘗試結(jié)對(duì)編程。(與作者在書(shū)中的觀點(diǎn)不太一樣,作者是結(jié)對(duì)編程的忠實(shí)擁護(hù)者)
兩本書(shū)都提到了一點(diǎn),在問(wèn)“為什么”之前,一點(diǎn)要想好自己為什么問(wèn)這個(gè)問(wèn)題。當(dāng)你問(wèn)“為什么“的時(shí)候,也許你會(huì)被反問(wèn):“為什么你問(wèn)這個(gè)問(wèn)題?”所以在提問(wèn)之前,想好你提問(wèn)的理由,這會(huì)有助于你問(wèn)出恰當(dāng)?shù)膯?wèn)題。
歸根結(jié)底,這關(guān)乎公平:如果你想要?jiǎng)e人花上寶貴的時(shí)間來(lái)幫助你,只有在你也花了相當(dāng)?shù)膶氋F時(shí)間醞釀出一個(gè)合格的問(wèn)題時(shí)才算公平。幫助別人就是幫你自己!
如果你能完全投入地向一個(gè)假想中的人或者是沒(méi)有生命的物體問(wèn)一個(gè)透徹而詳盡的問(wèn)題,你往往會(huì)在最后認(rèn)識(shí)到你犯了某中愚蠢的錯(cuò)誤,于是問(wèn)題不再是問(wèn)題,你也因此如釋重負(fù)。
其實(shí),作者在建立Stack Exchange時(shí)也用到了敏捷方法,而且“快”是Stack Overflow的制勝法寶。第一版做的不好,但照樣發(fā)布,然后在不斷的用戶反饋中獲得靈感與思路,在快速迭代中完善產(chǎn)品。
在國(guó)內(nèi)App創(chuàng)業(yè)浪潮中,很多人都強(qiáng)調(diào)了創(chuàng)意的重要性,甚至認(rèn)為有了一個(gè)想法(先不說(shuō)它的好壞)就有了一點(diǎn),整天把“idea”掛在嘴邊,認(rèn)為自己 就是下一個(gè)喬布斯。但其實(shí)idea一文不值,重要的是去實(shí)現(xiàn)它。因?yàn)槟阋嘈?,你能想到的,別人也能想到(同樣先不說(shuō)它的好壞),但你能做到的,別人不一 定能做到。
當(dāng)遇到自己產(chǎn)品的復(fù)制品時(shí),該怎么做呢?很多人發(fā)現(xiàn)有類似自己的網(wǎng)站或是模仿自己的App上線時(shí),都變得很瘋狂,在各種社區(qū)、論壇或是問(wèn)答網(wǎng)站表達(dá) 無(wú)奈和委屈,以博得同情,或是大罵山寨者,引起眾怒。但其實(shí)這一點(diǎn)用也沒(méi)有,當(dāng)你在哭爹喊娘的時(shí)候別人已經(jīng)超過(guò)你了。我現(xiàn)在還沒(méi)聽(tīng)說(shuō)哪個(gè)開(kāi)發(fā)者把山寨貨告 上法庭并打敗對(duì)方的事??纯碕eff在面對(duì)Stack Overflow的復(fù)制品時(shí)是怎么做的,
現(xiàn)在市面上已經(jīng)出現(xiàn)了一些Stack Overflow引擎的復(fù)制品。我想說(shuō)他們干的不錯(cuò)!……我們的使命是讓互聯(lián)網(wǎng)變得更好(哪怕我們只能帶來(lái)一些細(xì)微的改進(jìn))?!覀儧](méi)曾想過(guò)要推翻誰(shuí)或 者占有什么東西。所以在這個(gè)過(guò)程中,如果有任何東西擋住了我們的路,請(qǐng)放心,我們不會(huì)大打出手。我們會(huì)繞開(kāi)。然后繼續(xù)向前,快速進(jìn)步。因此,如果那些抄襲者想要跟上我們的話,他們也得行動(dòng)快點(diǎn)。
懂了嗎?就是一個(gè)字——“快”。只有比你的對(duì)手快,你才能打敗那些山寨者。Chrome為什么會(huì)在短短幾年打敗IE(但人家仍是市場(chǎng)份額老大)和Firefox,就是因?yàn)樗鼧O速的迭代速度。
前幾天在知乎上看到有人問(wèn)“如何在國(guó)內(nèi)盜版橫行的Android市場(chǎng)上存活”,我是這樣回答的
希捷前CEO Bill Watkins在06年曾放出一個(gè)讓很多人驚掉眼鏡的說(shuō)法:“醒醒吧,硬盤(pán)是不能改變這個(gè)世界的。它能做的就是幫助人們存儲(chǔ)更多的垃圾文件和色情片。”雖 然的確有些夸張了,但是面對(duì)越來(lái)越大的硬盤(pán),想一下,你真的需要那么多空間來(lái)存放那么多文件嗎?
如果你看到這里了,我的建議是,《高效程序員的45個(gè)習(xí)慣——敏捷開(kāi)發(fā)修煉之道》和《高效能程序員的修煉》兩本書(shū)你一定要讀。
程序員到高級(jí)程序員的職業(yè)生涯要經(jīng)歷以下幾個(gè)階段:初級(jí)程序員、中級(jí)程序員、最后是高級(jí)程序員。
本也在前不久公布了新的教科書(shū)鑒定結(jié)果,要求全日本所有的小學(xué)將在2020年起,開(kāi)始使用新版教科書(shū)。其中....
架構(gòu)師的長(zhǎng)處之一就是善于看到問(wèn)題的本質(zhì)。不過(guò),什么是看到問(wèn)題的本質(zhì)?程序員應(yīng)該如何修煉這個(gè)能力?...
這個(gè)繁榮的行業(yè),只要你自己不水,可以衣食無(wú)憂,努努力還能buffer加成,成為別人眼里很酷的那種人,....
移動(dòng)互聯(lián)網(wǎng)的熱潮,帶動(dòng)了軟件開(kāi)發(fā)產(chǎn)業(yè)的蓬勃發(fā)展。BAT中動(dòng)不動(dòng)年薪百萬(wàn)或者年底資金發(fā)二十幾個(gè)月的工資....
文檔習(xí)慣 :文檔是一個(gè)軟件系統(tǒng)的生命力。一個(gè)公司的產(chǎn)品再好、技術(shù)含量再高,如果缺乏文檔,知識(shí)就沒(méi)有繼....
可分為兩級(jí),低級(jí)的指剛剛從學(xué)校畢業(yè),或剛剛參加工作的程序猿,當(dāng)然必須是一個(gè)合格的程序猿,能夠關(guān)注到項(xiàng)....
自西方文藝復(fù)興以來(lái),中國(guó)在自然科學(xué)方面落后西方很多,軟件領(lǐng)域也不例外。當(dāng)然現(xiàn)在中國(guó)的許多程序員們對(duì)此....
所謂的Java高級(jí)程序員往往是經(jīng)驗(yàn)和能力的結(jié)合,并不是說(shuō)掌握了哪幾個(gè)技術(shù)就是高級(jí)程序員了,能否把掌握....
9 年前,我從象牙塔里走出來(lái),正式踏入社會(huì),懵懵懂懂地在一家日企開(kāi)始了職業(yè)生涯。那時(shí)候,技術(shù)功底非常....
尤其是那些開(kāi)放式的問(wèn)題,如“請(qǐng)介紹下你自己”或“請(qǐng)講一下你曾經(jīng)解決過(guò)的復(fù)雜問(wèn)題”。
嗨,ST-Link程序員有什么不同嗎?我的意思是STM8S-Discovery板和獨(dú)立的ST-Link。獨(dú)立程序員的工作速度更快嗎? 最好...
最近室友閑聊的時(shí)候告訴我,他在網(wǎng)上收集了做為一個(gè)java程序員必須要會(huì)的東西,他覺(jué)得自己要有個(gè)方向,....
我覺(jué)得問(wèn)題在于這里的文化,也就是人們的思維模式。自孩提時(shí)代開(kāi)始,我們就被訓(xùn)練如何遵照流程循規(guī)蹈矩,然....
其實(shí)一直都不太懂得辦公室的政治,我出來(lái)一年多了,自己喜歡做的事情沒(méi)做到,當(dāng)初也很傻很天真的覺(jué)得事業(yè)單....
再過(guò)三個(gè)月就是十年工作的老程序員,一直奮斗在編碼一線。從畢業(yè)那會(huì)拿著簡(jiǎn)歷去深圳人才市場(chǎng)找工作,到跟項(xiàng)....
這個(gè)問(wèn)題很多人問(wèn)過(guò),也有很多人回答過(guò),此外如果你在閱讀這篇文章那么你應(yīng)該已經(jīng)意識(shí)到了學(xué)習(xí)英語(yǔ)的重要性....
上個(gè)月跟劉江以及一些《程序員》的熱心作者讀者吃了一頓飯,劉江讓大家談?wù)劇冻绦騿T》的內(nèi)容以及未來(lái)的方向....
不知道大家是否跟我一樣,在大學(xué)過(guò)著虛度光陰的生活。那時(shí)候CF比較火,所以在大學(xué)的時(shí)候除了會(huì)打CF以外....
又到六月,又是高考的季節(jié)(雖然還沒(méi)高考,但我已經(jīng)感覺(jué)到了幾家歡喜幾家愁了,過(guò)來(lái)人嘛,你懂的),又是畢....
首先我們得知道這問(wèn)題的答案是個(gè)變量,他依賴于你的目標(biāo)和天資能力,絕不唯一。當(dāng)然大學(xué)的課程設(shè)置往往是唯....
在金庸先生構(gòu)建的武俠世界里,最犀利的殺伐武功應(yīng)該是《獨(dú)孤九劍》,但學(xué)會(huì)了獨(dú)孤九劍卻失了內(nèi)功的令狐沖一....
前幾天和朋友一起交流的時(shí)候,他提到了一點(diǎn)問(wèn)題,作為程序員,有時(shí)候會(huì)比較narrow-focused,....
程序員最重要的是學(xué)習(xí)能力和聰明,所以特別要求某項(xiàng)技能的公司一般是很low的。一個(gè)勤奮聰明的程序員,三....
在LZ看來(lái),面試前刷題這件事真的是很愚蠢的一件事,因此LZ就想寫(xiě)一篇文章來(lái)提醒一下大家,面試前千萬(wàn)不....
一開(kāi)始在廈門(mén)的一個(gè)新三板的公司當(dāng)普通的程序員。試用期2500,轉(zhuǎn)正3000。
很多人非常想知道自己的未來(lái)是什么樣子的,迫切到一定程度甚至?xí)宜忝壬H绻⒉皇窍氲玫揭粋€(gè)精確結(jié)果....
在軟件行業(yè)工作有幾個(gè)年頭了,換過(guò)多個(gè)開(kāi)發(fā)語(yǔ)言,跳過(guò)槽,也被獵頭找過(guò),經(jīng)歷了三五桿槍打天下和創(chuàng)業(yè)公司一....
大部分人(包括我在內(nèi))都是抱著打工者的心態(tài)在企業(yè)上班,這并沒(méi)有什么錯(cuò),只不過(guò)正像作者所說(shuō)會(huì)固化自己對(duì)....
進(jìn)入IT行業(yè)已經(jīng)多年,從剛實(shí)習(xí)做Delphi,到后來(lái)扎根C,一直在現(xiàn)在專心做移動(dòng)技術(shù),前前后后也換了....
08年11月初從北大青鳥(niǎo)學(xué)習(xí)軟件編程畢業(yè),跟幾個(gè)同學(xué)一起來(lái)到北京找工作,從還沒(méi)有出來(lái)時(shí)和剛開(kāi)始,想的....
在國(guó)內(nèi)有一個(gè)很特別的現(xiàn)象:高中打了雞血一樣使勁學(xué)習(xí)的人,到了大學(xué)往往會(huì)放松下來(lái),跑去享受生活了,大學(xué)....
對(duì)于一個(gè)程序員的成長(zhǎng),學(xué)習(xí)似乎是永恒的事情。為什么網(wǎng)友愛(ài)用“苦逼”來(lái)形容程序員,因?yàn)樗麄冋旆笇?xiě)代....
通常實(shí)施人員、市場(chǎng)人員推卸責(zé)任就把所有的問(wèn)題都?xì)w到程序員和他們開(kāi)發(fā)的產(chǎn)品身上,這一向都是他們的借口,....
今年可以說(shuō)是我職業(yè)生涯中很重要的一年,是一個(gè)轉(zhuǎn)折點(diǎn)。因?yàn)樵?月底的時(shí)候,我經(jīng)歷了人生的第一次跳槽,并....
學(xué)習(xí)階段是學(xué)生走向職場(chǎng)第一個(gè)必經(jīng)的階段。這個(gè)階段覺(jué)得自己過(guò)得特別充實(shí)。剛進(jìn)入職場(chǎng),一張白紙,反正啥也....
對(duì)于開(kāi)發(fā)的頭五年,認(rèn)真的做好你手頭的事情,不要懷疑有沒(méi)有前途之類的,真正的做好了,做什么都有前途。
我見(jiàn)過(guò)的車模不多,但毫無(wú)疑問(wèn),她們的身材都呈現(xiàn)出了一種完美的曲線,遠(yuǎn)遠(yuǎn)望去,和大牌的女明星沒(méi)有多大的....
心智真的是很重要,毫不夸張的說(shuō)你身邊的那個(gè)人之所以比你優(yōu)秀絕不說(shuō)差在智力上,偶爾甚至就是一念之差,下....
在系統(tǒng)開(kāi)發(fā)的過(guò)程中,如何從客戶那里獲取正確、有效的需求,是每個(gè)團(tuán)隊(duì)都需要仔細(xì)考慮的問(wèn)題。如果最初的需....
其實(shí)大大小小的文章討論程序員的人生規(guī)劃不計(jì)其數(shù)。本人還是堅(jiān)持談?wù)剛€(gè)人對(duì)于程序員日后規(guī)劃的看法,也是本....
一晃做程序員也有十年了,總覺(jué)得時(shí)間過(guò)的很快,仿佛第一次寫(xiě)程序還是去年的事情。雖然到現(xiàn)在也已經(jīng)換了三四....
首先,作為一個(gè)程序員,在工作中或技術(shù)成長(zhǎng)上你的快樂(lè)或者說(shuō)成就感來(lái)自于哪兒?大家可以先靜下來(lái)考慮下這個(gè)....
廢話不多說(shuō),在java這行業(yè)待了有一年多了。從剛開(kāi)始的程序是什么都不知道打現(xiàn)在漸漸會(huì)做點(diǎn)東西了(其實(shí)....
首先我想解釋一下標(biāo)題中兩個(gè)關(guān)鍵字: “快樂(lè)”, “ASP.NET程序員”。
運(yùn)用一門(mén)程序設(shè)計(jì)語(yǔ)言對(duì)大多數(shù)程序員來(lái)說(shuō)是小菜一碟,但是更上一層樓成為一名專家級(jí)的軟件開(kāi)發(fā)者,恐怕目前....