2012年4月22日 星期日

擁有

當你擁有一個東西的時候,可以享受它帶來的快樂,同時也必須背負著它隱藏的痛苦。

擁有的痛苦,維持的痛苦,抉擇的痛苦,以及失去的痛苦。

 快樂的根源是因為擁有它,痛苦的根源也是因為擁有它。

 但生而為人,生下來時全身光溜溜什麼也沒有,走的時候即便在手上塞再多手尾錢,也無力帶走。

 世上一切人事物,就像登山的沿路風景,

 曾經為它目炫神迷,曾經身入其境,曾經聽聞蟲鳴鳥叫,曾經品嚐花草芬芳,

 一但走過去之後,就不再擁有。

 如果不曾擁有過,又何來的快樂與痛苦?

 扛在肩上的是重量,能放下的才是智慧。

2012年4月15日 星期日

三贏

最近倒垃圾時,都會看到一位老先生推著推車,待在巷子旁,向人要回收的資源。

由於巷子小,他怕擋到人車出入,所以總是把推車放在角落邊,自己走過來,帶著微笑跟每一位要倒垃圾的人,詢問有沒有回收的?

汐止經常下雨,也總會看見他穿著雨衣,默默頂著寒風淋著雨,站在推車旁等著。

而我最近也都會把回收資源先給老先生。

對於倒垃圾的我們來說,回收資源給誰其實都沒差,反正包一包,丟了就走。

但是對老先生和清潔人員來說,卻有莫大的差別。把回收資源給老先生,可以幫助他多一口飯吃;同時也可以減輕清潔人員的辛苦,他們領的是固定薪水,少收一點就輕鬆一點。

同樣一件事,試著做不同的選擇,或許就能創造雙贏局面。

而在這個小故事卻是三贏,因為幫助了老先生、清潔人員,連我自己也感到歡喜!

2012年4月10日 星期二

JavaScript Performance Tip

1. 將所有<script>標籤放在頁面底部,緊靠</body>的上方。這樣可以確保頁面(DOM)在script運行之前完成解析

2. 減少載入太多<script>。頁面的<script>越少,頁面的載入速度就越快。

3. 使用non-blocking方式載入javascript:
(1) 在<script>加入defer屬性 (只適用於Internet Explorer或Firefox 3.5以上)
(2) 動態創造<script>元素,用它下載並執行代碼。例:document.createElement("script")
(3) 使用XHR(XMLHttpRequest)物件下載代碼,並注入到頁面中

4. 減少使用global variable,盡可能使用local variable

5. 若必需用到多次global variable,用local variable存下來,減少呼叫 global variable的次數。例如:var target = document.getElementById('id')

6. 使用innerHTML代替createElement (只適用非webkit-based browser)

7. 在for迴圈時,不要用elements.length當終止條件,因為每次迴圈都要取得一次elements.length的值。應該用一個變數存下elements.length的值

8. 需要多次存取array[index]的值時,用一個變數存下array[index],避免每次都要搜尋array一次

9. 用DOM properties取代elements nodes:
element nodes                property(faster)
-----------------------------------------------------
childNodes                     children
childNodes.length            childElementCount
firstChild                        firstElementChild
lastChild                        lastElementChild
nextSibling                     nextElementSibling
previousSibling                previousElementSibling

(IE只支援children)


10. 需要取得複雜elements時,使用document.querySelectorAll(),而不要用document.getElementById跟document.getElementsByClassName。
例如,要取得所有id="menu"的<a>tag,可以用:
var elements = document.querySelectorAll("#menu a");
//其實有點像jQuery的寫法

而不要用:
var elements = document.getElementById("menu").getElementsByTagName('a');


11. 要改變css,就一次一起改變,或者直接改className:
//這樣會很慢
var el = document.getElementById("mydiv");
el.style.borderLeft = "1px";
el.style.borderRight = "2px";
el.style.padding = "5px";

//這樣快多了
var el = document.getElementById("mydiv");
el.style.cssText = "border-left: 1px; border-right: 2px; padding: 5px";
//若要附加style設定,可以用 el.style.cssText += "border-left: 1px; border-right: 2px; padding: 5px";

//這樣也快
var el = document.getElementById("mydiv");
el.className = "newClass";


12. 減少UI重排。要做大量appendChild到頁面之前,先把style.display = 'none',再進行append,最後再style.display = 'block',以減少畫面一直更新的負擔


13. 盡量不要用for-in 的迴圈,改用for或while改寫


14. 在if-else的判斷條件中,比較容易出現的條件放在前面,以減少執行判斷的時間


15. 少用遞迴


16. 避免產生暫時字串:
//這樣會先產生一個"onetwo"的暫時字串,會很慢
str += "one" + "two";

//這樣快多了
str = str + "one" + "two"



2012年4月9日 星期一

慶幸

