HackMD 技術長:從寫程式進化到做產品 你需要換一種思考方式!

會寫程式,等於會開發產品嗎?

身為軟體工程師,除了把程式寫好之外,如何進一步打造有價值的產品? 

11 月 12 日晚上,ALPHA Camp 邀請到知名協作平台 HackMD 共同創辦人 Max,直播與大家分享 HackMD 的產品開發心得、創業挑戰,以及在國外新創加速器 Techstars 獲得的啟發。

Max 指出:「如果你在打造一個產品,要記得技術只是工具,最終目的是要幫使用者解決問題!」

工程師出身的他,將不藏私分享:從單純寫程式進化到打造產品,這中間的思考差異所在。

從產品設計思維開始學寫程式,零基礎也學得會的程式入門

HackMD 開發故事:如何從一份學校作業發展為商業產品

成為工程師,一天工作 8 小時都在寫程式嗎?

其實不一定。一份美國研究調查顯示,超過 60% 的開發者每天寫程式的時間少於 4 小時,其他時間都在「與人溝通」。

看準工程師常需要寫文件、開會、與人溝通的需求,HackMD 作為「工程師的協作平台」,可使用 Markdown 語法來編輯內容,幫助工程師快速記錄想法、共享知識。產品推出至今,每月活躍使用者達 33 萬。

產品背後由 6 人團隊運營,過去採遠端開發模式,今年 HackMD 成立了台北辦公室,準備全力衝刺開發產品。

對比現今產品的穩定成長,HackMD 的原點,其實源自於一份學校作業。

HackMD 的誕生:從一份資訊安全的學校作業開始

Max 分享,HackMD 的誕生其實來自求學時期,一門資訊安全課程的期末專案。當時自己很喜愛的共享筆記工具 Hackpad 被收購了,於是他找其他同學來共同製作類似的工具。

然而與此同時,Max 也有些新的想法,不僅考量了資料送出時的資安問題,另外也捨棄掉 Hackpad 的工具列格式,嘗試改用 Markdown 來協作。

最後,這份創意發想幫 Max 他們的期末專案拿到 99 分!成果讓教授為之驚艷,更推廣給全班同學一起使用 HackMD。

HackMD 的成長:採用開源方式測試市場接受度

雖然作業取得亮眼成績,Max 並沒有馬上將 HackMD 商業化。「從一份期末專案到發展為可行的產品,其實是非常漫長的過程。」Max 談到。

他選擇先將產品開源給大家免費使用,放在 Heroku 上,測試市場接受度。經過一年半,他發現這個產品對其他人確實是實用的,慢慢的一群貢獻者就組成了團隊共同開發產品!

最後,HackMD 於 2015 年上線,整個產品演化至今約四年多。即使 HackMD 已經證明有市場化的能力,推出了商業版本,但團隊也同時保持開源版本,並持續維護,提供個人使用。

