意志力不是萬能丹

更新於 發佈於 閱讀時間約 6 分鐘
圖片來源:www.freepik.com

圖片來源:www.freepik.com

今天來談一點比較軟的東西,算是有感而發吧!昨天 (2016/10/29) 職棒的總冠軍賽落幕,自己支持的球隊很可惜無法板平賽事,將戰線延到第七戰,不過從整個球季到季後賽可以看到一些有趣的東西,這次季後賽的兩支隊伍很有意思,簡短看一下兩支球隊:

一支球隊在開季前透過交易自由球員的方式得到王牌級的打者,並透過外籍打擊教練的調整讓整體的打擊獲得成長,因此在上半季很快就快得到季後賽門票,但魔術數字點亮後卻沒有如一開始那麼迅速確實拿下上半季冠軍,雖然最終還是拿下,但下半季的狀況卻是跌跌撞撞;另一支球隊,有相當平均的戰力,投手、打擊和守備都很優秀,但上半季戰績卻始終無法超越首位,甚至上半季後段的連敗,讓東家決定要出售球隊,下半季則是調整戰力,緩緩地成為首位,到最後剩餘的幾場賽事,才拿下下半季冠軍,最終拿下總冠軍。

這兩支球隊與軟體開發有什麼關係?雖然我沒有參與球隊的決策,但從球迷的角度來看,支持的球隊為了「上半季冠軍」這個短期目標,忽略戰力的調整,即使牛棚有快撐不住的跡象,仍靠著球員的意志力撐下去,拿到上半季冠軍後,理論上下半季的賽事應該為總冠軍賽調整優先,戰績次之,但又為了下一個「全年度戰績第一」短期目標,整個調度又亂掉,然後又是靠意志力撐過去。

意志力很重要沒錯,特別是像總冠軍這種高強度的短期賽事,球員打了一整季的比賽,體力、傷勢等不利條件上身,真的需要有堅強的意志力,但意志力不是萬能,意志力無法彌補投手戰力的消耗,意志力無法像自來水那樣想要就有,更何況,參與總冠軍賽的兩支球隊,雙方意志力都很強,最終,還是看團隊的整體戰力而不是意志力。

看完有沒有覺得好像在軟體開發的職場也很像?為了業務的短期目標,工程師靠著意志力加班,勉強達成目標,但大家都知道,這段期間不只完成目標也累積龐大的技術債,本來承諾短期目標達成後,會有時間調整,像是整理技術債,或是讓菜鳥工程師能獲得技術訓練,但想也知道,馬上又會有下個短期目標,工程師為了技術債已經焦頭爛額時,又為了新需求發動意志力 (或是燃燒小宇宙),有達成目標可能還好,也許還能得到獎金,平撫受傷的意志力,但沒達成目標呢?就像支持的球隊,在九局上半救援投手崩盤沒撐過去呢?

在軟體開發的職場上崩盤會是什麼情況呢?工程師的離職是最常見的,特別是王牌級的工程師會最先離開,因為王牌級的工程師不乏其他工作機會,王牌級工程師離職後,本來的工作量由其他工程師承擔,其他工程師只好繼續燃燒小宇宙,留下更多技術債,更難達到目標,然後又有新的短期目標,專案整個嚴重 delay,看到這,我想應該有很多人都會心有戚戚焉。

在戰力有限的情況下,怎樣可以不這麼依賴意志力呢?簡言之,就是讓團隊有好的體質,方法不外乎幾點:

  • 有好的基礎建設
  • 專注做真正該做的事
  • 保持靈活的彈性

好的基礎建設,像是版控系統幾乎是最基本的,我蠻難想像沒有版控該怎麼開發大型的軟體,但只有版控系統是不夠的,雖然需要額外的開發時間,但與其用無法重複使用的人力測試,我個人比較相信能不斷重複執行的單元測試,在修改程式時,單元測試還能幫忙測試有沒有改壞什麼東西,甚至透過構思「如何測試?」以寫出容易維護與好設計的程式。

單元測試加上持續整合,能發揮更好的效果,每次簽入程式碼,若是需要編譯的程式語言,除了確保簽入的程式不會造成編譯失敗,還能在短時間內執行大量的單元測試與整合測試,能儘早發現問題,減低之後修復的成本。由於現在的系統越來越龐大,部署變成是一件很複雜的事,若只依賴人工部署,龐大的配置 (configuration) 很容易出錯,所以更進一步是最好能自動部署,讓容易出錯的部分減到最小。

專注做真正該做的事,如果將團隊的開發能力當成分母,要開發的需求作為分子,在開發團隊的能力無法快速提升的情況下,要讓產品更快完成,就是讓分子變小,這不是指減少開發的項目,而是避免讓不必要的項目加到分子中,有人可能會說,在沒上市前誰會知道哪些項目是不需要的,但這句本身就是個盲點,既然不知道是不是不需要的,同樣也表示他可能不是需要的,其實不須急在這個版本中釋出,我相信「能決定開發項目的優先順序以讓產品成功」是好的產品經理或 product owner 最重要的能力之一。

