11/26/2015

資訊新鮮人:三個關於價值的概念



亞當斯密,在國富論中描述商品的價值只有三種來源:勞力,土地,資本。雖然那是1776年的事情。但至今變化仍然不大。勞力:泛指人的各種智慧以及努力;土地:指的是各種天然資源;資本當然就是投入的錢。


村上春樹,在尋羊冒險記中描述組織的價值有兩個部分:意志,收割。雖然那是小說,而且還是現實與科幻混合的小說。意志是指推進組織的能力,具有統御可能性的能力;收割可能是指將即將得到的利益完成。



Dave Snowden,在他的研究裡面,定義了Cynefin架構,將事件的反應系統分成:簡單(simple),複合(complicated),複雜(complex),混亂(Chaotic)。

簡單:指的是事情的反應有很明確的因果關係定義,根據定義來做事情即可。

複合:指的是事情的反應之間,確實有因果關係,但是這個因果關係可以透過分析,學得而來。

複雜:指的是事情的反應之間,雖然有因果關係,但這因果關係沒辦法事先知道,只能事後知道。

混亂:指的是事情的反應之間,沒有因果關係。



這三個人講的事情看似沒關係,但是對於社會新鮮人對於價值的三個重要概念,卻是重要的參考。



(1) 何謂價值


幾乎任何東西都有價值,只是每個人評估價值的方式不一樣而已。在經濟學上最簡單的方式就是,你的某個東西,願意和別人交換什麼東西。那就是對你來說的價值。當然,交換太過麻煩,因此金錢變成一種簡單的衡量媒介。

在經濟學上常用價格來當作價值的衡量方式。不過價格本身就有很多種定義。

如果將範圍縮小到,投入資訊產業的新鮮人所關心的方向。價值可以縮小到:個人的智慧與努力,去交換某種東西。當然這某種東西很容易就被歸類為薪資,而如果是創業家則是利潤。

交換只有已經交換才有意義。因此,價值只有在交換成立的時候才有意義。例如,當新鮮人在104要求月薪5萬,這並不真的是他的價值,他的價值可能是4萬,也有可能是50萬,只有在成立的當下 - 也就是雙方同意月薪的那一瞬間 - 價值就成立了。所以,更重要的觀念是:價值沒有所謂的高與低,只有當時的事實。換言之,以價值的觀點來看,沒有過高的薪水,或者過低的薪水,只有雙方同意交換的成立價值。

當然,很多人互相同意的交換成立價值,就變成常見的成交價。股票某個時間點的價格,就是那個時間點的某一些股票的成交價,而非所有股票在那個時間點都是同一個價格。

最直接了當的說:如果覺得這薪水,對你來說太少,那就不要答應。但當你答應了某薪水,也不要抱怨 - 起碼在幾個月之內,沒什麼好抱怨的。而當你「自認」應該要提升價值時(就是該加薪了),必須要是有交換的可能,才叫做價值提升。(就是真有人願意以這樣的薪水雇用你)

價值當然可以互相比較,常聽人說性價比高還是低。然而不同事務交換的時候,比較的基準自然會不一樣。就此而言,在資訊科技產業的任何兩個程式設計師,都無法互相完整比較價值,因為兩個人的智慧勞動以及產出一定無法有效比較。

另外,同一件事情,在從不同人,不同時空背景取得,會有極大的價值差異。例如,你坐計程車上班會花錢,然而,如果在你搭車的時候剛好遇到同事,順道搭便車,他可能完全不會收你任何費用。



(2) 組織的價值產生


組織,特別是營利組織,其價值等於是可產出的商品(或服務)。而任何商品的價值來源有三種:勞力,土地,資本。由於資訊科技產業(特別是軟體)並沒有用到很特別的天然資源,因此土地幾乎可以排除。而勞力和資本就變成資訊產業最主要的價值產生來源。

資本的構成與取得也不那麼簡單,不過不在我們的討論範圍之內。當然政府政策的影響也不在這短短的文章討論範圍之內。

勞力當然包含智慧技能等等,而企業內員工對於工作的付出智慧與勞力的方向,大概可以分成Cynefin架構中的那四種。


簡單(simple):任何工作的行為是可以預知因果關係,必且可以透過各種手段最佳化,這些手段可能是由機器取代,可能無法由機器取代。例如銀行櫃台的大部份業務,都可以由ATM取代。某些日式的餐飲店,其服務流程經過妥善的最佳化,任何顧客的情境以及行為都可以編列在他們的制度與管理方式裡。因此,簡單類型的工作,可能產生最大價值在於能否提出最佳化。

複合(complicated):任何工作的因果關係可以透過分析與瞭解而取得。工作本身可能是困難的,但是工作的效率還是可以評量,工作的內容,可能需要少許技能,但也有可能需要很高的技能才能完成。這類型的工作,其價值高與低,取決人的能力,使用的工具,採用的策略技術。這類型的工作可以學習,但學習時間長短不一定。複合類型的工作,可能產生最大價值在於是否能提出好的架構,並且有訓練有素的專家。一般的程式設計師,維修瓦斯爐工程師,一般醫生,護士,理財專員等等都屬於此類。

複雜(complex):事件與工作的因果關係只能事後知道,無法在事前分析瞭解。然而,其因果關係仍然存在。聽起好像很複雜,然而這類型的工作,不見得很困難,只是要產生價值的時候,可能需要不停地進行嘗試與練習,才能事後了解因果關係,透過事後練習了解。例如,開一家新公司當創業家,獵人頭工作,業務類型工作,特殊類別的醫生,各類型的研究單位等等。

混亂(Chaotic):事件與工作沒有因果關係,或者就算有,也是人的智慧無法得知,藝術就是此一類型。這類型的工作可以透過學習,擴張知識,反覆練習獲得經驗,來提昇可能性。但是難以評量。例如,畢卡索的畫作,張大千的書法,可以由他學生們學習模仿,也無法就價值評量。在企業上常見的例子是賈伯斯,他對apple的貢獻無法被學習,也無法被評量。有人認為開拓性質的研發也算此類,例如具有極端價值的演算法工程師,組織微積分的牛頓,構思相對論的愛因斯坦等等。

