有關(guān)技術(shù)主管和工程經(jīng)理職責(zé)的文章很多。我們經(jīng)常會(huì)看到的一個(gè)相同的主題是:如何提高團(tuán)隊(duì)的工作效率。但是在集中精力來(lái)提高他們的生產(chǎn)力之前,你可能首先會(huì)考慮摧垮生產(chǎn)力的因素是什么,并依據(jù)建立一個(gè)可靠的基礎(chǔ)。不幸的是,盡管30年前《人件》(Peopleware: Productive Projects and Teams)一書(shū)就已經(jīng)出版了,但是至今我們?nèi)匀豢梢钥匆?jiàn)許多團(tuán)隊(duì)由于一些出色(貶義)的做法而遭受巨大的生產(chǎn)力損失!
人人都知道程序員要想完成工作必須要用電腦,但是許多公司卻在期望程序員不用思想就能完成工作——這同樣不切實(shí)際。
因此,在本文中讓我們深入探討妨礙開(kāi)發(fā)人員“進(jìn)入工作狀態(tài)”并提高工作效率的12個(gè)注意事項(xiàng)。我會(huì)按照影響力從高到低逐個(gè)講解這些因素。歡迎大家在下面發(fā)表評(píng)論!
如果你猶豫下面這些投資是否值得,那么只需想想開(kāi)發(fā)人員的工資。即便只提高10%的生產(chǎn)力也是可觀(guān)的收獲!
打斷與會(huì)議
在我看來(lái),打斷開(kāi)發(fā)人員是首要的生產(chǎn)力殺手。
開(kāi)發(fā)人員不能輕易地回到他們被打斷前的狀態(tài)。他們需要進(jìn)入開(kāi)發(fā)的思維模式,然后慢慢回到離開(kāi)之前的狀態(tài)。這個(gè)過(guò)程往往需要半個(gè)小時(shí)以上。打斷越多,他們受到的挫折就越多,工作質(zhì)量就會(huì)越差,bug就會(huì)越多,等等。
“在我努力工作的時(shí)候,你打斷我的次數(shù)越多,那么我重新回到努力工作狀態(tài)的時(shí)間就越長(zhǎng)。如果一整個(gè)早上你不停的打斷我,那么抱歉我這一天都沒(méi)有效率可言。”——Reddit上的開(kāi)發(fā)人員。
那么會(huì)議呢?會(huì)議和打斷唯一的不同是會(huì)議是有計(jì)劃的打斷,這會(huì)讓情況更糟。如果開(kāi)發(fā)人員知道他們?cè)谧瞿硞€(gè)任務(wù)的中途會(huì)被打斷,那么他們根本無(wú)法完成這個(gè)任務(wù)。因此,如果他們知道1-2個(gè)小時(shí)之內(nèi)要去開(kāi)會(huì),那么他們無(wú)法取得任何進(jìn)展,因?yàn)榇蠖鄶?shù)的工程任務(wù)需要的時(shí)間遠(yuǎn)不止1-2個(gè)小時(shí)。
正如Paul Graham寫(xiě)的那樣,“一次會(huì)議會(huì)將整個(gè)下午分割成了兩部分,每部分都太小,所以根本無(wú)法做任何事情。”
那么怎樣才能避免這種情況呢?這個(gè)問(wèn)題是有據(jù)可查的,所以你沒(méi)有任何借口推脫。你可以一大早或午餐前舉行簡(jiǎn)短的會(huì)議,避免在中途進(jìn)行不必要的打斷。
微觀(guān)管理
在不同類(lèi)型的經(jīng)理中,采用微觀(guān)管理的經(jīng)理在開(kāi)發(fā)人員的生產(chǎn)力方面帶來(lái)的影響可能是最糟糕的。首先微觀(guān)管理人往往會(huì)帶來(lái)很多的會(huì)議和意外的打斷——但糟糕的遠(yuǎn)遠(yuǎn)不止是這些。
他們表現(xiàn)出的缺乏信任,會(huì)讓你覺(jué)得他們?cè)诓粩嗲治g你的技術(shù)力和完成工作的能力。任何很有動(dòng)力的開(kāi)發(fā)人員在被打斷的那一瞬間都會(huì)消失殆盡。而且這種影響超出了生產(chǎn)力。微觀(guān)管理可能是導(dǎo)致開(kāi)發(fā)人員離職的首要原因,或者至少是改變團(tuán)隊(duì)的原因。
含糊其辭
含糊其辭的表現(xiàn)方式有很多種。例如,bug報(bào)告說(shuō):“無(wú)法正常工作,請(qǐng)修正!”卻沒(méi)有提供足夠的信息讓開(kāi)發(fā)人員展開(kāi)工作。順便說(shuō)一下,bug報(bào)告模板可以幫忙解決這個(gè)問(wèn)題。
或者對(duì)某個(gè)功能的規(guī)范不明確,在這種情況下,開(kāi)發(fā)人員只能依靠自己的直覺(jué)開(kāi)始實(shí)現(xiàn),等到從經(jīng)理那里獲得更詳細(xì)的預(yù)期行為說(shuō)明后,又不得不重頭開(kāi)始。
優(yōu)先次序不明確也屬于這個(gè)范疇。開(kāi)發(fā)人員猶豫他們是否正在做正確的任務(wù),他們花費(fèi)的這些時(shí)間很容易避免。他們只需問(wèn)問(wèn)經(jīng)理為什么他們需要做這個(gè)特定的任務(wù)(如果優(yōu)先次序沒(méi)有定義的話(huà)),但是往往他們?cè)谶@方面遭遇了很多挫折……
海鷗管理
你聽(tīng)說(shuō)過(guò)這個(gè)詞嗎? 有的管理人員根本沒(méi)有參與工作,但是他們會(huì)突然闖進(jìn)來(lái)然后一頓亂噴。“這個(gè)不對(duì),還有這個(gè),這個(gè)太差勁了,”然后就又飛走了。我不得不承認(rèn)這個(gè)比喻很形象,但是不幸的是,這種現(xiàn)象發(fā)生的頻率比我們想象的還要高。
管理人員的這種行為會(huì)讓開(kāi)發(fā)人員倍感沮喪,盡管他們幾個(gè)小時(shí)之內(nèi)不會(huì)再來(lái)攪和,有時(shí)甚至幾天都不出現(xiàn)。
將別人的功勞據(jù)為己有
你是否有過(guò)經(jīng)理或其他開(kāi)發(fā)人員將你辛苦努力了幾周的勞動(dòng)成果據(jù)為己有的經(jīng)歷?開(kāi)發(fā)人員非常重視能力。將別人贏得的信譽(yù)據(jù)為己有實(shí)際上是搶占別人的能力或否認(rèn)別人的能力。
這種現(xiàn)象對(duì)開(kāi)發(fā)人員的生產(chǎn)力破壞極大,因?yàn)槲矣X(jué)得這會(huì)營(yíng)造非常緊張的氛圍,會(huì)在很長(zhǎng)一段時(shí)間內(nèi)打擊開(kāi)發(fā)人員的生產(chǎn)力。
環(huán)境——噪音,動(dòng)力,辦公室的設(shè)計(jì)等
對(duì)于非程序員來(lái)說(shuō)這一點(diǎn)可能有點(diǎn)奇怪,但工作環(huán)境對(duì)開(kāi)發(fā)人員的工作有重要的影響。例如,有一些白噪聲(響亮的交流電,或聽(tīng)汽車(chē)和卡車(chē)的翻滾)可以幫助他們更好地集中注意力。這就是我們這么多人戴耳機(jī)的原因!其實(shí)我剛剛發(fā)現(xiàn)傾聽(tīng)雨聲也非常棒!
同樣,如果辦公室有太多的動(dòng)靜,那么會(huì)導(dǎo)致開(kāi)發(fā)人員無(wú)法集中注意力!或者把臺(tái)式計(jì)算機(jī)的屏幕放在顯眼的地方,讓管理人員抬頭就能看見(jiàn),那么會(huì)產(chǎn)生額外的壓力,甚至還會(huì)導(dǎo)致打斷的發(fā)生頻率增高。
范圍蔓延
項(xiàng)目管理中的范圍蔓延(也稱(chēng)為重心蔓延,需求蔓延,特征蔓延,有時(shí)甚至被稱(chēng)為廚房水槽綜合癥)是指不受項(xiàng)目范圍控制的變化。如果項(xiàng)目范圍的定義不正確,記錄不完整或控制不當(dāng)時(shí),就會(huì)發(fā)生這種情況。
范圍蔓延會(huì)導(dǎo)致相對(duì)簡(jiǎn)單的需求變成極其復(fù)雜且耗時(shí)的怪物!大多數(shù)時(shí)候在開(kāi)發(fā)過(guò)程中大家都會(huì)遇到這樣的情況。例如,對(duì)于一個(gè)很簡(jiǎn)單的功能:
版本1(實(shí)施前):功能是“顯示位置的地圖”;
版本2(版本1幾乎完成時(shí)):功能更改為“顯示位置的3D地圖”;
版本3(當(dāng)版本2幾乎完成時(shí)):功能再次更改為“顯示可供用戶(hù)漫游的位置3D地圖”。
產(chǎn)品定義的流程
乍一看去這一點(diǎn)似乎很奇怪,但實(shí)際上很容易理解。
如果產(chǎn)品團(tuán)隊(duì)在定義團(tuán)隊(duì)的優(yōu)先級(jí)時(shí),沒(méi)有通過(guò)客戶(hù)反饋或其他方式驗(yàn)證客戶(hù)對(duì)該功能的反應(yīng),而且開(kāi)發(fā)人員發(fā)現(xiàn)大多數(shù)功能最終都沒(méi)有被使用,那么他們會(huì)覺(jué)得他們所做的事情都是無(wú)用功,這就會(huì)導(dǎo)致他們會(huì)失去動(dòng)力。我們都希望感受到自身的影響力,這對(duì)開(kāi)發(fā)人員來(lái)說(shuō)可能更為重要!
缺乏對(duì)技術(shù)債務(wù)的考慮
技術(shù)債務(wù)是為了快速發(fā)布軟件,故意采用的非最佳解決方案或編寫(xiě)的非最佳代碼。承擔(dān)一些技術(shù)債務(wù)是不可避免的,而且還可以在短期內(nèi)提高軟件的開(kāi)發(fā)速度。但是,從長(zhǎng)遠(yuǎn)來(lái)看,它會(huì)導(dǎo)致系統(tǒng)復(fù)雜,從而降低開(kāi)發(fā)人員的速度。非程序員往往會(huì)低估生產(chǎn)力的損失,而且總是傾向于前進(jìn),這就成了一個(gè)問(wèn)題。
但如果永遠(yuǎn)不優(yōu)先考慮重構(gòu)的話(huà),那么不僅會(huì)影響生產(chǎn)力,還會(huì)影響產(chǎn)品質(zhì)量。
工具的多樣性和硬件
開(kāi)發(fā)人員每天使用許多工具來(lái)編程,推送和合并他們的代碼。自動(dòng)化越多越好。如果你使用“古老”的工具,就會(huì)影響你的生產(chǎn)力。同樣,擁有一個(gè)大屏幕還是一臺(tái)筆記本電腦也會(huì)產(chǎn)生影響。對(duì)比一下硬件成本和開(kāi)發(fā)人員的工資,只需提高5%的生產(chǎn)率,就可以獲得所有投資!所以還猶豫什么,抓緊提供開(kāi)發(fā)人員團(tuán)隊(duì)喜歡的工具和硬件(個(gè)人的硬件,還有團(tuán)隊(duì)的工具)。
方法論的文檔
在學(xué)寫(xiě)代碼的時(shí)候,我們都知道應(yīng)該盡可能多的寫(xiě)注釋。也就是說(shuō)注釋太多總好過(guò)太少。不幸的是,許多程序員錯(cuò)誤地理解成了,必須對(duì)每一行代碼加注釋?zhuān)@就是我們經(jīng)常看到下面這樣的代碼的原因(來(lái)自Jeff Atwood的文章《Coding Without Comments》,地址:https://blog.codinghorror.com/coding-without-comments/):
你知道這段代碼是干什么的嗎?我也不知道。問(wèn)題是雖然代碼中加了很多注釋描述了代碼正在做什么,但沒(méi)有一個(gè)描述了這樣做的原因。如果程序中有bug,而你找到了這段代碼,那么你將不知道該從哪里入手。
過(guò)于緊迫的截止期限
最后一個(gè)與管理者相關(guān)的問(wèn)題是他們要求開(kāi)發(fā)人員提供預(yù)估工時(shí),但是他們會(huì)鼓動(dòng)開(kāi)發(fā)人員將這些預(yù)估盡可能降低,然后神奇地將這些降到最低的預(yù)估當(dāng)成最后的截止期限!管理人員甚至還會(huì)認(rèn)為,這是開(kāi)發(fā)人員自己“決定”的預(yù)估,他們承諾在截止期限之前完成,因此這個(gè)截止期限理應(yīng)有效,可以與高層管理人員共享。
開(kāi)發(fā)人員認(rèn)為這些截止期限不合理,過(guò)于緊迫,這一點(diǎn)也不奇怪。結(jié)果就會(huì)造成緊張的氛圍,讓程序員無(wú)法集中注意力。
為什么這些注意事項(xiàng)是開(kāi)發(fā)人員特有的?
如果你仔細(xì)看看上述十二大注意事項(xiàng),就會(huì)發(fā)現(xiàn)實(shí)際上對(duì)于大多數(shù)其他項(xiàng)目的工作來(lái)說(shuō)這些問(wèn)題也很常見(jiàn)。只是它們對(duì)開(kāi)發(fā)人員的影響更為重要,因?yàn)殚_(kāi)發(fā)人員需要精神高度集中,全神貫注到他們的任務(wù)中去。
如果你覺(jué)得你們公司內(nèi)部也有上述某些問(wèn)題,那么與開(kāi)發(fā)人員討論這些問(wèn)題可能會(huì)很有趣。與他們交談,然后找出問(wèn)題的解決方法。無(wú)論他們說(shuō)什么,最重要的是相信他們的反饋和見(jiàn)解。
雖然今天的技術(shù)與30年前截然不同,但教訓(xùn)仍然是相同的。在考慮團(tuán)隊(duì)生產(chǎn)力的時(shí)候,你不能忽視人為因素。與你的團(tuán)隊(duì)一起考慮你們的流程,環(huán)境和工作習(xí)慣,讓他們幫助你獲取最大的生產(chǎn)力和影響力。
-
編程
+關(guān)注
關(guān)注
88文章
3595瀏覽量
93600 -
開(kāi)發(fā)人員
+關(guān)注
關(guān)注
0文章
19瀏覽量
6584
原文標(biāo)題:開(kāi)發(fā)人員如何高效編程?
文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論