ModernWeb
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Help
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Heptabase from 0 to 1 / 詹雨安 (Yu-An Chan), 王祐崙 (Yu-Lun Wang), 周玉鑫 (Yu-Hsin Chou) {%hackmd @ModernWeb/SyA2U6SmT %} > 共筆請從這開始 ## About Heptabase ## Three Stages 1. proof of concept: Optimize for feedback - 驗證想法的階段 - 如何用最短的時間、最少的資源,打造用戶能使用的產品 2. rapid iteration: optimize for shipping speed - 快速迭代讓使用者越快使用到產品 3. production: optimize for users love - 把比較粗糙的作法優化 從開發者角度做取捨來保證開發進度 ## Staging 1: Proof of Concept ### What is "Minimal"? 打造 MVP - no account - no backend server & database - no billing system - no multi-media support - no fancy editor / bi-directionsal link > 當初的目標是打造學習複雜主題,模擬大腦是如何思考的 > 主題下面有子主題 > 子主題下面會有以特定方式構成的知識 > 同一個知識可能會被不同主題使用到 > 當時的POC就是可以prove上述提到的概念是可執行的 模擬主題之間的關聯性,由白板與卡片構成 初期的 web Large JSON file 存在 IndexedDB 前端 APP host 在 Netlify 上 markdown 可在白板間被重用 建立可運作的雛形快速得到回饋 > 直接尋找真正有興趣/有需求的客戶,並與客戶面對面對話取得直接的反饋 > 在 telegram 找潛在使用者試用 ## Staging 2: Rapid Iteration (工程師 Tony) ### Rapid Iteration - Principles - Engineering: Optimize for speed - How do we ensure that what ... (Company Alignment) 確保產品方向 #### Principles 做任何決策都不能違反 - No data loss for our users. - Ship **usable feature** as fast as possible to the user. - 把大功能切成小功能解決使用者最重的痛點 - 開發feature步驟分為:Goal、Release、Checkpoint - Always put the customers first. - 討論上如果有分歧的時候,先討論使用者需要的是什麼 - 不知道使用者在想甚麼就辦投票(discord投票) #### Optimize for Speed - Not always using best practices - Duplicated code for flexibility - 不要過度抽象化,保持開發彈性 - Ship first, refactor later - 先有功能,refactor 之後再處理 - Code review - Superlog - stack pr,一個大功能分成多個模組。A 先上 PR,B 在 A 基礎上繼續開發 - 減少 reviewer 一次要看很多行 code,也不會阻擋開發者的開發進程 - 很考驗開發者對 feature 的理解跟規劃 - [Graphite - How the fastest developers ship code](https://graphite.dev/) #### Company Alignment - Brand Identity 在使用產品時使用者的感受 - Friendly - Polished - Feature Context - Feature Driven > 個人理解相當於 Business Driven,還是兩者有具體差別? ## Staging 3: Production (工程師 Nick) ### When to improve - Engineers do customer support. - 工程師可以快速接收到使用者回報的問題,進而討論是否需要花時間解決 - User complaint > Cost of problem solving + technical implication. #### Example: Storage 一開始是用 indexdb > 可能會被瀏覽器自動清掉 還有考慮到後面要做成 mobile app 後來 migrate 到 SQLite #### Example: Search 把 data 丟到記憶體 search 想分詞、highlight,但都要等比較久 sqlite fulltext module #### Example: Mobile App 一開始問使用者最想要什麼功能,收到回饋是想要有一個 mobile app 可以看到卡片 MVP - capacitor 後來轉換到 - react navite - 十天生出第一版 前後端都選用 javascript進行開發減少溝通gap #### Results - Better retention - Clearer technical solution - Faster iteration speed ------ > 不管怎樣先開聊天室 哇嗚! 我要來用 Heptabase 來寫 Heptabase 講座內容了 (o) >XDD >所以不寫共筆XDD >但我還是來寫了 XD (讚) > 偶有訂閱heptaㄛ (⁎⁍̴̛ᴗ⁍̴̛⁎) > +1 早鳥結束前訂閱的 > 羨慕 QQ 我早鳥隔天才發現有優惠 持續有營利真棒~ 羨慕XD >人少有差吧XD 免費QA (被打) 這用戶打字也太快 > 雖然也可能整理才分段送 我覺得很棒,用產品的使用者需求 去開發產品 需求/功能的拆解也是門學問,需要足夠的經驗 就跟資料庫的用法差不多了 要效能不是怎麼使用正規化 是知道何時不要正規化 PR 的大小如果到 2 ~ 3k 是不是可以退件 > 看規定XD 就是殺人魔知道工程師地址的感覺 >有種你就寫bug出來 > 然而現實上蠻多客戶多少繞過 PM 直接找工程師 工程師直接與客戶溝通,釐清客戶真正的需求 > ~~工程師透過 PM 的需求傳遞會失真,不如自己去溝通~~ > 工程師要加薪

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully