2007/12/27

作網站不只是外包廠商的事

##CONTINUE##

轉錄自 http://blog.xdite.net/?p=507

每 次去 HappyWeb 真的都是有不同的收穫,不管是台上講的,或者是台下聊的,都可以讓我有不同方向的思考。每一次的聚會,參加的份子成分比例都不太相同,唯一有幾個共通點的 地方是,當大家知道我是 xdite 後,不管是玩技術的或只有純想法的,都很有興趣跟我聊上幾句。不同人對同一件事不同的看法,常讓我在回家推敲後,剝出幾個沒多少人注意的現象。

最近令人注意的就是,對「外包廠商」的失望。我對這種現象感到不明就裡。

在看完 Mr.6 半個月前的一篇文章「做網站的人,「收尾巴」為何重要?」文章中的這一段

『最近聽過幾個創業家找外包廠商做網站,有的找到印度去,沒有仔細找的,在「收尾巴」的部份都做得相當糟糕。創業家最後花 很多時間在寫bug,一次發出一、兩百個bug給工程師,工程師每天慢吞吞的修五~六個,然後創業家每天測試又多發現了七~八個,修的速度竟然比不上發現 的速度,一個bug又引來另一個bug。這時候創業家一定有一種無力感,很想問對方:「你給我成品前,難道自己不會『撿撿』嗎?(收尾巴之意)」這時候, 創業家可能想在此加一個按鈕、在那邊加一個底色,但看到bug已經修不完了,只好作罷!不過,開了第一版以後,還有第二版要做,第二版創業家又希望改這 裡、改那裡,但創業家轉頭一想,原本預計三個月要完成的第一版,竟拖了一年才完成;創業家只要一想到還要再一年才能推出第二版,算算自己頭上的白髮,心 想,他媽的算了!網路的夢想就此說掰掰,當初砸下的錢也全都浪費掉。於是,我們看到外包廠商生生不息,創業家們,卻從來沒有得到過他心目中的產品。』

和幾個拿的到錢創業、產品也作的出來還 OK 的朋友聊過之後。我才突然想到問題是什麼。

我得到的結論是:失敗的問題不在於創業前懂技術的深淺程度,而是在太多人對這件事抱持著「想要用網站創業,卻完全不想去理解技術方面的事」的態度。

老實說,剛看到上面那一段文章的第一反應,我是在電腦前狂笑的。心想,怎麼會有人這麼白痴,有那個寫上一兩百個 bug report 的閒功夫,卻不願意花個少少十分鍾下去看 code 哪個地方出錯,然後再來怪外包廠商不可靠。而單獨請 RD 太貴、唯一出路「外包」在最近被證實是不可靠的,還成了大家夢碎的當然哀嚎理由。

好吧,這是很難讓我理解的事……我們寫程式、開發網站使用別人發明過的輪子 sourceforgerubyforgescriptaculousYUI,是很自然的事。丟 msn 請有特殊專長的朋友解 bug 、想解法,甚至是給點錢請人家幫忙畫個圖、寫個功能,也幾乎不會發生這麼誇張的事情。

那麼問題在哪,難道是朋友群和挑人眼光不同的關係嗎?

最後我想到了。不,不是這個原因。是不同人的大腦對於同一件事解讀不同,得到不同啟示的關係。

普世相同的認知 :

Steve Jobs 的成功,讓人覺得「只要找到 Woz 等級的高手合作,就有成功的機會」。Kevin Rose's digg 爆紅,讓人覺得「 OK,外包的網站也會紅」。

這是懂技術的人的啟示:

「我的工作夥伴,要是能幫我一點忙,又口才很好像 Jobs 那麼會賣東西那就最棒了。」「外國還有很多高手,我自己一個人寫完這些東西可能太慢,或許花一點錢外包就能急速縮短開發的時間。像 Kevin Rose 那樣從點子發想到完工只花那麼少的時間,說不定我也會成功。」

這是不懂技術的人的啟示:

「只要找到 Woz 等級的高手幫我寫完產品,我就發了」。「原來這種 Web 2.0 網站也是可以花錢訂作的。」

