如何打造一個 Remote 工作的環境

Published on:

禮拜三跟 Teahour 的主持人玎玎和這期的嘉賓 Tinyfool 聊創業(會前會)。中間岔題講到 Tinyfool 開始想把自己的創業公司轉換成 Remote 工作環境。有過 Remote 經驗的我和玎玎就七嘴八舌的給 Tinyfool 了非常多意見。十幾分鐘講下來,原來大家的經驗看法幾乎都是一樣的。趁還有熱情寫這個題目,順便在 blog 把重點整理一下...

參與成員必須都要是 Senior 等級的開發者

根據所有人的經驗,Junior 是絕對不能參加 Remote 的。原因有幾個,

(1) Junior 不管在專業上或者是做事方法與態度上,都有很大的磨練空間。如果 Remote 反而會因為無法近距離與同事交流,學習的速度變得緩慢。
(2) 在 Remote 的環境中,時刻與同伴保持若即若離的非同步方式合作的技巧難度非常高,如果沒有成熟的技巧,反而會造成效率低落和合作上的挫折。
(3) Remote 其實是比較辛苦的,因為工作者反而要依靠一些遠端輔助工具,補足同步節奏的問題。但是 Junior 的做事模式和認知是「有完成交辦任務」就好。所以在 Remote 時,反而會覺得比較爽,因為沒有人管,只要「做好手頭上的事」。能完成的事品質反而比較差,打亂大家的節奏...同時也會因為「有做完就好」,變得高興什麼時候作就什麼時候作(不顧團隊節奏),晨昏顛倒(因為精神較差所以只能 deliver 出次等的程式碼)。

團隊內有很好的協作與自動化工具

  • Issue Tracking ( 如 Redmine, Pragmatic.ly )
  • Chatroom ( 如 Hipchat, Skype)
  • Code Version Control ( 如: Git or Github )
  • Log Channel ( 如 Redmine issue, Github commit log 結合 Hipchat )
  • Screenshot Tool ( 如 droplr.com )

團隊合作處理的都是比較大等級的專案,「比較大」通常意味著這個專案會有非常多 Task。在很多 Task 的狀態時,必須要有一個工具可以很好的將 Task 依序列出,有優先等級管理,有歷史紀錄,有應答功能。讓大家不至於互踩到手腳,使用版本控制管理系統也是相同的道理。

Chatroom 則補足無法面對面交流的狀況,若文字與圖片示意還是不夠,則直接使用語音交聊。

Log Channel 則是一種交流型輔助,因為 Issue Tracking 和 Code Version Control 往往都還是使用 Email 寄信輔助(有等於沒用),團隊需要一個可以一目了然今天專案即時動態的地方。Log Channel 是很好的 Dashboard。

團隊內要有 Coding Policy

除了外在的輔助工具外,內部的規矩也是很重要的。Code 要怎麼設計才能讓同事快速接手?什麼樣的設計與命名絕對不能出現,以免同事一進來就踩中地雷陣亡。或者是花上太多不必要時間的時間除雷...

團隊必須要有一致的工具默契與設計默契。如果沒有,那就必須設計一套,強迫大家遵守。

對事不對人的默契

因為大家都不是面對面,用文字和聲音交流,很容易因為一個差錯,就擦槍走火變成糾紛。團隊成員要有高度對事不對人的默契,相信大家出發點都是為了把產品做好,而不是在爭功諉過。否則團隊反而很容易 Remote 造成的誤會分崩離析。

定期的 Standup 與 On-site meeting

Remote 時很容易因為都在埋頭做事,很容易不小心做著做著就偏離原先的航道或者是原先的 schedule。每天至少還是需要一次的 Standup,確保在正確的航道上。每週一次的 on-site,把需要高度合作的項目解決掉。

了解為什麼要 Remote

有很多人誤以為 Remote 是一種輕鬆的工作型態,或者誤以為 Remote 還可以順便省房租。事實上這都是錯誤的觀念,Remote 的成本其實相當高昂,若無法有效的團隊的協作的話,掉的生產效率折算成工錢可能還會是房租的好幾倍。

