2019年7月23日 星期二

十日十,人一十

十年勤修業,人品天下聞。
日悟夜自省,一身傲龍魂。
十劍不沾血,十步殺一人。

2019年6月10日 星期一

藏頭詩-朱冠喜遞炯,北妻無有依

朱門羅列紅燈綵,北有故人當遠來。
冠沐焚香且更衣,妻女忙辦下酒菜。
喜見兒時舊容顏,無改鄉音鬢髮白。
遞酒飲盡觥籌交,有志凌雲登高台。
炯炯夜月正當歡,依山遠笑渺滄海。

釋譯:
紅色大門前整齊的張燈結綵,因為遙遠的北方有故人要來。
沐浴完整理衣冠,也焚香迎客,妻女則在廚房忙著料理下酒菜。
見到兒時的好友,容顏未改,實在非常開心!鄉音都沒有變,只是頭髮雙鬢白了些。
拿起酒杯開心對飲,閒聊中兩人皆有高遠的志向,有如登上高台。
明亮的夜月照映著,飲酒正歡喜,身在山中,但卻能遠眺含笑,渺臨廣大的滄海。

解析:
這是一首描寫喜迎故人來,胸懷大志對談甚歡的詩。
男兒心中有大志,就當君臨天下,渺視滄海。
最怕委身在公司中,面對智障主管,怎麼勸薦、提出建議皆是徒然。
睥睨笑道:主管是智障,白痴無藥醫(台語)

2017年1月15日 星期日

藏頭詩-重覆造輪真腦殘,朝令夕改有夠煩


重山漸入雲,朝暮映竹簡。
覆杯三觥籌,令酒不勝添。
造劍志當強,夕夜書不眠。
輪轉再春秋,改頭曾換面?
真心渡絕情,有道勝神仙。
腦中萬卷藏,夠稱文武閑。
殘風猶帶雪,煩酣我自憐。


釋譯:
重重山影逐漸沒入雲海中,早晨的太陽映照在竹簡上。
許多酒杯都倒置著,再倒酒進來也沒什麼意義。
造劍師十年磨一劍,他的志向必然很堅定,書生從早到晚讀書不睡,也是同樣。
如此一年過了一年,自己到底有什麼不同呢?
一片赤誠的真心不怕世事絕情以對,若能效法自然之道勝過當神仙。
腦中滿滿的知識,也堪稱文武雙全了。
冷風吹來還帶著雪,如此令人心煩的情景也只有我自顧自憐了。

解析:
這是一首描寫書生夜讀到早晨,朝日既出,心有所感之詩。
造劍也好,讀書世罷,最初都是心懷著一片赤誠,滿腔熱血才會進入這個領域。
然而一年一年過去,學了這麼多,自己到底有什麼進步?有什麼不同?
如果不懂得利用身邊各種資源,卻重覆製造車輪;如果不懂得擬定計畫,按圖施工,今天講的事明天就自己推翻,那只是白白浪費人生而已。
尤其身為主管者,明明有工具可以做到的事,卻要求下屬自己寫程式來做到同樣的事;
前幾天還說這個非常重要,今天卻說這個不用做了。
實乃腦殘是也!

2016年5月3日 星期二

藏頭詩-上下交相賊 蛇鼠同一窩

上山登絕頂,蛇蛔不見蹤。
下有寒泉水,鼠獾莫相逢。
交縱山綿延,同享青雲風。
相敬三觥酒,一劍破天龍。
賊臣膽懼裂,窩火亂世鋒。


釋譯:
登上絕頂高山,蛇蛔這些害蟲就不見蹤跡。
山下有冷冽的泉水,鼠獾等小動物也不敢來喝。
四周山勢綿延交縱,一同享用乾淨的雲與風。
對著這般美景敬了三觥酒,舞劍一劃,其威勢幾乎要破天而去。
奸臣賊子也嚇到肝膽具裂,胸中怒火為鋒,立誓要平定這亂世!

解析:
這是一首描寫俠義之士登高望遠,高處不勝寒之心境。
在公司偶而會遇到所謂的『奸臣』,但最怕的是『愚君』,一但上下交相賊,就如同蛇鼠同一窩,這個地方勢必會被搞亂,甚至滅亡。

2015年11月30日 星期一

敵我之間


人之所以爭勝敗、拼輸贏,只因覺得對方是個敵手,他的能力與自己相若或勝已一籌。於是不想服輸,求勝心起,有了『敵』、『我』之分。