但是它們往往會忘記,或甚至把這些案例是刻意簡化成「不懂技術也會成功」。而忽略 Steve Jobs 和 Steve Woz 在創業時,雖然許多產品電路版主要是 Woz 設計的,問題是 Jobs 也會幫忙焊個東西,封裝個東西什麼的… Woz 當初也不是因為 Jobs 懂賣東西找上它一起合作的,而是它們有一同的開發興趣。 Kevin Rose 並不單純只是個在 Tech TV 而不懂技術的人,他之前曾在幾個 start-up 公司工作過,而且大學念的是 Computer Science(最後輟學),重點是他會寫程式,他也一起參與開發 Digg,並不是純然外包出去。(我不懂台灣這邊為什麼會有他不懂程式的謠言)

如果你目前有自己的實體事業,在全然不懂技術的狀況下找外包幫你整治個可跟網路世界橋接的網站當然可行。因為不懂技術導致的網站成敗問題,並不會對 實體事業的純利造成太大影響。但是,如果你的產品銷售管道就純粹透過網路,或甚至網站本身自己就是商品。我不懂為什麼你還是不願意去瞭解「這個世界在玩什 麼」,然後堅信著自己不需要投入就可以收成一切。尤其在你不僅沒有Steve Jobs 般的行銷能力,還「連個可以賣的東西」都沒有 。


外包、3rd Party software 一向的定義,都是自己會作,但是金錢或時間花費太高,而用來加速產品開發速度的利器
, 但卻從不是用來客制產品的途徑。因為沒有人比你更清楚網站最後該長什麼樣子。但往往真正的現實是,你連自己都不知道自己想要的房子長什麼樣,只看到別人有 花崗石地板、挑高屋簷、彩繪玻璃,就叫著建築工人自行想像蓋出一棟房子,然後蓋到一半再說不是我想要的,從頭到尾也從不給設計圖,最後整死工人…XD。就 算作網站不是難變更的鋼筋水泥,而是較好轉彎改變設計的輕鋼架鐵皮、室內裝潢,這樣搞也只是…花大把時間,做出一棟讓人很抖又長得很醜的房子….(知道為 台灣鄉下那些很漂亮又耐震的房子是怎麼來的吧?除了砸大錢通通請人代勞的CASE外,幾乎都是自己設計、自己監工、甚至自己參與部分施作的啊。)


而除了得到的啟示不同之外。還有一個更怪的現象,那就是完全不思考句子意義卻堅決的不斷複述。諸如「作一個網站成本很低」,「我想這個修改動作並不難,只是我不懂 PHP…」等等經典名言。而最奇怪的是,為什麼它們沒有相關開發經驗為什麼會這樣想?「作網站成本很低」「改一個功能並不是很難」這兩件事分明只會存在工程師腦袋的啊。你什麼都不懂,跟人家講什麼講?

我想了好久,才想出來真正的原因:「講的人講一半,聽的人也聽一半,最糟糕的還不用大腦想。」

問題當然是沒經驗的人才會問的,被問的對象當然是有經驗的人,回答當然也是長這樣:「作網站成本很低」「改一個功能並不是很難」。但是,後半部卻很少、甚至沒有被說出來過:「如果你跟我一樣對網路平台和開發技術很熟,作網站成本就非常低……」「改一個功能並不是很難,只是我要花一些時間去看程式碼和重新改寫」(因為通常不會找被問的人幫忙啊)。所以聽的人就會得到這樣的結論:作網站根本就不花錢而且一點都不難…

是啊…只不過…(對於沒有錢,什麼底子都沒有又不想學的人,門檻高的嚇死人)

作網站和收尾真的只是外包廠商和技術高手的事?為什麼承作整個網站的這種類型,大部分外包廠商只願接機關學校案子(即使需要通過 CMMI)?為什麼有人能夠善用外包,有人整天只埋怨外包出鎚…?為什麼國外可以,國內不行?

不是外包廠商的問題,而是願不願意動手作,和願不願意花腦筋想的問題…。

Popularity: 4% [?]

2007/12/26

ConceptNet Implemented

