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等等。

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

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

2015年8月18日 星期二

人生咻!碰!閃!

許久以前買了新平板後,有玩一款手遊《雷霆戰機》。持續一陣子發現裝備實在很難打,就放下不玩了。

直到前陣子換新手機,又開始玩了起來,這次則是用另一個新帳號來玩。這過程中頗有所悟,隨手記之:

(1) 若能持續每天努力一點,將會成就非凡
若當時我每天玩一點,則現在戰力應已破2萬

(2) 就算起步慢,只要持續努力,依然能超越原地不前者
我這新帳號只玩了約一個星期,戰力就破萬,超越原先的舊帳號

(3) 與其亂槍打鳥,不如專精修練
這款遊戲的好裝備實在難得,要升級還得有許多材料、許多同樣裝備、加上許多錢才辦得到。剛開始只想什麼裝備都擁有,後來才體會到專精在某一項,把它練到極致!才是快速變強的王道!

(4) 資源分配很重要
由於資源有限,每天體力就只有100點,要投資在哪幾項就變成一門學問。

(5) 有時就算能力不足,也可挑戰看看
打到後面會發現戰力低於該關卡,但是仍可挑戰看看! 許多時候挑戰成功,就能開啟更新的增強功能!戰力即可大大的提升囉!


2015年8月13日 星期四

藏頭詩-人一藍腦就殘;蛆黨倒台灣好

人疾疾風停,蛆鑽春泥似火星。
一曲未盡酒朋黨,撩弄幾絃音。
藍天天正晴,倒臥山崗嘆零丁。
腦中藏書高如台,不如成灰燼。
就欄處,眺遠灣,邀風暢懷飲。
殘雲似雪霽,好過秋山蜀道行。

傲峰


平生傲嘯萬般空,
異數幻測莫一同。
堪來幾許雲佾曲,
昂步雲天我為峰!

2015年7月29日 星期三

藏頭詩-資管第一

資心掛意半湖春,
管他秋風幾臨門。
第居閒吟廣陵曲,
一酒獨敬對影人。

藏頭詩-資訊經濟

資天通地掌神機,
訊因料果步玄棋。
經世不務風塵事,
濟化俗庸問天敵。


收發自如

寫程式最重要的是要能『收發自如』。

,能用簡單幾行程式就解決問題;
,能將複雜的問題分成幾個子項目各個擊破。

更上一層的境界是『意發並行』,腦中想到什麼,馬上就能打出來。
再上一層的境界是『發在意先』,在腦中想法還沒完備之前,雙手已經喀啦喀啦把程式寫完了。
再上一層的境界是『夢幻潛能』,在幾乎睡著的狀態下,驚醒之時,程式碼已經寫好了!(大四做專題、研二寫論文 都曾進入過這個狀態o'_'o)

最高境界則是『無招勝有招』,問一個問題,一句話切中要害,打退PM/Leader無理的要求,省去將來1個月~半年的白工!

讀莊子偶得

閑情山水鯤化鵬,
逍遙天地聖無功。
搏扶千里何等翼,
蝶夢夢蝶一莊周。

為學

船過水無痕,不覺岸已深。
逆流舟日上,貴在心不陳。
蒼穹有時盡,學海無垠根。
一書一杯酒,清靜忘此身。


釋譯:
船划過之後,水面上就無痕跡。但是不知不覺中已經離岸很遠。
逆流行舟不斷往上走,是貴在內心不守舊、不安於現況。
天地總有結束的一天,而學海卻是無邊無際。
看一本書,喝點小酒,清靜快活,幾乎都要忘我了。

解析:
一天不要學太多,每天都要學一點。
哪怕是讀了一句話,也是進步。

藏頭詩-將帥無能,累死三軍。己事已畢,閒來寫詩

將相馳文武,累世功名枯。己任不足道,閒吟醉茅廬。
帥旗當頂立,死有何嗟夫?事歷畫雲彩,來去乘鴻鵠。
無盡分合路,三國歸一途。已史成演義,寫滿荒唐書。
能否佇城頭,軍威破天出。畢飲送行酒,詩血笑匈奴。


藏頭詩中詩:
將帥無能,累死三軍。己事已畢,閒來寫詩。

釋譯:
將軍宰相各顯文武,僅管當了幾世的官,最後還是萬骨枯。自己的重責大任不足道,只想著有朝一日能在茅廬喝酒享清福。
帥旗應該頂立著,死又有何可怕?事情過去就像在雲彩作畫,歸去的時候能乘著大鳥就已心滿意足。
自古以來國家分分合合,三國鼎立最後也歸一統。它的歷史就變成了演義,寫成精彩的故事。
若能站立在城頭上校兵,軍威嚇嚇幾乎要突破天際。喝完了這杯送行酒,用血寫詩嘲笑完匈奴,就出征吧!

解析:
每次事情都做完了,但是要等別人的先弄完,我才能做下去。
很多事明明可以分開來做,你既然是要給所有APP用的SDK/Common Component,就應該排在APP release前先完成,而不是所有東西都擠在同一天,你等我我等你。如果你弄到半夜才完成,我豈不是要空等到半夜?
空等之餘,寫此詩自娛之。

藏頭詩- PM腦殘,小主管智障


匹馬單槍殺聲隆,小小阿斗睡懷中。
野火銀盔映白馬,主軍副將亡血紅。
沐傷突圍雄姿在,管叫曹營膽裂崩。
腦怒惜才令生擒,智謀反成破網籠。
殘雲歸來玄德泣,障壁江山趙子龍。


釋譯:
單槍匹馬殺聲隆隆,小小的阿斗卻在懷中睡著。
銀盔上照映著戰場種種,敵軍的主將副帥也倒臥血中。
渾身傷口仍盡力突圍,這雄姿讓曹營看了也嚇破膽。
曹操為了惜才下令生擒,自以為聰明反而讓對方給逃了。
負傷歸來,這忠心令劉備不自哭泣,能保衛江山的也只有常山趙子龍了!

解析
『匹野沐(PM)腦殘,小主管智障。』這是不變的定理。
以敝公司為例,PM完全沒技術知識,總是亂開規格、亂想新feature,反正有新東西就有貢獻嘛!而小主管也不懂得權衡,只是照單全收,叫RD做就是了,反正做得出來是他的貢獻,做不出來是RD的責任嘛!



藏頭詩-讓子彈飛


讓酒拌肉下火鍋,
子波成霧風吹泊。
彈牙滑似美女肌,
飛仙騎驢升天國。



釋譯:
把肉片沾些酒,下火鍋去煮。
鍋裡的湯滾得冒泡,像湖泊水面上起了霧,風又吹過去讓它飄散。
這肉,彈牙又滑嫩(?),就像是美女的肌膚一樣。
吃下一口,就像神仙一樣,騎著驢升上天國啦!

解析:
電影『讓子彈飛』開頭有提到要做詩,要有風,要有肉;要有火鍋,要有霧;要有美女,要有驢!故而做此詩以娛之。

2015年7月8日 星期三

藏頭詩-昌鴻快來 無災放假


昌日西暮景猶紛,無處不是故鄉人。
鴻鵠振翅醉當晚,災星隱敝夢正醇。
快活閑情縱山水,放浪形骸忘秋春。
來者貴客當上座,假手明月玩詩文。



釋譯:
夕陽西下,景色仍然美好。放眼望去到處都是故鄉人。
滿懷志向在今夜痛快喝酒,無災無難的夜晚鄉民都好夢正眠。
快活自在地忘懷山水,不顧形象痛快的喝吧。
有貴客來訪請他入座,一起以明月為主題來吟詩作文吧!

解析:
近期有一颱風名為『昌鴻』,因想放颱風假又不想有災害,故作此詩自娛之。

2015年6月8日 星期一

藏頭詩-廢中之霸


廢城雖破旗猶存,
中軍百萬歸幾人。
之死靡它雄心在,
霸業捲土江東魂。



釋譯:
城池雖然破廢了,但旌旗仍然豎立著,
中軍曾有百萬大軍,而今剩幾人歸來?
見到軍士至死不變的忠誠,使我雄心仍在,
我江東子弟若能捲土從來,霸業必定能成。


解析:
這是一首詠懷楚霸王項羽之詩。
項羽昔日曾雄心萬丈,將士強兵如雲。卻在垓下之戰敗後,自刎烏江邊。
若他的雄心仍在,捲土從來,必定能再度成就一番霸業。

項羽霸王兵敗自刎,只因著一字『恥』。兵敗劉邦,恥見江東父老。
而今台灣卻有人恬不知恥,在位七年,國家被他搞得烏煙瘴氣,經濟疲乏,民不聊生,治安極差。
不久前還發生了八歲女童被隨機殺害,社會人心惶惶!
法務部為了轉移焦點,執行槍決六名死囚。
而他馬英九老人家卻說:『台灣治安是20年來最好』!??

如此不知羞恥、不知百姓疾苦、自顧享樂、cosplay、跑步、軍營一日遊的人,居然能在位七年!

這時我才知道,原來人的廢,是沒有極限的!

廢中還有一廢廢。兩人山前來比廢,看是你的廢,還是我的廢。

若要人不廢,除非己莫廢。

廢也!廢也!

馬英九,廢中之霸也!

2015年5月20日 星期三

讀書三法


每本書都是作者的智慧結晶,一生知識與經驗的累積。

因此,一本書至少要讀三遍:

第一遍,以書為師
亦即把書當成老師一般,自己則為謙遜好學的學生,全盤接收書中所講的內容,消化它所提供的思想與知識。並且以這些知識為基礎,進到下個階段。

第二遍,以書為友
把書當朋友。好朋友間是會互相討論、互通有無的。因此這個階段就是要旁徵博引、舉一反三。看到一件人事物,就要去聯想它相關的人事物,相互對比。

第三遍,以書為敵
顧名思義,就是把書當成敵人。這個階段要開始質疑書中的內容,這樣講合不合理?會有哪些影響?合不合邏輯?就算遇到無法反駁的好書,也可以去想:有沒有其他更好的做法或想法?