Remote 能夠提供的是

  1. 讓工作夥伴省下舟車通勤勞頓之苦,把節省下來的精力與時間,效益轉到在工作的成果上
  2. 在更適合自己的設備與環境下,高速專注的做事。
  3. 在更適合自己生理作息(非朝九晚五)的時間下,產出更好品質的成果。

這三件事的共通點,以一句話來總結,Remote 是為了把事情做得更好,產出能做出好成果的心裡的爽。而不是為了不做事,能夠當時間小偷竊喜的爽。

若是 Remote 缺乏這樣的環境、成員、心態,帶來的不會是高生產力,而是災難。

Project Manager 應該要被正名 Project Handler

Published on:

一直以來,我都覺得一般在 Project 內擔任 PM 那個人,其實不應該叫做 Project Manager,而應該叫 Project Handler。它的職責是負責「Handle」這個專案:幫助專案成員排除開發上的困難,提供專案上所有必需的協助,讓產品儘量準確地走在線上,而不是「管理」這個專案。

尤其在進行過這麼多軟體專案之後,我更堅信了這個想法。

我發現許多的產品開發上的災難,往往是由許多相信自己能夠「管理」專案的人搞出來的。他們相信自己的職責是負責「規劃」功能、負責「管理」時程進度,所有專案成員都必須聽他的「指揮、調度」。

但在專案進行當中,卻往往很少人會感謝他們專案中的 Manager。說法都差不多:「我覺得他完全不清楚專案的現況」、「他規劃出一個完全不合邏輯無法實作的功能」、「他憑空製造了一個根本不存在的荒謬使用情境」、「他只會胡亂催進度讓我們不斷的加班」、「他根本聽不懂人話」。用一句話綜合:「專案成員覺得職稱是 PM 的人,事實上好像卻是離產品最遠的人,只會搗亂」。

而大部份想要應徵「PM」這個職位的人,當你問他的應徵動機,最常得到的幾個答案也是:「我不會寫程式,但我覺得我擅長規劃」。「我寫過程式,但我不太熟練,但會寫程式這個背景讓我當 PM 應該會加分」。這樣的邏輯聽起來是很詭異的:「我不太懂造產品,但我相信我適合造產品。」(?)

許多的軟體專案管理實務的書籍或者是單純是管理實務的書籍,都提到了所謂「管理」最高的境界是:「僕人式管理」。與傳統刻板的「管理」:指派人去做事。完全相反地是,「僕人式管理」指得是「管理者」的主要職責是主動的幫助團隊成員,幫團隊成員把石頭搬開,安排團隊成員在適當的位置上,讓團隊成員合起來的戰力不等於是 1 + 1 = 2,而可能是 3 是 4 是 5 。這樣的做法很累,但是這樣的「經理」才有意義。因為經理的職責就是負責讓團隊能夠戰力更高的。

而在一般團隊,只要成員戰力是有在 B 以上的等級,他們幾乎是不需要人家「管」的,最低的限度是都可以在指派的範圍內 deliver,所需要的可能只是需要有人幫忙整理安排整個專案的任務優先順序,或者是有人幫忙掌控時程,以免在不對的優先級別投入了大量的資源。而大部分的程式設計師或者是視覺美術都是屬於這樣的人,他們知道自己在幹嘛。而 A 或者是 S 級的,他們甚至有辦法自主的合作規劃打造磨練一個優秀的產品。Officier 要做的只是提醒他們要 on budget on schedule 而已....

Anyway。錯誤的職稱容易給人錯誤的期待,從而造成錯誤的結果。專案多數時候真的需要的是 Handler 不是 Manager...

我有機會做到更好

Published on:

完全不知道如何起頭講這件事。只能說是一個感慨吧...

這一兩年出去闖蕩,我認真的覺得:台灣人先天能力實在無敵的高,若要認真 PK 我們完全不輸外國人。但這個種族也有他媽的一個最大缺點,就是容易畫地自限。很多好好的才能、天分、機會都被這樣活生生的浪費掉。

很多人常問我:為何你敢作這個你敢作那個?你有什麼勇氣作這件事? 但仔細跟對方聊過之後,我最常的疑問反而是,你條件比我好上這麼多,你不敢去作?

我不是膽子大所以才敢去作某些事,我是認真的認為我有機會做到更好,沒有什麼理由不去作。

我覺得我的同胞,習慣性的在一開始就否定自己能夠有這樣的機會和能力。