當然在以上的例子非常粗略,只是拿來參考用。組織的價值產生,就在透過人的智慧與勞力,資本的投入用以執行四種系統架構的事物。這四種系統架構,其產生價值的地方都不盡相同。

但今天幾乎可以確定的是:(a) 簡單的工作會趨向被自動化方式取代,無法自動化(例如餐廳)則會被低勞力成本取代。(b) 複雜的工作,透過科技的進步會簡單化。(c) 混亂類型的工作仍然屬於個別人的天賦範圍,可以培養但無法預測。

因此,真正的組織價值,在於透過意志,驅動複雜工作的架構,屆此拉近因果關係的差距,以及建立相較於其他組織的優勢。


(3) 價值不公平的觀點


誠如"何謂價值"所描述。價值只有交換的時候才會成立,而既然雙方樂於交換,何來不公?

大部份的情況下,所謂樂於交換通常是在資訊互相全然透明的情況。然而資訊全然透明是幾乎不可能,因為人根本無法處理足夠大量的資料,也無法體驗所有可能的情況。例如,一個新鮮人,畢業之後最多也只能面試50家企業,不可能窮其心力面試完所有可能的工作。但反過來說,一個企業的工作(如果不是屬於「複雜」或者「混亂」類型)幾乎都可以找到起碼50個合格候選人。因而,由於資訊的不對等,大部份的情況下,企業比較容易可以找到性價比高的員工,但新鮮人比較難找到性價比高的工作。

換言之,以個人的角度,解決不公平的方式有很多種。從價值的觀點著手有兩個可能:

(a) 投入組織意志的部分。

投入職場的大企業的人,都不太可能一開始就是驅動組織經營策略的人。通常都是某個小部門的小螺絲釘。因而要成為組織意志的一部分是很難的。然而,如果是投入在小公司,假設是只有5個人,那麼投入組織的意志部分是非常輕而易舉的事情。

不在組織的意志部分,並非就沒有價值,而是在組織的意志部分,個人的能力與可產生價值很容易顯現 - 無論高或低,好與壞。

(b) 強化處理複雜或者混亂的問題的能力。

混亂的問題大部份是屬於藝術類型。藝術很多都是「無價」,因為無價,也難以在此討論。不過所有能處理混亂類型的人,幾乎都是在某一個領域知識廣博,經驗豐富。因此,不間斷的學習一定會有幫助。

處理複雜的問題可以透過自我能力的培養,經驗累積,從他人(例如職場導師)學習而來。複雜的問題相當困難,但是一旦累積了架構性解決的能力,這優勢幾乎不會消失。

(c) 將複合的問題簡化。

透過資訊科技,將複合的問題簡化,可能是最近幾年最常看到資訊科技對組織產生價值的地方。大數據(Big Data)對網路書店上推薦購書就數此類。許許多多不同的手機應用程式(app) ,提供人類各種溝通方式(例如line) 也是屬於此類型。


(d) 將簡單的問題加速或自動化,進而最佳化。

將簡單的問題加速或自動化,可能是資訊科技新鮮人常會忽略掉的一點,但這點其實對價值的提升比想像中來的重要許多,特別是在大組織內。加速或自動化處理簡單的問題,可以讓人專注於其他架構問題,縮短內部公文流程,自動記錄某些事件等等,都屬於此類。這做起來相當容易,而且假以時日效果也很好。

當事情或者問題可以自動化之後,進而就可以最佳化。例如,過去政府有複雜的公文簽核流程,在紙本的年代,很難統計看出真正的瓶頸,透過自動化公文傳遞,很快的看出到底哪些公文花多少時間流過哪些不必要重複的地方,進而就可以去掉不必要的地方。以開發手機APP的流程為例,當視覺設計師的mockup,可以自動產生可供UI/UX測試的可供驗證app時,就可以進而快速取得使用者操作的經驗流程,進而讓UI/UX能最佳化手機APP的使用便利。




將複合的問題簡單化,簡單的問題自動化,自動的事情最佳化:是最基本產生價值的概念。




沈思:
   - 資訊新鮮人能在多短的時間內對組織產生價值?

11/19/2015

軟體專案的啟動:三件必要事項



萬事起頭難,但是軟體專案的開始卻不很難,至少比收尾容易。


專案在開啟之前,相關人等必須一定要聚集在一起,至少達成一件事情:就是要討論專案如何開始。這個討論很多地方稱之為Kick-off會議。(專案啟動會議)。

在啟動會議結束前,就必須要能至少完成,或理解以下三件事情。如果不能完成或理解以下事項,當然還是可以開始。不過好的開始,雖然是成功的一半,但壞的開始,一定是失敗的八成。

要注意的是,這三件事情只是開始,並沒有涵蓋技術上的真正開始(例如High Level Design)

(1) 了解專案目的


一個軟體開發專案的目的,一定不會是完成某些程式碼功能。通常是帶有應用意義。瞭解其應用意義,才是真正的專案目的。在不了解專案目的的情況下,隨著專案進行走偏的機會很大。

舉例來說,也許某企業組織在一些腦力激盪之後,想要有自己的即時通訊app(類似line),並且也組織了一個小組來進行開發。而它的目的是希望企業員工在用手機的時候能有完整保密的訊息功能,而且非企業員工不可能使用。

單就以上描述而言,重點是在於(a)企業員工使用手機(b)完整保密的訊息估能(c)非企業員工不可能使用。

然而,是不是手機app並不是目的。是不是自己重頭到尾開發,還是利用現有套件也不是目的,有沒有上架也不是目的。

有些時候,專案目的不是這麼容易清楚了解,許多大組織有很多隱晦的目的。即便是人數極少的新創組織,有時候也容易把將組織目的和戰略執行方式混淆。因而,在專案啟動會議的時候,務必再三確認專案真正目的。

