本書作者:Ka Wai Cheung
花了幾個(gè)小時(shí)把本書閱覽了一遍订框,然后把個(gè)人覺得重要的一些方面做下記錄。
這是一個(gè)Web程序員,設(shè)計(jì)師寫的關(guān)于項(xiàng)目和編碼方面的一些經(jīng)驗(yàn)和建議。
本文是我自己個(gè)人根據(jù)本書提綱做的一些自我總結(jié)
1. 我們在處理代碼時(shí)需要注意的一些問題
- 規(guī)劃完備灭将,再開工:
當(dāng)我們拿到一個(gè)項(xiàng)目,或者一個(gè)只有模糊概念的想法的時(shí)候后控,我們第一階段要做的不是立馬開始寫代碼庙曙,而是弄清楚需求,再需求和項(xiàng)目經(jīng)理或者客戶確認(rèn)的前提下浩淘,開始做第一次嘗試(即生成一個(gè)雖然不完美捌朴,但是可以實(shí)現(xiàn)功能的版本)如此迭代。- 丟掉舊代碼:
丟棄那些埋藏在代碼中张抄,影響你觀看當(dāng)前代碼砂蔽,可能是之前老想法的注釋代碼,因?yàn)檫@些占用了你的代碼空間署惯,而且不一定會(huì)用到左驾。周期性對這些代碼進(jìn)行辨別和刪除。- 魚和熊掌可以兼得:
項(xiàng)目代碼一般涉及好幾個(gè)方面的內(nèi)容极谊,可能你只是精通一塊什荣,但是為什么你不能都精通呢?其實(shí)是可以的怀酷,根據(jù)專家理論稻爬,當(dāng)你在一個(gè)領(lǐng)域精通的時(shí)候,你去學(xué)習(xí)其他相關(guān)領(lǐng)域相對會(huì)變得容易的蜕依。所以桅锄,首先,我們要在某個(gè)方面變成專家样眠,然后友瘤,在過程中對其他的相關(guān)領(lǐng)域保持持續(xù)學(xué)習(xí)熱情。
2.工作的動(dòng)力和保持效率
- 動(dòng)力驅(qū)動(dòng):
寫代碼是一項(xiàng)需要?jiǎng)?chuàng)造力的勞動(dòng)檐束,如果你沒有動(dòng)力辫秧,也會(huì)失去創(chuàng)造力和執(zhí)行力。所以我們要從工作本身來獲得動(dòng)力被丧。對某個(gè)項(xiàng)目/模塊的喜歡盟戏,對某個(gè)模塊攻克的成就感绪妹,等等,這些都會(huì)是我們工作的動(dòng)力柿究。但是注意邮旷,在其過程中,追求完美是好的蝇摸,切記太過婶肩,畢竟產(chǎn)品是有時(shí)間限制的,沒有完美的產(chǎn)品貌夕,只有不斷打磨的產(chǎn)品律歼。- 保持精力:
為了讓工作有動(dòng)力和激情,你需要保持自己的精力啡专。休息會(huì)是補(bǔ)充你體力的一劑良藥苗膝,一邊吃飯一邊寫代碼并不會(huì)提高你的代碼效率。有技巧的休息植旧,運(yùn)動(dòng)來提高和保持自己的精力才是辱揭。- 清醒時(shí)的工作次序:
我們可以在頭腦比較清醒的時(shí)候做一些測試,或者說難的模塊的構(gòu)建病附。因?yàn)楫?dāng)我們寫了一天代碼的時(shí)候问窃,容易陷入固有邏輯,而忽略一些邊界等問題完沪,所以在頭腦清醒的時(shí)候測試是比較好的選擇域庇。一般是睡了一覺之后的清晨。- 第一印象未必準(zhǔn)確:
產(chǎn)品給人的第一印象未必是好的覆积,但是不能因?yàn)檫@個(gè)第一印象就直接進(jìn)入自我否定听皿。
不好的原因一般有兩個(gè):1.不熟悉 2.關(guān)注了次要問題。
你要堅(jiān)持自己的想法宽档,然后和客戶溝通一些設(shè)計(jì)原理和用法尉姨,并讓其適應(yīng)幾天。如果有問題吗冤,那只需對軟件進(jìn)行修改又厉,但是最初的負(fù)面印象一般都會(huì)消失。
3.生產(chǎn)力
- 警惕沒有時(shí)間線的消閑項(xiàng)目:
所謂消閑項(xiàng)目椎瘟,就是你有個(gè)想法覆致,并用代碼實(shí)現(xiàn),但是你并沒有設(shè)定時(shí)間線肺蔚,有時(shí)間就做煌妈,沒時(shí)間就不做,這種項(xiàng)目很容易就變成爛尾。時(shí)間就是一切璧诵,你對手上項(xiàng)目的了解度也會(huì)隨著擱置的時(shí)間長度而變生疏汰蜘。解決方法:1.設(shè)定可持續(xù)的日工作量(每日間隔不能超過一天)2.完成時(shí)間也需要預(yù)設(shè)一個(gè)時(shí)間用來進(jìn)行測試 3.我們的時(shí)間是“夠用”。在設(shè)定的時(shí)間內(nèi)腮猖,我們產(chǎn)出一個(gè)基本夠用無需完美的軟件
4.在完成了夠用的軟件后鉴扫,我們對后期的功能增添和問題修改再設(shè)定時(shí)間線赞枕,然后如此循環(huán)澈缺。
第一步的產(chǎn)出夠用軟件時(shí)間設(shè)定很重要- 設(shè)定原則:
我們要設(shè)定各種限制因素,時(shí)間屿衅,資源等蜕琴,如果沒有限定厚柳,那么項(xiàng)目結(jié)果并不會(huì)好。
設(shè)定時(shí)間的時(shí)候项滑,我們不需要對特別小的細(xì)節(jié)設(shè)定精確時(shí)間,只要模塊或者整體交付時(shí)間即可滿足要求涯贞。太細(xì)了會(huì)影響開發(fā)的發(fā)揮枪狂。- 二是個(gè)神奇的數(shù)字:
每天改進(jìn)產(chǎn)品的兩個(gè)方面,二是個(gè)神奇的數(shù)字宋渔,一太少太輕州疾,三太多太重,二可以被我們很容易的接受和做到皇拣。- 設(shè)定免打擾時(shí)間:
整塊的不被切碎的時(shí)間可以讓你更有效率的思考和工作严蓖,所以設(shè)置免打擾時(shí)間段也是提高效率的一種方法。比如氧急,每天上午颗胡,下午,晚上吩坝,分別劃分一個(gè)維持2小時(shí)或者一小時(shí)的免打擾時(shí)間段毒姨。這段時(shí)間用來學(xué)習(xí)或者工作,不要被郵件钉寝,信息手素,電話等打斷。- 代辦列表清單:
什么都用腦袋記瘩蚪,會(huì)讓我們的腦袋沉重泉懦,我們把過去,現(xiàn)在疹瘦,未來要做的事列入清單崩哩,每天查看清單并進(jìn)行調(diào)整即可。這會(huì)讓你間歇性遺忘要作什么得到緩解。- 工作環(huán)境很重要:
工作環(huán)境直接影響了你的工作效率邓嘹,所以酣栈,為工作環(huán)境投資是很值得的,這就像用稱手的工具做事會(huì)更有效率是一個(gè)道理汹押。- 避免我們:
我們用詞很容易讓人忽略責(zé)任人矿筝,當(dāng)我們溝通的時(shí)候,用明確的某人棚贾,或者某某團(tuán)隊(duì)來比較有針對性窖维。就像在公眾場合遇到危險(xiǎn),尋求幫助的時(shí)候妙痹,指定某個(gè)特征的人來幫你铸史,會(huì)比說大家?guī)蛶兔淼暮糜谩?em>“我們”會(huì)把當(dāng)事人變成旁觀者,不要小看語言的力量怯伊,- 自治小團(tuán)隊(duì):
熟悉其中人的工作方式且協(xié)調(diào)好的團(tuán)隊(duì)會(huì)讓工作效率更高琳轿,好的團(tuán)隊(duì)會(huì)有好的效率,相應(yīng)的耿芹,差的團(tuán)隊(duì)也是崭篡。
4.控制好復(fù)雜性
- 變數(shù):
變數(shù)讓復(fù)雜性不可避免存在于我們的生活中。但是記住吧秕,簡單的才是最好的琉闪,人對簡單的事物有著天生的親切感。- 簡單并不簡單:
雖然我們總是希望事情可以簡單寇甸,但是塘偎,簡單呈現(xiàn)的背后并不簡單,我們要勇于刪除不必要的復(fù)雜性拿霉。但是復(fù)雜性可能是我們來判斷一個(gè)事情高端與否的關(guān)鍵吟秩,我們往往不會(huì)認(rèn)為一個(gè)簡單的想法很有創(chuàng)意。我們要做的是復(fù)雜事情簡單化绽淘,用看似簡單卻又是經(jīng)過一系列判斷和刪選之后的精妙涵防。
所有美麗的事物都是簡單的,就算看起來復(fù)雜沪铭,也是簡單的結(jié)構(gòu)組合的壮池。一般我們不會(huì)認(rèn)為一團(tuán)雜亂無章又千頭萬緒的線團(tuán)是美麗的。
不要害怕簡單杀怠,我們會(huì)畏懼簡單而把事情想的復(fù)雜椰憋,可以邏輯復(fù)雜,但是要簡單結(jié)構(gòu)赔退,簡單呈現(xiàn)橙依。記住证舟,90%的人用的都是那10%的簡單功能,要勇于砍掉不必要的資源浪費(fèi)功能窗骑。- 難編意味著難用:
當(dāng)一個(gè)需求來的時(shí)候女责,不要急于設(shè)計(jì),首先要思考這個(gè)需求是否有非代碼就能解決的簡單途徑创译,因?yàn)橛行┬枨笃鋵?shí)不需要代碼抵知。而是需要其他的。比如電梯內(nèi)的時(shí)間软族,與其如何加快電梯到達(dá)的時(shí)間刷喜,不如想想如何使人覺得在電梯里的時(shí)間很快(如安裝鏡子,照鏡子會(huì)讓人覺得時(shí)間很快就過去了)互订。
而如果用代碼來實(shí)現(xiàn)控制電梯的功能吱肌,這會(huì)是個(gè)復(fù)雜痘拆,而且狀況很多仰禽,且難處理,難使用的功能纺蛆。- 重構(gòu)需謹(jǐn)慎:
當(dāng)我們項(xiàng)目有個(gè)可以執(zhí)行的初稿的時(shí)候吐葵,我們可能會(huì)基于個(gè)人的判斷和對項(xiàng)目后期的把握引入設(shè)計(jì)模式了來對代碼進(jìn)行重構(gòu),以方便后期可能擴(kuò)張的需求和更改的條件桥氏。但是温峭,這里需要注意的是,需求可能并不一定會(huì)像你想象的方向改變字支,你需要謹(jǐn)慎對待你可能是狹隘的設(shè)計(jì)凤藏。這里就要重申,變化堕伪,是一直存在的揖庄。
有所預(yù)見,但謹(jǐn)慎預(yù)見欠雌。無論大的模式還是小的模式改動(dòng)蹄梢,進(jìn)行重構(gòu)的時(shí)候,都要知道你會(huì)得到什么富俄,失去什么禁炒。
5.教學(xué)不易
- 好的程序員未必是好的老師:
當(dāng)我們成為某個(gè)領(lǐng)域的專家時(shí),我們會(huì)忘了霍比,當(dāng)我們對這個(gè)領(lǐng)域一無所知的時(shí)候需要如何快速了解這個(gè)領(lǐng)域的幕袱。- 想想初中老師:
小學(xué)或者初中老師給我們講課的時(shí)候,會(huì)用淺顯易懂的例子來給我們呈現(xiàn)悠瞬。
對于有些深?yuàn)W的問題们豌,也可能會(huì)給一個(gè)不是那么對,但是可以讓我們有進(jìn)一步了解的認(rèn)值。我們在有認(rèn)值的基礎(chǔ)上繼續(xù)學(xué)習(xí)玛痊,就可以修正我們的認(rèn)知了汰瘫。(我印象特別深刻的是,以前有個(gè)老師擂煞,他說混弥,然后補(bǔ)了一句,雖然這不完全對对省,但是你們先理解這個(gè)蝗拿,以后你們學(xué)到就會(huì)知道的)- 為什么:
試圖讓學(xué)習(xí)者主動(dòng)去了解學(xué)習(xí)模型的原理。從“如何”蒿涎,“什么”到“為什么”哀托。我一直都覺得,在你對一個(gè)事物沒有認(rèn)知的時(shí)候劳秋,你無法提出問題仓手,只有有一定了解了,越了解玻淑,越能提出好問題嗽冒。
在學(xué)生提出為什么的時(shí)候(通常是他們覺得有更好的辦法),讓他們分析其更好方法的優(yōu)缺點(diǎn)补履。如此添坊,這樣提出的方案會(huì)越來越好。
6.客戶
- 令人頭大的客戶:
客戶通常給人的感覺是刁鉆的箫锤,因?yàn)槿绻欠菍I(yè)人士贬蛙,那么他對復(fù)雜度并不了解,只關(guān)心可以看到的產(chǎn)出谚攒。甚至?xí)嵋恍┛雌饋砗唵窝糇迹菍?shí)現(xiàn)起來并不簡單的功能。讓他們對項(xiàng)目的復(fù)雜度了解是很重要的五鲫,同時(shí)也需要進(jìn)行溝通來弄清真實(shí)想法溺职。畢竟,通常人說話的內(nèi)容位喂,未必是真實(shí)想要的內(nèi)容(這個(gè)就是語言和感覺的鴻溝了)浪耘。- 軟件的價(jià)值:
在和客戶打交道過程中,價(jià)值不僅僅就是你提供的軟件塑崖,你在交流過程中七冲,態(tài)度,聲音规婆,是否關(guān)心對方需求澜躺,為對方考慮蝉稳,等等,這都是你的價(jià)值掘鄙。所以耘戚,這不僅僅是個(gè)技術(shù)活,同時(shí)也是雙方了解的過程操漠。面談收津,電話,都會(huì)比郵件浊伙,信息溝通來的管用撞秋。
7.代碼書
- 拿來主義:
有很多現(xiàn)成的已經(jīng)實(shí)現(xiàn)了的美妙模塊了來實(shí)現(xiàn)你需要功能的一部分,你僅需要拿過來用就行了嚣鄙。
只是需要注意的是吻贿,你依舊需要良好的基本功來對模塊底層的原理有所了解,并最好能修改哑子。
如果只是黑盒使用舅列,我們可能會(huì)錯(cuò)過很多美好的思想。- 體力勞動(dòng):
當(dāng)你發(fā)現(xiàn)你需要做很多重復(fù)的事情的時(shí)候赵抢,你需要警惕剧蹂,你是不是退化成了機(jī)器人声功,只有機(jī)器人才可以不辭辛苦的做重復(fù)的事情烦却,而這些事情就是我們通過編程來幫我們做的。
如果你有很多重復(fù)事項(xiàng)先巴,可以考慮自動(dòng)化:代碼生成其爵,批量處理,腳本控制等等伸蚯。來把重復(fù)事件提煉規(guī)則摩渺,讓程序幫你實(shí)現(xiàn)。
8.形象
- 面子問題也很重要:
就像現(xiàn)在流行的美食節(jié)目剂邮,平淡無奇的食材摇幻,在鏡頭的渲染下,變得美味可口挥萌,就簡單的新鮮绰姻,飽滿這些詞都可以讓我們味蕾大開。
同樣的引瀑,我們的程序無論內(nèi)部代碼寫的再精美狂芋,設(shè)計(jì)再絕倫,如果不能通過某些方式呈現(xiàn)憨栽,并讓人了解帜矾。人們是無法對不知名的黑盒產(chǎn)生欲望的翼虫,就算是好奇心,也是需要通過方法激發(fā)的屡萤。
要對自己所做的事感到自豪珍剑,在打磨技能的同時(shí),也要注意對外的溝通死陆。
總結(jié):綜上就是我對本書的總結(jié)次慢,拎出來一些我喜歡且認(rèn)同的觀點(diǎn)進(jìn)行闡釋,有些我是深有所感翔曲,就算不是客戶迫像,有時(shí)候公司內(nèi)部也會(huì)出現(xiàn)同樣的情況,畢竟瞳遍,只有寫代碼的人闻妓,才對內(nèi)部真正了解。而不了解的掠械,要的是看起來以為然由缆。我學(xué)不來面子功夫,但是想著猾蒂,技能積累到一定程度均唉,總會(huì)走通的。