真的,非常可惜。

Plan too much is a crime

Published on:
Tags: Startup

Logdown 已經上線滿一個月了。這次實在是累積了非常非常多的 Exp。不過我覺得最值得寫的一個感想應該就是這件事:「Plan too much is a crime」。

我曾經做過非常非常多產品,有幫客戶做的,有幫客戶做的,有自己做好玩的。當中成績最好的應該是當年的 VeryXD,接下來是 Logdown,再來是 Paperclip.io。第一個是我當年學 Rails 一口氣在兩個禮拜硬做出來的產品。後面兩個是這一年來玩 Hackathon 做出來的產品。

這幾年來,我一直不斷的在思考這些失敗的、不上不下的、無疾而終、大獲好評的產品中間的差異...

這一個月,終於想透了。

如果想要做出一個好的產品,真正關鍵的元素就在於「不能想太多」...


Logdown 就是完完全全這樣的一個例子。這幾天在 FB 看到很多朋友對於 Logdown 都有一個誤解,以為我們這麼頻繁的更新 Feature,而且新的 Feature 都非常實用。以為 Logdown 是我們傾了全力打造的一個產品。

但實際上,在開發現場完全不是這麼回事。我可以老實的承認,我們從頭到尾都完全沒有足夠的時間和精力開發 Logdown 這個產品。大家所看到的東西,真的都是我們休息時間搞出來的業餘手工品...

Logdown 的第一個雛形,是我們花了 1 個小時、用手畫了三張原型就開幹了的產品。因為是一個 Hackathon 比賽的產品原型,我們不可能也沒能力計畫太多,那會導致完全作不完。

而在產品上線之後,因為公司業務滿檔的關係,也根本沒時間好好弄計劃寫 Feature,頂多是在忙了一整天後,為了發洩情緒開幾個 branch 試試看做這個行不行,那個行不行。所有已上線的功能其實基本上就都是「一天可寫完」「非常重要」的基本功能。

如果某個 idea 實作會超過一天,基本上就會被扔掉。因為「沒有美國時間作」。但如果某些功能很重要,但一天之內做不完但一定要上,我們會改用掩耳盜鈴的做法。以一個大家都可以接受的 workaround 上線。

從頭到尾根本不是大家想像的那樣:「仔細的 plan、完美的執行」。而是手上有什麼傢伙,抄了就上。快速的砌磚、抹土,然後扔給同事貼磁磚。一直不停地重複這樣的動作,把房子蓋出來的...


這跟以前做的那些不怎樣的產品,最大的差異在哪?答案就是「時間」。

當大家有充裕的時間討論,與充裕的時間執行,所謂可用的 prototype 根本就不可能被做出來。因為所有人會被陷在決策樹裡面動彈不得。

因為你有很多個看起來都 OK 的 option 可以選。所以就容易不經意的挑三揀四,東摸摸西摸摸。作一個 project 當然可以計畫得很周詳,但要知道能不能成功,唯有一試才能知道這貼不貼近現實。而大多數人不知道或不願意面對的真相是,人的精力和熱情是經不起太多的射不准。

只要花上越多的時間的時間在 plan,在一開始擁有越多的 option 與資源。那麼這件事 fail 的機率會越來越高...

這也讓我開始理解,難怪矽谷公司越來越喜歡舉辦 Hackathon 發掘新點子新功能,而非使用 PM 作傳統的規劃設計。Hackathon的確是一個可以逼迫大家捨棄無謂想法,專注開發出有效點子且高價值的原型活動...

當你擁有的資源越少、擁有越少的時間去思考,這些限制才能夠逼你作出真正關鍵的決定。而不是讓你在思慮周詳之後作出一個廢物。

創業不是一個終點,他是另一份職業

Published on:

一年前多前,我寫過一篇我為什麼想創業

一直以來,上班族都有一個迷思,認為上班的盡頭就是「創業」。或者是「經理」的 upgrade 就是「老闆」。

( my company now have 5 employees, and profitable )

這一年「做生意」下來的心得下來,我的感想跟以前完全不一樣:

「創業」應是你有 something special,你覺得自己擁有的東西被 undervalue,所以你希望開一個專門的事業,去 maximize 你手上擁有資源的 value。