有一個簡單的方式可以判斷是否為真正目的。如果目的的描述,非常具體的指名特定技術,在盈利企業的專案裡,它就很有可能不是目的。舉例來說:『我們要開發一個Android APP他可以在開機的時候就自訂在背景執行,而且當發現手機的GPS位置到某一個範圍時,就寄出email』,這非常有可能不是真正的目的,而如果團隊照著進行,也許沒有大問題,但如果能真正了解目的,有可能有截然不同的開發方式。例如真正目的可能是:『我們是個高級西餐廳,需要一個行動裝置,了解某個之前的客戶,如果剛好在我們餐廳附近,我想們要通知他一些折扣訊息』。當目的和技術脫離,軟體團隊才會找到更正確地解決方式。以這個例子來說,寄email大概不是什麼好方法,在背景執行的app也遲早會被使用者發現過於浪費電而停掉。

專案目的也許隱晦,但是要再三確認,實務上也花不了多少時間。

(2) 專案設定


任何專案一定有其限制和背景因素。這些暫且叫做專案設定(setup/config)。

專案的限制有很多來源,有可能是先天限制,例如奧林匹克訂票系統,自然就有在某月某日結案的先天限制。也有可能是後天限制,例如最多能花多少經費。不過無論如何,一定有很多很多限制。在這一階段我們要了解的限制,最少要有以下這一點:在範圍,時間,成本這三個變項之中,哪一個是可以犧牲的。所有專案管理最基本的認知:範圍,時間,成本中一個專案最多只能控制兩個,細節可以參看這裡

當然有些人可能會列出6個變項,或甚至9個大項目。但重點不在有多少變項,重點在於專案的開始就要先有認知。

專案的重要背景因素,如果有的話,也需要先行認知。背景因素有可能是限制的一種,有可能和目的有關。例如,企業目前營運狀況極為良好,是一種背景因素,他可能會讓專案遇到困難時,有額外的助力。又例如,這個軟體專案是為了新產品,而目前,在市面上已經有競爭對手:這是一個可能在不預警的狀態下,改變專案目的或者增加專案限制的背景因素。

通常只要開口多問幾次,不需要花多少時間就可以了解很多專案設定。

(3) 如何合作

專案成員如何合作的方法論有很多,但最根本的概念就是,合作的本身,不會造成合作的困難。合作本身,能讓團隊效益提高,讓1+1>2。

(a) 認知事實

團隊活動有很多事實會發生,最不好的事實就是『大部份的人都有認知偏誤』。偏誤很難完全屏除,但盡量貼近事實是最好的做法。

事實最好在一開始就是大家所先認定好,特別是困難的事實。舉例來說,專案有三個人,其中兩人才剛畢業,另一個人已經在公司工作35年,事實就是一定會有溝通障礙,技術銜接障礙等等。另一個例子:專案有三個人,其中一個人正在負責其他專案,一旦認知到這點,就一定要把此人在專案未來時間分配上,特別減少某個比率。而這減少的比率應該在這個階段就已經先認知。


(b)角色定義

許多專案管理的方法論,會對角色有各式各樣的定義,例如RACI,PMP都有各自的角色定義。然而,也許比較適合軟體專案的還是Scrum的定義。

但不管採用什麼方法論,至少有個角色一定要有明確的指名。那就是這個專案的負責人,無論是叫他PM也好,team leader也好。明確地找出這個人,讓他負責專案合作上的各種安排。

(c)工具

而軟體專案最少的必要使用工具也要在這裡簡單定義。例如使用git來作為版本控管工具,簡單的使用便利貼加上白板來作為目前進度顯示的工具。工具不見得要是某軟體,在專案執行過程中,要確定工具的本身不會變成專案的負擔,不會變成阻礙,不會耗費過多時間,更重要的是,一定不能成為某些事情的藉口。如果在專案過程中聽到有人反應:『XXX還沒做,是因為build server要執行編譯android的時候,』因此過多的指定工具只會造成問題。

(d)溝通

專案溝通最好還是以面對面為主,我個人是非常反對大型報告會議,但是非常贊成Scrum的每日站立會議的務實方式。每日站立會議作法是:每天固定某一個時間,大家聚在一個地方,每人用1-3分鐘的時間,只說明三件事情(要記得大家先說明,然後要討論是說明完之後再討論):

   第一:上次會議到現在為止,完成了什麼事情。

   第二:接下來到下次會議之前,打算完成什麼。

   第三:遇到什麼困難。

所有人都說明完畢之後,再根據每個人遇到的困難,也許是一起討論,也許只有某幾個人討論。這樣的會議,會讓大家集中心力在之前決定好要完成的事項上,而且有兩個人在會議室裡面相談甚歡15分鐘,其他人都在看自己的筆電的情況。

如何合作有可能是最花時間去討論的項目。採用過去成功經驗,摒除失敗的經驗是最好的方式。



以上三件事情在大型專案中,也許頂多花上一兩天的時間就可以完成。最不值得做的,就是因為『乍看之下專案好像很急』而草草啟動,忽略了這三個必要事項。



沈思


如何知道這三件必要事項有產生?這三件必要的事情完成後,應該有相對應的簡要文件。如果專案開始的時候,沒有簡單的一頁說明以上三件事情,恐怕表示大家沒有真正的共識,或者這些共識很快就遺忘。

但是相對的,假如在這個階段,就已經產生了鉅細彌遺地各類型文件,那麼專案成員也應該要警覺。帶領專案者,可能有很大的管理上的障礙或疑慮。也有可能這個專案的真正目的和實際上說明的不同。










11/16/2015

創新公司軟體專案時程管理 (三個基本概念)




絕大部份創新公司,其實在衡量任何事情的時候,其所消耗的標準,並不是真正的金錢,而是創業夥伴們的時間。

