12年程序員生涯,這是他的12個(gè)教訓(xùn)!
我已經(jīng)在ThoughtWorks工作了12年。是不是有點(diǎn)不可思議?回首我的職業(yè)生涯,我想寫一寫我在這些年中經(jīng)歷的困難,以及總結(jié)得到的12個(gè)非常重要的經(jīng)驗(yàn)教訓(xùn)。雖然我只選擇了12個(gè),但其實(shí)遠(yuǎn)遠(yuǎn)不止這個(gè)數(shù)字,但是我覺得12年12個(gè)經(jīng)驗(yàn)教訓(xùn)更有韻味。
1.工具不能代替思考
在我多年的咨詢工作和與許多組織和管理者的共事中,我發(fā)現(xiàn)了修復(fù)問題的共同套路,那就是管理人員相信工具可以“解決”給出的問題。當(dāng)問題域被理解透徹,并且不可能有很多例外,以及每個(gè)人的行為方式相同的時(shí)候,這樣的做法很管用。不幸的是,很多現(xiàn)實(shí)問題并非如此。
太多次我目睹管理者使用組織范圍的工具鎖定到特定的工作方式。自然,該工具未能解決問題,并且阻塞了工作的真正完成。工具應(yīng)該是用來提供幫助的,用來幫助防止已知錯(cuò)誤的,并幫助我們記住重復(fù)的任務(wù),而不是取代思考。
2.除非管理小組能夠真正懂得敏捷“轉(zhuǎn)變”的價(jià)值,否則它就不能發(fā)揮作用
許多管理者都犯過這樣的錯(cuò)誤,那就是認(rèn)為組織的其他部分在做出改變的同時(shí),只有那些參與工作的人才需要“接受敏捷”。在企業(yè)中做這樣的統(tǒng)籌需要花費(fèi)大量的時(shí)間和技能,因?yàn)槟阋P(guān)注于同步組織在不同水平的變化。
那些想要組織的一部分接受敏捷的組織面臨著真正的威脅。正如有句話所說,“要么改變組織,要么改變組織的方式。”
3.學(xué)習(xí)需要一個(gè)安全的環(huán)境
學(xué)習(xí)的必要經(jīng)過是犯錯(cuò)誤。在德雷福斯模型中,這意味著,特別是位于高級(jí)初級(jí)階段,人需要通過犯錯(cuò)誤來學(xué)習(xí)。但是,當(dāng)人們覺得犯錯(cuò)會(huì)對(duì)工作造成壞的影響,會(huì)失去同事的尊重或在過程中會(huì)傷害到其他人時(shí),那么他們就不會(huì)冒犯錯(cuò)的風(fēng)險(xiǎn)。
因?yàn)槲覠嶂杂诮毯蛯W(xué),所以我想辦法創(chuàng)造了一個(gè)安全的失敗空間,在這里失敗的話,可以通過犯一些基本的錯(cuò)誤來學(xué)習(xí)。
4.每個(gè)人都可以成為領(lǐng)導(dǎo)者
我以前寫過這個(gè)話題的內(nèi)容,因?yàn)檫@是一個(gè)非常重要的觀察結(jié)果。我看到的一個(gè)常見的思維模式陷阱是,人們覺得為了像一個(gè)領(lǐng)導(dǎo),你需要去擔(dān)任領(lǐng)導(dǎo)的職位。但其實(shí)人們可以展示他們的領(lǐng)導(dǎo)力而不論其頭銜如何,并且可以通過很多不同的方式做到這一點(diǎn),只需在沒有明確期望或要求的事情上采取行動(dòng)。
5.架構(gòu)師去寫代碼往往能作出最佳決策
在我運(yùn)行的Tech Lead courses中,我提倡技術(shù)領(lǐng)導(dǎo)者至少將他們30%的時(shí)間用來寫代碼?;〞r(shí)間于編碼上有助于建立信任,尊重和理解當(dāng)前的系統(tǒng)。在做架構(gòu)決策時(shí),不考慮到當(dāng)前系統(tǒng)的約束條件往往會(huì)造成錯(cuò)誤的決定。
6.改變需要勇氣
我記得曾有人談?wù)撨^XP values,其中有一點(diǎn)就是勇氣。勇氣是領(lǐng)導(dǎo)時(shí)所必須的,因?yàn)槟阋笆〉娘L(fēng)險(xiǎn),以及嘗試一些新事物的風(fēng)險(xiǎn)/回報(bào)。沒有風(fēng)險(xiǎn),往往就不會(huì)有很大的回報(bào)。
7.建立信任的關(guān)鍵是言行一致
有這么一條古老的箴言,“依其言而行事,勿觀其行而仿之。”在現(xiàn)實(shí)中,不管你說什么,人們首要的是會(huì)記住你是如何行動(dòng)的。你得始終記得要言行一致。不一致的言行會(huì)損害相互之間的信任。說“no”或“現(xiàn)在不行”比答應(yīng)做一件事卻沒有辦到要好得多。
8.成功的結(jié)對(duì)編程與良好的協(xié)作相關(guān)
雖然不是所有的結(jié)對(duì)編程環(huán)境都是健康的,但是我相信,當(dāng)結(jié)對(duì)編程有效工作的時(shí)候,團(tuán)隊(duì)往往具備一種更好的協(xié)作文化。許多開發(fā)人員更喜歡(長(zhǎng)期)branch-based development的反模式,因?yàn)樗七t了反饋和潛在的沖突來源。
我把(可導(dǎo)航的)沖突當(dāng)作協(xié)作團(tuán)隊(duì)的一個(gè)健康標(biāo)志。推遲反饋,例如長(zhǎng)期分支代碼審查的情況往往會(huì)導(dǎo)致更多的不滿,因?yàn)樗桓兜眠@么晚。
9.多模式思維促進(jìn)更強(qiáng)大的結(jié)果
我在大學(xué)中最喜歡的科目之一是哲學(xué)概論,在那個(gè)學(xué)期中我們每周都會(huì)研究不同的哲學(xué)家。在我職業(yè)生涯的過程中,我漸漸體悟到多樣性的價(jià)值,并且開始通過多個(gè)角度來看問題。系統(tǒng)思想還認(rèn)識(shí)到,事實(shí)可以用不同的方式來解釋,從而促進(jìn)產(chǎn)生新的想法或解決方案。
10.認(rèn)識(shí)到每個(gè)人都有不同的優(yōu)勢(shì)
每個(gè)人都是獨(dú)一無二的,每個(gè)人都有自己的長(zhǎng)處和短處。雖然我們傾向于尋找志同道合的人,但是擁有廣泛優(yōu)勢(shì)的團(tuán)隊(duì)才能走得更好。這一區(qū)域中的優(yōu)勢(shì)可能會(huì)成為某個(gè)上下文中的弱勢(shì),所以當(dāng)團(tuán)隊(duì)成員擁有更廣泛的優(yōu)勢(shì)時(shí),團(tuán)隊(duì)會(huì)變得更強(qiáng)大。雖然優(yōu)勢(shì)的差異可能會(huì)導(dǎo)致沖突,但健康的團(tuán)隊(duì)會(huì)接受彼此之間的差異,而不是憎惡差異。
11.終身制學(xué)習(xí)
世界在不斷的變化,我們總有機(jī)會(huì)去學(xué)習(xí)一些新的技能、技術(shù)和工具。我們甚至可以去學(xué)習(xí)如何善于學(xué)習(xí),有很多書籍,例如《Apprenticeship Patterns》和《The First 20 Hours》可以教你怎么做好這些。
12.積極的影響迸發(fā)幸福感
《Drive》,一本膾炙人口的書,談?wù)摿巳藗內(nèi)绾瓮ㄟ^朝某一目標(biāo)前進(jìn)而生出幸福感。根據(jù)我的經(jīng)驗(yàn),幫助別人找到解決方法,對(duì)他們產(chǎn)生積極的影響,才是幸福的源泉。
結(jié)論
以上這十二個(gè)要點(diǎn)并非我在ThoughtWorks的12年時(shí)間里所學(xué)到的全部經(jīng)驗(yàn)教訓(xùn),但它們確確實(shí)實(shí)是幫助我為客戶服務(wù)的比較重要的經(jīng)驗(yàn)教訓(xùn)。