傳統(tǒng)的“胡蘿卜加大棒”的激勵(lì)方式僅僅對(duì)于那些重復(fù)的跨扮,機(jī)械性的任務(wù)有效侈离。一旦要做的事情稍微復(fù)雜一點(diǎn)痢法,而你需要解決哪怕很小但又沒有現(xiàn)成解決方案或無規(guī)律可循的問題時(shí)凉夯,這些基于物質(zhì)的激勵(lì)方式不但沒有效果,反而會(huì)把事情弄得更糟垢粮。
Dan Pink為這個(gè)主題寫了一本書《驅(qū)動(dòng)力:在獎(jiǎng)勵(lì)與懲罰都已失效的當(dāng)下贴届,如何煥發(fā)人的熱情》
在建設(shè)自己的團(tuán)隊(duì)時(shí),不在乎你什么時(shí)候來上班,或者如何安排你的時(shí)間毫蚓,不在乎你住在哪里占键,不在乎你怎么做你的工作,也不會(huì)事無巨細(xì)的過問元潘,給你一大堆的任務(wù)畔乙,這些都不重要。
重要的是如果你想造一艘船翩概,就不要催著工人們?nèi)ナ占静纳啵峙晒ぷ鳎l(fā)號(hào)施令钥庇,你應(yīng)該教會(huì)他們的是對(duì)無邊無際大海的渴望牍鞠。
磨刀不誤砍柴工,我們?cè)诰幊讨嗥酪蹋詈靡惨W(xué)習(xí)一些與編程無關(guān)的內(nèi)容难述。
當(dāng)我們閱讀編程相關(guān)的博客或書籍時(shí),我們通常是這樣做的:
每當(dāng)讀起一篇博文吐句,我們會(huì)把我們認(rèn)同的內(nèi)容一點(diǎn)一點(diǎn)讀下去胁后,而只要有一個(gè)論點(diǎn)不符合我們的世界觀,我們就會(huì)很較真蕴侧。如果整篇文章的主題都跟我們的成見相左择同,我們就會(huì)大罵作者是個(gè)白癡。老實(shí)說净宵,如果讓我們?nèi)プ鲣N售敲才,結(jié)果會(huì)一塌糊涂,因?yàn)槲覀円慌龅讲徽J(rèn)同我們的人就會(huì)匆匆放棄择葡。
所以我們最好要向銷售人員學(xué)習(xí)紧武。當(dāng)我們?cè)僮x一篇帖子,或者一本書敏储,或者學(xué)習(xí)一門新語言時(shí)阻星,我們應(yīng)該假定它的某些部分(甚至絕大部分)并不新穎,讓我們假設(shè)我們肯定會(huì)討厭它的某些部分已添。與此同時(shí)妥箕,如果我們能找到哪怕一點(diǎn)兒對(duì)我們有用的知識(shí),我們就已經(jīng)賺了更舞。
這是看書好的心態(tài)畦幢,我們客觀上來說,應(yīng)該讀好書缆蝉,讀經(jīng)典宇葱,但是如果讀到一本書感覺沒什么收獲瘦真,也沒什么可失落的,正常情況黍瞧。
當(dāng)然诸尽,過多的磨鋸,或者隨意地印颤,沒有目標(biāo)地磨鋸子您机,會(huì)變成另一種形式地問題,但是如果一個(gè)程序員對(duì)這些毫無興趣膀哲,也是一個(gè)巨大地信號(hào)往产。
對(duì)磨鋸子癡迷是沒有問題地,但前提是某宪,這種癡迷是類似于Hackers News地網(wǎng)站上積極地提交和討論與編程相關(guān)地文章。
在《質(zhì)量·軟件·管理:系統(tǒng)思維(第1卷)》一書中說明锐朴,哪怕在工作負(fù)荷中只是增加一個(gè)項(xiàng)目兴喂,也會(huì)嚴(yán)重地影響你地效率,你會(huì)損失20%的時(shí)間焚志,當(dāng)你增加第三個(gè)項(xiàng)目的時(shí)候衣迷,你很可能會(huì)有一半的時(shí)間浪費(fèi)在任務(wù)切換上,即使同一時(shí)間只做一個(gè)項(xiàng)目酱酬,也可能會(huì)出現(xiàn)這樣的問題壶谒。
我們總是認(rèn)為,我們可以多任務(wù)而不降低自己的任務(wù)質(zhì)量膳沽,但是多方面的研究告訴我們汗菜,我們不能做到,我們必然會(huì)在時(shí)間挑社,質(zhì)量以及深度思考能力各方面都受到損害陨界。
而編程中可能表現(xiàn)比較明顯,因?yàn)榫幊绦枰绦騿T記憶大量的東西痛阻,能同時(shí)記住的東西越多菌瘪,編程的效率就越高,包括變量名稱阱当,數(shù)據(jù)結(jié)構(gòu)俏扩,重要的編程接口,常用的工具函數(shù)名稱等弊添,如果來回切換項(xiàng)目录淡,這些都需要重新記憶,就會(huì)浪費(fèi)掉很多的時(shí)間表箭。
《程序員修煉之道:從小工到專家》中的“select沒有問題”赁咙。
這是這本書提到的一個(gè)小故事钮莲,目的是說,當(dāng)我們開始為了一個(gè)很可能是我們自己造成的錯(cuò)誤而責(zé)怪系統(tǒng)時(shí)彼水,我們都會(huì)用“select有問題”這個(gè)短語作為善意的提醒崔拥。
注釋寫的太多,不一定是一件好事凤覆,作為程序員链瓦,應(yīng)該總是專注于編寫代碼,而忘了還有注釋這種東西的存在盯桦。為了讓你的程序員更容易閱讀和理解你的代碼慈俯,你需要不斷地改進(jìn)你地代碼,但如果你已經(jīng)重寫拥峦,重構(gòu)甚至是重新設(shè)計(jì)了很多遍——當(dāng)你已經(jīng)一籌莫展贴膘,已經(jīng)想不出任何辦法可以讓你地代碼變得更加淺顯易懂時(shí),這個(gè)時(shí)候略号,也只有這個(gè)時(shí)候刑峡,你才應(yīng)該在百般無奈之下加上些注釋來解釋你的代碼。
如果你的代碼在沒有注釋的情況下顯得過于復(fù)雜玄柠,很難被人理解突梦,只能說明你的代碼寫的太糟糕了。重寫你的代碼吧羽利,直到它不再需要任何注釋宫患,如果經(jīng)過努力,你仍然覺得注釋時(shí)必需的这弧,那你就務(wù)必加上注釋娃闲,切記,小心当宴!
學(xué)會(huì)讀源代碼是很重要的畜吊,因?yàn)椴还芪臋n上怎么說,源代碼才是最終的事實(shí)户矢,是我們能找到的最好的玲献,最確定的,最新的“文檔”梯浪。這個(gè)事實(shí)永遠(yuǎn)不會(huì)改變捌年,所以越早接受它,作為一名軟件開發(fā)者的境況會(huì)越好挂洛。
當(dāng)你經(jīng)營(yíng)一個(gè)公司礼预,如果你的軟件出了故障,你的客戶不會(huì)在乎是你的失誤還是linux的虏劲,或者是由Redis的開發(fā)人員造成的托酸,他們只知道是你的軟件出了問題褒颈。
所以真正的駭客世界只有一個(gè)簡(jiǎn)單的事實(shí):如果一個(gè)軟件在我的機(jī)器上運(yùn)行,那它就是我的軟件励堡。我要對(duì)它負(fù)責(zé)谷丸,我必須吧它弄明白,從源代碼開始構(gòu)建是一條必須遵循的原則应结,而且從不例外刨疼,我必須控制我的環(huán)境,我還要控制所有我依賴的東西鹅龄。
網(wǎng)站載入和顯示的速度哪怕是100毫秒為單位的延遲增加揩慕,也會(huì)讓用戶大量的流失。
對(duì)于速度的需求扮休,有這樣一個(gè)小建議:虔誠地遵循雅虎的指導(dǎo)原則
2007年以來迎卤,雅虎有一個(gè)“加速你的網(wǎng)站的13條簡(jiǎn)單原則”,另外還附帶了一條告誡:
這里有一些不錯(cuò)的建議肛炮,但是其中很多的建議只有在你運(yùn)營(yíng)了一個(gè)每天有幾百萬獨(dú)立用戶訪問的網(wǎng)站時(shí)才有意義止吐。
Gerald Weinberg的著作《成為技術(shù)領(lǐng)導(dǎo)者——解決問題的有機(jī)方法》對(duì)軟件工程領(lǐng)域的領(lǐng)導(dǎo)力做了更為深入的分析。
會(huì)議是浪費(fèi)工作時(shí)間的最佳去處侨糟,我們應(yīng)該以懷疑的態(tài)度去看待會(huì)議,把它當(dāng)成一種降低工作效率的風(fēng)險(xiǎn)瘩燥。
有下面幾個(gè)建議:
1秕重、會(huì)議絕對(duì)不應(yīng)該超過一個(gè)小時(shí),否則應(yīng)判以死刑厉膀。
2溶耘、每個(gè)會(huì)議都應(yīng)該有一個(gè)清晰的目標(biāo)聲明。
3服鹅、在開會(huì)之前就應(yīng)該預(yù)先做好功課凳兵。
4、把會(huì)議變成可選的企软。(“強(qiáng)制”的會(huì)議是站不住腳的庐扫,每一個(gè)出現(xiàn)在會(huì)議上的人都應(yīng)該是因?yàn)樗麄兿胍谀抢铮蛘咚麄冃枰谀抢镎躺凇R环N讓你自己對(duì)會(huì)議負(fù)責(zé)的可靠方法形庭,就是讓每個(gè)人自行決定是否要參加你的會(huì)議。如果大家都想?yún)⒓幽愕臅?huì)議厌漂,那一定是因?yàn)樗娴暮苡杏萌眩蛘吆苡腥ぃ蛘吆軍蕵肺#?br>
5富纸、在會(huì)議結(jié)束時(shí)概括一下待辦事項(xiàng)囤踩。
壞蘋果法則:
如果把一個(gè)壞蘋果留在一筐好蘋果里,結(jié)果你將得到一筐壞蘋果晓褪。如果你希望自己的企業(yè)成功堵漱,那么你就必須有一個(gè)積極進(jìn)取的團(tuán)隊(duì)。
我們?cè)趫F(tuán)隊(duì)中辞州,不必和每個(gè)人都成為朋友怔锌,需要去識(shí)別出“壞蘋果”,團(tuán)隊(duì)中有“壞蘋果”大概有下面這些警示信息:
- 他們掩飾自己的無知变过,而不是盡力去向他們的團(tuán)隊(duì)伙伴學(xué)習(xí)埃元。他們會(huì)說:“我不知道該怎么解釋我的設(shè)計(jì),我只知道它能正常工作媚狰〉荷保”或者“我的代碼太復(fù)雜了,沒辦法測(cè)試崭孤±噜停”
- 他們對(duì)個(gè)人隱私有著過度的渴望。會(huì)說:“我不需要任何人來查看我的代碼辨宠∫怕啵”
- 他們很在意自己的地盤。會(huì)說:“我代碼里的問題沒人能修復(fù)嗤形。但我現(xiàn)在太忙精偿,沒時(shí)間去管它們,我打算下周處理它們赋兵”恃剩”
- 抱怨團(tuán)隊(duì)所做的決定,即便團(tuán)隊(duì)已經(jīng)繼續(xù)前進(jìn)了很久之后還會(huì)重拾舊題霹期。會(huì)說:“我還是認(rèn)為叶组,我們應(yīng)該回過頭去修改我們上個(gè)月討論的那個(gè)設(shè)計(jì),我們當(dāng)初選擇的那個(gè)是行不通的历造∷κ”
- 團(tuán)隊(duì)中大部分成員開始傳說關(guān)于同一個(gè)人的俏皮話或者埋怨他(軟件開發(fā)人員通常不會(huì)直接抱怨)员串,領(lǐng)導(dǎo)者需要去探查是否有什么狀況發(fā)生积锅。
- 不會(huì)積極投入團(tuán)隊(duì)的行動(dòng)。
如果你的團(tuán)隊(duì)主管或者經(jīng)理沒有處理項(xiàng)目中的“壞蘋果”截粗,那他就是玩忽職守垮刹。
我們可以培養(yǎng)一個(gè)人的技能达吞,但是不能讓他們有積極的態(tài)度,把某個(gè)人從團(tuán)隊(duì)中調(diào)走是很痛苦的荒典,這件事對(duì)任何人來說都沒有趣酪劫,但是吞鸭,如果你意識(shí)到你本應(yīng)該在六個(gè)月前就把某人調(diào)走時(shí),其實(shí)你已經(jīng)陷入更加痛苦的境地了覆糟。
程序員天生就有強(qiáng)迫癥刻剥。
講究邏輯性,講究有序性滩字,思維縝密(防止bug)造虏,考慮邊界條件,寫代碼之前需要做好規(guī)劃麦箍。
要做單元測(cè)試的12個(gè)具體理由:
- 單元測(cè)試可以證明你的代碼是能真正解決問題的漓藕。
- 你可以在不破壞現(xiàn)有功能的基礎(chǔ)上持續(xù)改進(jìn)設(shè)計(jì)。
- 它們可以被用來真實(shí)地展示開發(fā)速度挟裂。
- 單元測(cè)試可以當(dāng)做示例代碼享钞。
- 它逼著你在寫代碼之前做好計(jì)劃。
- 它比不寫單元測(cè)試而直接寫代碼的效率更高诀蓉。