每個人一天只有24小時,雖然今年是2015了,但是你還是不可能有時光車讓你爭取更多的時間。因此,專案的時程管理變得很重要。

時間管理的技巧方法很多,如果沒有概念可以先參考這裡。但最好先建立一些基本的觀念:

(1) 觀念一:每個人的時間效率有天壤之別


特別是技術類型公司,單指寫程式的效率來說,最好的程式設計師,和最差的有很大的差距。有些研究說是10倍,有些說是上百倍。

不只是程式設計,其他工作類型也一樣。更有甚者,品質的產出也被證實和速度沒有很大的關係。換言之,又快又好是絕對有可能的。

(2) 觀念二:每個人時間的比較利益不同,因此可以分工


那麼,這樣來說我們雇用三個強人不就搞定一切事情了?首先你不可能有機會在一開始找到三個強人,因為強人早就已經有非常好的工作。就算你運氣好到不行,真的雇用了三個強人,有趣的工作可能只有一個,也不可能三個人做同一件事情。

所以分工變得很重要。比較利益法則(參見wiki)解釋了為什麼多人合作有可能1+1>2。只要大家負責的部份,是相對其他人比較專長的部份。

不過分工是否得當,會有相當大的差距。在超大型組織裡面,以現代科技發展的程度而言,分工會自然發現,即便沒有效率也會發生,例如,任何開發中國家,經濟發展的時候,投入初級產業(農林漁牧)的人自然就會慢慢變少,換言之,只要少數人的努力就可以提供食物給其他人,而其他人就可以去做更多讓生活更愉快的事情。

但是在小型組織,例如只有5個人的startup,就必須要時常檢視這樣的分工是否合理,能否達到綜效。


(3) 觀念三:中短期的專案,其完成時間早就已經固定

一個為期1-5個月的專案,當目標和資源已經定義出來的時候,其實完成的時間早就已經被上帝決定好了。問題在於,創業夥伴們,能不能事先看出來。如果一開始對時間的估計有誤,接下來新的專案就要把失誤考慮進去。

對,沒錯這就是Agile/Scrum的基本要素,無論什麼理由,當你打算完成的事情決定好產出的目標之後,時間早就已經被決定,你能夠做的就只是盡自己的能力,縮短預測的失誤,而經過幾次中短期專案,理論上,創業夥伴們的能力和資源調配方式,已經讓大家可以準確預測完成的時間。



越是能了解時間的控制,就越不被時間控制。



沉思:


考慮以下說明:時間基本觀念很重要,因為創新公司,事情完成度是以時間來衡量,而不是以事情的進展來衡量。為什麼呢?


11/11/2015

創意與創意實行 (三個必要)




創意(Innovation)講起來容易,聽得也很容易,成功故事也隨處可得,彷彿每個人都是那個第一個鑽木取火的人一樣。但實際上,常有創意並且能實踐的人很少,簡單的審視自己工作團隊以及過去3個月工作內容,哪些是真正有創意的呢?

雖然仿間有很多書籍,利用各種方法教人培養創意思考,也讓公司佈置容易發生創意的工作環境,不過真正的創意似乎更接近靈光一現,各種方法似乎沒辦法讓這靈光一現發生在每個剛好像要的時間,以及剛好像要的事情上。(培養創意思考可以參考這些:Think on your fee,  Think outside of box...還有很多請自己搜尋)

但無論如何,每個人或多或少都有想法,而創意就從各式各樣的想法突然冒出來。不過...

不去實踐的創意其實沒有任何意義,因此創意與創意的實行是一體的兩面。然而,創意的實行不見得是把創意完整的呈現出結果。

有三個必要的條件是實行創意所必備的:

(1) 足夠的內化知識


實行創意的時候,如果沒有足夠的內化知識,會花上非常多的時間才會知道可行性或者效率性。當然,過於僵化的知識有時候會限制自己的思考,但是寬廣足夠的知識,絕對是必要的。永動機:就是一個直到半個世紀之前,都可以看到許多具有才華的人,為了人類長久的能源缺乏問題,仍然投入在不可能的事情上的例子(如果是最近的話,基本上目的是詐騙而不是為了什麼偉大的目標)。

在資訊科技的創新事業來說,由於搜尋引擎的發達,讓人以為擁有正確google技巧,就等於擁有無窮盡的內化知識。然而,已經有許多研究證實,只依賴google而不尋求其他增加知識的管道,不只會降低記憶力,甚至會減少靈光一現的創意產生。

足夠的內化知識和環境也有關係,不同的環境需要不同的知識。

(2) 專注力


有某一類型的人,可能三不五時都有認為自己有好想法,也常常把『這個我N年前就想過』掛在嘴邊。但因為想法實在太多,總是不知道要從哪一個開始,更有甚者,常常做了一半就改做更有趣的。這其實沒什麼不對,畢竟多維思考是創意來源的一個方式。

然而,如果永遠都是跳來跳去,每個想法都是蜻蜓點水似的淺嚐即止,就無法在達到完整性。因此關鍵在於專注力。

專注,並不是異常執著於某件事情,而是經過計畫過的決定。以資訊科技相關的創意來說,如果採用lean MVP並且配合Scrum的方式來執行,就很容易可以達到某種程度的專注,並且也可以在計畫好的時間內,檢視專注的成果。


(3) 執行力

想法的執行很重要。執行的能力等同於創意實踐的能力,而無法有效執行的創意等同於沒有創意。

絕大部份創業的人,都大概會自認為不缺乏執行力。那是因為願意投入自己的時間和金錢,執行自己想做的事業,大概就是有執行力了吧?經過不眠不休的刻苦努力,理當有驚人的成就了?不過實際上,創業的成敗雖然和執行力,有沒有決定性的關係還是眾說紛紜。但有件事情絕對是真的:執行力的好壞,和你的生活品質有絕對性的關係。

