2010年1月21日 星期四
心智圖與甘特圖運用
甘特圖(Gantt Chart)由亨利·甘特於1910年開發的,主要為透過條狀圖來顯示項目、進度、和其它時間相關因素隨著時間進展的情況。
其中,橫軸表示時間,縱軸表示活動(項目)。線條表示在整個期間上計劃和實際的活動完成情況。甘特圖可以直覺地表明任務計劃在什麼時候進行,及實際進展與計劃要求的對比。管理者由此可以非常便利地弄清每一項任務(項目)還剩下哪些工作要做,並可評估工作是提前還是落後,亦或正常進行。除此以外,甘特圖還有簡單、醒目和便於編制等特點。
2010年1月20日 星期三
Google GO 語言獲得 TIOBE 評選為2009年度程式語言
TIOBE的年度語言排名又出爐了 ~ Java仍然穩站第一位,php排名提升,python仍然不動,不過由於iPhone的關係,Objective-C 躍昇到12名,而去年11月才發表的Google GO語言則莫名其妙的一下跳到13名...
原文出處:http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
2010年1月14日 星期四
如何做一個出色的程式人員(轉)
愛這行! ! !
從事任何行業都一樣,只有真正的愛上了這份工作,才會投入熱情,才會在順境中自我警醒,在逆境中尋找突破。這個行業的競爭很激烈,你停下來走,別人就立刻會跑步超過你,沒有對這一行業的一種熱情,就很難在困境中保持一種執著的態度堅持到底。
踏踏實實“紮馬步”
今天無意中看了“校長”的“程序員&司機”,其中談到了關於程序員速成的問題。其實速成班畢業的“系統殺手”早已在遍布大江南北,只是在互聯網時代,互聯網的應用型軟件生命週期越來越短,業務驅動主導的情況下,這種速成方式看起來反而提高了企業生產效率。但這樣的人才也就只能寫幾個Facebook上的插件應用或者iGoogle上的Gadget,真的要出Google,Amazon,Yahoo改變互聯網世界的企業,還是需要踏踏實實先學“紮馬步”的人。
2010年1月13日 星期三
2009年12月30日 星期三
未來五年內開發者所需的技能
1: One of the “Big Three” (.NET, Java, PHP) - 學會三大巨頭之一(.NET, Java, PHP)
2: Rich Internet Applications (RIAs) - RIA技能(Flash, Flex, JavaFX, Sliverlight)
3: Web development - 網站開發
4: Web services - 網路服務開發
5: Soft skills - 請放眼IT產業未來的觀點,並觀察公司外的走向
6: One dynamic and/or functional programming language - 雖然Ruby, Python目前還不是主流語言,但它們觀念是,所以有朝一日爬升上來時,你會的話就很吃香
2009年9月10日 星期四
創造「耐心練習周期」(轉)
耐心是心的一種性質,可以藉由蓄意的練習而大幅提升。我發現可以磨練耐心的一個有效方法,就是創造真正的練習周期,也就是在心中設定練習耐心藝術的時間周期。生活本身變成了一間教室,課程叫做「耐心」。
你可以從短短的五分鐘開始,然後逐漸延長你的耐心的容忍度。剛開始的時候,不妨告訴自己:「好,接下來這五分鐘,我不要對任何事情生氣,我要保持耐心。」你將會有驚人的發現。保持耐心的企圖,尤其是你知道只要忍耐一下子,就會立刻加强耐心的容忍度。耐心是那種食髓知味的特質,你將會發現,你確實有能力保持耐心,即使時間長一點也可以。日子久了以後,你甚至會變成一個很有耐心的人。
當我們保持鎮定時,不讓自己生氣或懊惱時,就可以冷靜而堅定地控制行為,這比發怒生氣有效多了。這個讓心靈朝耐心努力的過程簡單易學,重要就是把持自己想發脾氣的情緒,不再鑽牛角尖。
有耐心讓自己得以維持心靈的平衡。没有耐心的話,一件小事就會化為緊急大事,以嘶吼、挫折、傷感情、和高血壓收場。這樣真是不值得,不論你是需要跟孩子、上司、或一個不可理喻的人打交道,如果你不想「為小事抓狂」,改進你的耐心功力,成就高度的EQ,這是最佳有效的調合劑,就從現在開始吧!
2009年7月27日 星期一
前瞻與創意思考
創新事實上是指創意加變革,單單只有創意但未付諸行動,就還不是創新。例如 明基科技董事長 李焜耀 說過“創新是一種行為的習慣,習慣獨特的方法、理念與結果,勇於做自己”,不隨波逐流,不盲從,正是創新的根源。
但是,創新並不是突然靈光乍現就足夠,必須還得包括詳細的分析與系統化的流程一步步實現,然而時代在變,人也在變,整個外在環境都在劇烈變動,組織的管理與運作也必須改變,不過需要改變什麼?什麼需要改變?可以奇異的領導力四個“E”為其重點:
(一) Energy : 高度的幹勁
(二) Energize : 激勵他人的能力
(三) Edge : 制定艱難決策的精準度
(四) Execute : 貫徹執行達成目標的能力
由此可見創新是能夠被管理的,但如何能有效領導創新呢?身為一個創新領導的角色,該員必須要有幹勁,並能影響其他人使他們同樣有幹勁,另外必須要精準不莽撞(瞎忙),並要真正做的到。換句話說,改變與變革必須從領導者本身做起,先革自己的命,在帶領整個企業完成變革大業,整個關鍵在主管思維的改變。邱教授認為可在日常生活中實際做出五種改變:
(一) 閱讀(而非瀏覽)
(二) 溝通(而非命令)
(三) 欣賞(而非排斥)
(四) 寬容(而非封閉)
(五) 思考(而非情緒)
創新立基於四項要素:資源、組織文化、組織氛圍、程序,四種要素都等同重要,必須善加整合才能有機會成功創新。而當條件均完備後,則必須揪出阻礙創新的幾項因子,諸如:策略模糊不清、欠缺事務輕重緩急概念、領導風格過於集權與放任、高階團隊缺乏效率、中階主管協調與溝通能力不足,部門間沒有生氣與缺乏互信等...,排除上述條件後,最後仍需要有效的前瞻性思維,如此才能將成功的機率提高。
2009年6月25日 星期四
適當地運用研發與創新
"研發"囊括了"研究"與"發展",並可細分為三個部分:
1. 基礎研究 - 主要為了增加科學知識,或許沒有後續的商業應用。
2. 應用研究 - 增加特定應用或需求的知識。
3. 發展 - 應用知識產生有用的實體產品。
Sam感覺大部分在台灣的中小企業都是先產生3的想法再回過頭去研究2...至於1基本上是無產值所以不太被重視。因為總是要在最短時間內得到成效,如果不好才能評估改進或淘汰,或許因應各國的風情不同會產生差異性的結果,但從過去歷史的經驗上,很多大賣的產品都不是專門為了商業利益所開發,可能是機緣巧合,也可能只是對該項事物有極大化的熱情,而促使個人與團隊不惜成本去研究,最後出乎意料的受到好評。
日前感謝"大Sam"的關照,有榮幸去參加Google Marissa Mayer的座談會,她也敘述了Google為外人津津樂道的80/20理論。Sam認為,20%的時間拿來計畫員工真正想做的事的確是有其必要,當然公司或許會有很好的idea產生,另一方面也是舒緩了員工的一週內的長期工作壓力,人就如同橡皮筋,久了之後會彈性疲乏,效率越來越低,如果在此能得到一些成就感之類的激勵,將會快速且有效的恢復"彈性",也為公司帶來好績效。
當員工自行利用空閒時間進行基礎研究時,應該要感到相當高興,因為他可能是真正熱愛這份工作,千萬不要認為不能為公司帶來財富就去遏止,機會是隨處可見的,遇到對的人、對的時間,就有很大的機率能夠成功。
2009年3月26日 星期四
2009年3月24日 星期二
最新十大透支健康行業
轉載自http://big5.xinhuanet.com/gate/big5/news.xinhuanet.com/health/2006-08/18/content_4977708.htm
很高興IT業榮獲榜首...說這句話的同時壽命又少了0.01歲...
但是國外工程師好像都很悠閒, 每天穿短褲, 到處有零食與電動...而且人家的創意與技術就是比我們強...
總有一天我也要打造這樣的環境...
健康透支十大行業依次為:
1、IT
2、企業高管(含民營企業主)
3、媒體記者
4、證券
5、保險
6、出租車司機
7、交警
8、銷售
9、律師
10、教師
調查發現,精神壓力過大,生活節奏過快,飲食和生活不規律,是這十大行業的人群嚴重透支健康的主要原因。
關于壓力來源,31%的受調查者反映最大的壓力源自家人,19%的人反映是性生活。受調查者認為,面對源自領導同事和經濟生活方面的壓力,未婚青年面對創業、婚姻的擔憂,已婚人士頭頂巨額按揭房款和教育支出,只能繼續透支健康。
2009年3月19日 星期四
不知道要下什麼標題
就像美國總統歐巴馬一樣面對AIG發放紅利氣到嗆到, 今早我也發生了一樣的事, 剛出門騎車就拋錨所以只好等附近的機車行開門就把車牽過去麻煩他修一下...以下為對話(對方可能不是老闆但我還是叫老闆):
我: "老闆, 我機車掛點了可以幫我看一下嗎?"
老闆: "...."(準備開店中...)
我: "老闆, 我把機車推上去歐"(把機車推到維修區)
老闆: "你推上去幹麼...我有叫你推上去嗎?"
我: "...拍謝"(把機車倒退回去)
我: "請問大概什麼時候能好?"
老闆: "要等啦!你先留你的聯絡方式"
我: "不能幫個忙先看一下嗎?我等等還有事"
老闆: "急什麼, 留下機車鑰匙修好在和你說!"
我: "..."(留下鑰匙默默走人)
走掉得路上我越想越氣...媽的...我是叫你修免費的歐!長得一副好像我欠他的樣子!
後來中午接到電話回去看換下來的零件, 變成一個比較菜的技師在修, 態度很好也會和我說哪裡燒壞等等還會指給我看...早上那個王八蛋在一旁看電視...我當然是青了他一下...不過他好像沒看到。
這件事讓我回想到以前當兵的時候, 我是二級廠補給士, 想當然爾各連的裝備都是要找我補料或更換, 自然權力就很大, 尤其是老了之後, 別連要上來申請料件都還要帶吃的喝的才行, 那時候的我在他們眼中一定也是這樣, 而我去聯保廠的時候對學長姐也是差不多, 好像是一種風氣吧!差別只在於他們修裝備不需要付錢而已, 是國家出。
這件事氣歸氣...反正只要車子修好了就好~我還向那個菜鳥技師要了電話以後只找他修
2009年3月2日 星期一
HTML 5.0
W3C據說2004年就開始推動5.0草案, 但是我想根本沒有什麼人知道這件事, 直到最近Apple Sarfari 4 beta版釋出之後, 看見其中新功能支援HTML5.0影音標籤才赫然驚覺。Google一下才知道5.0是近期最大的改版行為, 目標是在2010年之前,HTML 5的正式版將面世,目標是把這種超文字標示語言(markup language) 帶往今天的豐富媒體網路環境,以新型的應用程式設計介面,控制影音內容。
其中一些改變例如引入了一整套全新的元素來讓構建頁面變得更加簡單與直接使用video, audio之類的標籤描述影像與音效嵌入等...詳細資訊可以參考這篇http://www.wowbox.com.tw/blog/article.asp?id=2446
最近剛好也寫到一篇報告, 內容是有關數位出版, 大部分的權力也是被西方組織或是出版社壟斷, 甚至積極想鉅資吞食華文市場。 所以我的夢想是希望華語地區的人也能團結(雖然中國人真的有夠鬆散), 我們也來創立一個組織, 擁有以華文為主的標準, 讓外國人學中文學到欲哭無淚...哈哈
2009年2月18日 星期三
程式語言版本的相容性
雖然Sam不會因為程式語言版本相容問題而去學習一種語言, 但最近的情況的確困擾了我。
首先是前年ActionScript2.0晉升3.0, 完全變成一種類Java語言, 當然2.0之前的概念已不復見, 即使這樣但看見優化多倍的效能時還是得盡力去學習, 目前也在專案當中使用, 事實上對於像Sam這種物件導向起家的工程師來說如此的改變再好不過, 因為有Java的底子所以學起來事半功倍, 但對於那些程序導向的工程師就...
然後PHP6的改變, 最恐怖的就是資料庫這段上面統一了(使用PDO), 不再像以前一樣每種資料庫要調用不同的module, 基於oo的立場是很好的改變但對大多數現在線上仍然使用php4, 5的朋友就是惡夢了, 表示你們要砍掉重練!
其他的變革像是:
1.支援Unicode
2.Register Globals將被移除
3.Magic Quotes 將消失
4.Safe Mode Out
5.類別內的Var宣告變成public
6.Return by Reference will error
7.Freetype1 and GD1 support 將不見
8.dl() 加載extension Libs現在被移到 SAPI
9.一些Extension的變更
10.告別ASP風格的啟始標籤
而重點是php6效能不一定比php5好, 所以國內大概也都不會換成php6, 下場應該和Windows Vista一樣。
再來, 我最近很努力的想學python(因為這個語言很簡單上手, 直譯式語言, 可以作到幾乎任何事情, 跨平台, 有規則的約束撰寫縮排等...), Google和Youtube都把python當成開發語言之一(NASA也是), 可以用document執行, 也能用script在終端運作, 可以套用不同的library寫出視窗軟體, 也能寫網頁, 以上已經表示它很強了, 另外還有加速器。
記得去年國外某知名linux討論區評選python榮登年度最佳語言, 國內市場上應用的卻很少, 最近幾年有在某些大專院校研究所聽到在使用而已。Anyway, 我想要得就是它的簡單中帶著強大, 有時候我只是單純的想寫出某些功能卻還是要用Eclipse在那裡搞來搞去實在很煩, 所以就想說不如來學一下python, 沒想到它也改版為3.01, 而且官網上說
Python 3.0 (a.k.a. "Python 3000" or "Py3k") is a new version of the language that is incompatible with the 2.x line of releases.
講到這裡我不知道要該哭還是該笑, 學最新版本的感覺有很多套件來不及搭配, 但是還好他的教學頁面裡有蠻多補充http://docs.python.org/3.0/, 還是來花時間研究一下好了。
總之最近都東一個西一個語言在大幅度的更新, 真是無言~
2009年1月5日 星期一
集中注意力
最近發現寫專案的時候越來越容易分心, 一方面是這個案子沒有太多相關文件卻突然空降到我身上要作大幅度的修改, 自然就興趣缺缺..., 以致於只要周遭有一點點噪音或突發事件心思就馬上被吸了過去, 自我檢討了一番發現這是沒有目標(目標過於不明確)所致, 以打靶來說, 在一片遼闊的草原上放置靶紙, 你會一直開槍直到打中靶, 但是沒有靶紙的話, 東邊飛過來一隻鳥你會打鳥, 草地上跑出一隻兔子則會去打兔子...。
所以為什麼要事先規劃 -> 定義焦點快速功能性的執行, 防止浪費時間。 但自我鍛鍊也是很重要, 不可能每次都有人幫你把事情整理好放在你跟前(又不是大老闆), 所以下列方式供大家參考一下:
一. 設立期限
一般人做事時,以剛開始與快結束時效率最高, 在兩者之間,將會出現效率低落、缺乏注意力的現象,心理學上稱之為“中間鬆懈”,了維持注意力,可以象馬拉松選手一樣,設立中間站,更能發揮全力。中途站的時間不能太長也不能太短,否則會帶來反效果。
二. 設定競爭對象
假設有人在和你搶這份工作, 你的表現必須超越他, 可以把同事或上司設成假想敵(但千萬不要在日常生活中也變成敵對狀態), 為了打敗這個對手就需要不斷鼓勵自己。
三. 積極的自我暗示
就是類似催眠的方式, 每天到公司的時候先花個5分鐘想像自己是公司最重要的人, 這個案子到了你手上一定會成功之類。
四. 循序漸進式
精神不集中的最大原因之一,就是缺乏欲望。不過一次接觸一些些, 慢慢熟悉了之後就能得心應手, 心防自然而然打開。
下次你也無法對某些事情專心時, 可以試試看使用以上的方法。
2009年1月2日 星期五
部落格手動張貼程式碼
這個網站有支援幾乎所有的code種類, 算是相當齊全, 也有樣式可以選擇. 更改背景色或是自動換行只要在開頭pre後面style中加上如同下列HTML就可以了.
<pre style='color:#000000;background:#f0f0f0;overflow:auto;border: 1px solid #ccc;'>
貼個Java範例:
public class SyntaxTester { public static void main(String[] args) { // test for code attach. System.out.println("I use syntax highlighting for Java in my blogger"); } }
不用重新計算效能真是好^^
2008年12月29日 星期一
長期在電腦前工作請注意!
做我們這行的最常看到就是眼壓過高,而且週邊的同事或長官只要是長期在電腦前工作的小孩子生出來都是女生居多。女生是很好啦, 但是生不出男生可能會有人覺得不太好^^ 所以請大家要注意一下:
電腦對人類健康的隱患,從輻射類型來看,主要包括電腦在工作時產生和發出的電磁輻射(各種電磁射線和電磁波等)、聲(噪音)、光(紫外線、紅外線輻射以及可見光等)等多種輻射「污染」。
從輻射根源來看,它們包括CRT顯示器輻射源、機箱輻射源以及音箱、打印機、複印機等周邊設備輻射源。其中CRT(陰極射線管)顯示器的成像原理,決定了它在使用過程中難以完全消除有害輻射。因為它在工作時,其內部的高頻電子槍、偏轉線圈、高壓包以及周邊電路,會產生諸如電離輻射(低能X射線)、非電離輻射(低頻、高頻輻射)、靜電電場、光輻射(包括紫外線、紅外線輻射和可見光等)等多種射線及電磁波。
而液晶顯示器則是利用液晶的物理特性,其工作原理與CRT顯示器完全不同,天生就是無輻射(可忽略不計)、環保的「健康」型顯示器;機箱內部的各種部件,包括高頻率、功耗大的CPU,帶有內部集成大量晶體管的主芯片的各個板卡,帶有高速直流伺服電機的光驅、軟驅和硬盤,若干個散熱風扇以及電源內部的變壓器等等,工作時則會發出低頻電磁波等輻射和噪音干擾。另外,外置音箱、複印機等周邊設備輻射源也是一個不容忽視的「源頭」。
從危害程度來看,無疑以電磁輻射的危害最大。國內外醫學專家的研究表明,長期、過量的電磁輻射會對人體生殖系統、神經系統和免疫系統造成直接傷害,是心血管疾病、糖尿病、癌突變的主要誘因和造成孕婦流產、不育、畸胎等病變的誘發因素,並可直接影響未成年人的身體組織與骨骼的發育,引起視力、記憶力下降和肝臟造血功能下降,嚴重者可導致視網膜脫落。
此外,電磁輻射也對信息安全造成隱患,利用專門的信號接收設備即可將其接收破譯,導致信息洩密而造成不必要的損失。過量的電磁輻射還會干擾周圍其他電子設備,影響其正常運作而發生電磁兼容性(EMC)問題。
因此,電磁輻射已被世界衛生組織列為繼水源、大氣、噪聲之後的第四大環境污染源,成為危害人類健康的隱形「殺手」,防護電磁輻射已成當務之急。
對於電腦的電磁輻射的危害,目前可採取主動防護和被動防護兩種方法。被動防護法,就是除了改善工作環境和注意使用方法外,採取給經常接觸和操作電腦的人員配備防輻射服、防輻射屏、防輻射窗簾、防輻射玻璃等措施,以減少或杜絕電磁輻射的傷害;主動防護法,則是從電腦電磁輻射的「源頭」——顯示器和機箱等部件下手,將其消滅或屏蔽。
一是購買,即選購市面上實力廠家推出的符合「綠色電腦」標準的產品;二是DIY,即選購通過各種認證標準的「綠色」電腦配件,打造自己的健康電腦。下面我們就重點探討如何選擇符合防輻射標準的配件來DIY健康電腦。
使用電腦時,要調整好螢幕的亮度,一般來說,螢幕亮度越大,電磁輻射越強,反之越小。不過,也不能調得太暗,以免因亮度太小而影響收視效果,且易造成眼睛疲勞。
在操作電腦時,要注意與螢幕保持適當距離。離螢幕越近,人體所受的電磁輻射越大,因此較好的是距螢幕0.5M以外。
此外,在操作電腦後,臉上會吸附不少電磁輻射的顆粒,要及時用清水洗臉,這樣將使所受輻射減輕70%以上。 還有一種是喝茶
常用電腦的人中有83%感到眼睛疲勞,64%經常感到肩酸腰痛,另外,不少人出現流淚、食慾不振、咽喉痛、咳嗽、胸悶等症狀,甚至行動遲緩,記憶力衰退。
電腦輻射不僅危害人的健康,而且影響到工作的質量和效率。對於生活緊張而忙碌的人群來說,抵禦電腦輻射最簡單的辦法就是在每天上午喝2至3杯的綠茶,吃一個橘子。茶葉中含有豐富的維生素A原,它被人體吸收後,能迅速轉化為維生素A。維生素A不但能合成視紫紅質,還能使眼睛在暗光下看東西更清楚,因此,綠茶不但能消除電腦輻射的危害,還能保護和提高視力。如果不習慣喝綠茶,菊花茶同樣也能起著抵抗電腦輻射和調節身體功能的作用。
2008年12月25日 星期四
Google文件祝你聖誕快樂
Google員工們使用協同作業一起編出來的畫面, 真的是很佩服Google能讓員工有這麼多的自由進而發想創意。
台灣的公司就不可能了, 被看到應該馬上請你回家吃自己, 泣...
文化的不同也會造就不同的成就, 創意或代工...
2008年12月15日 星期一
科技始終來自於人性
還記得Nokia的這句廣告詞嗎? 大概80%的人都知道, 卻不了解他真正的涵義...。
最近家裡準備整修一番, 所以請了些設計師來估價:
第一次: 經驗老到的設計師一進門就開始指東指西"這裡打掉, 陽台推出去, 電視櫃不要了...", 後來我問他"那東西應該收納在哪裡?", 卻得到一句這樣的回應"你不需要太多東西!"。
第二次: 一對夫妻設計師, 從頭到尾一直在說他多厲害, 多會設計, 但他的作品樣本我很確定是另一家公司的設計圖。
第三次: 同樣也是一對夫妻, 看起來經驗沒有很老到, 坐下來談的時候一直詢問"覺得這樣改可以接受嗎?", "收納會不會不方便?", "重要的是你要住的舒服才對!" 等...。
大家覺得我會選擇哪一個呢?
自己也是做程式設計, 一直面對不同的客戶自然而然就會產生"應該照我這樣做"的想法, 覺得這樣最省事也最保險, 但是客戶真的喜歡嗎? 功能再棒的產品不實用或不好用就是失敗...設計了一間非常摩登的房子, 裡頭的主人卻每天住的很憋扭...這樣應該不算成功巴。但我們總是會乎略, 設計一個自己覺得很滿意的作品下次當成展示用, 收了錢好像客戶喜不喜歡又是另一回事...。
真是要好好檢討一下。
2008年12月9日 星期二
Rich Internet Application v.s. Window Application
之前一直都在開發RIA網站, 最近因為公司內部需要轉向使用Java SWT(Standard Widget Toolkit)開發視窗環境的軟體。
其實用SWT開發真的很方便, 組件完整, 事件流好控管, 版面縮放不易出錯等...真的是事倍功半(當然你要有可視化開發介面拉), 比起用ActionScript開發, 如果沒有自己先寫一套框架還真是要從頭開始作苦工。
不過我不是想討論哪個語言好壞, 而是近幾年來軟體越來越難賣, 加上RIA與SaaS的風行, 到底孰重孰輕?
基本上RIA目前已經轉向免費服務居多的方式, 除非一開始就去招募資金或是背後有金主, 否則真的相當難生存, 只是一直在燒錢而已。但是最近有些例子指出, 某方面免費資源分享(音樂, 影像等)的RIA網站開始和唱片公司電影公司合作或直接讓它收購, 這也相當聰明, 與其讓大公司摧殘你, 不如先投誠, 假他人之手免費幫網站宣傳又可以獲得資金援助, 一舉兩得。
或是可以像當前線上遊戲主服務免費收取附加價值的產品, 一人一塊20億就...。
單機應用軟體前景就比較看淡了, 以前沒得選一定要用單機軟體, 現在Web Browser打開就能享受一樣的服務, 雖然還是有一定專屬領域不至於消失, 不過需要安裝又常出問題實為不懂電腦的老百姓一大苦處, 偏偏50億人裡有49.6億大概都是這種人。
可能以後單機軟體走向會改變成彙整網路資源, 畢竟單機的優勢在於能夠享受多一點cpu與memory, 當然要做更偉大的事才能把RIA比下去, 像是可以彙整所有拍賣網站的該產品價格作列表比較等...。
我心中倒是有一張理想圖, 在網路資訊爆炸的年代, RIA負責社群交流與資源分享, 單機軟體負責大量彙整與過濾整理, 各司其職, 天下太平。
以上皆為下班前的天馬行空, 個人愚見^^
2008年12月8日 星期一
轉: 無所不在的Context Switch
蔡學鏞大哥寫的這篇文章真的是太好了!!因此和各位分享一下...
如果有看過peopleware這本管理經典著作的話, 裡面有提到很多讓工程師分心所帶來的後果之實例。
作者:蔡學鏞
有時候電腦忽然慢下來,這時候打開「工作管理員」(Task Manager),你會驚訝地發現,怎麼有這麼多莫名其妙的「常駐程式」正同時在執行?其中一個罪魁禍首程式佔用了CPU將近百分之百的效能,難怪你的Visual Studio忽然變得這麼慢。
不僅電腦中有許多常駐程式,會來中斷我們的重要程式,我們現實的生活中,也有許多例行與非例行的事項,佔據我們一天中大多數的時間,讓我們做事的效率不彰。可能是沒有結論的無聊會議、可能是一通女友撒嬌的電話、可能是MSN上沒有意義的寒暄、合作廠商禮貌性的拜會、或者行政人員對於你請款單據的刁難。這些都會讓你的工作產能大減。
你知道,將這些亂七八糟的事情摒除於外,絕對可以省下許多時間寫程式,也就不需要天天加班了!但是你可能不知道,你因此省下的時間,不只是這些雜事的時間,還包括了「進入流」的時間。
心理學家發現一種「高度專心與高生產力」的心智狀態,稱之為「流」(flow)。進入流的狀態,需要約15分鐘(0.25小時)的時間。你可以把「進入流」的時間,比喻成CPU進行Context-Switch時的Overhead。
二十多年前,《Peopleware: Productive Projects and Teams》一書,就已經開始提醒我們,程式員寫程式時遇到外來干擾,對生產力的傷害有多大。總而言之,如果你想提升你的程式生產力,你可以全面檢視一天中有哪些Context-Switch,然後盡量避免。
假設有一個程式員,中午休息一個小時,上下午的上班時間各3.5小時。那麼他處於高生產力的時間,大約是3.5 – 0.25 + 3.5 – 0.25 = 6.5 小時。假設一天中被電話等雜事中斷10次,每次都花費6分鐘(0.1小時),則高生產力的時間變成 6.5 – (0.1+0.25) * 10 = 3小時。降低的幅度相當驚人。每次6分鐘的打擾,都會造成 6+15 = 21分鐘的損失。
每一次的注意力轉移,都需要耗費15分鐘才能回到之前的流狀態。所以大多數的程式員,很難在白天上班時有很高的生產力。有許多程式員喜歡在晚上(或下班後)寫程式,正是因為半夜的干擾比白天少很多,所以產能比較高。
程式員要如何避免來自辦公室的干擾?大部分的程式員都沒有獨立的辦公室,只有小方塊,所以很難避免干擾。以前在上班時,我就常常幻想要把辦公室小方塊隔板加高,蓋上屋頂,加個滑動門,成為一個1.5 x 1.5 x 2 立方公尺的「辦公包廂」。我還想加個造型煙囪,兼具透氣的目的。如果真有辦公包廂,應該就可以阻隔相當多來自辦公室的干擾。
許多程式員習慣上班時戴著耳機,當進入耳朵的聲音變得可以預期(例如音樂),大腦可以將它變成白色噪音(white noise),而主動過濾掉。但是我覺得一整天都戴著耳機,耳朵其實會不舒服。加上長期使用耳機會造成聽力衰退,而現代醫學認為,聽力衰退是無法復原的,所以戴著耳機似乎不是好作法。我後來嘗試著改用耳塞,覺得效果還不錯。
Instant Messenger(IM)軟體也常常會造成工作的干擾。我工作時,盡量不開IM,或者設定成忙碌。有些人很白目,對我的「忙碌」狀態置之不理,找我進行不重要的對話,這種人就會被我封鎖。除了IM,電話也常常是干擾的來源。
上述的這些干擾,是我們可以輕易地察覺的,但是有一類干擾,是編程語言與開發工具造成的,也會造成Context-Switch,使得程式員的生產力降低,但是卻少有人注意到。
有些編程語言和開發工具,需要你進行自我測試、除錯、編譯、連結的冗長動作,讓你離開真正具有高生產力的流。大部分這類的語言,都是編譯式、低階、傳統的語言。
Script語言顯然就比較沒這個問題。許多使用Script語言的人都會覺得生產力很高,開發的時間可以比傳統的語言快上許多倍。一方面是因為Script語言很高階,可以用比較簡短的程式碼,做出很多事;另一方面,有問題可以立刻修改,不需要形成中斷而離開「流」。
即使是傳統的語言,也可以藉由開發工具的幫忙,減少離開流,而改進開發效率。例如六七年前的IntelliJ就顯然比當時其他Java IDE更能夠減少Context-Switch,生產力更高,所以馬上成為最受歡迎的Java IDE之一。
請注意:有些行為很容易被誤認為是干擾,但其實是有助於生產力的。例如,很累時,可以起身走動,到辦公室外面的Starbucks買咖啡,但是腦筋依然保持原來的Context,繼續思考,不要進行Context-Switch。當身體在動作時,血液循環加快,腦筋似乎會更清晰。
在走路的時候,盡量不要被沿路的事情所分心,也不要和他人交談,因為這些都會造成Context-Switch。不過你可得小心,因為我有好幾次在去買咖啡的路上,差一點因此被車撞到呢!為了避免Context Switch,而造成主機損毀是不值得的。




