Hank Lin

A new blog

Octopress Blogging

| Comments

Octopress - A blogging framework for hackers

Octopress是一套基於Jekyll的blogging framework,概念是產生靜態的網頁,然後用Github幫你服務網頁。
如他的副標題所說的,是一套「給hackers用的blogging framework」。雖然沒真的那麼誇張,但是仍然要熟悉命令列、github、ruby、markdown、 html等等。但是熟悉了之後,效率會很高。
現在我也試著從原本的wordpress改成Octopress,以前的舊文章也會慢慢轉過來。

Jamie流行銷 - 心得

| Comments

Jamie流行銷

也許你會說:我是專業的軟體工程師,我不需要會行銷。 這邊的軟體工程師可以換成其它許多工作,都可以通。但是以現在變換速度越來越快的世界,如何把我們的產品/網站/服務做最有效率的改進,這不單是行銷人員的責任。如果是新創公司團隊,可能只有2、3人,每個人如果除了自己的專長之外,對工作夥伴的專業能有多一些的瞭解,可以讓整個合作更流暢,讓產品能更快的進步。當團隊都能認同這個作法,自然工作效率也會比較好,也可以預期,在每個產品循環生命週期,能把產品越改越好。

你不知道的流行銷

在這本「Jamie流行銷」,Jamie介紹的是在新新網路世界,如何用科學方法得知「行銷」或是說任何產品的改動,對營收的影響。這是一個精確的科學方法,需要由技術人員支援,所以沒辦法只由行銷人員達成。這是因為我們在這整個改良產品的循環,有很多步驟要記錄。例如:下載app、加入會員、使用產品、付費等等。記錄之後,才能夠作為將來跑產品生命週期循環的數據。 這也是因為,在新的網路、社群網路、及行動上網,我們有機會能夠精準的得知使用者的行為。也就是說,今天任何一個新的行銷行為,或是對產品做任何更新,我們都有能力知道,這些變化,究竟對最後的營收,有怎麼樣的效果。這是在以前的廣告媒體,不可能做到的精確。現在真實的朋友都在facebook上連結、mobile app使用的人是能追蹤到的真實客戶、網站也很大程度可以個人化,都帶給我們全新的、不同的可能性。例如我們能藉由朋友推薦的病毒行銷,或是個人化的app或網站使用經驗。 這裡又和Jamie常提到的MVPLean startup完全有相關。所以,這裡不單是介紹一個新的行銷概念,網路的創業在整個團隊心態、開發流程、創業思維,都和舊作法有革命性的不同。也就是這整個環境因素都有根本的改變了,所以真的無法再像過去一樣,美術設計歸美術,程式歸程式,行銷推廣歸行銷。而必需有一個「團隊責任」的新概念。

其實不是教你行銷

因為我們重視的是科學的方法,所以讓客戶來直接告訴我們結果,是最快也最好的。既然是要準確的結果,一次就只能改一個變因,然後再去觀測結果。如果結果是好的,那就繼續下一個測試。如果結果比原本還差,那就馬上改回來。這裡又談到另一個Jamie常講的重點,也就是LTV > CPA。套在這個「Jamie流行銷」上,就更明顯了。也就是說,如果你的行銷花費,大於營收,(在這裡都用一個客戶的平均值來看)那無論你花多大的力氣去推廣,你的產品還是無法產生正的收益。當然,平平是行銷,處方相同,提煉作法不同,成本效果也不同。所以有的成本低,帶來客量大,但成交少,有的成本高,客量少,但是都成交。要怎麼樣去記錄、分析、判斷,就是又要靠智慧和敏銳的感覺了。 前面說的是我們不斷改進產品,並以行銷活動測試結果,但是舊的作法,常常是行銷和產品分開,也就是產品作出來了之後,不是用客戶的回饋,去快速的更改產品,而是用不同的行銷活動想辦法賣出去。當然這會有差異,但是效率可能會很差。這讓我想到愛因斯坦的一句話:

The definition of insanity is doing the same thing over and over and expecting different results。

如果這個產品是錯的,那再怎麼樣高明的行銷活動,都無法產生好的結果。所以講到這裡,重點仍然是只有一直不斷的改進產品,找出高轉換率的產品之後,才能在行銷上加大力道。