如果你的新創事業,需要用大幅時間來換取成果,很快地,你的生活品質以及陪伴家人的時間會大幅下降。因為為了提升產出,自然而然你會用更多時間投入,而不會更提升效率。如果你僅是某大企業的員工,最後只會淪為用苦勞來換取認同的。而如果是新創企業的業主,成功的用辛苦勞力換得成功固然是好事,但辛苦勞力是否能換得成功,並不一定(參見上一段),可以控制的執行創意才是平衡人生的好方法。

不同的事業在執行力的效率提升上有不同的方式。然而有三個方向是絕對值得參考的:

(a) 將提升效率作為衡量指標:

即使這是一個一人執行的專案,或者一人公司。仍然需要衡量的指標,這樣的指標不是因為有人想要對你評分,而是作為你要提升自己的方式。而效率也必須是自己衡量自已的方式。透過這樣的衡量,就會把效率提升的重點找出來。因為是自己誠實的衡量自己,自然就會找到正確的改善方式:例如,假設每週要花上12小時在看信回信,想要效率提升,就絕對不是要提升打字的速度。

(b) 80/20法則

80/20法則簡單的說就是20%的原因是可以產生80%的效果的來源,例如百貨公司裡面的20%的產品,帶來80%營收之類的。換言之,先搞定20%的事情,就可以事半功倍。

但是80/20法則也有很多潛在問題。例如,80/20並不會引導你找出真正哪裏是真正的20%,而這個法則也沒辦法讓你知道,剩下的20%效果是不是保健因素。(簡單的說保健因素是指某些事情,有的話不會讓你很高興,但是沒有的話你一定會非常不爽,參見這裡)。

(c) 委外

工作委外(外包, outsourcing)之後並不會真的提升該工作的效率。會提升效率的原因是,由於打算執行委外,而對切出來的工作有更正確的規劃和認知。這樣的規劃和認知,迫使新創企業增加執行率的效率。

另外,在此強調所謂委外,不見得是花錢外包,任何非組織內的合作也算。有許多創新事業會群聚一起在某個場所(創意工坊之類)當然就是因為,跨組織的合作可以讓彼此專注於自己想做的事情,而互相委外彼此不做的事情。







沉思:


  • 太陽底下沒新鮮事:雖然常強調不能只依賴搜尋引擎,但是當有一個絕妙好主意的時候,先google一下一定對的。因為太陽底下真的沒新鮮事,很多事情可能早已被想過甚至實現過。






11/09/2015

跨國專案,發生於startups的三個原因



談到跨國軟體開發專案,大部分的研究或者討論案例集中在大型組織。但其實,最有機會跨國界發展專案(特別是軟體專案)的其實是創新公司startups。

什麼是跨國軟體開發專案?很簡單就是一小群人,分別處於不同的國家,為了同一個專案目標而一起努力。

為什麼跨國軟體開發專案會發生在創新公司?

第一個原因是創新企業的彼此合作。

創新企業,越能取得全球開發資源 越能專業分工。前一陣子很多與container技術相關的創新公司(cloud startups),許多除了取得很多投資者的注意,彼此之間也會互相合作。例如coreos.com,除了把自己的產品以開放源碼(open source)的方式放在市場上測試之外,他肯定還是得與其他新創公司合作,讓產品可以先行在比較願意嘗試新技術的組織裡試行。

在同一個所謂育成中心的新創公司彼此合作是很合理,但如果你的新創公司鎖定於全球市場,最好一開始就先嘗試接觸其他國家的新創公司。因跨距離的合作而成功,這樣的例子屢見不鮮。(當然因為距離與文化失敗的也不是少數)


第二個原因是委外開發。

由於網路發展太過快速,使得大部份的國家(也許中國例外?)互相聯繫的管道速度變快非常多,而軟體開發專案,理論上彼此之間只要有共同的開發工具平台(例如git 加上 jenkins 加上 jira)再配合視訊電話工具 -- 目前最跨國的工具仍是skype,就可以一起合作。對於企業來說,只要妥善面試,外包給印度,巴基斯坦,白俄羅斯的軟體程式設計師,其實效果跟雇用當地的工程師其實差不多。(前提是要面試得當)

另外一種委外開發是因為個人背景關係。舉例來說http://www.cognitivescale.com/ (算是2015年最受重視的startups之一)他的創始人是印度人,雖然總部是在德州Austin,但很明顯還有許多研發資源直接設於印度。


第三個原因取得跨國客戶。

internet快速發展的讓人忽略轉捩點的發生,各個國家的資訊障礙彼此之間差異越來越小(恩..也許中國再次除外)換言之,如果一個新創公司的產品,是屬於internet上銷售並且使用的產品,那麼一開始就要考慮取得跨國客戶。

如果要取得跨國客戶,某些時候還是必須要利用非本國資源。以台灣初創公司的角度來說,由於距離世界另外兩大市場(北美,歐洲)仍然有距離,在產品開發上,至少在介面,使用者功能部分,如果委外由英語母語者合作開發會比較接近現實。



跨國專案有其困難度,但如果分工得當,其效果遠比在單一區域來的好。






11/05/2015

選擇跨國委外開發商的務實流程:三個要點





不管委外開發什麼東西,東西有多複雜,時間有多長,正確的選擇委外廠商就等於成功了一半。

會使用委外開發的目的一定涵蓋兩點:

(a) 讓組織專注在重要的事情,
(b)成本效益。換言之,選擇委外開發的廠商或個人,也至少要涵蓋這兩點。

而對於新創公司來說,委外還有另一點優勢:就是

(c)迫使你自己更瞭解自己在做的事情

因為你需要完整的把細節用文件簡要說明清楚。如果你自己沒辦法把事情說明清楚,那麼不用說無法委外,你可能根本無法有效率的創業。這樣的創業只會讓你日以繼夜的努力,卻事倍功半,就算成功也是運氣成份居多。

在做任何選擇的時候,都要把握20/80法則,也就是用最省時間方式,確認最多關鍵成功因素。建議使用以下三個實際要點:

(1) 要點一:要確定理解規格


確認理解規格,很多人以為是外包商的責任,其實應該是業主的責任。因為業主不應該雇用一個不理解規格的人!換言之,業主要能在委外活動開始之前,確定外包商能理解規格。

這點聽起來很直覺簡單,簡單到就像大家都知道不能闖紅燈,上班不能遲到,開車不能喝酒,寫程式應該要有Unit Test一樣。可是實務上就是有很多人做不到。

根據經驗,所有外包的失敗,有起碼75%的源頭,可以追溯到對規格的不理解。因此確定外包商理解規格才能外包是第一要務。

那要怎麼在還沒簽約前,確認外包商理解規格?

用電話/email問他:Do you understand the spec?然後他會回答:Yes。....這做法是100%完全沒用。

請他看完規格書之後,問他一下:Do you have any question。然後他會回答:No。...這做法一樣100%沒用。

另外,規格也要對QA稍作定義,倒是不需要洋洋灑灑列出421的test case,只要簡要的把最重要的幾個使用者行為定義清楚即可。

最簡單的作法是用過濾刪選。實務作法如下:

1. 篩選掉不認真看文件的。


首先在發標之前,先把規格簡單的描述一下。然後在文件的中後段,穿插一句話:If you see this, please add the secret code "Bravo" in your proposal。這個目的很簡單,就是要刪掉,連看都不看就想要來投標的人。因為透過網站來投標的成本很低,所以有很大的機會亂槍打鳥。要投標的人,一定會提供proposal,而實務經驗來說10個來投標的,竟然只有5個有真的看文件,並且把Bravo這個字眼放在proposal的第一行。

換言之!用一個簡單的方法,就可以篩選掉一半根本沒認真看文件的人。沒認真看基本說明的人,可能壓根錯估時間跟成本,萬一選到這樣的外包商,最後吃虧的一定是業主。


2. 篩選掉無法回答三個技術問題的。


準備三個簡單但是重要的問題,讓外包商回答。舉例如下:

(a) Did you use dynamodb (aws) if you did, let me know why you use it.

(b) Please simply describe how to let android app use fb login.

(c) what is the most difficult things on our specification?


依照這三個問題的回答,業主很快可以判斷,剩下來個5個之中,哪些對於要做的事情比較有信心,哪些是完全沒信心。


3. 篩選掉估計時間不合理的。


前兩個問題都通過之後,就請剩下來的人估計時間。這時候估計的時間,請他要給完成的時間點,而非要花多少天完成。外包商花多久時間,多少人力完成,其實業主不會需要知道,也不可能知道。然而,業主需要知道,幾月幾號幾點,會取得什麼樣的東西。

如果完成的時間本來就預期很長 - 所謂很長是指超過2週。就應該請外包商分里程碑(milestone)分階段產出,分階段驗收完成。時間估計不合理的長或者不合理的短都會有問題。但是,在這個階段倒是可以多花幾分鐘,了解問題在哪?例如也許是他剛剛好這禮拜要畢業,準備畢業考試之類的?有些時間的延宕是可以接受,但是一定要知道原因。


以上三個篩選步驟都很簡單,任何複雜的專案,都只需要花15-20分鐘就可以完成上面三件事情。但是這三步驟絕對會讓你節省不少寶貴時間。

另外強調一下。規格不在於細節,所以鉅細彌遺地250頁規格書一定也沒用。不如一個兩頁的精要版。


(2) 要點二:要確定目標


讓外包商理解目標,以及確定外包商理解目標,也是業主的責任。

所謂的目標是指,根據規格完成的東西的真正意義。例如,規格書上詳述要完成一個android APP,並且可以用fb login,並且可以記錄帳款...等等內容。但是,所謂真正目標可能是:必須要在某月某日之前,讓具有某些功能的APP上線,並且可供使用者免費下載。這目標的確和規格書一樣,但通常規格書沒辦法表達優先順序,以及真正的完成,以此例子來說真正的完成是要放到google play上線通過。

當選定外包商之後,一定要花20分鐘,以電話或者視訊溝通這次外包的真正目的,而規格書是達到真正目的的最大參考,可是規格書本身不是目的。這點一定要說明清楚。

(3) 要點三:要有plan-B


選擇委外開發,通常不會是把核心項目委外開發。因此,理論上外包失敗應該不會有滅絕性的結果。

所謂的Plan-B就是要有外包失敗的計畫。Plan-B類似危機管理(Risk Management)不過遠比危機管理簡單,它只需要知道:外包失敗的結果,以及如何因應。


1.  定義何謂失敗:


首先一定訂清楚定義何謂失敗,每次外包行為只有失敗跟成功兩種,沒有中間的。模糊不清的選項只會讓事情變得更複雜。以前述APP開發為例,所謂成功指的就是在某月某日之前,具有某功能的APP上線,並且通過所有定義好的當初簡要的QA測試。所謂失敗指的就是不滿足成功的所有條件。換言之,失敗不見得我們就不付給外包商費用,有可能外包商分階段完成,但最後完成的日期比預期晚,那仍然是失敗。


2. 失敗如何因應:


一但確定失敗,就一定要用預設因應方式。以前述例子來說,因應方式可能有很多種。

例如,雖然功能都可完成,QA測試也沒問題,可是已經確定無法準時上線。所以因應方式就是把計畫往後推延N天。然而,這個N天必須要是事先定義好。不能是當失敗發生才定義。原因在於,唯有事先定義好的失敗處理,才不會讓其他事情跟著失敗,如同骨牌一樣,一路倒個沒完,那就等於是把核心關鍵任務外包。因為延宕N天是事先定義好,換言之,其他事項早就已經把N天計算進去,因而這個N天就變成無關緊要。

然而,如果不是時間,而是外包商倒閉,或者壓根就消失,當然就要啟動重新委外行動。一樣會延宕N天。這N天,一樣也是必須事先定義好。