##CONTINUE##
今天在CodeProject找到一位善心人士把Python-Based的ConceptNet API移植到C#平台上,功德無量阿~連結如下:
  1. Having fun with MIT's ConceptNet 2.1 in C#

  2. C# ConceptNetUtils (CNU) version 2


第一篇單純只是透過C#撰寫的GUI介面去搜尋在本地端下載回來的幾個ConceptNet檔案:
  • predicates_concise_kline.txt
  • predicates_concise_nonkline.txt
  • predicates_nonconcise_kline.txt
  • predicates_nonconcise_nonkline.txt
詳細的操作過程可以在JoeSox的說明中看到,大致上的介面就像下圖一樣,進入程式之後會先要你指定你ConceptNet本地端中上述四個檔案的位置,然後才能開始玩。




原始論文所述,ConceptNet中關鍵在於ConceptNet's Relational Ontology,在這個系統中把所有東西的從屬及描述簡化成可以分成8大種類20種關係。詳細如下:

‧ K-Lines: ConceptuallyRelatedTo, ThematicKLine, SuperThematicKLine
‧ Things(東西): IsA, PartOf, PropertyOf, De.nedAs, MadeOf
‧ Spatial(空間性的): LocationOf
‧ Events(事件): SubeventOf, PrerequisiteEventOf, First-SubeventOf, LastSubeventOf
‧ Causal(因果關係的): EffectOf, DesirousEffectOf
‧ Affective(表達情感的): MotivationOf, DesireOf
‧ Functional(機能/功能性的): CapableOfReceivingAction, UsedFor
‧ Agents(代理/媒介): CapableOf

第一項K-Lines其實就是Knowledge Lines的意思,大概是指對於某些物體或事件的想法或念頭可能集合吧(參考以下說法)
ConceptNet makes it possible, within the limit's of it's knowledgebase, to allow a computer to understand new concepts or even unknown concepts by using conceptual correlations called Knowledge-Lines (K-Lines: a term introduced by Minsky, cf. The Society of Mind (1987)). K-Lines may be thought of a list of previous knowledge about a subject or task.



第二篇的Util主要是做出一個可以做推論系統的介面,但程式執行上目前仍有許多問題。執行這像程式需要:
  • Download ConceptNet 2.1.(recommended extraction to ...\My Documents\Python Projects\conceptnet2.1)
  • Download Python 2.4 (recommended extraction to C:\Python24)
  • Download the latest release IronPython. (recommended extraction to ...\My Documents\Visual Studio 2005\Projects)
  • Download and unzip this article's .Net Solution and project files. Open CNUtils2Demo.sln.
  • Manually edit the local paths in CNUDB.py (Line 10) and CNUMontylingua.py (Line 8) [files may be found in the Solution Explorer] to point to your conceptnet2.1 and conceptnet2.1\montylingua directories.
  • From MS VC# 2005 Solution Explorer, Add a Reference by browsing to IronPython.dll and IronMath.dll located where you extracted the IronPython download.
  • ReBuild both projects in the solution. The demo should now be able to execute.

IronPython.dll跟IronMath.dll兩個外掛需要手動載入到VS Studio裡,以及py的目錄也要隨著自己的存放目錄修改。

目前出現的錯誤有ConceptNetUtils.cs:257 lines、
ConceptNetUtils.cs:800 lines、Form1.cs:351 Lines。
我在CodeProject上面留言了,改了幾個版本的設定跟路徑似乎也沒有什麼改變。留言如下:

I follow your steps to hard code the line 44 & 50 of path.cs to point to my conceptnet2.1.(CNUMontylingua.py & CNUDB.py path already done.)

And downgrade the Python Version from 2.5 to 2.4.4.

But I still got the same problem, which says:
ImportError:No module named string.
And
IronPython.Runtime.Exception.PythonImportErrorException:Occurred at IronPython.dll

Then I enter a word: "rabbit", error occured at Form1.cs Line 351,says IndexOutOfRangeException. then, the name 'c' not defined error occurred.

Are these errors happened because the path-setting problem? Or something elses I should know first? Many THX!!

待後續修改或有善心人士回應吧~