保持靈活的彈性,簡單說就是擺脫過去 waterfall 開發方式的思維,不論是用 scrum、kanban 或其他敏捷開發法,在一個較短的週期裡,馬上能有一定的產出,能檢視過去做錯的部分,不管是開發中遇到的技術問題或是需求的問題,能在短的週期裡立即作出調整,當產品有一定的程度,其實就可以投入市場接受考驗,不要思考說做到完美才上,因為就如同剛說的,未上市前不會知道什麼是完美的,甚至花了一堆時間做的完美,對使用者來說卻毫無意義,那時間都是浪費掉的。

至於新創團隊要不要寫單元測試?是要跑 scrum 還是跑 kanban?先談單元測試,有一種說法是新創團隊不寫測試是因為開發的東西還不知道有沒有市場,花時間寫測試不划算,因為需求隨時都可能改掉。我覺得這完全是兩回事,單元測試是用來驗證開發的程式是否如設計般正確,不是驗證是否有市場,與其用寶貴的人力做設計的驗證,我還是覺得單元測試比較好,但這決策只能由新創團隊自己決定。至於要跑哪種開發法,我倒覺得重點是彈性,而不是死守這些方法的規範,當然,前提是真的了解為什麼要有這些規範後,才能知道哪些規範也許現在不適用。

用棒球賽類比軟體開發或許不夠精確,畢竟季後賽打完,整個賽季也就結束了,新的賽季開始,整個戰績全部重來,每支球隊都從零勝零敗開始,這就是比賽。但軟體開發則不是,可能這一仗打輸了,市場沒了,整個公司就結束了,所以每一次釋出都像是在打季後賽,意志力是有必要的。可是,當公司已經在市場上,透過不斷地釋出添加新功能,反而像是例行賽,是一場長時間的考驗,若沒有好的團隊體質,光靠意志力是不夠的。而這兩者間其實沒有那麼明確的一條線,當跨過那條線之後就是例行賽,沒跨過前每場都像季後賽。即使有那麼一條明確的線,良好的團隊體質是需要時間培養的,跨過那條線才開始培養有點太晚了。

最後,我想起《瘋狂改變世界:我就是這樣創立Twitter的!》書中 (參閱書摘《瘋狂改變世界:我就是這樣創立Twitter的!》) 的一段,Biz Stone 提到即使在有信用卡卡債的情況下,只要稍微有一點點餘力,還是會捐款給有需要的組織,因為總有比他們更需要這筆錢的人。也許,為了短期目標已經快沒有餘力了,可是即使只有一點點,一丁點一丁點的投資,都比不投資要好,這些投資最終會打造出好的團隊體質。