一本書經過了這三個階段閱讀,你除了已經充份掌握書中提供的知識,自己也補充了許多相關知識,更進一步對它提出質疑,想出更好的知識。

此時,這本書的價值不再是上面的標價。它已變成無價之寶,存活在你的思想當中了。

2015年4月21日 星期二

藏頭詩-腦殘沒藥醫 我的觀察啦


腦內乾坤映日輝,我曲高低伴月垂。

殘林曉楓醉當晚,的中真意三觥歸。

沒羽疾箭當射馬,觀星高樓且悲摧。

藥強濟人不濟心,察嚴固城難固壘。

醫賽華陀文勝孔,啦呼醉指黑李逵。


釋譯:
我腦中的智慧像太陽一般耀輝,我彈奏的歌曲也讓月亮垂下頭來。
在不甚茂密的紅楓林中喝酒直到晚上,但如果是有意的要喝,三杯也就足夠了。
殺敵時,我那沒羽箭應當先射馬,擒賊擒王,讓敵方的觀星樓看著主將星落而難過。
靈藥雖強能治人卻不能治心,城池守衛再嚴密也難以像堡壘一樣完固。
自傲我的醫術勝過華陀,文才勝過孔夫子,武學方面嘛,啦呼大叫一聲!
即便黑旋風李逵我也不放在眼裡!



解析:
這是一首描寫文武全才的武將,在楓林醉酒,傲視自己一身的好本事!
無論是文才、武學、曲藝、醫術、交戰、攻城、喝酒,是樣樣精通啊!
反觀最近某位炎姓藝人,自稱『下雨會造成地震』,此言一出,貽笑大方!
無獨有偶,馬總統也稱『大巨蛋採封閉式』是為了『避免冷氣跑掉』!?
此言著實笑死人。
您是地理系的嗎?您是冷氣系的嗎?
若這等禍國殃民的元首不思長進,繼續誤國,那麼台灣人民也只有『賈霸丹系』了……。

2015年4月20日 星期一

堅持做對的事


工作了五年有餘,漸漸也有些感觸。

或許對大多數人來說,能在一間公司待上五年,是一件非常不容易的事。但我自從進公司第一天,就立志至少要待上五年才能走!而今,我辦到了!

支持著我的力量,不在於公司有多好、多賺錢,亦或是同事上司人有多好、多和諧。這股力量源自於『堅持做對的事』。

每天總是要面對上司交辦下來的事務,有的急重輕緩,有的卻是無理要求。剛進公司的我,總是事不分大小,有交辦的事就認為有必要去完成。這些年來,卻練就了另一套做事方針:『先想對不對,再做』。

上司面對各個大頭的壓力,常用『以事了事』的態度來做事情,也就是說,被要求要做A,就趕緊去完成A,就算過關了。然而這並非正確。有時之所以有這項需求,並不是少做了A,而是要少做BCD,或多做EFG,才能真正根除,達到最終目的。而上司們卻不然,頭痛醫頭,腳痛醫腳,不願多想,有做有交待也就算了。這種態度正是公司久久不能進步的原因之一。

比如Release,一個軟體產品的Release,須先經過PM定需求、UI定使用者介面與流程、製作所需UI圖、RD進行開發、QA進行測試,這樣一連串算一輪,一個『好』的產品,至少要經過三、四輪,從alpha、beta、進展到RTM,才能算得上是一個夠『好』的產品。

但實際上呢?卻非如此。PM為了績效亂想新功能,反正有新功能就代表有進展嘛!而RD Leader面對這樣的需求,卻是全盤接收,反正先接再說嘛,能不能做是下面RD的事。於是乎,RD成了犧牲品,每天有做不完的事了。

這些需求,真的都是『對』的嗎?有先經過使用者survey嗎?有比較過市場上同業的產品嗎?有考量過使用者真的需要它嗎?有考慮過實用性嗎?有預估過時程與人力成本嗎?
通常答案是:沒有。所以就變成了『先做,再想對不對』。

這就全反了!因為得『先做』,所以時程、人力成本全都先耗下去了。之後才回過頭來想:是不是真的需要它?想了又想,大多數都是選擇取消,因為怕之後需要面對更多未知的問題。然而『沉沒成本』都花下去了,再也無法回收……。

那麼,在這樣的公司,為何還要待那麼久不走?原因之一,是因為我待久了,自然有小小的影響力去做『對』的決定。團隊中有一位新人,很有想法,時常舉出目前產品的錯誤,並想好要怎麼改比較適合。但在會議中總是被Leader和一些資深的同仁打壓。原因無它,因為他們怕改變,怕挑戰,怕未知。不改變、不挑戰,就永遠無法進步。

而我,待了五年,雖然提出的想法也未必能被全盤接受,但至少能拒絕掉不少無理的要求,簡單的一句話,或問了一個關鍵的問題,就打消PM、Leader的無理要求,也避免掉將來浪費的青春!『無招勝有招』,這才是最高境界啊!

這也就是我繼續留下來的原因之一,能發揮我的影響力,去做對的事!雖然公司仍有努力空間,至少這條路我走得驕傲,走得滿足!