(HackMD GitHub:https://github.com/hackmdio/codimd

從寫程式到實際打造產品

HackMD 的技術挑戰

作為 HackMD 技術長,Max 在直播中深入談到開發產品遭遇的兩個技術挑戰:

一是 HackMD 如何達成資料即時更新。為了讓 HackMD 使用者在輸入資料時,營造即時更新的感覺,團隊使用「 WebSocket 通訊技術」,建立用戶與伺服器雙方的連線,互相監聽事件。

「一秒是 1000 毫秒,當我們想要達成 60 FPS (frames per second) 的更新速度時,則資料出現的時間只要小於 16 毫秒,使用者就感覺不出差別,因此能營造出即時更新的感覺。」Max 分享。

二是多人協作如何處理衝突。早期 HackMD 的做法很簡單,假設有 A、B 兩個人,當 B 寫了一些東西,處理方式就是把全部文字複製貼上丟給 A,覆蓋過去,如果 A 寫了什麼,再覆蓋回來。但是團隊發現,當協作人數一多,資料很容易不見,這個方法其實行不通。

用 HackMD 做AMA 同步共筆

後來,團隊引入了 Google Docs 前身產品所使用的演算法 operational transformation (OT),來解決平行運算的問題。

該演算法將輸入操作統一轉換為 3 種操作:刪除文字、插入文字、保持部分文字不變動。接著將這些操作丟給伺服器,由伺服器去決定資料回傳的順序是什麼。團隊甚至拿出 Google 類似的實作出來研究,歷經一兩個月的嘗試修改,最終解決了多人協作的衝突處理。

藉由以上 Max 的描述,可見當工程師會需要這些能力:

  1. 英文至少要有一定的閱讀能力
  2. 打造好的產品要有使用者同理心
  3. 懂得自己研究學習找到解決方法、善用 Google

工程師寫程式跟做產品的差別

解決技術上的挑戰只是一部份。產品推出後,產品就是團隊與客戶溝通的橋樑,如何聆聽使用者的需求,打造有人願意使用的產品,這是「製作產品」和「寫程式碼」完全不同的思考差異點。

工程師出身的 Max,進一步解釋:「對我而言,技術只是工具,終極目的是要解決問題。」

「我常聽到蠻多工程師說覺得某個技術很炫,如果你只是單純寫程式,這沒什麼問題。但如果你今天在打造一個產品,產品的目的就是幫使用者解決問題。如果做出來的產品沒有符合使用者需求,用再厲害的技術也只是炫技,最終打造出的可能不是個好產品。」

「你需要思考的是,這產品能幫你解決什麼問題?」

要思考產品如何幫使用者解決問題,最簡單的方法就是自己當使用者。HackMD 作為「為工程師打造的協作平台」,因為 Max 本身就是工程師,最了解產品如何幫工程師解決問題。

「要解決自己會有的問題,打造自己會用的工具」Max 分享。

延伸閱讀:轉職工程師要學到什麼程度?軟體人才需要什麼能力?7個案例校長一次解析!

如何接觸使用者

打造自己會用的產品還不夠,更要去了解其他使用者的想法、痛點所在,幫助他們解決問題進而創造良好的使用體驗。為此,Max 分享,團隊會利用問卷訪談,主動詢問使用者的看法。

此外,HackMD 網站上提供了各種客服管道,讓使用者可以直接與內部團隊對話。團隊還應用了 Slack 的用戶聯繫整合工具「Smallchat」,當使用者在任何一個客服管道留言,團隊都能立即在 Slack 收到通知、即時回覆,接收使用者反饋來優化產品。

從國外加速器獲得的啟發

直播中 Max 也分享了他在國外加速器 Techstars 的經歷。在 HackMD 正式營運前,他曾經在 UX Testing 實習,並跟隨團隊去新創加速器 Techstars。以下是他對加速器培訓過程的分享,以及從中獲得的啟發,最終又如何影響他打造 HackMD:

Techstars 新創加速器計畫為期 3 個月,在最後一天會舉辦 Demo Day 發表團隊產品。一開始申請需要面試、錄製影片闡述商業計畫,但 Techstars 最重視的是團隊本身,因為「人」是最關鍵的成敗因素。

第一個月,各團隊會瘋狂去見創業導師, 2 週時間大概見了 100 個。這些導師不一定都是做資訊產品,但團隊要向對方介紹自己的題目,目的是在聊天過程中逐步調整產品定位,因此也可能發生聊完後,中途換題目的狀況。

經歷第一個月的點子蒐集、腦力激盪後,第二個月則是收斂想法、開始寫程式打造產品。到了第三個月,會花一整個月的時間全力準備最後一天的產品發表會,上台說故事給投資人。

從 Techstars 的計劃設計可以發現,「溝通說好故事要花一個月時間,反而實際打造產品也只有一個月時間。」Max 提到。

另一個 Techstars 帶給他的衝擊是,他們所宣導的「Give First」觀念:當你幫助別人時,別人也會幫助你。

「大家可能會覺得,創業已經很難了,我需要積極去搶市場,但 Techstars 會跟你說,一個新創要成功,其實不是靠搶地盤,而是需要很多人幫你,最後形成文化圈,大家一起把餅做大。」

這段話啟發了 Max,原來做新創不要害怕競爭,反而要轉換心態,大家做朋友一起把市場分了,交朋友不見得與競爭牴觸。

結語:從解決自己的問題開始,踏出第一步!

直播最後 Max 談起對 HackMD 的願景。他希望不僅僅是打造一個協作平台,而是建立工程師的文件記錄社群。正如同成為工程師社群平台的 Github 一樣,讓程式碼成為跟人互動交流的方式,藉由互相學習,形成正向循環。

對於想成為軟體開發者的人,他則建議:「是不是本科系不重要,能夠堅持解決問題才是最重要的特質!」

「軟體是不斷迭代的過程。你是否渴望解決問題,願意為了一個問題追根究柢、打磨產品到最好?」

Max 鼓勵大家:「如果你對軟體開發有熱忱,那就從解決自己的問題開始,踏出第一步,然後把夢想想大一點,Dream Big,一步步建構到那邊,視野是你自己的瓶頸,你對它的想像跟信心會幫助你親手去實踐。」

3分鐘小測驗,找到你適合從哪開始學習全端開發