「創業」也不是一個 destination。他是另外一個職業:「商人」,更正確的來說,如果你沒有當「商人」的心理準備以及稍微的實質準備,創業不是個好選擇。

創業的目的是 maximize 手上擁有資源的 value,每天要面對的事就是不斷的銷售、Refine、銷售、Refine、規模化。

「創業」,當老闆要面對的事,遠比一個經理要面對的事情還要多十倍。面對的環境險惡程度也要大上十倍。上班被公司同事幹拐子搶功那都是小事。創業面對的是開門就燒錢、人心隔肚皮、無止盡的體力馬拉松。

「創業」要面對的是 big in, possible very big out, or nothing out. 創業成功的收穫是大的。但沒有一個創業的投入是 small in 的。我個人的估計是上班族最少的六倍 in …

如果你真的喜歡當商人、想當商人,那麼創業也許才是一個好的選擇。

不過「創業」也只是一個職業而已….不是上班族職涯的終點

創業家也是一種「職業選項」而已

Published on:

昨天去見 Facebok Developer Advocate。收獲蠻多的。(不過主要都不是 Facebook Developer Relation 關係的問題….XDD)

他們這次派來的人叫:David 。有意思的是, David 是 PBWiki 的 Founder,也是 HackingDojo 的 Founder。

這麼顯赫的經歷,我們好奇他為何會關掉公司選擇去當 Facebook 傳教士。他的意思大概是在矽谷這很平常。有點像是創業家也只是一種選擇, 一種工作。

你可以開一家公司做一做。不想做了跑去大公司上班,歷練一下,再出來創業。所謂的大公司並非那種「官僚」的大公司,而是像 Facebook 這種公司。(這種公司會起來裡面是真的有 something 的,他說他們其實 Facebook 裡面有一堆沒公開的外星科技)

像他的前室友 Bret Taylor (!) ,其實就是創業搞了 FriendFeed,被 FB 收購,然後當 CTO …然後做一做再出去創業搞新的公司,他的新公司募資或者要談什麼生意以後就超容易了…因為人家以後看他就是….這傢伙之前是 Facebook CTO 耶,一定有 something…

所以,創業創一創跑去上班,歷練一下,再出來創業,真的沒什麼的。矽谷一堆人都這樣….

// 真的也是一種蠻有趣的觀察。在台灣,創業幾乎被認為是一種「跳海」「再也不回頭」的舉動,也不是「一種職業」….

人人都應該寫 Code

Published on:

上文 。Facebok Developer Advocate 這次來的其實很突然,所以其實沒辦法幫他辦 meetup,且 meet 的時間也沒辦法找太多人來。

他說…沒辦法,他其實也剛來 Facebook 沒多久,且是剛從 Dev Bootcamp 被放出一個禮拜。老板就說「你~~~該去亞洲認識一下人~~~」。他就只好硬著頭皮飛過來了….

在席朋友 Richard 就問他 Dev Bootcamp 的生活如何?因為王准的書把 Dev Bootcamp 的生活講得很有趣。我們希望他再多說一點…

他說~~有意思的是他第一天就被派去解一個真實的 Android 軟體 Bug~~我們好奇那他之前會寫 Android code 嗎?他說不會~~~~不過不管勒,公司說你就是要去解。Facebook 幾乎是全員 Developer。進 Bootcamp 你就是要想辦法去學,想辦法去解。

這樣以後你在公司不管做什麼職位。當初在 Bootcamp 的經歷很容易就可以幫助你在遇到問題時,大概有印象這應該是什麼東西造成的,要去哪裡找出來,或者大概是有頭緒應該是什麼造成的。

( 之前去 FB 玩時,他們說 Dev Bootcamp 的好處就是還可以認識一海票不同部門的同事,出事和合作至少知道可以去找誰合作最快….)

真是相當有意思的做法!

====

在我待的團隊裡面,其實進來都會先過一輪 Rails 訓練。不管是誰,其實都要會基本的 Rails。沒有不熟就不需要學的道理。

  • Command Line

  • Git

  • SCSS 與 CoffeeScript

  • Rails View / Rails Helper

這四個東西至少是基本工具….

而且我後來其實也驚異的發現,其實只要有心,不管你是什麼背景的,其實有心學,真的也學得會…..學不會的人多半是卡在自己的藉口而已…