換言之,失敗因應其實都和時間有關係。當然和外包成本也有關係,只是通常這樣的外包最後真正付出金錢損失通常不大,因為現行的外包平台大部份的情況下,都會保障業主不會付出冤枉錢。反倒時間與精神損失才是重點。


這三個要點,無論專案有多麼大,有多複雜,都可以在1.5個小時之內完成。根據我們過去N次規模不同的外包經驗來說,採用簡單的三要點作法,讓我們自己將外包成功率從30%提高到90%。







11/04/2015

email服務的市場:三個其他選項。




對很多台灣學生而言,email似乎不再是有趣的地方。因為email成為生活中一個簡單的存在。一旦考慮需要有自己的email而不用學校的email,幾乎就直接使用gmail。在組織過去三年的面試投遞履歷表中,幾乎沒看過用其他email服務的。

這點其實很可惜,因為這個世界上曾經存在很多有趣的email服務。直到今天還是。

email是Internet最早的應用之一。但其實在還沒有Internet(TCP/IP)的時候,email早就以各種不同的hosting形式,運行在各種早期商業電腦上。當然,主要是以商務應用為主。

在還沒有gmail之前,email通常是由某組織提供,免費的email服務雖然存在(例如yahoo, hotmail)但是限制很多,更有甚者,大部分的人似乎仍然傾向pops/smtp的收信方式,把email留在自己的硬碟裡面。

email服務在gmail推出之後成為一個轉淚點,在剛推出的時候提供1G的免費空間,現在一直在增大中,後來也導致yahoo乾脆推出1T免費空間的email。

現在,如同各種所謂cloud服務一樣,越來越多人不再將email存在自己的硬碟。而也讓email市場突然之間開闊了起來,企業組織(特別是中小型)再也不需要自己管理email server。

如果資訊產業的學生,在畢業前如果只知道自己學校的email和gmail,是非常可惜的。再此簡單的介紹三個其他較為不常見的選項(yahoo, hotmail在台灣比較常見就不多說了):

(1) yandex.com


最近似乎也有幾篇文章在介紹yandex。它等同是俄羅斯的百度。yandex是斯拉夫語系最大的搜尋引擎,也提供了雲端儲存以及email服務。它的免費email空間有10G而且似乎在增大中。從台灣連線竟然沒有想像中的慢,所以拿來作為自動備份是不錯的選項。

yandex似乎也很在意介面的顏色跟背景,所以三不五時會幫你換一個背景照片,大部分的照片是來自俄羅斯的都市。

如果使用它的email服務,大概就會順便看一下它的雲端儲存(disk yandex)。其實和googledoc很像,只是沒辦法線上編輯文件。不過,某些不知名的原因,yandex竟然強調可以線上修圖!
yandex線上修圖


順道一提,單用javascript就做到線上,並且還能支援相當不錯的離線編輯的,截至今天(Nov/2015)為止只有googledoc。


(2) mail.com

這公司存在市場很久了,不過在台灣也鮮少聽到人在用。光是mail.com這個網址應該就值很多錢,所以可以想見它對email的專注程度。

mail.com有很多創意,例如它應該是最早推出無限制的免費email空間。然而,只有收費版本,才會讓你由pop3/smtp收信,並且才會拿掉廣告。它的收費版本一年600元台幣。

同樣的mail.com也提供雲端儲存服務,免費版本只有2G的空間,不過可以預見會逐漸擴大。

其實,個人最喜歡mail.com的是可以選擇很多不同的domain name。而且是免費的。

舉例來說,如果你的名字是edward,但早就被人註冊走了,所以你不得不用edward212@mail.com註冊。可是,在你註冊成功之後,mail.com有上百個不同的網址(domain name)可以讓你額外附加,例如asia.com, usa.com, consultant.com等等,並且在附加的過程,你可以嘗試看看edward是不是還沒有人用。由於domain選項超級多,所以讓你選到喜歡的名字的機會極大。

個人最喜歡的是post.com,專門用來撰寫文章以及投稿。

如果是技術宅,不妨試試null.net?自開診所的醫生也可以嘗試看看dr.com?總之,拜託不要再用ms93.hinet.net來當自己的email了。

(3) zoho.com

從名字大概可以猜得出來是給soho族使用。

沒錯,他專注於提供中小企業服務。申請好帳號之後,基本上不只有email可以使用,另外還有類似googledoc的整套服務。他的線上編輯功能,是大概googledoc以外最完整的。另外還有一整套CRM服務,以及雲端檔案儲存空間。

他的免費版本的email空間是5G,另加5G雲端檔案儲存。相較於其他免費的服務是很小。不過大部分的人會用zoho通常是為了購買網址之後,將網址的mail由zoho來管理。舉例來說,如果你註冊了shop.com,就可以透過dns設定,把mail轉交給zoho的帳號,所以你就可以在zoho使用ceo@shop.com來收你的email。免費的版本只能處理10個email帳號。收費版本就無此限制。

個人最喜歡的就是zoho.com對於domain name的支援。因為通常這樣的dns設定在其他地方都是要收費的(例如googleapp)。如果你考慮自己創業,zoho可能是市面上最好的選擇之一。目前最大的競爭對手應該是bitrix24(yandex的分支),不過zoho還是佔具比較大的市場。


網路免費服務有很多,對於一般使用者來說,快速找到一個簡單好用,對自己有利的大概就夠了。但是對於資訊產業的學生而言,多嘗試一些新事物,才不會侷限自己的思考。




沉思:


* 這感覺上好像單純在批評,但是考慮到交通部仍然是中華電信最大的股東(參考這裡) 也就是說,中華電信資產等於是全民的資產,所以還是得來批評一下:

   (1) 作為一個ISP,感覺上提供email是某種為民服務,但現在到底還有多少人還在用中華電信的ms14.hinet.net的email?hinet.net前面的msXX這個數字,在今天作為負載平衡根本沒有任何意義。只是浪費大家打字時間。

   (2) 作為商用email服務,現行的價格實在很荒謬,大概只有不上網搜尋資訊的人,才會使用每個月至少1500台幣的有限email服務。這個服務不但貴的嚇人,可儲存量也驚人的少,竟然少到和bitrix24.com免費版本差不多。



