Hello World Dev Conference
      • 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
    # 談衡量開發者體驗的DevEx框架 - 李智樺(Ruddy 老師) {%hackmd @HWDC/BJOE4qInR %} >#### 》[議程介紹](https://hwdc.ithome.com.tw/2024/session-page/3205) >#### 》[填寫議程滿意度問卷|回饋建言給辛苦的講者](https://forms.gle/Eyb36wFmE9K9wbC98) [參考資料](https://onedrive.live.com/?authkey=!AO-wQIOO_mDn0Sc&id=68B24674607C69D9!359021&cid=68B24674607C69D9) --- [TOC] --- ## 開發者體驗就是開發者工作中體驗的總和 包括開發者如何感受、思考和評估他們的工作 ## DevEx框架的目的 解決開發者工作中的中斷 工具的摩擦:從改扣到上雲端,中間需要多少步驟與時間 明確的任務。 不要用截上時間來阻止我開發,而是用意義,到時間之前我自然就會做好 ### 專注於衡量 DevOps的精神:追逐速度 ACCELERATE:精益軟體 與 DevOps背後的科學 你改了多久可以發布,就是Dev的能力,就是Ops的能力 主管要關注開發者體驗,組織單位怎麼會讓開發者滿意的動作 什麼是DX? 工程師開發的時候覺得很爽,這是錯的,,重點是每天接觸他都不厭煩還有有幸福的感覺 > 不是一個爽個可以解釋的. 爽可不可以度量? ## **DevEx What Actually Drives Productivity** > [DevEx: What Actually Drives Productivity](https://queue.acm.org/detail.cfm?id=3595878) 阿比野田創立 《[An Actionable Framework for Understanding and Improving Developer Experience](https://ieeexplore.ieee.org/document/9785882)》唯一對這個作解釋的 找到了25個因素來衡量DevX (社會技術系統) 社會影響技術,技術影響社會。 -> 雙向 (技術社會系統) 只考慮技術如何影響社會->單向 ### SPACE框架 將生產力的衡量分為五個核心維度: 1. 滿意度與幸福感 Satisfaction and well-being: 衡量開發者對工作的滿意度和整體幸福感,這對於他們的持續生產力至關重要。 (你相信你在工作的時候覺得幸福嗎? 生命歷程圖,上面是高興的下面是不高興的) 2. 績效 Performance:包括定量的輸出指標,在衡量開發者在既定時間內的工作產出。 4. 活動 Activity:測量開發者在工作中的具體活動,如代碼提交、測試執行次數等。 5. 協作與溝通 Collaboration and communication:評估開發者與其他團隊成員之間的協作和溝通的頻率和質量。 6. 效率與流暢度 Efficiency and flow :分析開發者在不被干擾的情況下完成任務的效率,以及是否達到心流狀態。 ### SPACE框架: 北極星指標 北極星指標 North Star Metric 運用一個數字用來衡量企業或組織在關鍵業務領域的績效指標。 它的核心理念是找到一個能夠代表公司長期成功的關鍵指標,並以此來驅動公司的成長策略和日常運營。 * 是成長還是下來? * facebook的指標是什麼? 客戶量. - DevEx 測量 KPI 的方法是什麼? - 開發者滿意度調查 Developer Satisfaction Surveys -問卷 - 每季做一次 - 開發效率指標 Development Efficiency Metrics ( 提交頻率、平均恢復時間 MTTR ) - 開發者生產力指標 Developer Productivity Metrics ( Code Review Rounds - 工具和流程的採用率 - 系統穩定性和品質指標 ### 原文 綜合KPI指標 ### 專案開始之初 首重看清全貌 * 思考一下你的後退一步是什麼? * 真實世界是什麼? vs 你自己個人的真實世界 ### 研究的問題 1. 哪些重要因素影響開發者體驗? 2. 哪些背景特徵影響因素對開發者體驗的重要性? 3. 哪些障礙阻礙開發者及其團隊改進影響開發者體驗的因素? 4. 開發者及其團隊用哪些策略來改進開發者體驗? 5. 當負面影響的因素未得到改善時,開發者會採取哪些應對機制? ### 開發體驗不佳會怎樣 * 當改善策略無效時,開發者會採取一些應對機制,如:  * 專注於個人項目 * 驗證負面體驗 (接受並承受負面體驗,士氣不彰) * 加班 * 停止發聲 * 減少參與 * 利用系統漏洞 * 離職 - 給他一個任務是錯誤的解法,應該給他跟其他人互動的機會 e.g. 給慢慢給他一群人, 讓他帶團隊, 給他發揮.. - 資深成員的離職對公司是很大的損失。這種人離職他會留下來多少 know how? 20%? 10%? 可能都不到 ### 影響開發者體驗的因素 - 開發和發布:包括開發過程中的工具、技術、流程和基礎設施。 - 減少摩擦 - 產品管理:包括需求的清晰度、產品的目標和方向。 - 協作和文化:團隊之間的溝通、合作、文化氛圍。 - 開發者流和滿足感:工作中能否進入**心流**狀態,並感到滿足。 - 什麼時候可以進入"心流"? 洗澡、開車. 在封閉空間, 專注. - 心流是很難得的體驗, 工程師肯定會進到心流, 但問題是你維持多久?? 很怕被打斷, 手不要擺到頭. - 挑戰難度和你的技能程度相當時,會容易進入心流 ### 影響因素重要性的背景特徵 - 個人特徵:開發者的經驗、個性和工作偏好 - 團隊特徵:團隊的規模、組織結構、合作方式。 - 組織特徵:公司的文化、政策和目標。 - 專案背景:專案的性質、複雜性和時程要求。 開發者體驗最支持的就是staff engineer,但是台灣這種職缺太少,另外一條就是管理值得路 ### 改善開發者體驗的障礙 - 優先級低:改善開發者體驗的問題沒有被優先處理。(工程師的聲音沒有人聽) - 無法量化問題:一些問題難以量化,因此難以引起重視。 - 缺乏可見性/認識:組織內部對這些問題的認識不足。 - 很少老闆認為80/20理論是對的 - 缺乏認同和所有權:改善開發者體驗的責任不明確或無人負責。 - 不明確的期望:對於改善目標和方法缺乏明確指引。 - 缺乏激勵:缺少推動改善的激勵措施。 - 無明確的改進過程:缺乏系統化的改進過程和方案。 - 組織政治:組織內部的權力關係和政治因素阻礙了改進。 ### 改善策略 體驗的三個主要維度 - 認知/意志/情況 => 無法量化, 只好用問卷 - 關注是什麼? 主管的關注? 理解DevEx - 心流 - 回饋循環 - 認知負荷 進入幸福忘我的心流,忘記時間 Always multi-task 跟主管聊聊 ### 開發者體驗幸福模型FLOW 當你感到焦慮/放鬆時, 到底是往哪走. 如果你不會而焦慮,去學,你是工程師! 如果你是主管,充實他的技能(減輕焦慮) 或是調整他的項目 ### 認知負荷理論CLT - 內在負荷:任務本身的複雜性有關,無法避免 - 外在負荷:通常可以控制或減少 - 額外負荷:積極管理,提升學習效果 合計為:總負荷 工程師always接受挑戰, 學不完, 怎麼辦? 想辦法讓自己進入**心流**. ### 認知負荷是最值得投資的, - 你有多強就是你的認知有多強 - 方法:Assign 一個Mentor 給新人 - Mentor - 找一個正確的mentor來帶你. - 工程師要自己找 Mentor - 找對人, 問對問題. ### 職場裡得三種人 - 付出者:樂於分享不求回報,天才創造者 - 平衡者:追求平衡與互惠 - 獲利者:追求利益,天才 開發工作包括分享與協作,所以長遠來看**付出者**最容易成功 # 工程師尤其要彼此協助,開發者體驗才會更好! --- #### 推薦書單: * [DevOps ACCELERATE:精益軟體 與 DevOps背後的科學](https://www.tenlong.com.tw/products/9789863126959) * 這本書你沒有怎麼辦, 我有...XD * 去外面天瓏買, 外面有賣喔? OK * [Staff 工程師之路|獻給個人貢獻者成長與改變的導航指南 (The Staff Engineer's Path)](https://www.tenlong.com.tw/products/9786263246966) * [心流:高手都在研究的最優體驗心理學(繁體中文唯一全譯本,二版](https://www.books.com.tw/products/E050152877?srsltid=AfmBOoqRTzZdasP1kH70ov-JTnOAn1qIrkcro9067Kwlgo4-3Qc8N0Z_) * [給予:華頓商學院最啟發人心的一堂課 (Give and Take)](https://www.books.com.tw/products/0010620643) ==以下聊天區== 好潮的講者 很常說..我的天阿~ 高興 vs 不高興 => 生命歷程圖. 真的很有傳教士的感覺,被傳教了(稱讚意味) > 超專業書商(X > 天瓏推銷員(誤 很不幸的我們聽了這堂課 好喜歡這個講者XD 離職 ? 當感到不满的時候, 只會關注自己的項目. 貸款怎麼辦? 誰叫你當初要貸款. 剛才是不是有人說 換一間XD 什麼時候人的思考最敏銳呢?通常是在洗澡的時候XDDD 講師好扯,講了好多東西都搓到我心裡 人碼合一 (氣刀體一致) 切記,寫 code 時手不要放在頭上,這是四十幾年來累積的後果 (光) - 很少老闆認為80/20理論是對的 ?? 真的是這樣嗎??? "娛樂"是快樂的, 但幸福嗎? 有心流嗎? 很短. 工作 沒有人可以解釋這個圓,因為他沒講;我問了AI他也不知道 AI如果知道就危險了(XD mentoring 真的是很棒的制度 也是有那種只給一分鐘的前輩啦 > 地獄廚房風格

    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