公司大樓的兩邊側門,是所謂的『吸菸區』。每天要進公司前,非得經過吸菸區不可,因此一大早就會看到一堆面帶愁容的人,在那吞雲吐霧。

 這是很可笑的設計,等於讓來訪的賓客,未進門就看到這些人無精打采,失神落魄的樣子。

 而我要進入公司,也必須先穿越過他們。

 在十公尺前,吸氣,然後開始閉氣!進入快步模式,快速通過煙霧!

 等到進入公司,遠離他們數十公尺後,才能呼吸。

 此時,都會慶幸,自己還活著,

 心中也感傷,他們正在死著……

 但換個角度想,我不也正在死著嗎?

 而他們,不也正在用他們的方式活著嗎?

 每個人都正在死著,也正在活著,兩種狀態是同步進行。

 真正該慶幸的,是這當下,我們還存在著



2012年4月8日 星期日

十個女人也無法一個月就生出小孩

專案管理有一句經典的名言:『就算給你十個女人,也無法在一個月就生出一個小孩』(原始版本是九個,但我認為十個比較恰當)~

 這意謂著,有些事情就是需要時間,就算投入再多人力,也對事情沒有任何幫助。偏偏許多公司就是喜歡機械式思考,把人當機器來使用,做事情的規劃也都用 人/月 也計算,把一個大任務切成幾個小任務,再分配每個任務由誰去做、需要多個工作天。

 我所在的公司亦然,甚至有過之而無不及。每件任務事前規劃得好像很詳細,人力估計精準到有2.5天、1.75天這種數字出來!我活這麼久,從來都不知道日子還得用小數點來計算……。

 這樣的規劃看似精美,但,想當然爾,一句話:做不到

為什麼做不到?因為人就是人,不是機器。千萬別把玩世紀帝國或星海爭霸那套拿來用,幾分幾秒生多少村民、存多少黃金、多少人的時候升級……等,這套方法對人完全行不通,因為人不是電腦,人是活的,不是死的

 因此,某些公司號稱國際化的大公司,卻仍逃不過這個迷思,做事完全沒有模糊的空間,也沒有預留任何彈性時間,行程排了就是排了,就傻傻的照著做,而又不知變通,中途遇到突發事項也只是悶著頭去處理,沒有做任何彈性調整,搞得每週release前都人仰馬翻的。

 世事絕對不是非黑即白、非1即0的。處處都存在著模糊的灰色地帶,這個空間可以做彈性運用,把事情做到最好,也讓人力發揮到最高。若事事只講求數字,死板板的做事方式,遲早會種下大過,不可不慎也。

2012年4月4日 星期三

毒藥

你好毒


這個世界就像是一條河流。表面上清澈見底,實際上卻暗藏洶流。更可怕的是,不知道水質含有多少毒物,不知道河底藏著多少致命危機。

肉有毒,飲料有毒,餅乾有毒,飯有毒,菜有毒,連水也有毒。衣服有毒,房子有毒,日常用品有毒,空氣有毒,車子廢氣也有毒。

這些毒,殘害著我們的『身』

貪汙無能的政府,欺壓百姓的作為,短視近利的政策,見利忘義的企業,長年腐敗的教育,素質低落的新聞記者,為虎作倀的公益團體…等,也都是毒。

這些毒,殘害著我們的『心』。

 這兩種毒,都是看得到的。但有一種毒,我們不但看不到,還樂在其中……

 科技產品的普及,讓人與人之間更沒有溫度,養成凡事只求快的個性,極度沉迷於虛擬的世界,拼命經營網路上的那個『你』,到哪裡就是用手機控制著那個你。

 無論到哪裡都要先打卡上傳照片,讓網路上那個『你』有狀態更新,告訴網路世界的大家你在幹嘛;

 到哪裡都要盯著螢幕,彷彿少看幾分鐘,生命就會損失多少;

 到哪裡都要用LINE一下(還以訛傳訛,變成APP一下),似乎變得不會講話一樣,都要用手機代言;

走在路上或坐在車上,就進入一個無人的世界,聚精會神的在手機滑滑滑,努力投入那個世界,卻從來不知道旁人發生了什麼事;

 真實的生活,似乎變成副產品,似乎那個虛擬的世界,才是真的……

 這種毒,殘害著我們的『靈』。

 號稱萬物之靈的我們,越來越沒有『人性』。

 身心靈都有著滿滿的毒,這就是我們,

 人類。


你好毒2  

2012年4月2日 星期一

三人成眾的有趣現象

從眾

 
早上經過一條大水溝,有三個男子倚靠在水泥護欄邊,指著水溝似乎在說些什麼。

 這個時候,一個路人經過了,也好奇的把頭探過去,往水溝一瞧!!!什麼也沒瞧見。

看了一會兒,默默走了。

 這時又有一個買完早餐的婦女正準備騎機車離去,被三個男子的行為所吸引,也慢慢走去水溝旁,左看右看,看了半天,什麼也沒有啊?

 她也訕訕地走了。

 經過那三個男子的時候,我也很好奇他們到底在看什麼,正想把頭湊過去,就聽到他們在談論的內容。

 我這才晃然大悟。原來,他們在討論釣魚