只要有心,人人都會行銷

現在是一個需要自我行銷的時代,找工作,提案子,或是平常搞定朋友間出遊的地點等,都有可以參考的地方。這世界正在不斷的改變,而且就和宇宙擴張的速度一樣,還越來越快。現在每一天的新資訊,可能一年都看不完。要如何能夠動作更快,勝過競爭者,勢必要在心態上有徹底的改變,方法上也要更有效率。這不論是行銷人員,或是技術人員都應該精進和學習的。

超級記憶王 - 心得

| Comments

需要銀杏嗎

我記得(至少這件事還記得,不錯),以前看技術的書,雖然不到過目不忘的地步,但是至少我很清楚,要找的時候在哪裡可以找得到。最近這幾年,一直有一個感覺,就是: 如果你看過的資訊,不記得細節,以至於無法馬上拿來使用,那即使你知道你看過,也沒用,因為沒辦法馬上幫你達成效用。 即使你花時間去找,最後幸運找到了,花的時間也可能不符合成本。不過我最近常發生的,就是找了半天也找不到,我究竟在哪裡看過這個資訊的。之前花時間看的功夫等於白費了。 由於我知道人的大腦,能力非常強。經過訓練,可以發揮一般人想像不到的境界。所以我想,在吃銀杏之前,還是先訓練一下自己的腦子吧。所以我前一陣子又買了有關記憶的書,和我以前的習慣一樣,同樣題材的書我會一次買2、3本。這本「超級記憶王」就是我先看的書。

心中有畫面

我很久以前就知道,記憶是可以訓練的,但是要怎麼訓練? 最重要的就是心中要有畫面,把你想記的東西聯想起來。只要你心中有畫面,就一定不會忘記。這本書的兩個作者,都是從小就愛東想西想。然後漸漸把這一套作法系統化,發展成可以記憶演講內容、數字、人名、臉孔、日期、地圖等等,真的是很厲害。不過由於兩個作者是美國人,所以他們的作法都是完全依賴英文,不是天生說英文的人,可能還要轉一層,會有點慢。這兩個作者從小就有開始訓練這種本事,所以當然他們已經能夠想記什麼就記什麼。所以這不是沒有代價的,對不喜歡動腦的人,就沒辦法了。一但你肯花腦筋把要記的東西連結起來,就能要記多久就記多久。

訓練再訓練

這本書如果只是看完,而沒有真的去自我訓練的的話,就太可惜了,也沒辦法真的提昇記憶力。不過照著訓練真的是很花腦力的事,原本看過就好變成要「用心」看。但是這樣不就是原本我所希望的嗎? 看過一次,然後不需要回頭找資料,雖然第一次可能會看得久一些。現在我也開始試著記數字,看到路上的車牌、門牌,就想辦法練習。 所以,開始訓練吧!

一切從一篇paper開始 - Hadoop

| Comments

下一個AWS

上一場我在精誠資訊的演講,有提到「下一個AWS從何而來」這個議題。我有列出了一些,不過我最有興趣的,還是「大量資料的處理」這一塊。 就像我在裡面講的,我不認為用小資本就能進入IaaS的市場,賣貨櫃機房更不算得上是雲端運算。那我認為比較有希望的還是在PaaS或SaaS。其中我認為將來最需要的就是「大量資料的處理」(big data processing)、「即時的資料處理」(realtime processing)、以及「資料的視覺化」(data visualization)。因為這些功能都和資料的儲存、使用、形態很緊密結合,所以開發好用的SaaS就是我最感興趣的。

真實的需求

現在的網路世界,不單是server數量大增,可以上網的裝置也大量增加。以前的電腦還一定要人走過去用才上網,現在手機、平版電腦、販賣機等可以上網的裝置爆增,以後可能所有電子產品都可以上網,簡單到一個插頭都可以回報資料。所以資料量是以等比級數在上昇的,要如何快速、正確的取得我們要的資料,就變成最重要的問題。 以前有一個名詞叫data porn,形容資料太多,像色情一樣泛濫,不知從何處理起。那可以想像,資料如果用等比級數在增加,這個data porn會越來越難處理。而Hadoop的出現,幫助我們解決一部份的問題。