『敵』之存在,全因為有『我』之存在。為何會把對方當敵人?因為他某些程度上威脅到我,與我匹敵,因此非除之不可。『敵』之一字說到底,只是為了成全『我』。

只要有『我』存在的一天,就永遠有打不完的『敵』。今天臝了這個人,明天又想贏那個人。天外有天,人外有人,敵人永遠也除不盡。

因此,想要無『敵』,就得先無『我』。

沒有了『我』的執著,就沒有『敵』的阻礙。

沒有了『我』,跳脫肉體的拘束,與整個宇宙同在,整個宇宙就是我,我就是整個宇宙。

沒有了『我』,也就沒有必須握緊不放的東西,也沒有必須防禦的弱點,無懈可擊。

沒有了『我』,不再執著自身的小小勝敗,而是與大自然共生共榮。

我即一切,一切即我,那麼又有什麼東西能敵得過我呢?

執著自我,如臨大敵;

忘心無我,天下無敵。

2015年10月12日 星期一

負責與當責


根據維基百科的定義,『負責』是對自己的承諾,『當責』是對別人的承諾。

所以當責比負責更具深度、廣度,唯有實施當責,把對的事情做對,才能既有效果又有效率。

最近我們部門要新增一個特定的程式功能,因此小主管指派幾個人開始看新雲端架構的東西,並要求做出Demo好讓他報告。

但問題就在這!

本部門主要負責的是開發應用軟體;雲端架構的東西是由另外的部門負責。只因為架構部門的人力不足,所以這責任就落在我們應用部門的身上了。

在正常的情況下,應該是由架構部門去把新的架構做好,而我們應用程式無須任何更動,就能直接使用該功能。

因為架構層面的東西不若應用軟體,還要考量硬體設備、網路拓撲、使用者帳戶管理、流量控制、收費機制、容錯與備援等要素。這些關鍵因素早就在原先雲端架構中行之有年,應用部門自然也不懂得如何考量這些要點,只會單純的Coding做出個會動的程式,僅是個可以動的玩具,是不可能拿來做商業用途。

再者,一旦新架構出現問題,首先被砲轟的也一定是我們部門,畢竟程式是我們寫的。架構部門大可以袖手旁觀,就算想幫忙也幫不上。

問題回到根本,是一開始就不該讓做應該軟體的人來著手做新的架構。所謂『術業有專攻』,架構層的東西就該由架構部門去建置,箇中奧妙他們是瞭如指掌。而軟體部門就專注在應該軟體開發上,無須在意架構怎麼改。這才是達到軟體架構的『層層展開、層層負責』。正如物件導向裡所說的『封裝』,使用者不需要了解它背後架構是怎麼做,只要知道怎麼用就行了。

人力不足不是藉口,大主管應該想辦法補齊架構部門該有的資源,而不是如此挖東牆來補西牆。事情有人做,只是『負責』;要讓對的人做對的事,才是『當責』。

2015年9月14日 星期一

擇善固執 vs. 隨波逐流

最近我負責的APP被報了一個issue,當使用者的名稱太長的時候,會導致UI顯示不正常。於是我便著手開始研究,透過CSS/JavaScript的方法解了這條issue。

然而在報告時,主管聽到我花時間解這條issue,卻對我嗤之以鼻,說:『一般人不會用那麼長的名字啊?解這條不會覺得是在做白工嗎?不會覺得自己很白痴嗎?』

當然主管有他的考量。對他而言那是很少發生的case,花時間解它不合效益。但在我看來,解這樣的問題卻是必須的!

先從APP談起,一般的應用程式介面上的文字有兩種來源,一者是開發者自定的,二者的使用者給的。開發者自定的文字是程式開發者可以預知它的內容、長度,因此可以在開發階段就把它調整到最適大小;而使用者給的文字,卻是程式在使用的過程中由使用者輸入或產生的,像是User Name、E-mail、File Name等等。

正因為我們無法預知使用者會輸入什麼樣的文字,所以程式必須有所防備,若文字太長、有空白、有特殊符號、甚至沒有輸入,種種情況我們都要去考慮到,並做適合的處理。

花時間在這上面,當然是值得的!看到輸入一長串的使用者名稱,而我的程式能正常的顯示出來,那不正是一種成就嗎!?面對主管的這種指責,我問心無愧!程式是要帶給人們幸福的,只要有可能出錯的地方,無論再小,也該解決!