編程哲理小故事:Tina的運動會方陣

自從接到任務後,Tina一直 煩惱着如何讓這羣繁忙又缺少才藝的程序員在運動會開幕式上作出一個有趣的方陣表演。程序員

 

接到了運動會的方陣表演的任務

時間回到1個月前。架構

Tina正在工位上繁忙地進行着下一期準備上線系統的測試,這時候老大跑了過來微服務

「Tina,咱們公司要舉行運動會,開幕式時有方陣的表演,你幫忙組織下?」學習

Tina內心咯噔一下,來了一個苦差。測試

「方陣?就是像奧運會開幕的時候,運動員在體育場跑道上走,展現風采的那種?」優化

"對,到時要一個6*6共36人的方陣,到時會在市裏最好的體育館進行,公司的大領導會在主席臺看咱們表演,爲了咱們部門,你要加油呀"編碼

「嗯,我會加油的,但36我的很多呀,你們最近都挺忙的,感受我拉不動他們參加呀」,Tina苦笑道。設計

「怎麼會呢,我看你在男生中還挺有人氣的,不過你很差意思拉人的話,人的問題我解決,你策劃組織好表演就行」視頻

 

 

 

進展緩慢的方陣表演

方陣的排練一週一次,一週一週的過去了,但總體的效果並無獲得質的提高,排練時老是湊不齊人,舞蹈也相對複雜,交互不少,你們也沒能很好的磨合,方陣表演這件事幾乎成了Tina的心病blog

「萬一到時咱們成了最差的方陣怎麼辦?我會讓老大很失望的」

今天還沒到排練的時間,但她提早到了場地,擔憂着,糾結着。

「方陣排練成怎樣啦?」今天老大竟然親自過來了。

「咱們今晚繼續排練,但效果還不太理想」

「有遇到什麼困難麼?」

「唉,一言難盡,待會你看下把,也提一下意見,這個是咱們排練模仿的視頻,你也能夠看下」

老大把脈

老大在旁邊看着大夥排練,沒有作任何評價與指導,只是在久不久時用言語激勵一下你們。

今天的排練結束了,大夥都散去,Tina和老大留了下來。

「今天的排練我看了,咱們的整齊度還略有欠缺,咱們的隊伍就像你描述的同樣,常常會有人臨時有事,沒辦法很好的達到一個總體的效果,磨合度有待提高」

「嗯,對呀,但我已經盡力選擇你們都有空的時間了,但要每一個人都有空是在是太難了」

「對,這是一個問題,人越多越難協調與同步,咱們經過初中數學就能夠知道,協調的難度是隨着人數的增長指數級上漲的」

「嗯嗯,但也沒辦法呀,表演方陣要求就是要這麼多人」,Tina應答着,內心倒翻了個白眼,好好的幹嗎忽然扯上數學

「對,總人數是沒辦法減小,但若是分紅多個小組,小組人數比較小,是否是集齊一個小組的人更爲簡單點?咱們可讓各個小組各自排練,而後每週一次像如今這樣合起來排練。對於相似規模致使的問題,咱們大多均可以用分而治之的策略解決,就像公司裏把咱們的軟件分紅了不少子系統同樣」

「啊?那這樣子要怎麼分組,這是一隻完整的舞蹈呀」

「一個完整的舞蹈必然是每一個人的交互的有機結合,但舞蹈裏必然會有一羣人之間的交互更爲密切,咱們能夠把這羣人合成一組,那隻涉及他們內部的舞蹈叫能夠他們內部自行排練了。」

「但這個界限不是很清晰把?」

「對,更爲密切這個概念確實不是很清晰,因此這也是組織設計的藝術之一,甚至於這是一個須要試錯的過程。咱們的軟件編碼同樣,強調高內聚低耦合,讓通信交互成本降到最低的理念是一致的。但咱們不能由於沒法達到最優的設計而不去分組,分組可能不是最優,但進行了分組就已經在進步了,咱們能夠在繼續排練的過程當中繼續優化」

「嗯嗯,想不到編碼與方陣排練還有這樣相似的東西,哈哈」

「嗯,世界有不少東西是類似的,像公司的組織架構、各類天體系統、人類的各類器官組成等等都有相似高內聚低耦合的特性存在,因此在我看來一個優秀的有悟性的碼農能將其知識遷移到不少領域」

「好,那我認真研究下視頻,而後對團隊進行分組,一個分組的大小多少合適呢?」

「太陽系有8個行星,地球只有1個月球衛星,這都是因爲它們質量決定的。一個分組最大能有多少人這實質是由組長的我的能力決定的,組長能協調的人數就是這個組人數的上限,但固然啦,具體人數要和舞蹈自身的須要相結合。組的大小能夠取‘舞蹈分組所需人數’和‘組長最大可管理人數’的較小值。」

「這是讓一個組儘量大的意思麼?」

「對的,一個組應該在可控範圍內儘量的大,由於分組小意味着分組多,而分組多,協調多個分組就會產生更大的成本。當分組不少,甚至於把一我的當作一個組的時候,就跟你當前面臨的狀況同樣。對應於咱們軟件領域也是同樣的,對於微服務/組件應該拆成多大這個問題,我的理解組件的大小應該在一個普通程序員能理解、控制的複雜度範圍內,程序員就是這個微服務的類、模塊的組長」

「嗯,明白了。我儘可能將其分組大小控制在合適範圍內」

「還有一件事就是,每一個小組指定了組長以後,以後組內的排練能夠適當程度的放權,這樣的話,你纔有更多的精力去考慮咱們組與組之間的交互應該怎麼進行。但固然啦,若是你得精力足夠的話,去了解和支持某些個特別舞蹈特別複雜的小組的進展也是挺好的。對於人的能力來講,能作高層設計同時也能作底層執行固然是最理想的,但在程序代碼裏,一個模塊既處理高層邏輯又處理底層邏輯的話,是一個很差的表現,這會讓咱們的代碼更難以理解」

「哈哈,我原本只想看下怎麼排練好方陣,想不到還順便學習了這麼多編碼知識,感謝老大呀!」

「嗯,剛剛的說的都是些簡單的理論,至於落地到實踐還會複雜的多,細節的處理仍是得靠你呀,加油~」

最後的展現

有了一些基礎理論的指導,Tina的方陣隊伍的組織架構在排練中演進,各個小組有了組長能自發的組織組內的訓練,各組的表演水平獲得了很大的提高。到集體彙總排練的時候,實際上就是以組的維度進行交互,而非以前的以人維度的磨合,所以集體彙總排練的效率也獲得了提高。

「起步走!」,方陣前進的音樂和口令在體育館正式響起,方陣邁着整齊的步伐往主席臺走去。Tina看着隊伍,再回頭看來下老大,嘴角泛起了自信的微笑。

 

(最近看了本如何寫小說的書,實踐一下小說風格,哈哈,若本文有錯誤缺陷,請批評負責幫助我進步。若本文對你有所啓發和幫助請不吝點贊轉發。這對我真的很重要,拜託了~)

 

做者簡介

多年金融行業經驗,現爲某Top2互聯網銀行高級搬磚工,曾在兩家TOP3股份制商業銀行及一家互金創業公司工做(架構、核心業務主程),EasyTransaction做者,歡迎關注我的公衆號,在這裏我會分享平常工做、生活中對於架構、編碼和業務的思考

相關文章
相關標籤/搜索