2008年9月10日
題外話:我其實(shí)想說(shuō)的是一個(gè)被人所忽視的問(wèn)題。形式有沒(méi)有價(jià)值?我承認(rèn),形式化是不好的。但是這個(gè)世界有個(gè)東西,叫做儀式。
舉個(gè)例子,在國(guó)外,有種組織叫兄弟會(huì),(電影里很常見(jiàn))他們的有些會(huì)設(shè)置很多可笑的考察儀式來(lái)考察你夠不夠入會(huì)的資格。有些會(huì)有危險(xiǎn),有些只是純粹搞出些恐怖氣氛嚇你看你會(huì)不會(huì)被嚇退。這種東西有價(jià)值嗎?心理學(xué)告訴我們,設(shè)置準(zhǔn)入門檻可以提高組織成員的忠誠(chéng)度。如果你覺(jué)得這玩藝太可笑了,給取消掉。你會(huì)莫名其妙的發(fā)現(xiàn)后來(lái)加入的人對(duì)組織的認(rèn)可度忠誠(chéng)度都不高。這就是儀式的價(jià)值。
今天說(shuō)的是Retro,全名retrospective,中文名“回顧會(huì)議”,網(wǎng)上有很多相關(guān)文章,就不再這里贅述了。這里提到的Retro是最常見(jiàn)的一種模式,分Well, Less Well, Puzzle三個(gè)維度的模式。該模式的Retro的特點(diǎn)是會(huì)讓我們更多的關(guān)注less well,關(guān)注我們做的不好的那些。這點(diǎn)有好有壞。本文只揭示它好的一面。做為補(bǔ)充,還有一種海星圖的模式,感興趣的人可以自己查詢。
我個(gè)人認(rèn)為retro是敏捷開(kāi)發(fā)中很重要的一道防線。是團(tuán)隊(duì)健康度的晴雨表,是溝通的橋梁,是共識(shí)建立的契機(jī),是改進(jìn)的開(kāi)始。
對(duì)于團(tuán)隊(duì)本身就存在大量問(wèn)題,而這些問(wèn)題可能都在敏捷方法的問(wèn)題域里時(shí)。Retro是一個(gè)很好的發(fā)力點(diǎn)。他的效果可能沒(méi)有持續(xù)集成那么立竿見(jiàn)影,往往是潤(rùn)物細(xì)無(wú)聲。他可以幫我們把痛點(diǎn)暴露出來(lái),但是不一定是根本問(wèn)題。就像醫(yī)生看病也得先問(wèn)你哪不舒服。而Retro就能幫團(tuán)隊(duì)說(shuō)出來(lái)哪不舒服并達(dá)成共識(shí)。某種意義上講,它是個(gè)報(bào)警器。
如果已經(jīng)采用了大量敏捷實(shí)踐的團(tuán)隊(duì)呢?比如我們團(tuán)隊(duì),在我們團(tuán)隊(duì)的開(kāi)發(fā)中,我們一直推進(jìn)著各種改進(jìn),期望讓我們的工作更有效率,交付更多價(jià)值,同時(shí)也讓我們的生活更美好一些,這是一件雙贏的事情。 可是我們也要看到改進(jìn)是需要成本的,而且也是有風(fēng)險(xiǎn)的,所以有的時(shí)候難以推動(dòng)。對(duì)于客戶( 有時(shí)是PM等內(nèi)部角色)來(lái)說(shuō),他討厭一切成本和風(fēng)險(xiǎn),而更感興趣的是新功能,當(dāng)碰到短視的負(fù)責(zé)人,或者交付壓力占了上風(fēng)的時(shí)候,難以推動(dòng)這點(diǎn)感覺(jué)尤為明顯。不過(guò)商業(yè)社會(huì)里競(jìng)爭(zhēng)如此激烈,這也無(wú)可厚非。雖然我們也知道出來(lái)混,欠下的遲早是要還的。
不過(guò)這不是我們今天討論的角度。今天我們站在推動(dòng)改進(jìn)的角度來(lái)看這個(gè)問(wèn)題,開(kāi)發(fā)時(shí),在開(kāi)發(fā)第一線的我們往往是第一個(gè)了發(fā)現(xiàn)開(kāi)發(fā)中的問(wèn)題,然后我們會(huì)發(fā)現(xiàn)改進(jìn)最困難的是溝通,明明這是個(gè)問(wèn)題,但是讓各方都接受這個(gè)問(wèn)題并改進(jìn)它需要證據(jù),需要溝通,需要資源,最重要的需要時(shí)間。我曾眼睜睜得看著客戶只是加幾臺(tái)機(jī)器提升持續(xù)集成的構(gòu)建效率這件事竟然推動(dòng)了近一年才成功,那么在這個(gè)問(wèn)題被發(fā)現(xiàn)但不能改進(jìn)的時(shí)間里,團(tuán)隊(duì)會(huì)怎樣呢?首先士氣會(huì)被打擊,接著如果問(wèn)題長(zhǎng)期不能解決并影響了工作效率,一種不愿追求卓越的氣氛會(huì)漸漸感染團(tuán)隊(duì)成員,進(jìn)而使得大家會(huì)在其他實(shí)踐上表現(xiàn)漸漸變差。( 相對(duì)于每個(gè)人自己,而不是團(tuán)隊(duì)其他成員)改進(jìn)的意愿也會(huì)不同程度的變低。這符合
破窗效應(yīng)。
這時(shí)候,很容易出現(xiàn)的一個(gè)傾向會(huì)是干脆我們不要retro了,反正也改進(jìn)不了,完全是浪費(fèi)時(shí)間。 這就成了自毀長(zhǎng)城。不能干因?yàn)閳?bào)警器老響就把報(bào)警器拆了的事。出來(lái)混欠下的始終要還,學(xué)鴕鳥(niǎo)是沒(méi)用的。當(dāng)retro不能給我們提供更多實(shí)際改進(jìn)價(jià)值的時(shí)候,它還能提供最后一個(gè)價(jià)值:懺悔的儀式。
曾經(jīng)一直不明白西方人為什么定期去教堂懺悔,周周去,周周都有值得懺悔的,甚至犯過(guò)的錯(cuò)還有很多類似的。看起來(lái)沒(méi)什么用。但這就像房間,天天打掃天天都有的打掃的,心靈的房間也是一樣。一位有信仰的朋友告訴我,定期經(jīng)常向神懺悔會(huì)更愿意改進(jìn)自己,如果一段時(shí)間不去對(duì)自己的要求就會(huì)放松。人的心理就是這么奇怪。這揭示了一個(gè)道理,人是會(huì)逐漸放松對(duì)自己的要求的,所以需要一種手段讓我們保持對(duì)自己的高標(biāo)準(zhǔn)。
我個(gè)人認(rèn)為retro就是一個(gè)很好的手段。尤其我前面說(shuō)過(guò)了,這里討論的這種Retro的模式的特點(diǎn)就是讓我們更關(guān)注于Less Well。定期,經(jīng)常,回顧,反思。當(dāng)我們無(wú)法變得更好的時(shí)候可以幫助我們反觀團(tuán)隊(duì)自身,不要變得更差。讓破窗效應(yīng)難以發(fā)生。
(本來(lái)只是想寫一個(gè)敏捷團(tuán)隊(duì)碰到讓人沮喪的情況時(shí)Retro提供的價(jià)值,結(jié)果越寫越多,有點(diǎn)跑題了⋯⋯)
在我們的開(kāi)發(fā)中,有些實(shí)踐的價(jià)值是容易感受到的,比如重構(gòu),比如TDD,比如持續(xù)集成。
有些實(shí)踐的價(jià)值則不容易感受到,比如Retro(回顧會(huì)議),比如IPM(迭代計(jì)劃會(huì)議)。
以IPM為例,在我們的IPM上我們一般會(huì)做兩件事Kick off cards和Estimation。也就是選擇下個(gè)迭代要做的卡和評(píng)估每張卡的點(diǎn)數(shù)。這兩件事情似乎第一件事沒(méi)必要所有人都參與,第二件事感覺(jué)一定程度上是瞎蒙,尤其是一群人來(lái)蒙,顯得尤為的不靠鋪。而且似乎我們IPM就是為了選出下個(gè)迭代能做完的卡,就是為了知識(shí)傳遞,就是為了給客戶可視的數(shù)據(jù)和計(jì)劃,讓他們心理好過(guò)。
假設(shè)說(shuō)我們不必所有人都參與就能保證選出適合下個(gè)迭代做的卡,我們通過(guò)每日Code Review等實(shí)踐使得每個(gè)人都不會(huì)缺少相關(guān)卡的知識(shí),而客戶也不特別在意我們的進(jìn)度(或者說(shuō)我們的進(jìn)度他們總是滿意),是不是我們就不需要IPM了?是不是我們就不需要集體Estimation不需要集體Kick off了?
實(shí)際上,我們的項(xiàng)目就符合前面的假設(shè),在項(xiàng)目的最后,我們真的取消了IPM。這時(shí),才感覺(jué)出來(lái)IPM的價(jià)值。
整個(gè)團(tuán)隊(duì)的效率慢慢開(kāi)始下降。對(duì)于目標(biāo)的理解開(kāi)始不一致。雖然團(tuán)隊(duì)整體的表現(xiàn)并不差,雖然沒(méi)有出現(xiàn)任何實(shí)質(zhì)的問(wèn)題,但容忍度低的人開(kāi)始不舒服。跟團(tuán)隊(duì)自己以前的狀態(tài)比,確實(shí)有點(diǎn)退化的感覺(jué)。怎么會(huì)這樣呢?
每當(dāng)說(shuō)到這種狀態(tài)出現(xiàn)在敏捷團(tuán)隊(duì)中的時(shí)候,我最常聽(tīng)到就是人的問(wèn)題,態(tài)度問(wèn)題等等說(shuō)法。其實(shí)我一直覺(jué)得,如果追究態(tài)度,空談人的問(wèn)題有用的話,我朝應(yīng)該是世界第一而不是那個(gè)人人自我的美帝。人一直是有問(wèn)題的,不然要管理學(xué)干什么?敏捷里提倡自組織團(tuán)隊(duì),自我管理。但決不是松散組織,不管理。自組織它也需要組織,自我管理它也是管理。像IPM這樣的活動(dòng),就是管理的一部分。
IPM上做的兩件事,看起來(lái)完全不靠鋪,實(shí)際上卻非常有價(jià)值。整個(gè)IPM活動(dòng)就是一個(gè)承諾的儀式。像古代行軍打仗前的誓師大會(huì)一樣,可以調(diào)動(dòng)起團(tuán)隊(duì)在下一個(gè)迭代中的士氣。通過(guò)集體參與評(píng)估和制定計(jì)劃,通過(guò)各個(gè)角色的共同作用,使得每個(gè)人都參與到整個(gè)計(jì)劃制定中來(lái)。自然而然的對(duì)下一個(gè)迭代許下承諾。而承諾一旦許下,就會(huì)像一個(gè)耳語(yǔ)的惡魔,暗中催促著人們的行為與其保持一致。
生活在我朝的人們,似乎對(duì)承諾這個(gè)東西的效果是完全不相信的。這也難怪,不過(guò)出于眾所周知的原因,咱不談我們?yōu)樯恫恍湃纬兄Z。從心理學(xué)的角度,承諾是有實(shí)際意義的。《影響力》“第三章 承諾和一致”中就講了這個(gè)極為簡(jiǎn)單卻極為有用的心理學(xué)原理:人人都有一種言行一致(同時(shí)也顯得言行一致)的愿望。
其中有很多很有趣的實(shí)驗(yàn),揭示了承諾的力量。 感興趣的人推薦讀一讀。里面有個(gè)小例子提到,兩個(gè)星期前一個(gè)愿意在自家的草地上插一個(gè)小牌子為交通安全做點(diǎn)貢獻(xiàn)的小承諾,使得該社區(qū)76%的人都在兩個(gè)星期后接受了在自家草地上插一個(gè)擋風(fēng)景的大牌子的請(qǐng)求。而對(duì)照社區(qū)只有17%。巨大的反差可以讓我們看到承諾的力量。
當(dāng)然我們對(duì)承諾的不信任也是有道理的,當(dāng)承諾真的難以完成的時(shí)候,幾乎所有人都會(huì)違背承諾。在傳統(tǒng)的瀑布式開(kāi)發(fā)過(guò)程中,使得計(jì)劃這種承諾難度大大上升,而可信度也就大大下降。這也是為什么我們需要迭代的原因。
一個(gè)成功的企業(yè)需要積累。當(dāng)你坐在電腦旁,看著一個(gè)運(yùn)行達(dá)十年之久的軟件的源碼時(shí),相信我,你一定會(huì)更深刻的感受到積累這個(gè)詞,確確實(shí)實(shí)是個(gè)中性詞。
軟件多種多樣的功能支撐著一個(gè)企業(yè)帝國(guó)的運(yùn)轉(zhuǎn),它源源不斷的在為這個(gè)帝國(guó)創(chuàng)造著財(cái)富,毫無(wú)疑問(wèn)它隨著時(shí)間積累了很多掙錢的能力。可是如
同歷史上其
他的帝國(guó)一樣,在繁華的背后,很多黑暗的東西同樣隨著時(shí)間積累了下來(lái),臨時(shí)性的策略被固化在核心流程中,為擴(kuò)展留下的空白成了每次擴(kuò)展必須繞行的彎路,精妙的手法隨著時(shí)間的變遷顯得復(fù)雜過(guò)時(shí),分工協(xié)作使得同樣事情得處理方式大不相同,預(yù)先的設(shè)計(jì)又使得本不相同的東西硬造成了相同的樣子,管理的疏忽使得簡(jiǎn)單的功能用了復(fù)雜的模式實(shí)現(xiàn)。
坐在代碼面前,仿佛在讀一本被囚禁了靈魂的魔書,你能在注釋中讀出興奮與痛苦,你能在代碼中看到驕傲與彷徨。每當(dāng)完成一次重構(gòu)就像解救了一個(gè)被困的靈魂。那代碼又仿佛一個(gè)人的臉,你可以看到各個(gè)技術(shù)歷史階段在它臉上留下的歲月痕跡。暢游在代碼中,有些時(shí)候我們好像穿梭在時(shí)光的河流中,你能看到一個(gè)愚昧的風(fēng)格是如何從一個(gè)有價(jià)值的需求中演變而來(lái)。如今再看,仿佛一群羊在不斷的跳過(guò)一個(gè)早已不存在的柵欄一樣詭異。而有些時(shí)候,我們只能看到一些遺跡,原野中矗立的大石柱根本無(wú)法自己告訴我們他們到底是為何矗立在那里的。以及移動(dòng)他們會(huì)不會(huì)帶來(lái)什么災(zāi)難。
能力很強(qiáng),問(wèn)題很多。是任何一個(gè)已經(jīng)有歷史的公司都會(huì)有的。軟件不過(guò)是公司的一個(gè)表現(xiàn)方面。就像一個(gè)擁有完整公司基因的細(xì)胞。準(zhǔn)確的說(shuō),任何時(shí)候,任何公司都不可能沒(méi)有問(wèn)題的。但是何時(shí)解決?這個(gè)問(wèn)題就跟什么時(shí)候重構(gòu)一樣,答案也是一樣,隨時(shí)。解決問(wèn)題的時(shí)機(jī)會(huì)影響解決問(wèn)題的難度。越晚解決,就越難解決。說(shuō)起來(lái)容易,做起來(lái)談何容易。是的,解決問(wèn)題總是需要鼓勵(lì)的,但是談何容易四個(gè)字卻很容易瓦解我們前進(jìn)的意志。低下頭埋到土里,是可以讓一切都清靜了。但不管我們做不做,甚至于即便我們?cè)谧觯瑔?wèn)題也永遠(yuǎn)不會(huì)停止它產(chǎn)生并進(jìn)化的腳步。面對(duì)問(wèn)題,只有應(yīng)戰(zhàn),沒(méi)有第二條路可以走。經(jīng)濟(jì)危機(jī)教會(huì)了很多企業(yè)只顧賺錢而忽略企業(yè)的問(wèn)題會(huì)有什么后果。我相信有很多人會(huì)選擇遺忘并在遙遠(yuǎn)的未來(lái)繼續(xù)重犯同樣的錯(cuò)誤,但是我也相信,也會(huì)有很多人會(huì)選擇記住并把教訓(xùn)提煉成一種知識(shí)或制度,讓后世人學(xué)會(huì)警惕。
進(jìn)來(lái)聽(tīng)聞最大的CMM堡壘DNV要搞敏捷。大票的獵頭紛紛出動(dòng),四處搜羅敏捷咨詢師。使敏捷這個(gè)本來(lái)只有小眾在實(shí)踐的一類開(kāi)發(fā)方法陡然變得要大眾化了。本來(lái)以為是件好事。卻在昨天看到z叔大喊,敏捷要倒。當(dāng)時(shí)只是覺(jué)得有點(diǎn)道理。晚些時(shí)候卻切身體會(huì)到了。
收到某非知名公司舉辦的scrum培訓(xùn)的郵件。頓時(shí)心里一緊。在這個(gè)時(shí)間,用這個(gè)操作手法有點(diǎn)可怕,各培訓(xùn)公司都找到了敏捷里面最好切入的一個(gè)點(diǎn)---Scrum。
Scrum是個(gè)筐,什么都能往里裝啊。為什么這么說(shuō)呢,他并不能算是一個(gè)完整的開(kāi)發(fā)方法。只是一個(gè)框架。不領(lǐng)會(huì)敏捷的精神,沒(méi)有其他具體的開(kāi)發(fā)方法,他只能是一個(gè)大面的東西,如果用上這種東西就號(hào)稱敏捷了。那真是可怕。而且,scrum證書也在這波浪潮中量產(chǎn)。一個(gè)人,花幾千塊錢,上兩天的課,拿著一張紙就號(hào)稱敏捷了。沒(méi)辦法,誰(shuí)讓咱們崇拜證書這種看得見(jiàn)摸得著的東西呢。但這樣大量量產(chǎn)出來(lái)的敏捷項(xiàng)目經(jīng)理。一實(shí)踐肯定不對(duì)勁,就會(huì)用自己的理解去曲解敏捷。然后大家認(rèn)為敏捷就是早晨開(kāi)個(gè)會(huì),月末開(kāi)個(gè)會(huì)。最后的結(jié)果就是你在罵敏捷,我在夸敏捷,可是你嘴里的敏捷和我嘴里的敏捷根本就不是一個(gè)東西。
記得曾經(jīng)見(jiàn)過(guò)一個(gè)CMMI的咨詢師,張口閉口卡耐基梅隆,一付兄弟當(dāng)年在英國(guó)的時(shí)候的樣子。生搬硬套的CMMI流程。最后搞的那套流程根本不可操作,大家都為流程湊數(shù)據(jù)。當(dāng)下如果大家都從CMMI倒向Scrum,這種人咋生存呢?會(huì)掛掉?錯(cuò),搖身一變,舉起敏捷大旗開(kāi)始搖旗吶喊。沒(méi)這兩下子怎么能在忽悠界縱橫這么多年呢。像這樣的人都來(lái)搞敏捷了。敏捷不臭,那除非老天開(kāi)眼了。那原來(lái)搞敏捷的人呢?本來(lái)就是小眾,在這大浪里面,估計(jì)很快就看不見(jiàn)了。。。。從今開(kāi)始,我還是少說(shuō)兩句敏捷了。。。
我習(xí)慣于在午飯后午睡一下。上班時(shí)午睡,只能是趴著睡。最近才注意到,寫字樓的空調(diào)大多是從上往下吹得,所以這個(gè)時(shí)候整個(gè)后背是暴露給空調(diào)的。從中醫(yī)上講,背上主要是兩條經(jīng)絡(luò)。督脈和膀胱經(jīng)。其中膀胱經(jīng)主人體一身之陽(yáng)氣。號(hào)稱人體最大的排毒通道。膀胱經(jīng)不通的人可能會(huì)怕風(fēng)怕冷,容易得濕疹等病,常年排毒不暢,可能會(huì)導(dǎo)致更多疾病。
體的經(jīng)絡(luò)不管哪一條,都怕六邪,風(fēng)濕熱火燥寒。對(duì)于處處空調(diào)的現(xiàn)代人,火燥熱遠(yuǎn)不如風(fēng)濕寒需要擔(dān)心。比如像這樣天天把后背暴露給空調(diào),而且是在睡覺(jué)這種放松狀態(tài)下。就等于天天讓空調(diào)的風(fēng)寒入侵膀胱經(jīng)。加上很多辦公室都有加濕器。那濕也是跑不了。當(dāng)然,人體自身有防御的能力,肯定不會(huì)馬上出問(wèn)題的。但是天天這么搞,難免不出問(wèn)題。上個(gè)禮拜加了幾天班覺(jué)得左肋靠近腋窩的地方疼。周末好一點(diǎn)了,今天下班前又痛了。引起我一點(diǎn)警惕。所謂猝死,大概就是這么一點(diǎn)點(diǎn)演變來(lái)的。干咱們這行撐不死可也別累死。
溫?zé)峥梢则?qū)寒,我想把背緊靠一會(huì)靠背取暖。這時(shí)發(fā)覺(jué)我的椅子后背只到肩胛骨中部。好像很多公司的椅子都是這樣的,不能很好的護(hù)住背部(除了老板椅。老板椅上面似乎還要往前多出一塊來(lái),連后脖頸子都能護(hù)住。倒是很養(yǎng)生。)
所以,辦公室可以放一件外衣,睡覺(jué)的時(shí)候披上來(lái)防風(fēng)防寒。另外,可以偶爾的去做一些保健。比如拔罐,刮痧等。基本上背部拔罐就是在疏通膀胱經(jīng)。背部刮痧也是。不過(guò)要注意的是:
一,拔罐的話,頻率不宜過(guò)高,拔罐是排毒比較猛的一種方式,體內(nèi)毒多的時(shí)候倒是在排毒,毒少了以后,排的就不只是毒了。有一種說(shuō)法,拔得太頻繁反而會(huì)有損陽(yáng)氣。我比較認(rèn)可這種說(shuō)法。一個(gè)月一次或者隔一個(gè)月一次為宜。拔罐后六個(gè)小時(shí)不能洗澡。
二,刮痧倒是可以頻繁點(diǎn),但最好找干凈的地方或讓自己家人做。肉少的地方盡量少刮。最近發(fā)現(xiàn)一種叫魔蝎刷的東西,個(gè)人感覺(jué)比刮痧板好用,可以替代刮痧板刷背。刮痧后半小時(shí)不能洗澡。從時(shí)間上也能看出哪個(gè)比較猛。
最后,多多運(yùn)動(dòng)是最好的保健方法。自我鍛煉總是要?jiǎng)龠^(guò)別人伺候。愿程序員們都能度過(guò)一個(gè)健康的夏天。
沒(méi)“貢
獻(xiàn)”的田鼠
在田野里,住著三只田鼠。
秋天到了,三只
田鼠開(kāi)始準(zhǔn)備過(guò)冬的東西。
第一只田鼠每天都到田野上運(yùn)糧食,準(zhǔn)備冬天食用。
第二只田鼠每天都到田野上運(yùn)野草,準(zhǔn)備冬天取
暖。
而第三只田鼠每天都跑出去游玩,對(duì)糧食和野草一點(diǎn)兒也不關(guān)心,好像冬天永遠(yuǎn)也不會(huì)到來(lái)一樣。
前兩只田鼠勸它為即將到
來(lái)的冬天多準(zhǔn)備一些必要的東西,但它只是笑笑,仍然每天都出去游玩,經(jīng)常玩到天黑才回來(lái)。
寒冷的冬天很快到來(lái)了,三只田鼠住在洞里,餓了
就吃第一只田鼠運(yùn)回來(lái)的糧食,冷了就用第二只田鼠運(yùn)回來(lái)的野草取暖,而毫無(wú)貢獻(xiàn)的第三只田鼠自然也得到了前兩只田鼠的嘲笑。
然而日子一
天天地過(guò)去,每天都無(wú)所事事地待在洞里,做著同樣的游戲,吃著同樣的糧食,三只田鼠漸漸厭煩起來(lái),感覺(jué)到了無(wú)聊的空虛。
這時(shí),第三只田鼠
開(kāi)始為前兩只田鼠講故事,講它在秋天出去游玩的時(shí)候見(jiàn)到的許多新鮮有趣的故事,前兩只田鼠聽(tīng)得津津有味,生活開(kāi)始重新變得充實(shí)而有意義。
作
為感謝和報(bào)答,前兩只田鼠經(jīng)常把自己的糧食和野草挑出一些送給第三只田鼠。
原來(lái),有些貢獻(xiàn)并不是從一開(kāi)始就能看得出來(lái)的,然而我們卻經(jīng)常
因?yàn)闀簳r(shí)看不到它的“用處”就舍棄了它。
這篇文章是受啟發(fā)于要求我寫一些設(shè)計(jì)和spec的文檔的面試要求。趁這個(gè)機(jī)會(huì)整理整理自己的思路。
什么是軟件開(kāi)發(fā)呢,最常見(jiàn)的一種說(shuō)法是,軟件開(kāi)發(fā)是一門藝術(shù)。我覺(jué)得更現(xiàn)實(shí)的講,軟件開(kāi)發(fā)應(yīng)該是一種生產(chǎn)。跟其他所有的生產(chǎn)一樣。要考慮成本和收益。收益這塊,跟其他很多外部因素相關(guān),對(duì)開(kāi)發(fā)者或者說(shuō)開(kāi)發(fā)者的管理者來(lái)說(shuō)無(wú)法控制,開(kāi)發(fā)者從職業(yè)的角度出發(fā)更多需要考慮的是成本。這也是我們職業(yè)的目標(biāo)。
軟件這種產(chǎn)品的生產(chǎn),材料本身的損耗也就是電腦,電費(fèi),基本屬于沉沒(méi)成本。不會(huì)因?yàn)樵蹅內(nèi)魏闻Χ淖儭#ㄒ膊皇峭耆荒芨淖儯荒苁亲兌唷!!!#┠敲矗畲蟮某杀緭p耗在時(shí)間上。一方面,程序員都屬于高薪人士(相對(duì),相對(duì))。每一天的損耗都意味著大量的錢打水漂了。另一方面,隨著時(shí)間的推移,商業(yè)價(jià)值在降低,風(fēng)險(xiǎn)卻在增加。
對(duì)軟件開(kāi)發(fā)來(lái)說(shuō),需求實(shí)現(xiàn)速度,應(yīng)該說(shuō)是很重要的,但是實(shí)現(xiàn)速度本身并不是考量的標(biāo)準(zhǔn)單位。作為最大成本考量標(biāo)準(zhǔn)的時(shí)間,從對(duì)她的消耗來(lái)看:除去簡(jiǎn)單的功能點(diǎn)實(shí)現(xiàn)需要,需求的變化浪費(fèi)的時(shí)間則更客觀。而無(wú)數(shù)實(shí)例證明,我們?cè)谛枨蠓治鲭A段投入時(shí)間誠(chéng)然可以減少需求的變化,但是并不能達(dá)到我們滿意的高度,所以對(duì)需求變化的反應(yīng)也是我們的重要標(biāo)準(zhǔn)。
敏捷這個(gè)詞,我覺(jué)得非常好。做為一門方法學(xué),從名字上就說(shuō)明了軟件開(kāi)發(fā)需要關(guān)注的兩個(gè)重要的點(diǎn):需求實(shí)現(xiàn)速度和對(duì)于需求的反應(yīng)速度。當(dāng)然,說(shuō)到這里有點(diǎn)虛了。我想,回歸到不太實(shí)際的本質(zhì),能更好的指導(dǎo)我們的實(shí)踐。Rails框架為什么這么火熱,恰恰因?yàn)樗龅搅诉@兩點(diǎn)。我們想想,為什么要設(shè)計(jì)?我讀過(guò)讓人舒爽的代碼,也讀過(guò)看著讓人想吐的代碼。拋掉個(gè)人的感情因素,這兩種代碼有什么區(qū)別呢?大部分讓我想吐的代碼里出現(xiàn)的是一些重復(fù)的代碼,看起來(lái)稍有不同,卻不肯費(fèi)點(diǎn)心思除掉這些“壞味道”。重復(fù)代碼的問(wèn)題在哪里呢?最大的問(wèn)題就是隨著代碼量的增多,工作量的與日劇增。維護(hù)量也會(huì)增大。而且,復(fù)雜度絕對(duì)不是O(n)。其實(shí)我常常覺(jué)得,我們最早學(xué)程序的時(shí)候要學(xué)算法與數(shù)據(jù)結(jié)構(gòu)。其實(shí)這個(gè)課程很早就告訴了我們編程最重要的兩塊:算法,結(jié)構(gòu)。好的設(shè)計(jì)就是好的結(jié)構(gòu)。可擴(kuò)展,可維護(hù),最起碼,可以分工。
好的設(shè)計(jì)可以大量的減少代碼。減少代碼就意味著成本的降低。也就是文初說(shuō)的,我們職業(yè)的目標(biāo)達(dá)到了。但是現(xiàn)實(shí)往往不是那么美好,雖然我們有很多OO的設(shè)計(jì)模式,我們有很多最佳實(shí)踐。但是在現(xiàn)實(shí)中,我們往往需要妥協(xié)。一般是三個(gè)原因:性能、穩(wěn)定性、各種接口,在左右著我們。其實(shí),很多時(shí)候,這也是最考驗(yàn)一個(gè)程序員的功力的地方。如何在這三個(gè)沼澤上跳舞,才是軟件開(kāi)發(fā)真正可以被稱之為藝術(shù)的地方。而怎么做,則只能靠一行一行的代碼鍛煉,一篇一篇文章和文檔整理經(jīng)驗(yàn),沒(méi)法一句半句說(shuō)得清楚的了。
晨會(huì)是Scrum里的一個(gè)實(shí)踐。
最近才意識(shí)到,這種東西一點(diǎn)都不時(shí)髦。很多理發(fā)店,飯店,他們?cè)绯慷加羞@個(gè)。今天在大鴨梨看到他們的晨會(huì),頗有感覺(jué)。看著他們都站在那里,覺(jué)得跟站立式晨會(huì)差不多。不同的是他們的員工,年齡層比較低,處于還比較毛糙的年齡。也就是說(shuō),不僅需要教育怎么做事,還得教他們?cè)趺醋鋈恕K栽谶@個(gè)晨會(huì)上,經(jīng)理教育他們說(shuō),不要混日子,十年后,你們?nèi)绻麤](méi)做出什么來(lái),一生就這么過(guò)去了。跟他們說(shuō),要當(dāng)面說(shuō)壞話,背后說(shuō)好話。也就是進(jìn)行人性和行事風(fēng)格上的教育,也可以說(shuō)是一種文化上的教育。經(jīng)理教育完,幾個(gè)像老員工的來(lái)說(shuō)加單要寫名字,不要怕寫了名字會(huì)怎么著等等。雖然是端茶倒水送飯,但是需要注意的還真是不少。前臺(tái),服務(wù)員,后廚,這之間也是需要溝通規(guī)范,任何一個(gè)溝通不符合規(guī)范,就會(huì)出亂子。
比較起來(lái),敏捷的實(shí)踐只是要求個(gè)人說(shuō)自己做過(guò)什么,要做什么,有什么問(wèn)題。不過(guò)我發(fā)覺(jué),有些話,其實(shí)是應(yīng)該在晨會(huì)的時(shí)候應(yīng)該強(qiáng)化與灌輸,不見(jiàn)得是每天,但是隔三差五的就該講講。關(guān)于工作態(tài)度,配合。這是員工培訓(xùn)的最好時(shí)機(jī)。在這里用力,雖然不會(huì)有奇跡般的效果,但每隔一段時(shí)間肯定會(huì)有一點(diǎn)切實(shí)的進(jìn)步。企業(yè)與企業(yè)都是不同的,有自己的氛圍,那所謂的文化,就是企業(yè)的性格。員工與員工更是不同。但是企業(yè)喜歡的員工其實(shí)都很相似。不喜歡的員工卻各有各的不同。所以企業(yè)經(jīng)常培訓(xùn)員工。但我是不相信給員工搞一兩次課可以改變一個(gè)人的。有天在快餐店,聽(tīng)到一個(gè)老銷售教育一個(gè)新銷售說(shuō),鴨子聽(tīng)鷹講怎么飛。上完課,鷹飛回家了,鴨子還是走回家的。不能飛的鴨子又不缺什么,野鴨就能飛。所以,僅僅幾天的員工培訓(xùn)能改變什么呢?不能指望著幾天就能給公司制造出好用的員工來(lái)。公司對(duì)教育的重視不夠說(shuō)小了是不把自己的錢當(dāng)回事,說(shuō)大了其實(shí)是社會(huì)責(zé)任的缺失。
你們10年后還一事無(wú)成,這是給員工灌輸?shù)囊环N危機(jī)意識(shí)。要當(dāng)面說(shuō)壞話,背后說(shuō)好話,這是對(duì)員工進(jìn)行人性的教育。這像是領(lǐng)導(dǎo)說(shuō)的話,有人說(shuō),領(lǐng)導(dǎo)兩個(gè)字是領(lǐng)袖+導(dǎo)師。身為導(dǎo)師不引導(dǎo)人光明磊落,就不能怪人言可畏。有喜歡以流言御人的領(lǐng)導(dǎo)才有大量到處嚼舌頭的下屬。現(xiàn)代企業(yè)不是古代的官僚衙門。該專心搞的是經(jīng)營(yíng)而不是政治。
散會(huì)后,員工繼續(xù)去工作了。你說(shuō)這個(gè)晨會(huì)有什么作用嗎?不知道,就像一顆石頭扔進(jìn)了平靜的水里。一陣激蕩過(guò)后我們什么都看不到了。但是,我想,日積月累,石頭扔得多了。在你不注意的時(shí)候,水面會(huì)悄悄上升的。
敏捷作為方法學(xué),其實(shí)還是比較虛的。哪怕是其中比較實(shí)的最佳實(shí)踐,也是非常難以掌握運(yùn)用的。原因其實(shí)很簡(jiǎn)單。人要想通過(guò)敏捷偷懶是絕對(duì)不可能的。敏捷的實(shí)施,在最初肯定是非常累的。因?yàn)楦淖兛偸峭纯嗟摹;仡欂S田的歷史,他們?cè)趧?chuàng)造TPS的時(shí)候,工人們也是想把大野耐一的那些破爛東西都給砸咯。
不過(guò)很多時(shí)候,痛苦是幸福的開(kāi)始。一個(gè)人完成很多人合作完成的工作,咋看起來(lái)是非常勞累的。但是習(xí)慣了,也就那樣了。TPS里面基礎(chǔ)就是讓一個(gè)工人具備兩項(xiàng)以上的技能。程序員也是一樣。不能為自己的懶惰找理由。大家都是人,都想懶,但是今天懶了,總會(huì)有一天被逼著勤快。就好像沒(méi)有時(shí)間鍛煉,就有時(shí)間生病一樣。只有每個(gè)團(tuán)隊(duì)成員都變得敏捷了,敏捷的方法才有意義。
時(shí)間。。。曾經(jīng)是我最害怕的東西。。。如今卻變成了最喜歡的東西。。。
這個(gè)世界紛紛擾擾有那么多的真實(shí)與虛假
只有時(shí)間能把它們分離開(kāi)來(lái)。
時(shí)間,跟所有自然的偉力一樣,從來(lái)都是緩緩的,慢慢的顯示著自己的力量。
人可能等不及看到它的效果,可它卻一直履行著自己的職責(zé)
一切浮于表面的虛幻,終會(huì)在時(shí)間的侵蝕下消逝,只留下最真實(shí)的東西。
google上搜這個(gè)詞,搜到的很多是征文,和一些扯淡的文章。
跟這篇文章一比就差的比較遠(yuǎn)咯:
http://www.dapenti.com/blog/more.asp?name=xilei&id=15410
節(jié)選精華“中國(guó)夢(mèng)”解釋如下:
如果有人問(wèn)什么是中國(guó)夢(mèng)?我說(shuō),只要你看看這個(gè)國(guó)內(nèi)的精英怎么選擇的,你就知道了:
【1】讀書,考上清華北大,然后,到外企工作,出國(guó),拿綠卡;
【2】唱歌跳舞,不惜一切代價(jià)成名,出國(guó),變更國(guó)籍;
【3】當(dāng)官,貪污腐敗,找機(jī)會(huì)逃跑到國(guó)外,躲起來(lái)過(guò)一擲千金的日子;
【4】做生意,賺到足夠的錢,然后,出國(guó)定居,想生幾個(gè)孩子就生幾個(gè)孩子,讓小孩都在國(guó)外上大學(xué)。
BlogJava,應(yīng)該是一個(gè)技術(shù)博客。倒回來(lái)看自己寫的東西,卻感覺(jué)離題越來(lái)越嚴(yán)重。
對(duì)技術(shù)的熱情在衰退。所寫的技術(shù)相關(guān)的東西越來(lái)越少。
從Java到Flex到Grails。技術(shù)照理增長(zhǎng)了不少,人卻越來(lái)越迷茫。
對(duì)文科的興趣在增長(zhǎng),已然超越了對(duì)程序設(shè)計(jì)的興趣。
可是做的工作又不得不繼續(xù)從事程序設(shè)計(jì)的學(xué)習(xí),不然一旦失業(yè)了,我又能做什么呢?
所以每當(dāng)看一些文科的書,就會(huì)有一種罪惡感。人活成這樣,不得不說(shuō)是一件悲哀的事情。
其實(shí)心里明白,所謂悲哀在旁人看來(lái)不過(guò)是一種吃飽了撐著的心態(tài)。
買了域名和空間,準(zhǔn)備換一個(gè)獨(dú)立博客了。到時(shí)想寫些什么就寫些什么了,也不用擔(dān)心站方有問(wèn)題。
最近一直在看跟豐田生產(chǎn)體系有關(guān)的書,得到一些很有意思的知識(shí)點(diǎn)
- 剛明白原來(lái)這些個(gè)名詞他們是JIT->TPS->Lean->Agile這么一個(gè)關(guān)系。
-
豐田老總一拍腦袋提出3年之內(nèi)超越福特。這種感覺(jué)就像好像有一家中國(guó)軟件公司一拍腦袋說(shuō),三年之內(nèi)超越微軟一樣。我要是執(zhí)行人,只會(huì)覺(jué)得上邊又發(fā)神經(jīng)了,這不是瘋了嗎?結(jié)果大野耐一到底是大野耐一,竟然真的找到了方法。
- 生產(chǎn)過(guò)剩的浪費(fèi)
- 制造不良品的浪費(fèi)
- 停工等活的浪費(fèi)
- 動(dòng)作上的浪費(fèi)
- 搬運(yùn)的浪費(fèi)
- 加工本身的浪費(fèi)
- 庫(kù)存的浪費(fèi)
-
豐田的思路其實(shí)簡(jiǎn)單到了不能再簡(jiǎn)單,利潤(rùn)=銷售價(jià)格-成本。那么在經(jīng)濟(jì)增長(zhǎng)無(wú)望的時(shí)代,減少成本就等于創(chuàng)造利潤(rùn)。過(guò)去的時(shí)代是一個(gè)經(jīng)濟(jì)高速發(fā)展的時(shí)代。就像日本泡沫經(jīng)濟(jì)時(shí)代一樣。但是泡沫破裂的時(shí)候,豐田反而崛起。類似的如學(xué)習(xí)TPS的佳能,在5年內(nèi)銷售沒(méi)有增加的情況下,利潤(rùn)增長(zhǎng)十倍。
- 面對(duì)一個(gè)即將來(lái)臨的經(jīng)濟(jì)增長(zhǎng)放緩的時(shí)代,成本開(kāi)始成為管理者嘴上流行的新詞應(yīng)該是下一步的趨勢(shì)。
-
軟件開(kāi)發(fā)中的浪費(fèi)有哪些呢?我現(xiàn)在想不到太多。但是跟朋友聊天我突然意識(shí)到,猶豫也是一個(gè)巨大的浪費(fèi)。作為一項(xiàng)腦力勞動(dòng),開(kāi)發(fā)時(shí)的猶豫就如同停工等活的浪費(fèi)和動(dòng)作上的浪費(fèi)。這種事情其實(shí)可以避免,我開(kāi)始明白TPS這樣一個(gè)強(qiáng)調(diào)變化與改進(jìn)的過(guò)程,為什么還如此強(qiáng)調(diào)標(biāo)準(zhǔn)化。應(yīng)該就是通過(guò)整理最佳實(shí)踐并確定為標(biāo)準(zhǔn)流程來(lái)減少重復(fù)犯錯(cuò)與猶豫造成的浪費(fèi)。那么結(jié)對(duì)對(duì)效率造成的改進(jìn),別的不提,減少了猶豫的時(shí)間應(yīng)該是很重要的一點(diǎn)。而這也是在水面以下最不容易被發(fā)現(xiàn)的浪費(fèi)。因?yàn)楠q豫和謹(jǐn)慎,從表面上看,似乎是一樣的。
通往天堂的輪船和通往地獄的輪船燒得都是同一種燃料,那就是人類的欲望。
記得小時(shí)候看《讀者》這本雜志,里面有一個(gè)故事,上帝帶一個(gè)人去參觀地獄,地獄里支著一口大鍋,鍋周圍坐著一群人,每個(gè)人拿著一個(gè)很長(zhǎng)的勺子,因?yàn)樯鬃犹L(zhǎng)了,想要吃東西,經(jīng)常會(huì)碰到別人,所以互相之間總會(huì)打起來(lái),結(jié)果所有人都吃不飽,人人臉上充滿著憤怒和痛苦。然后上帝帶他又去參觀天堂,結(jié)果天堂里跟地獄的擺設(shè)一模一樣。但是人人臉上洋溢著幸福,原來(lái),這里的人會(huì)用長(zhǎng)勺子喂對(duì)面的人,所以,每個(gè)人都能吃飽。
同樣的配置,同樣的人,同樣都有吃飽的欲望。一處是天堂,一處是地獄。現(xiàn)實(shí)中也是如此,一個(gè)好的游戲規(guī)則,游戲中便是天堂,一個(gè)不好的游戲規(guī)則,游戲中便是地獄。