avatar-img
53會員
104內容數
這是從 Medium 開始的一個專題,主要是想用輕鬆閒談的方式,分享這幾年軟體開發的心得,原本比較侷限於軟體架構,但這幾年的文章不僅限於架構,也聊不少流程相關的心得,所以趁換平台,順勢換成閒談軟體設計。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Spirit的沙龍 的其他內容
隨著團隊組織方式的改變,個人在團隊中的角色也有了改變,改變至今大概有三個多月,從不同的角度在看事情時,也能得到許多有趣的想法,加上幾次參加C.C. Agile也都能得到意外的驚喜,讓自己反省:自己真的Agile了嗎?真的了解scrum?
這名字是刻意取Stop starting, start finishing的相反,有一陣子在觀察團隊時發現,story/task 的 burn-down線圖會發現到task幾乎都完成了,但story卻還懸在半空中,甚至在sprint結束前一天,還是有不少stories接近完工卻還沒完工。
Acceptance criteria 確保 do the right things,DoD 則是確保 do the things right,兩者合在一起,才會 do the right things right。
一般來說,會斤斤計較估算的數字,一個可能的潛在原因是來自管理層,忘記從哪看來的一句話:總是會得到想要的 KPI。意思是當制定一個指標,總是能得到期望的數字卻不一定能達到預期的效果。
過去擔任 Scrum Master 時,曾觀察團隊用 planning pork 估時超過三或四輪仍無法取得共識,但點數或時數有時只差一點點 (2 or 3),或是差距很大 (3 or 8),若仔細聽他們的討論會發現,之所以會沒有共識,是因為成員都帶入一個心態:如果我做這個 task 要多久?
如果工作的預估和實際的執行是一致的,就不會有《人月神話》中那一句話:用人月的前提必須是人力與工時可以互換的情況下。我並不是說反正執行結果都不會跟預估的一樣,所以團隊成員在 planning meeting 裡可以亂估,而是要回頭想一下,Scrum 裡 planning meeting 的本質是什麼?
隨著團隊組織方式的改變,個人在團隊中的角色也有了改變,改變至今大概有三個多月,從不同的角度在看事情時,也能得到許多有趣的想法,加上幾次參加C.C. Agile也都能得到意外的驚喜,讓自己反省:自己真的Agile了嗎?真的了解scrum?
這名字是刻意取Stop starting, start finishing的相反,有一陣子在觀察團隊時發現,story/task 的 burn-down線圖會發現到task幾乎都完成了,但story卻還懸在半空中,甚至在sprint結束前一天,還是有不少stories接近完工卻還沒完工。
Acceptance criteria 確保 do the right things,DoD 則是確保 do the things right,兩者合在一起,才會 do the right things right。
一般來說,會斤斤計較估算的數字,一個可能的潛在原因是來自管理層,忘記從哪看來的一句話:總是會得到想要的 KPI。意思是當制定一個指標,總是能得到期望的數字卻不一定能達到預期的效果。
過去擔任 Scrum Master 時,曾觀察團隊用 planning pork 估時超過三或四輪仍無法取得共識,但點數或時數有時只差一點點 (2 or 3),或是差距很大 (3 or 8),若仔細聽他們的討論會發現,之所以會沒有共識,是因為成員都帶入一個心態:如果我做這個 task 要多久?
如果工作的預估和實際的執行是一致的,就不會有《人月神話》中那一句話:用人月的前提必須是人力與工時可以互換的情況下。我並不是說反正執行結果都不會跟預估的一樣,所以團隊成員在 planning meeting 裡可以亂估,而是要回頭想一下,Scrum 裡 planning meeting 的本質是什麼?
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
  接續上一篇文章,或許有人會問說:這樣不是很奇怪嗎?明明是有支持的隊伍,為何要連自己不喜歡的隊伍也一起加油?而月光的回答是,那是因為把眼光放遠來看,如果兩隊的比賽十分精彩,是那是不是對整個球隊的聯盟有益?可以之後辦更好的球賽呈現給球迷。更甚者,推廣這一種球類,無論是棒球或籃球還是排球等
Thumbnail
當提到「意志力(willpower)」一詞,你的腦海浮現什麼概念?我詢問身邊的朋友,有人說是一種堅持到底的精神,有人說能抗拒誘惑達成目標的能力,意志力的定義眾說紛紜,究竟意志力是什麼?它對職場工作者帶來哪些影響?我們如何培養意志力?
近日聽到的一句話:選擇比努力重要。 一直在想這句話,以前的待的公司的緦經理,是拼命三郎,非常努力,沒有人能否定,但是選擇錯誤,堅持相信國王的新衣的裁縫師,最後就是賠葬了公司。 就像網路以前的影片,一隻努力爬行的螃蟹,正爬向沸騰的火鍋,選擇方向錯誤,結果是死路一條! 定錨說的選擇比努力重要,在選
Thumbnail
作者 Only 系列文章【一天一千字,進化每一次】,本文章主要討論如何建立一支高效率的團隊,並深入剖析2012年的湖人隊所面臨的角色衝突及解決之道。同時參照貝爾賓博士的理論,提出團隊成員的類型及角色,並探討團隊應該如何適度結合各類型的成員。最後,從主管及下屬的角度提出建議,以改善團隊綜效,化解衝突。
Thumbnail
專案管理師是專案團隊中的靈魂人物,負責規劃、執行和控制專案,以達成專案目標。一名優秀的專案管理師需要具備多項硬實力,才能帶領團隊克服挑戰,完成專案。那麼,專案管理師究竟需要哪些硬實力呢?一起來認識五項專案管理師必備的硬實力,並分享如何培養這些硬實力 專案管理師需要與不同的
Thumbnail
作者 Only 系列文章,【一天一千字,進化每一次】職業與業餘的最大差異,不在於實力,而在於心態穩定度。他們不會因為發揮好而自負,也不會因為失誤而懊惱。相反,業餘選手容易在成敗之間起起伏伏,影響發揮。職業化的關鍵在於,不論現況如何,都能一如既往地用最好的狀態去完成任務。
Thumbnail
作者 Only 系列文章,【一天一千字,進化每一次】,這篇文章探討了在職場上,員工的能力與意願哪個更為重要。通過分析星星標記、向上標記、向右標記和問號標記所代表的不同類型員工,提出了自我驅動力比能力更重要的觀點。這種自我驅動力的主動積極對個人的成就至關重要。文章還探討了自我驅動力的特質和最終目標。
Thumbnail
所有企業在追求賺錢目標的時候,都必須要重視團隊成員工作時的氛圍跟心情。工作氛圍良好,上班心情愉快,團隊才能發揮最好的戰力。
Thumbnail
追求乾淨的程式碼是好的開始,但不要陷入過度設計的陷阱,導致程式難以維護。實際上,考慮團隊狀況和專注於解決真正的問題更為重要。了解公司的規模和現實情況,適時調整工作重心。技術不斷進步,使得寫程式變得更加容易,但這並不意味著工程師的角色會消失。在選擇技術時,也要考慮隱形成本有時簡單的解決方案反而更有效。
Thumbnail
長久以來,我們一直被教育做事情前要先設立目標,有了目標之後再開始行動。習慣的養成也是一樣,但是《原子習慣》的作者James Clear提醒我們,成果與我們設立的目標沒有太大關係,卻與我們遵循的系統息息相關,系統與目標有何不同? Clear表示,目標是我們想要達到的成果,而系統是讓我們達到那些成果的
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
  接續上一篇文章,或許有人會問說:這樣不是很奇怪嗎?明明是有支持的隊伍,為何要連自己不喜歡的隊伍也一起加油?而月光的回答是,那是因為把眼光放遠來看,如果兩隊的比賽十分精彩,是那是不是對整個球隊的聯盟有益?可以之後辦更好的球賽呈現給球迷。更甚者,推廣這一種球類,無論是棒球或籃球還是排球等