這是一條大排水溝,水質還算乾淨,故而時常有人爬到下面去釣魚。

 當一個人這樣做,不覺得有什麼;當兩個人這樣做,似乎有點蹊蹺;當三個人這樣做,就好像發生了什麼事一樣。

兩個人聚在一起,是『从』,也就是從;

三個人聚在一起,是『众』,也就是眾。

從眾(conformity)是指個人的觀念和行為由於群體直接或隱含的引導或壓力,而與多數人保持一致的傾向。

 開頭那張圖,是一個有名的從眾實驗(Asch's conformity research),受測者要指出:A、B、C哪一條線段,跟Sample Line一樣長?

 答案應該很明顯,是C線段。但是實驗結果發現,如果受測者之前的幾個人都回答A或B,那麼受測者也很有可能會改變心意,也跟著回答A或B。

 我們在做事時,是否也經常這樣?

 當一個人這樣做,兩個人這樣做,三個人這樣做時,似乎我也應該跟著這樣才是對的;

 當一個人這樣說,兩個人這樣說,三個人這樣說時,似乎我也應該聽從他們的話,才是對的。

 但,到底是不是對的呢?

就算是對的,到底適不適合你呢?

2012年4月1日 星期日

開會是需要規劃的

上班的時候,最浪費時間的事情,莫過於『開會』

 有人東摸西摸、逛逛FB、逛逛拍賣網站、MSN聊聊天,這些小惡卻也無傷大雅,因為浪費掉的只是他自己個人的時間;

 而『開會』這個大怪物,卻會瘋狂吃掉所有參與者的時間!

若在場有10個人,在會議上浪費了6分鐘,就等於白白浪費了60分鐘!

 這60分鐘的機會成本,自然也由公司吸收,所以事情做不完,老闆往下尋找苦主,最後還是落在員工們身上,得花更多時間,來把原本該做的事做完。

 這還只是簡化的加法情況,實際上應該是乘法情況,大家合作在做一件事,一個人delay了,其他人也會受到影響。那麼開會浪費時間的衝擊就更大了!

 以我們這個團隊的開會情況為例,就是最浪費時間的一種。

 原本每週都會排一個90分鐘的會議,報告個人的進度以及下週要做的事情。

 但自從工作以來,沒有一次是準時結束。應該在中午12點前開完的會,每每都要拖到中午12點半甚至下午1點才結束,然後害得大家沒時間買飯吃,只能去便利商店隨便買買,午睡時間當然也沒了。

問題出在哪?


(1)漫無目的的討論
會議的目的非常重要,是什麼目的,就該討論什麼事。偏偏主管就是搞不懂,明明是進度報告的會議,卻都會變成各自的討論會議,會議目的整個錯了!

進度會議,就是每個人報告這週做了什麼、有什麼需要特別提出來講的、下週預計要做什麼、預計完成時間。這樣就夠了!

但主管每次總是聽別人講到一半,就打斷插話,開始問東問西。想當然爾,大家準備的是『進度』,自然被問到的時候,較無法順利回答,於是就變成『討論』會議了,在場的所有人就得被迫坐著聽他們兩個人在討論自己完全不知道的事情。

等到討論完,也過了半小時了。時間就這樣浪費掉了,所有人被迫聽著聽不懂的討論,也無法做自己的事。這時唯一能做的,只有放空。


(2)開會前的準備
開會前每個人都應該要準備,無論是主管還是下屬。但主管通常都什麼也沒準備就去開會了,一些資料也沒先看過,就直接在開會時提問。有些內容明明寫在寄出去的文件,他就是不看,然後要重問一次,讓每個人要重講一遍。


(3)會議時間的掌握
一個正常的會議,主導者應該隨時掌握著時間,包括每個人要講多久。但我主管卻完全沒在管時間,會議開始就一直講,等到每個人講完,已經超過時間了。

除了會議中的時間,會議前的時間也需要管理的!包括訂會議時間、借會議室、寄出會議通知,這些事情應該要在開會前至少3小時之前告知,大家才有足夠的時間準備。但主管通常都是會開始15分鐘才通知要開會,有時甚至連會議通知都沒有。

往往都是上完廁所回來,看到周圍座位都空了,然後去每間會議室看看,才知道:喔!開會了。


(4)會議通知
這跟會議的目的一樣,會議前都應該寄出會議通知,告知是哪些人需要參加?會議的目的是什麼?需要準備什麼?會議時間是幾點到幾點?會議室在哪?

但我主管,只有寫參與人員,至於這個會的目的是什麼?要準備什麼?一概不知。


(5)會議紀錄
每次開會都應該有會議紀錄,事後才可以知道這次會議討論了什麼、你做了哪些事、你接下來要做哪些事,凡事有個依據。就算沒有會議紀錄,也應該開放一個空間,把會議的投影片放上去。

我們是有空間上傳投影片,但主管看都不看,還是要過來問上次開會怎樣怎樣,打斷大家的工作,會議紀錄形同虛設。