一切從一篇paper開始

一般公司要解決大資料的處理,大都是開發程式,用自己的方法去解決資料處理的問題,開發一個應用成本比較高,不易再利用。Google在2004年發表一篇很有名的「MapReduce: Simplified Data Processing on Large Clusters」,說明Google如何處理爬回來的網頁,以支援Google的搜尋等服務。特點就在於可以用一套程式設計界面,處理各種問題。寫一個應用時不需要處理分散式的程式設計等問題,重用性較高。可以投入更多機器,讓問題更快解完。而且還有容錯能力,會自動重試失敗的jobs。 MapReduce這麼神,但是當然Google沒有發表實作細節,許多細節還申請了專利。其它人想用MapReduce怎麼辦?

黃色大象Hadoop

另一個大師,Doug Cutting,為了支援Nutch,又建立了Hadoop這個專案。以模擬MapReduce的樣子,做出這個分散式資料處理的框架。因為是free open source,所以被許多公司拿來用。現在Yahoo!是最大的操作者,單一cluster有到4,000個節點。Facebook、Amazon、Apple、eBay、Microsoft、IBM、HP等等大公司也用Hadoop來處理大量資料。所以就像我前面說的,隨著資料越來越多,增長得越來越快,Hadoop(或大量處理資料的工具)就會越來越重要。投資在Hadoop上,似乎是下一個最被關注的課題。 當然,除了Hadoop,還有許多的類MapReduce的資料處理框架,只是Hadoop是比較多人在用的。

這個星期五(3月23日),我在精誠資訊分享第2場「向成功的雲服務學習」,歡迎你。

網站小圖檔的規範(1)

| Comments

令人又愛又恨的小圖檔

