吳旻泰巖網路工作室
前兩天,我為我負責的專案在集團內部做推廣活動。這是乙個為各業務線提供**實時**資料接入服務的專案,目前已經有兩個業務線在使用了,總體效果還不錯。
當做完開場白後,我猛然意識到,這個專案已經明確地帶上了我的性格。我說:
1
、複雜性是軟體的死敵;
2
、我對簡潔性有偏好;
3
、我對複雜性有偏見。
對任何一項需求,我會直覺式的判斷它是不是我的核心業務。如果是,那我就安排在業務架構中;如果不是,我更傾向於不做,或者,換個地方做。
模組的職能是我一直在努力劃分的事情。可做可不做的非核心功能,我傾向於不做,當然這帶來了簡潔性,但有時候也會帶來麻煩。舉個例子說,我們發現下游的資料接收和處理能力有時會達不到設計要求,這樣就會導致資料堵塞的情況。本質上,所有的連線都有是緩衝區的,只不過不足以解決下游的效能問題。想到的方案有兩個,一是直接「踢」掉對方,當然這樣比較暴力;另乙個是為對方提供更大的緩衝區,這樣比較人性,但大的緩衝區要是也滿了又該如何處理,也是個問題。
最初我選擇了簡潔性,暴力就暴力吧。達不到處理速度,那還玩什麼呀!相當一段時間,這個辦法還是有效的,畢竟一般的開發人員還是比較在乎效率的。直到我遇到了乙個「倔頭」,你把它「踢」下去,它馬上就頑強地連上來,一幅滿不在乎的架勢。
這就不光是技術問題了。讀書的時候,我們先戲稱這種情況為「人不要臉鬼也愁」,然後就做出改變,以適應這一特殊形態。我的隊員建議在程式裡為每乙個下游設乙個緩衝區,緩衝滿了再將對方「踢」下去,至少這樣可以大量減少「踢」人的動作。我知道這意味著什麼,如果真的沒有其它辦法了,我會考慮這麼做,但目前還沒到山窮水盡的地步,所以我不贊成。
我接著選擇了簡潔性。提供這麼強大的緩衝服務,不是這個模組必須完成的。換句話說,這個緩衝服務帶來了與核心功能無關的複雜性功能,對這個模組的核心功能來說,未見任何收益,但從風險控制的角度講,損失卻太大了。
我建議單獨完成乙個資料緩衝服務的功能模組,以應對這一變化。首先,不增加原模組的複雜性;其次,兩個模組公升級時,都不需要對方也同時進行編譯,或者同時互相測試。至於這個緩衝模組,可以考慮自己開發,也可以考慮選擇第三方工具。
活動結束後,有同事問我能不能提供訊息「訂閱」功能,就是說,他不想接收的訊息,我們就不要再發給他了。應該說,這個與專案最初的設計模式有關,做個比喻,我們最初的定位就像是乙份「雜誌」。你去報攤買份《讀者》,然後給雜誌社提建議說,能不能給你出乙份只帶你想要的欄目的《讀者》,比如不要有廣告,不要有笑話。換個角度再思考一下,如果你是雜誌社的編輯,你該怎麼回答?
從我的角度講,我提不提供「訂閱」服務,都與核心功能無關。雜誌裡面有你不想看的欄目,你選擇不看就是了,這也不是什麼不可接受的事情。很顯然,他不太贊同我的觀點,他補充說,某某專案是提供的。
我明白了他的表情:他是乙個「技痴」。
要不要提供訂閱,在專案一開始就提出來了,而且強烈要求提供訂閱服務的人,就是要使用全部訊息的專案的負責人。我當時說:如果你也要訂閱,那我就把這些訊息都取消,因為這些訊息就是給你用的!
其實他的話我聽懂了,他是在告訴我:我可以不用,但你不能沒有。沒有這項服務,就說明你技術水平不先進。
技術先進顯然是個不錯的賣點。我覺得這次我面臨的是個使用者體驗的問題,或者說,是個對專案定位的理解問題。我可以考慮提供訂閱服務,但我絕不會在核心功能裡附加訂閱功能,這不符合簡潔性原則。
我在思考像「緩衝」和「訂閱」這樣的功能該向哪個方向發展,顯然保不准什麼時候又會出現乙個看起來很重要的非核心功能,那時候我們又該怎麼辦。
是該有個資料匯流排服務的時候了。如果有了這個資料匯流排,我們的資料都可以推給資料匯流排,像「級衝」和「訂閱」等服務,資料匯流排完全可以做得非常強大而又專業。 就像
「蘋果」深深地帶著賈伯斯的烙印一樣,我相信,軟體也會擁有與它的團隊相似的性格。
平和性格與力量性格
生活越久,發覺周圍交識的一些人讓自己的內心不得安寧,充滿失望。生活就是這樣,面對形形色色的不同的人物,生活需要有智慧型。我正在摸索這種智慧型。穆林三 這個人比較奇怪,以前喜歡發洩表現慾,內心又充滿了自卑特性。有小聰明,卻沒有大的智慧型,甚至工作到現在需要什麼,都不明確,以至於他越走越迷茫,越過越不明...
專注的性格
早上在空間看到一篇如何教育小孩的文章,有些感想。專注的性格很難得。用一句話來說就是乙個時間做一件事,需要工作,需要學習,也需要玩,明確各 系統 之間的邊界和通訊方式,降低系統之間的耦合,整個系統就會清晰,用軟體工程的思想就是這樣。合理安排時間和估計時間也算一種比較重要的能力。小時候很容易拖沓,比如說...
專注的性格
早上在空間看到一篇如何教育小孩的文章,有些感想。專注的性格很難得。用一句話來說就是乙個時間做一件事,需要工作,需要學習,也需要玩,明確各 系統 之間的邊界和通訊方式,降低系統之間的耦合,整個系統就會清晰,用軟體工程的思想就是這樣。合理安排時間和估計時間也算一種比較重要的能力。小時候很容易拖沓,比如說...