Thumbnail
當提到「意志力(willpower)」一詞,你的腦海浮現什麼概念?我詢問身邊的朋友,有人說是一種堅持到底的精神,有人說能抗拒誘惑達成目標的能力,意志力的定義眾說紛紜,究竟意志力是什麼?它對職場工作者帶來哪些影響?我們如何培養意志力?
近日聽到的一句話:選擇比努力重要。 一直在想這句話,以前的待的公司的緦經理,是拼命三郎,非常努力,沒有人能否定,但是選擇錯誤,堅持相信國王的新衣的裁縫師,最後就是賠葬了公司。 就像網路以前的影片,一隻努力爬行的螃蟹,正爬向沸騰的火鍋,選擇方向錯誤,結果是死路一條! 定錨說的選擇比努力重要,在選
Thumbnail
作者 Only 系列文章【一天一千字,進化每一次】,本文章主要討論如何建立一支高效率的團隊,並深入剖析2012年的湖人隊所面臨的角色衝突及解決之道。同時參照貝爾賓博士的理論,提出團隊成員的類型及角色,並探討團隊應該如何適度結合各類型的成員。最後,從主管及下屬的角度提出建議,以改善團隊綜效,化解衝突。
Thumbnail
專案管理師是專案團隊中的靈魂人物,負責規劃、執行和控制專案,以達成專案目標。一名優秀的專案管理師需要具備多項硬實力,才能帶領團隊克服挑戰,完成專案。那麼,專案管理師究竟需要哪些硬實力呢?一起來認識五項專案管理師必備的硬實力,並分享如何培養這些硬實力 專案管理師需要與不同的
Thumbnail
作者 Only 系列文章,【一天一千字,進化每一次】職業與業餘的最大差異,不在於實力,而在於心態穩定度。他們不會因為發揮好而自負,也不會因為失誤而懊惱。相反,業餘選手容易在成敗之間起起伏伏,影響發揮。職業化的關鍵在於,不論現況如何,都能一如既往地用最好的狀態去完成任務。
Thumbnail
作者 Only 系列文章,【一天一千字,進化每一次】,這篇文章探討了在職場上,員工的能力與意願哪個更為重要。通過分析星星標記、向上標記、向右標記和問號標記所代表的不同類型員工,提出了自我驅動力比能力更重要的觀點。這種自我驅動力的主動積極對個人的成就至關重要。文章還探討了自我驅動力的特質和最終目標。
Thumbnail
所有企業在追求賺錢目標的時候,都必須要重視團隊成員工作時的氛圍跟心情。工作氛圍良好,上班心情愉快,團隊才能發揮最好的戰力。
Thumbnail
追求乾淨的程式碼是好的開始,但不要陷入過度設計的陷阱,導致程式難以維護。實際上,考慮團隊狀況和專注於解決真正的問題更為重要。了解公司的規模和現實情況,適時調整工作重心。技術不斷進步,使得寫程式變得更加容易,但這並不意味著工程師的角色會消失。在選擇技術時,也要考慮隱形成本有時簡單的解決方案反而更有效。
Thumbnail
長久以來,我們一直被教育做事情前要先設立目標,有了目標之後再開始行動。習慣的養成也是一樣,但是《原子習慣》的作者James Clear提醒我們,成果與我們設立的目標沒有太大關係,卻與我們遵循的系統息息相關,系統與目標有何不同? Clear表示,目標是我們想要達到的成果,而系統是讓我們達到那些成果的