小圖檔在網站上,扮演一個很重要的角色。即使是像我這個懶得放圖的blog,還是得有favicon小圖示,按鈕、上一頁/下一頁的小圖示等。一般的商業網站更是需要大量的圖。這些圖的請求量通常很驚人,所以怎麼優化就變得很重要了。 根據Yahoo!的研究(http://www.yuiblog.com/blog/2008/10/29/imageopt-1/),圖的請求量(總bytes數),平均約佔總傳輸量的46.6%。當然每個網站都不相同,但是這個平均數也太驚人了。如果可以減少圖的負擔,網頁可以讀取得更快,伺服器也可以服務更多的使用者,頻寬費也可以降低。所以要做一個高品質的網站,圖的規範最好從一開始就建立好。

縮小圖檔的大小

優化圖檔有許多作法,其中一個最簡單的作法就是:縮小圖檔的大小(bytes數)。 一般設計師輸出的圖,常常存了許多不必要的資訊(metadata),在網站顯示這些圖檔是完全不需要這些資訊的,把它們去除通常可以減少檔案大小。唯一要注意的就是有版權的圖是不能這樣作的,除非你有這張圖的版權。另外可以做的就是優化壓縮的效率,而不至於損失圖像的資訊(lossless)。可以縮小圖檔大小的工具有很多,我們可以只看一些免費的工具。

可以用的工具不少,每一種工具對不同的圖,處理完的大小還可能有不小的差異。但是要對每個圖試用每一個工具,拿最小的來使用,會太花時間。所以只要選一個自己覺得好用的來用就可以了。 據我的經驗,jpeg最多可以減少20%的大小,png則可以減少10%的大小。

處理圖檔的原則

  • 圖的尺寸較小、但要有清析的邊緣,例如小圖示,使用png。缺點是使用png8時,顏色受到限制,用png24在大圖的檔案大小又會太大。
  • 圖的尺寸較大、顏色要鮮明,例如照片,使用jpeg。缺點是高對比的邊緣和大色塊會模糊
  • 可以的話,把所有gif轉成png8(除了動畫gif),或是一開始就規定不要使用gif。
  • 動畫gif的數目也要儘量減少,有的話,使用工具去縮小
  • 用工具對所有png圖檔執行縮小的步驟
  • 用工具對所有jpeg圖檔執行縮小的步驟

壓縮

許多網站伺服器,如Apache, 或是應用程式框架,都有動態壓縮輸出內容的功能,可以很簡單的設定那些輸出是要壓縮的。由於常用的圖檔格式: jpeg、png、gif都是已經壓縮過的,再經過壓縮程序常常多花時間、花記憶體、花CPU,但常常壓出來的東西反而還更大,所以這些圖都記得絕不要設定壓縮。

favicon

一定要記得在你的網站放favicon,而且favicon最好不要太大,最好小於1KB。有的favicon檔案包含了各種大小的圖檔,所以就會太大。可以的話,使用16色palette png就好了。動畫gif的favicon是完全不必要的,要避免(但是動態更換favicon倒是在一些場合很有用)。

Nuance

| Comments

很久以前看英文的技術書時學到「nuance」這個字,查字典的解釋是「細微的差別」,例如音調、顏色、見解等細節的不同。

我喜歡這個字,是因為這個字代表每個個體的獨特性。以音樂來說,貝多芬的第九號交響曲的樂譜只有一種,但是不同的交響樂團,不同的指揮家,甚至不同的音樂廳,演奏出來的感覺都不同。而這些不同的版本就有個人喜好、意境的不同。節拍快0.1秒、音符修飾的1/100差異等等,這些用科學統計方法來看,不具顯著性的差異,但是卻能表現出不同的風格。例如福特萬格勒在拜魯特的貝九就被視為是經典詮釋。

有的指揮家認為,要完全遵照作曲家在樂譜上的指示,忠實的呈現出來,貫徹作曲家的意志。但有的指揮家覺得,樂譜有其表達力的限制,應該要適時揉合作曲家的作曲背景,並由指揮/演奏去詮釋作品。但不論是哪一種,都要有一定的能力才能達到。

我是Leica M相機的愛好者,這款高品質的德國相機,堅固耐用,功能非常少,他僅有的功能都是讓你能專注在「拍照」這件事上。用Leica M拍出來的照片,優異的暗部細節和寫實性,讓我非常的喜愛。看習慣用Leica M拍的照片之後,看一般的照片就會覺得「少了很多細節」。有些人看不出細節差異,但是我剛好是看得出來的那種。

回到軟體開發上面,「nuance」這個字就更重要了。軟體開發雖然是一種「創作」,但是本質上和「演奏」比較像。演奏要以「樂譜」為本,加上演奏者的詮釋。而軟體開發也是有一個目標,例如「需求」,再由開發者去詮釋。但是這個目標不像樂譜,有非常明確的規範,所以開發者能夠發揮的空間非常的大。就算再詳細的設計文件,在真正實作時,還是有一大段空間要填滿。

例如,我想做一個線上購物網站,這是目標,但是在作出來之前,沒有人知道這個網站將來會長什麼樣。就算網頁看起來一模一樣好了,也許背後用的技術完全不同,也許scalability不同,也許performance不同,也許cost不同。而這一切一切的不同,就是由許多開發時的選擇累積出來的。這些自由選擇(詮釋方式),就是我所說的軟體nuance。

所以,軟體的開發者、設計者、架構者所作的大大小小的選擇,也就決定了這個系統的個性。和音樂一樣,在達到一定水準之後,沒有絕對的對錯,就只有「品味」(或喜好)的問題了。例如:貝九我可能比較喜歡卡拉揚的版本。

對軟體工程師來說,要有能力控制nuance,就必需要不斷增加見識廣度和技術深度,也要保持一顆熱情開放的心,願意嘗試新的東西,不能習慣於過去的作法。我的經驗是,我以為我已經看得夠廣夠深了,在和不同領域的人談過之後,我才發現自己看得太少了。同時,也要能培養出辨別「nuance」的能力,要知道作這個選擇會有什麼影響。

品質,是由許多小細節累積而成的,讓我們一起勉勵!

JavaScript的處理方式

| Comments

每個原始檔要先最小化,然後依照引用的順序合併。檔名可以在佈署時動態產生,常用的選擇有亂數、佈署版本的號碼或名稱、最後修改的檔案時間戳記、或可閱讀的曰期時間字串。

每個頁面所引用的JavaScript檔,組合會有很多種。所以對整個網站考量時,就有幾種合併的作法,以下是比較常用的。

  • 整個網站用到的所有JavaScript,都合併成一個檔案

    適合所有頁面引用的JavaScript,組合並不多時。並且引用的順序都一樣,也就是順序不影響的時候。這種作法當然網站速度最快,但是常常每個頁面引用的JavaScript,都有不同。而且有些JavaScript檔案,只在一、二個網頁被引用到,這個比例高的話,就變成每一頁都還要引用原本只需要在那一個網頁要讀取的JavaScript。有一些這類的JavaScript函式庫還滿大的,例如所見即所得編輯器(WYSIWYG),所以實務上不見得是最適合的作法。
  • 將所有頁面,或是超過一半的頁面,都有引用到的JavaScript,合併成一個檔案

    這個JavaScript會被全部的網頁所引用,然後每個網頁再各自去合併自已的專屬JavaScript檔案。也就是變成一個是整個網站都用到的合併檔,另一個是這個網頁用到的合併檔。這樣的作法,會減少單一頁面的傳輸量,不至於包含了過多沒有用到的JavaScript檔案,但是至少會有兩次的JavaScript請求。適合每個網頁所引用的JavaScript很分歧,而且檔案又不算小的時候。這也是一般常見的情況。
  • 每一個網頁各自合併自己引用的檔案

    這樣每個網頁只會有一個JavaScript請求,而且不會有多餘的內容,也容許相同組合的JavaScript以不同順序引用。缺點就是你可能需要把JavaScript合併成多種組合,最多到和網頁數一樣多。如果在各網頁間,引用相同的JavaScrip檔案數量很少時,就適合用這個作法。其實這個作法不用管理”共同的”及”各別的”JavaScript檔案,是我比較喜歡的作法。

合併完成後,再來就是要最小化(minify)。JavaScript很適合最小化,可以用語法解析器(parser)檢查,並把不需要的空白去掉。例如使用rhino、jslint。

在合併完後,尤其是最小化之後,JavaScript原始檔會變得完全不能由人去編輯,所以合併及最小化的工作必須在佈署時期,由工具幫我們作。最好是命令列的工具,可以整合進專案的自動管理流程。 如果原本的一個JavaScript檔案,被合併到多個合併後的檔案。那麼,即使你只改了原始檔的一個字,所有合併後的檔案,都要重新產生,使用者也應該重新下載。 這裡可能有二個問題:

  • 我們有設定快取標頭,如何通知使用者(瀏覽器)下載新的合併檔?
  • 只改一個檔案的一個字,就要使用者重新下載合併的檔案,會不會影響速度?

第一個問題,只要改變下載合併檔的URL,下次使用者到這個網頁,就會重新下載這個合併檔。麻煩的地方在於,我們要把所有修改過的合併檔,傳到伺服器上。也就是說,一定要再走一次佈署流程,把所有合併檔都產生好,再佈署上去,即使有工具幫我們作,負擔也是不小,過程也很多地方可能會出錯。所以使用「lazy initialization」,在伺服器端作「合併」、「最小化」的工作,也是一個不錯的方法。 第二個問題,我認為影響不大。因為我們的目標是,即使客戶端完全沒有快取,也要能很快的顯示網頁。以每一個網頁只使用一到兩個

我們常常需要在我們的網站上,引用第三方的JavaScript函式庫,如社羣網站API、測量工具、或廣告商等。以前通常會對放置JavaScript的區塊作限制,甚至要求要用document.write()的語法,對我們網站的效能造成嚴重的限制。我真的不希望使用者看我的網頁,要先等廣告render好,才出現真正的內容。尤其是JavaScript的請求會擋住(block)網頁的render,如果第三方的網站回應較慢,還會連累我們的網站,讓使用者等半天,只看到白畫面。 還好,現在比較大的第三方JavaScript函式庫,都支援了非同步的JavaScript使用法。所以我們也要把這些JavaScript,在HTML文件和資源都準備好(onload)之後,再去呼叫初始化。初始化的步驟通常是用JavaScript插入一段引用第三方JavaScript函式庫的

inline又分成兩種,一種是寫在靜態HTML裡,如果量不多倒是還好。另一種是隨著伺服器端腳本(server side script)或範本(template)工具動態產生的HTML寫出去的。

這兩種作法都會造成許多管理、開發、和優化的麻煩,所以要從一開始就要儘量避免。

如果要最小化這些源始碼,必須先把inline的一段段

這種程式碼是很難進行自動化優化的,而且維護成本非常高,無論如何你都應該避免這種寫法。

Blue Pill or Red Pill?

| Comments

真的很久沒更新了。 標題又是用The Matrix裡的梗,可是圖都有版權的,不能用。 工作繁重不能當作藉囗,有辦法的人還是能有規律的產出新内容。像Jamie Lin,現在每天一篇啊,會不會太厲害了一點。

要寫blog,就像駭客任務裡的莫非斯給你的選擇。你可以選擇藍色藥丸,繼續過習慣的生活。或是選擇紅色藥丸,很辛苦地試著對生活進行革命。Your choice。

沒錯,革命哪有不辛苦的。寫第一本書的時候,我採用硬撐的方式。把睡覺時間拿來寫稿,沒錯,結果是出來了,但是畢竟不是長久之計。身為hack everything的人,不能繼續這樣作。

所以,要工作、要休息、要看資料,要陪家人,還要寫作,這到底要怎麼作到?別急,我也在試,總會有辦法的。

總之,是到了繼續的時候了。和之前說的一樣,我會把新書的內容,用blog的形式發表。每一篇都可能不完整、沒有前後文、鬼打牆、或是不通順,都是屬於正常現象,請小心服用。

除了原稿,我還必需建立幾個open source的專案,作為工具和framework。所以真的是大工程,有點像挖坑給自己跳。的確,追求完美的性格又發作了。

對我要寫的內容有任何疑問和建議,都可以提出來,我會參考。但是不一定有時間回應,因為我要繼續前進。發表過的內容也可能重新改寫,所以如果你覺得這篇和你之前看的不同,就忘了過去吧,現在的比較重要。

又到了最難的結尾了,這裡有一個facebook自high粉絲頁好少人的,有需要就按這個讚(遞)。<fb:like href=”http://www.facebook.com/hank.web” send=”false” layout=”button_count” width=”450” show_faces=”true”></fb:like>

AWS Updates 2011-07

| Comments

上天是公平的, 每個人每天只有24小時. 所以如果你不是萬中選一的練武奇才, 那就要比別人多花點時間了. 請容我先用最近的AWS新聞來更新一下blog. 好啦, 因為確實不是新聞了, 所以標題改叫updates…

AWS Import/Export for EBS

這個Import/Export的功能可能在北美洲比較有用, 因為是寄硬碟去給Amazon, 讓Amazon依你的指示把資料從S3寫到硬碟或是相反方向. 如果要輸入/輸出大量資料, 例如幾TB, 絕對是用這個方法比較快. 現在EBS也支援AWS Import/Export了, 可以直接作成EBS snapshots, 這樣要複製多份EBS volumes就非常簡單了.

AWS再降價

是的, AWS又降價了. 這次是很重要的網路傳輸費, 從2011-07-01開始生效. 而且Amazon很康慨的把傳入AWS的費用全免了, 這樣計算網路傳輸費用也很簡單了. 很明顯, Amazon就是希望你把資料全部放到他家裡去. 這個用意再明顯也不過了, 資料一進去, 要出來就難了, 因為最難搬動的就是資料啊. 好了, 傳入全免費了, 那傳出的費用也降了. 以最貴的Tokyo地區來算, 每個月前10TB是每GB $0.201美金. 所以如果你的網站每個月輸出100GB, 那就是$20.1美金. 超大量的流量(每個月524TB以上)還可以和Amazon商量, 拿特別的折扣. 另一個和網路傳輸費最相關的服務, 就是CloudFront, 也一起降價了. 同樣以最貴的日本地區來看, 每個月前10TB的傳出費用也是降到每GB $0.201美金. 而且流量越大, 每GB的花費比AWS其它服務的網路傳輸費還便宜. 另外CloudFront也有Reserved Capacity Pricing, 和EC2 reserved instances概念類似, 也是先付年費, 就可以有較大的折扣. 不過要直接和Amazon聯絡, 而且每個月流量至少要10TB.

預告: 之後應該會開始把Hadoop的資料整理上來.

Why Blogging

| Comments

常常沒有人問我, 為什麼要寫blog? (沒錯, 是”沒有人”, 這句只是為了學各大blogger常見的開頭…) 請看Jamie的: 你必須開一個網誌,現在. 其實最早也是Jamie鼓勵我寫blog的, 我常常說, 沒有Jamie, 就沒有這個blog, 也沒有出書, 也沒有今天的我.

在這裡說的blog, 不是給自己和認識的人看的, 而是為了這個世界創造更多的價值, 不論是自己, 讀者, 或整個與你相關的環境. 像我是軟體工程師, 我可以把我的經驗分享出來, 讓有需要的人, 可以很快的找到方向. 這樣一來, 不但為別人創造了價值, 我自己也增加了無型的價值. 所以, 各行各業都可以寫blog, 不論目的是什麼, 你都可以造成一些影響. 這在網路還沒發達之前是不可能的事, 如果你對現在的媒體很不滿, 那網路就是你最好的發聲管道. 我要很明確的告訴你, 寫blog絕不是一件簡單的事. 如果沒有決心, 那就把它當成休閒就好, 不要期望寫blog能帶給你什麼額外的回饋. 每天上班就已經快累死了, 回到家只想休息啊. 生活上還有很多雜事要處理: 帳單還沒付, 電腦壞了要修, 車子要檢查. 即使是有空的時間, 我也可能和人吵架影響心情, 生病看醫生, 很多文件/書要看, 要靜下心來整理資料寫一篇有內容的文章還真是難啊!

像這個: 如何辭掉你的工作,改變這個世界,還有人付錢給你. 是很難達到的, 而且也不適合每一個人. 但是如果你想除了每個月領薪水, 還能創造出你和別人不一樣的價值的話, 那寫blog是一個很好的開始. (怎麼有點像直銷的語氣?!) 很多人都覺得在台灣engineer不值錢, 而且沒辦法作到老(這是重點, 逼得engineer一定要轉manager或analysis, designer. 薪水高的資深engineer似乎是被砍的高危險群), 其實我認識很多人真的很厲害, 但是沒什麼人知道. 如果他們能利用網路這個媒體, 貢獻他們的知識, 也可以順便提昇自己的價值. 我一直覺得, 會寫程式沒什麼了不起, 快快樂樂學○○這類的書看一下就會寫了. 所以也難怪很多人真的不覺得軟體工程師有什麼價值. 但是了不起的地方在於, 完成一種功能的寫法有無限多種, 哪一種才是最適合的寫法? 這就是為什麼要看高手的code, 看高手的code可以快速增加功力, 一定要思考為什麼他要這樣寫, 如果能舉出這樣寫的利和弊, 以後就可以納為已用. 我看了高手寫的code常常會有, 哦! 原來還有這種寫法, 以前都沒想過. 從另一個角度來看, 你怎麼告訴別人(或客戶), 你設計的架構是比較好的. 同樣的目的, 為什麼要改用你的方法? 舉個例子, CSS每個人都會寫, 但是要render的快, 容易維護, 減少陷阱, 並且在各browser都可以用, 這是很困難的, 但是你能整理出來嗎? 另外, 軟體的東西那麼多, 如果你有用過的經驗, 是不是能很快的作出適合的決定. 例如: 為什麼在這個場合我不要用Hibernate, 在那個地方我要用Spring, 如果你能分析出來, 就是價值所在, 也就是資深工程師厲害的地方. 一但能寫一些有價值的東西, 別人自然就會相信你是這方面的高手, 有機會自然就會找你. 以前看過一個tweet, 寫的是說: 寫blog的人真是佛心來的啊! 這句話的意思是很感謝blogger能分享他的知識, 但是我想另一方面也代表經營blog真的要花很多心思. 我認為一開始不要很功利的角度去寫, 而是要真正把知識整理好, 如果你寫的好, 不用擔心, 自然就會有更多的正回饋, 自由網路的世界是不會讓你埋沒太久的.

這個星期五(2011-06-17)我在元智大學資訊工程學系有演講, 可以參考這個海報 ;)