我曾經教會英文老師寫 Rails,他還有能力指導別人解 Rails bug….教會完全不懂半行 code 只會 photoshop 的 Designer 學會使用複雜的 Git, 甚至最後使用 CoffeeScript 無障礙。

所以真的是有沒有心而已

錢是工具,該花要花

Published on:

生意人和上班族最大的差別,在於一個把錢當工具,一個把錢當作賴於維命的食物。

這是這一兩年作生意下來的最大感悟。

從現在回頭看,發現早以前自己就開始是生意人了。只是自己對自己難以下這樣的評價。

朋友對我的評價,往往是勇敢、瘋狂。沒有多少人會拿自己每個月接近一半以上的薪水,買書、上課、下了班還不斷的學習。

即便知道這「應該」是對的。即便知道這也是我能夠在短短幾年快速 upgrade 的一個關鍵。但還是沒有太多人真的這樣作。

我真的瘋狂嗎?事實上我一直覺得我很理性。甚至我有時候還會覺得別人才是怪胎,這明明是最有效也最節省的方法。「This is right thing to do! Why wouldn’t you? 」

  • 每個月花幾千塊錢買零食請同事吃,會很凱嗎?

  • 每個月買各式各樣的書讓同事進修,會很凱嗎?

  • 幫公司同事買一張好的椅子如 Aeron,會很凱嗎?

如果你都知道背後的意義而且敢這麼做。我想你出來創業應該也沒什麼問題的。

過去一年學到的事

Published on:

學到的教訓

不要隨意答應關於任何「夥伴」的請求

你永遠不知道對方是否跟你一樣願意付出心力真誠合作,還是只是滿腦子只是打要好好利用你的主意。

不要因為任何壓力就降低標準

不要因為覺得「應該」會有壓力,就放低標準。包括不應該降自己的 hour rate。不應該覺得工作壓力大,就放低標準收你本來覺得無法達標的人。

永遠要假設沒有人能夠懂你

能懂自己的人太少了。畢竟不是有人能夠跟自己一樣每天花這麼多時間在 upgrade 上。多半的狀況是,對方多半只是講中幾個 buzz 關鍵字而已,並不代表真的懂。若是以為他具備跟相同的基礎點,然後把所有合作的標準往下降,那是很危險的….

好的人才,要不吝惜網羅

好的人才,薪水才高那麼一點,但能夠創造的價值卻高一般人太多了

看到 危險訊號 轉身就要跑

經歷了某些事之後,你會發覺只要有符合這樣 pattern 的人,碰都不能碰。

還好自己沒去幹

花時間去參加創業聚會

絕大部分的創業聚會一點幫助都沒有。有空閒的時間還不如去多去讀幾本「賺錢」「管理」的書。或者乾脆去「睡覺」都好,創業之後,有時間能「睡覺」是一件很幸福的事。

看任何的趨勢部落格

絕大部分的趨勢部落格作者都只是 buzz word user,很多時候他們只是照著他們的想像在推敲,並且寫下假設性的結論。如果要真正的精進,應該去看「書」,那些才是真正粹練下的精華。特別是那些出場過的「Bootstrapper」。

募資

我是為自己工作,不是為 VC 工作。 如果同樣要花時間出去「拿」錢。

談案子賺錢不是更實際嗎?賺進來的錢也不用吐回去。跟 VC 借一塊你以後要還五塊啊 =_=…不太能夠理解花那麼多時間去「談」,拿的錢卻不是自己的。

如果賺到的錢不夠養自己,那麼只能證明自己不適合創業而已。當初出來創業就有這樣的決心了….

去比任何的創業競賽

一年之內完全沒去比任何競賽。大概是我太懶惰了,只要想到要去 pitch 就懶洋洋的…而 FB 的比賽,雖說當天是非常認真在準備,但是得獎完全是個意外。

要比就比最重要的那一個。我是這麼想的。

總而言之就是懶性格吧,深深覺得這樣的懶性格,就了我。只要直覺得投報率太低的事,就懶得作….

到處接受採訪

投報率也是很低….而且記者很…危險…

Summary

如果你沒有經歷過這一切,也許會覺得我的結論都很怪。Anyway,也許走過一遍你就知道了….