11/02/2015

德國柏林的創業環境-三個觀察




在台灣看2015年相關的國際新聞,會發現德國一直都是某些事件的主角。從希臘債務問題,到中東難民大舉前往德國,再到前陣子VW發生造假事件。然而,眾多新聞之中,其實悄悄然一直有件事情,在過去5年中慢慢發酵。

那就是柏林的年輕化以及歡迎各國(嚴格上來說應該是歐盟各國)年輕人加入柏林創業。


在跨國合作的經驗告訴我們,每個人其實都不一樣。如果有人概括性的說,某個國家的人都怎樣怎樣,那幾乎都是某種類型的偏見。通常認識一兩個某個國家的人,就會把這一兩個人的個性行為,當做該國的代表人物。偏誤率實在很高。

我認識並且有私交的德國人做事很務實認真精細,當我去德國政府網站查詢創業相關資訊時。實在很佩服該網站務實的精神。這個半官方網站是德國工商總會(IHK),類似台灣經濟部底下的半官方機構。在他的網站上,你很快能找到重點,

例如你可以下載這篇(Starting a Business in Berlin) 來看看要怎麼在柏林創業。這篇雖然說是A Beginner's Guide,但是其實重點都有講到,而且幾乎沒有廢話,也幾乎沒有官腔官調。順道抱怨一下,以前台灣某些政府網站以及公開資訊,實在都很官腔官調,感覺上是要建立一個門檻,讓老百姓越不了解越好。

這裡建議,只要是想創業的,最好把這份文件詳細閱讀一下。它一開始先希望你自己了解一下,自己為什麼而創業。並且實務的建議你,哪些創業類型適合你,甚至也會警告你,哪些創業的原因很難成功(像是如果是因為長期找不到工作而想要創業)。

接下來不能免俗的要說明哪些註冊公司的方式適合(例如合夥公司,股份有限公司等等)但是在法規的說明上,講的清晰易懂,在註冊公司的種類上,甚至會說這個種類是最多人選的,或者是最少人選的。然後,它就開始說明,如何計畫自己的生意,從business model到Elevator Pitch都有。最後還列了在德國完整的相關資源。

重點在於,它把創業的從頭到尾描繪清楚。讓讀者有概括性的認知。這的確是我看過最清晰易懂的政府文件。更重要的是,它是英文版,不是德文版。

三個觀察:

(1) 相較於英國美國還是稍微保守一點


在不前往英國的情況下,台灣人絕對可以去英國註冊一個公司並且開始營業。如果是經營資訊產業,例如經營一些手機APP,那麼甚至可以永遠不去英國。

美國資訊產業對於創新有極大的樂觀性。對於招募資金甚至極為寬鬆。

相較之下,德國還是略顯保守。原則上要成立股份有限公司需要25000歐元的門檻(這個門檻跟台灣差不多)。無限公司容易成立,但失敗了要賠身家,大概很少人想這麼做。因而相較於英國美國,其法規略偏保守。

另一方面,對於哪些人可以來經營企業也較英美保守。

在英國基本上,只要能證明存在感,大概就可以開公司。美國也是,但是如果人住在英國美國當然需要工作證(綠卡)或某種簽證(工作簽)。但如果不住在當地,英國是可以註冊公司並且營運的。

然而在德國,不管有沒有住在當地,你必須要是(a)德國人,或者,(b)歐盟某國家的人,或者(c)有商務協定關係的國家,目前是美國,加拿大,瑞士。這三種條件下的人,才能在德國創業。如果不是以上三種,必須要先到德國大使館取得特別的簽證才行。但就目前歐盟28個成員國,加上美加以及鄰近的瑞士,應該也足敷柏林成為夠國際化的都市。


(2) 相對便宜的環境聚集了人才



在歐洲主要150個主要都市中,柏林的物價是排名(2015年)很後面。單指所謂西歐先進國家而言,根本沒有任何一個城市比他還便宜。

當然相對便宜,而且容易發展的環境,很快吸引各國的人才。事情總是有正反兩面。已經開始有很多人認為這樣的環境不見得是成功的:可以參考這篇 (作者甚至抱怨柏林沒人在講德文)

當一個環境聚集許多遠道而來的人的時候,幾乎一定會發生各類衝突,然而良好的衝突也是創意發生的所在。不同的人也因而在具有刺激性的環境激勵與成長。


(3) 年輕的老都市


柏林這個名字有紀錄已經有七百年,而存在已經四五百年之久。然而由於之前東西德分裂,柏林花上近10年才真正完成整併基礎建設(例如地鐵)。透過基礎建設的重建,柏林成為一個嶄新的都市。

柏林相較於倫敦它的地理位置接近於歐洲中心點,無論是北歐中歐南歐東歐,與柏林的交通距離都差不多,在兩德合併之後,它很快速的再次轉變。

雖然在金融產業上,倫敦仍然是歐洲最大的都市,但是在文創,軟體,網路等等新產業上,柏林已經後來居上。簡單的搜尋"柏林 創新"就可以找到很多相關資訊。




沉思:


* 再次強烈建議一定要拜讀一下這份官方文件(Starting a Business in Berlin)

* 沒時間看的可以與我們討論。

* 數年之前,有機會與一位玉山創投的德國人(Volker Heistermann)吃飯聊天,當然對他一個人能來台灣試圖建構創業環境是蠻佩服。如果有想要了解德國創投對於創業者的看法,倒是可以和他詢問一下。


* 在本文撰寫的時候,剛好看到中國買房團想要到德國柏林投資房地產。就德國對於房價物價的長期控制來說,也許一開始會有影響,但是大幅炒作的機率應該不大。