// API callback
related_results_labels_thumbs({"version":"1.0","encoding":"UTF-8","feed":{"xmlns":"http://www.w3.org/2005/Atom","xmlns$openSearch":"http://a9.com/-/spec/opensearchrss/1.0/","xmlns$blogger":"http://schemas.google.com/blogger/2008","xmlns$georss":"http://www.georss.org/georss","xmlns$gd":"http://schemas.google.com/g/2005","xmlns$thr":"http://purl.org/syndication/thread/1.0","id":{"$t":"tag:blogger.com,1999:blog-7905389674158671872"},"updated":{"$t":"2025-09-18T07:02:56.138+08:00"},"category":[{"term":"Programming"},{"term":"Culture"},{"term":"Testing"},{"term":"scrum"},{"term":"Agile"},{"term":"performance tuning"},{"term":"Book"},{"term":"Code Quality"},{"term":"Qt"},{"term":"Event Storming"},{"term":"database"},{"term":"file system"},{"term":"virtual machine"}],"title":{"type":"text","$t":"VIVOTEK Digest"},"subtitle":{"type":"html","$t":"Journey of Software Development"},"link":[{"rel":"http://schemas.google.com/g/2005#feed","type":"application/atom+xml","href":"https:\/\/blog.rd.vivotek.com\/feeds\/posts\/default"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/-\/Culture?alt=json-in-script\u0026max-results=8"},{"rel":"alternate","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/search\/label\/Culture"},{"rel":"hub","href":"http://pubsubhubbub.appspot.com/"},{"rel":"next","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/-\/Culture\/-\/Culture?alt=json-in-script\u0026start-index=9\u0026max-results=8"}],"author":[{"name":{"$t":"diro"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/13292247339970268280"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"generator":{"version":"7.00","uri":"http://www.blogger.com","$t":"Blogger"},"openSearch$totalResults":{"$t":"11"},"openSearch$startIndex":{"$t":"1"},"openSearch$itemsPerPage":{"$t":"8"},"entry":[{"id":{"$t":"tag:blogger.com,1999:blog-7905389674158671872.post-7442227545228273634"},"published":{"$t":"2019-09-02T17:48:00.002+08:00"},"updated":{"$t":"2019-09-02T17:50:27.679+08:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Agile"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Culture"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Event Storming"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Programming"},{"scheme":"http://www.blogger.com/atom/ns#","term":"scrum"}],"title":{"type":"text","$t":"Clean Architecture 課後心得分享"},"content":{"type":"html","$t":"\u003Cbr \/\u003E\n\u003Cdiv style=\"mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;\"\u003E\n\u003Ctable align=\"left\" cellpadding=\"0\" cellspacing=\"0\" hspace=\"0\" vspace=\"0\"\u003E\n \u003Ctbody\u003E\n\u003Ctr\u003E\n  \u003Ctd align=\"left\" style=\"padding-bottom: 0cm; padding-left: 9.0pt; padding-right: 9.0pt; padding-top: 0cm;\" valign=\"top\"\u003E\u003Cdiv class=\"MsoNormal\" style=\"margin-bottom: 3.6pt; margin-left: 0cm; margin-right: 0cm; margin-top: 6.0pt; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; mso-para-margin-bottom: .3gd; mso-para-margin-left: 0cm; mso-para-margin-right: 0cm; mso-para-margin-top: .5gd;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u0026nbsp; \u0026nbsp;\u0026nbsp;\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u0026nbsp; \u0026nbsp; 從\u003Cspan lang=\"EN-US\"\u003E Clean Architecture \u003C\/span\u003E我們學到要把程式架構畫出來，把核心邏輯與其它細節分開來\u003Cspan lang=\"EN-US\"\u003E, \u003C\/span\u003E避免核心被汙染，達到最終目標：\u003Cb\u003E\u003Cspan style=\"color: #2e74b5; mso-themecolor: accent1; mso-themeshade: 191;\"\u003E「\u003C\/span\u003E\u003Cspan style=\"color: #0070c0;\"\u003E最小化軟體生命周期的總成本\u003Cspan lang=\"EN-US\"\u003E+\u003C\/span\u003E最大化程式設計師的生產力」\u003C\/span\u003E\u003C\/b\u003E。書本裡面給了一個四層的架構圖：\u003Cspan lang=\"EN-US\"\u003EEnterprise\n  Business Rules, Application Business Rules, Interface Adapters, Frameworks\n  \u0026amp; Drivers\u003C\/span\u003E。簡單說前面兩個就是\u003Cb\u003E策略、業務規則、核心價值\u003C\/b\u003E，後面兩個則是\u003Cb\u003E細節、資料庫、框架、通訊協定\u003C\/b\u003E…等等。在這樣的分層規劃下，我們得以確認依賴關係是由外向內的。如果有需要，我們會利用依賴反轉\u003Cspan lang=\"EN-US\"\u003E(Dependency inversion principle\u003C\/span\u003E，\u003Cspan lang=\"EN-US\"\u003EDIP)\u003C\/span\u003E來維持核心的整潔，這樣的架構也允許我們延遲細節的決定。\u003Cbr \/\u003E\u003Cspan lang=\"EN-US\"\u003E\u003Co:p\u003E\u003C\/o:p\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"MsoNormal\" style=\"margin-bottom: 3.6pt; margin-left: 0cm; margin-right: 0cm; margin-top: 6.0pt; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; mso-para-margin-bottom: .3gd; mso-para-margin-left: 0cm; mso-para-margin-right: 0cm; mso-para-margin-top: .5gd;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv align=\"center\" class=\"MsoNormal\" style=\"mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; text-align: center;\"\u003E\n\u003Cb\u003E\u003Cspan style=\"color: black; font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E事件風暴\u003Cspan lang=\"EN-US\"\u003E\u003Co:p\u003E\u003C\/o:p\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/b\u003E\u003C\/div\u003E\n\u003Cdiv class=\"MsoNormal\" style=\"margin-bottom: 3.6pt; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; mso-para-margin-bottom: .3gd;\"\u003E\n\u003Cspan lang=\"EN-US\" style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u003Cspan style=\"mso-spacerun: yes;\"\u003E\u0026nbsp;\u0026nbsp;\u0026nbsp; \u003C\/span\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E第二堂課\u003Cspan lang=\"EN-US\"\u003E, Teddy\u003C\/span\u003E帶我們體驗\u003Cb\u003E\u003Cspan style=\"color: #0070c0;\"\u003E事件風暴\u003Cspan lang=\"EN-US\"\u003E(Event Storming)\u003C\/span\u003E\u003C\/span\u003E\u003C\/b\u003E，事件風暴是一種快速讓群體進入狀況\u003Cspan lang=\"EN-US\"\u003E, \u003C\/span\u003E跨部門達成共識的方法，不限於軟體，其實可以應用在各種業務領域，協助建構模型。事件風暴的介紹網路上可以查到很多，規則與範例就不在此贅述，因為事件風暴最重要的是溝通的過程，使用文字敘述很難體會，課程後我與\u003Cspan lang=\"EN-US\"\u003EYK(\u003C\/span\u003E同事\u003Cspan lang=\"EN-US\"\u003E)\u003C\/span\u003E為了讓更多同事也能了解這個溝通方法，因此辦了一個小\u003Cspan lang=\"EN-US\"\u003Eworkshop\u003C\/span\u003E，邀請了三個不同部門的同事，其中包含\u003Cb\u003E測試部門、韌體研發、新技術開發部門\u003C\/b\u003E一起共同討論「\u003Cb\u003E韌體自動化測試工具\u003C\/b\u003E」這個主題。\u003Cspan lang=\"EN-US\"\u003E\u003Co:p\u003E\u003C\/o:p\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"MsoNormal\" style=\"margin-bottom: 3.6pt; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; mso-para-margin-bottom: .3gd;\"\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhhQAWynhQU0nLgRAhWc2CrCI5_b4VtgMqsTP0oXbAzaJzCC8vLJ_RIThinZymMUx1ByqfMKlyvJr1nRhL7EMLjeN3Ac2lYAAm-PU0stGdfoqw7VenWnthj4Zk7zbcAiksI8iMxgc7fB7K3\/s1600\/IMG_9177.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"1200\" data-original-width=\"1600\" height=\"240\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhhQAWynhQU0nLgRAhWc2CrCI5_b4VtgMqsTP0oXbAzaJzCC8vLJ_RIThinZymMUx1ByqfMKlyvJr1nRhL7EMLjeN3Ac2lYAAm-PU0stGdfoqw7VenWnthj4Zk7zbcAiksI8iMxgc7fB7K3\/s320\/IMG_9177.jpg\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv align=\"center\" class=\"MsoNormal\" style=\"mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; text-align: center;\"\u003E\n\u003Cb\u003E\u003Cspan style=\"color: black; font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E共通語言\u003Cspan lang=\"EN-US\"\u003E\u003Co:p\u003E\u003C\/o:p\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/b\u003E\u003C\/div\u003E\n\u003Cdiv class=\"MsoNormal\" style=\"margin-bottom: 3.6pt; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; mso-para-margin-bottom: .3gd;\"\u003E\n\u003Cspan lang=\"EN-US\" style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u003Cspan style=\"mso-spacerun: yes;\"\u003E\u0026nbsp;\u0026nbsp;\u0026nbsp; \u003C\/span\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E首先，大家想的真的都不一樣。我們先把\u003Cspan lang=\"EN-US\"\u003E12\u003C\/span\u003E個人分成四個小組，讓大家各自列出這個系統中應該存在的\u003Cspan lang=\"EN-US\"\u003EEntity\u003C\/span\u003E再來互通有無一下，結果發現：有一些東西大家都有共識\u003Cspan lang=\"EN-US\"\u003E(\u003C\/span\u003E每一組都有塞一個專家\u003Cspan lang=\"EN-US\"\u003E)\u003C\/span\u003E，一定會有\u003Cspan lang=\"EN-US\"\u003Etest case\u003C\/span\u003E，也一定會有\u003Cspan lang=\"EN-US\"\u003Ereport\u003C\/span\u003E，有一些東西則是我有你沒有，你有我沒有。但是即使是一樣的東西，各自表述之後就會發現，你的\u003Cspan lang=\"EN-US\"\u003Ereport\u003C\/span\u003E跟我的\u003Cspan lang=\"EN-US\"\u003Ereport\u003C\/span\u003E可能又不一樣，\u003Cspan lang=\"EN-US\"\u003EA\u003C\/span\u003E組的包山包海，測試結果\u003Cspan lang=\"EN-US\"\u003E\/\u003C\/span\u003E細節步驟\u003Cspan lang=\"EN-US\"\u003E\/\u003C\/span\u003E結果統計圖，\u003Cspan lang=\"EN-US\"\u003EB\u003C\/span\u003E組的只有成功與失敗，另外還有一個叫做\u003Cspan lang=\"EN-US\"\u003Edebug log\u003C\/span\u003E的會包含細節，\u003Cb\u003E\u003Cspan style=\"color: #0070c0;\"\u003E沒有一個絕對的答案\u003Cspan lang=\"EN-US\"\u003E, \u003C\/span\u003E重要的是我們要找到共同的語言\u003Cspan lang=\"EN-US\"\u003E(ubiquitous language)\u003C\/span\u003E\u003C\/span\u003E\u003C\/b\u003E。\u003Cb\u003E\u003Cspan style=\"color: black; mso-themecolor: text1;\"\u003E共通語言除了釐清彼此的想法以外，還有加速溝通的效果\u003C\/span\u003E，建立共通語言後，可以提升溝通效率\u003C\/b\u003E，不論是文件、程式或開會。例如當要做一個跟影像有關的專案的時候，我們可以在早期建模的溝通過程中，發現是不是所有成員都有\u003Cspan lang=\"EN-US\"\u003E3A\u003C\/span\u003E的觀念，知道\u003Cspan lang=\"EN-US\"\u003EAE, AF, AWB\u003C\/span\u003E是什麼，避免專案走到後期，才發現彼此有很大的誤解。\u003Cspan lang=\"EN-US\"\u003E\u003Co:p\u003E\u003C\/o:p\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"MsoNormal\" style=\"margin-bottom: 3.6pt; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; mso-para-margin-bottom: .3gd;\"\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjW8Jzf0ydGkqF8kx5kfZ9X7nyD6tgVzU-Prhyphenhyphen4KLNYO3A1_x-to6Hee5doKLDoMGSQrd8Ms3VEjzEkCaAlhjQuv-hG94zoN2rTnNqDiiKXk0NJjUT7WHCObaxRxfy-HF5Im9Mh8148VMTc\/s1600\/IMG_9182.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"1200\" data-original-width=\"1600\" height=\"240\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjW8Jzf0ydGkqF8kx5kfZ9X7nyD6tgVzU-Prhyphenhyphen4KLNYO3A1_x-to6Hee5doKLDoMGSQrd8Ms3VEjzEkCaAlhjQuv-hG94zoN2rTnNqDiiKXk0NJjUT7WHCObaxRxfy-HF5Im9Mh8148VMTc\/s320\/IMG_9182.jpg\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv align=\"center\" class=\"MsoNormal\" style=\"mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; text-align: center;\"\u003E\n\u003Cb\u003E\u003Cspan style=\"color: black; font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E可視化流程\u003Cspan lang=\"EN-US\"\u003E\u003Co:p\u003E\u003C\/o:p\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/b\u003E\u003C\/div\u003E\n\u003Cdiv class=\"MsoNormal\" style=\"mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;\"\u003E\n\u003Cspan lang=\"EN-US\" style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u003Cspan style=\"mso-spacerun: yes;\"\u003E\u0026nbsp;\u0026nbsp;\u0026nbsp; \u003C\/span\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E除了共通語言以外，事件風暴還提供了一個全面的\u003Cb\u003E\u003Cspan style=\"color: #0070c0;\"\u003E可視化流程\u003C\/span\u003E\u003C\/b\u003E，我們同步大家的共同語言後，把四組合併成兩個組進行事件風暴，我們故意讓大家先用傳統方法從\u003Cspan lang=\"EN-US\"\u003EEntities\u003C\/span\u003E開始發想，再補充上\u003Cspan lang=\"EN-US\"\u003Euse cases\u003C\/span\u003E，讓大家先跑一次流程。\u003Cspan lang=\"EN-US\"\u003E\u003Co:p\u003E\u003C\/o:p\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"MsoNormal\" style=\"margin-bottom: 6.0pt; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; mso-para-margin-bottom: .5gd;\"\u003E\n\u003Cspan lang=\"EN-US\" style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u003Cspan style=\"mso-spacerun: yes;\"\u003E\u0026nbsp;\u0026nbsp;\u0026nbsp; \u003C\/span\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E事件風暴跟從核心出發不一樣，而是從\u003Cb\u003E領域事件\u003C\/b\u003E開始展開\u003Cspan lang=\"EN-US\"\u003E(\u003C\/span\u003E我們認為有點像是從\u003Cspan lang=\"EN-US\"\u003Euse cases\u003C\/span\u003E展開\u003Cspan lang=\"EN-US\"\u003E)\u003C\/span\u003E，兩組分別列出我們在乎的領域事件，看到大家不斷的貼上、移動、調整，對整個流程重新順一次，我想這就是事件風暴要的效果，最後產生一個看得到的用戶故事\u003Cspan lang=\"EN-US\"\u003E(User stories)\u003C\/span\u003E。\u003Cspan lang=\"EN-US\"\u003E\u003Co:p\u003E\u003C\/o:p\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"MsoNormal\" style=\"margin-bottom: 6.0pt; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; mso-para-margin-bottom: .5gd;\"\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgC47CaDSpoIAAIaW3FHcEN86KBcesZC8QgMD7ODizb63vngXaC8L2ubGrVnrQ1w4LTFOvi-AE5Lh1KqkQtF16aLVtem0ax9yVq53C4U7u-TP6rmlD1gT8lnUUHbSwbPm0WDtcvCcWmBlPf\/s1600\/IMG_9210.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"1600\" data-original-width=\"1200\" height=\"320\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgC47CaDSpoIAAIaW3FHcEN86KBcesZC8QgMD7ODizb63vngXaC8L2ubGrVnrQ1w4LTFOvi-AE5Lh1KqkQtF16aLVtem0ax9yVq53C4U7u-TP6rmlD1gT8lnUUHbSwbPm0WDtcvCcWmBlPf\/s320\/IMG_9210.jpg\" width=\"240\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"MsoNormal\" style=\"mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;\"\u003E\n\u003Cspan lang=\"EN-US\" style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u003Cspan style=\"mso-spacerun: yes;\"\u003E\u0026nbsp;\u0026nbsp;\u0026nbsp; \u003C\/span\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E我感覺\u003Cspan lang=\"EN-US\"\u003Eevent storming\u003C\/span\u003E有點類似非\u003Cspan lang=\"EN-US\"\u003Ecoding\u003C\/span\u003E版本的\u003Cspan lang=\"EN-US\"\u003Emob programing\u003C\/span\u003E，用一種方法\u003Cb\u003E把群體的思維聚焦在同一個問題上，並且利用交流讓整體意識調整到相同頻率取得共識，共識後的產物是經過大家認可的業務邏輯與範圍，所以真正執行或實作的時候大家是\u003Cspan style=\"color: #0070c0;\"\u003E朝同一個目標努力的。\u003C\/span\u003E\u003Cspan lang=\"EN-US\"\u003E\u003Co:p\u003E\u003C\/o:p\u003E\u003C\/span\u003E\u003C\/b\u003E\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u003Cb\u003E\u003Cspan style=\"color: #0070c0;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/b\u003E\u003C\/span\u003E\n\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;微軟正黑體\u0026quot; , sans-serif; font-size: 10.0pt;\"\u003E\u003Cb\u003E\u003Cspan style=\"color: #0070c0;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/b\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/td\u003E\n \u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003C\/div\u003E\n\u003Cbr \/\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/blog.rd.vivotek.com\/feeds\/7442227545228273634\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2019\/09\/clean-architecture.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/7442227545228273634"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/7442227545228273634"},{"rel":"alternate","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2019\/09\/clean-architecture.html","title":"Clean Architecture 課後心得分享"}],"author":[{"name":{"$t":"mason.lin"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06217578385898828620"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhhQAWynhQU0nLgRAhWc2CrCI5_b4VtgMqsTP0oXbAzaJzCC8vLJ_RIThinZymMUx1ByqfMKlyvJr1nRhL7EMLjeN3Ac2lYAAm-PU0stGdfoqw7VenWnthj4Zk7zbcAiksI8iMxgc7fB7K3\/s72-c\/IMG_9177.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-7905389674158671872.post-5686579162423854061"},"published":{"$t":"2019-08-30T18:26:00.001+08:00"},"updated":{"$t":"2019-08-30T18:28:25.450+08:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Agile"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Culture"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Programming"},{"scheme":"http://www.blogger.com/atom/ns#","term":"scrum"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Testing"}],"title":{"type":"text","$t":"The Year of Being Agile (Part 1)"},"content":{"type":"html","$t":"\u003Cdiv class=\"graf graf--p\" name=\"c3e2\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"c3e2\"\u003E\n在我們團隊快要一年了\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"5ad9\"\u003E\n一年的時間\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"7275\"\u003E\n寶寶可以長牙\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"116a\"\u003E\n台灣可以賣出 10 億杯飲料\u003Cbr \/\u003E\n營業額可以突破千億…\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"116a\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEh9YpCSD1g7TmrG5FmuZ8YtPPJWpVIAj9NtanXGXEhBxFvTbUa0jGUYPlvy5MQZTtZffSjcWO8Ml3mrp4ThuxG9hCsSO4gprm3WSJHgeHnCqnsw3Fi_pDkmYYQSoHAYf_iynhh-6yXnh_U\/s1600\/20190830_medium_1_1.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"262\" data-original-width=\"701\" height=\"235\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEh9YpCSD1g7TmrG5FmuZ8YtPPJWpVIAj9NtanXGXEhBxFvTbUa0jGUYPlvy5MQZTtZffSjcWO8Ml3mrp4ThuxG9hCsSO4gprm3WSJHgeHnCqnsw3Fi_pDkmYYQSoHAYf_iynhh-6yXnh_U\/s640\/20190830_medium_1_1.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E經濟部統計處: 飲料店營業額在台灣逐年攀升\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"b179\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"b179\"\u003E\n不說飲料\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"3bcc\"\u003E\n最近回顧了這一年的行事曆\u003Cbr \/\u003E\n我是有點吃驚的\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"3c97\"\u003E\nOMG!\u003Cbr \/\u003E\n原來工作的方式，可以這樣影響生活\u003Cbr \/\u003E\n越工作越有活力\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"5688\"\u003E\n如何影響呢？\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"2271\"\u003E\n我先賣個關子，先來看幾個大部分的組織會遇到的現象。\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"2271\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch2\u003E\n\u003C\/h2\u003E\n\u003Cdiv\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch2\u003E\n第一個常見現象：開週會\u003Cbr \/\u003E\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003EWhy are meetings so ineffective?\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h2\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"1881\"\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003E\u003Cbr \/\u003E\u003C\/em\u003E\u003C\/strong\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"772a\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"772a\"\u003E\n一個規模不大的四人團隊\u003Cbr \/\u003E\n一人報告一小時\u003Cbr \/\u003E\n一場 weekly meeting 就是四個小時\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"7210\"\u003E\n如果你曾經有在電影院睡著的經驗\u003Cbr \/\u003E\n應該不難體會四個小時以上的會議有多累\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"d548\"\u003E\n為什麼 weekly meeting 要開這麼久?\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"8ceb\"\u003E\n畢竟是一週的進度回報，如果每個人報告一個小時\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"b727\"\u003E\n相當於把他五個工作天，一天八小時的工作量\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"0b91\"\u003E\n用 40 倍速的快進，講給你聽\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"5663\"\u003E\n奇怪的是，我們心理從來沒有出現這樣的聲音\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p graf--startsWithDoubleQuote\" name=\"11d1\"\u003E\n“哇! 我聽到了 1\/40 的超級濃縮精華\/乾貨耶! ”\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"a3c0\"\u003E\n我們只希望他能再快個 40 倍\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n這不能怪同事，就像在電影院睡著其實也不能怪導演\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"09ce\"\u003E\n沒有哪個導演拍片是為了讓觀眾睡的\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"d782\"\u003E\n比較可能的是 —\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"1881\"\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003E\u003C\/em\u003E\u003C\/strong\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"5105\"\u003E\n那個議題和你沒有共鳴\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"5105\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiF3aQ45wGgW44KKQPv5hPxF3Af9i5_kgZuCVOG3kMXSBCPOiIgFpcSo-IW7OMPOgkVJwfsnArh-vdit7EI9zIKypzdFKLI2LpYOASNEEQwlaStc4qrvt1PjXkkj6mwuR2fnHPjlTGa_Wk\/s1600\/20190830_medium_1_2.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"387\" data-original-width=\"693\" height=\"355\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiF3aQ45wGgW44KKQPv5hPxF3Af9i5_kgZuCVOG3kMXSBCPOiIgFpcSo-IW7OMPOgkVJwfsnArh-vdit7EI9zIKypzdFKLI2LpYOASNEEQwlaStc4qrvt1PjXkkj6mwuR2fnHPjlTGa_Wk\/s640\/20190830_medium_1_2.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E\u003Cdiv class=\"graf graf--p\" name=\"2de4\"\u003E\nGreat movies tell stories that have deep emotional resonance\u003C\/div\u003E\n\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Ch4 class=\"graf graf--h4\" name=\"be55\"\u003E\n\u003C\/h4\u003E\n\u003Ch2\u003E\n\u003C\/h2\u003E\n\u003Ch2\u003E\n第二個常見現象：同事間的工作互換困難\u003Cbr \/\u003E\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003EWhy is collective work difficult?\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h2\u003E\n\u003Cbr \/\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"5105\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"db42\"\u003E\n我們很常因為負責了某個案子，後續的東西都交給你來處理\u003Cbr \/\u003E\n因為這是短期看來最省時間的做法\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"99e6\"\u003E\n當你在公司一陣子了，你會自然而然地有一個對照表:\u003Cbr \/\u003E\n“X module 的問題要找同事 A\u003Cbr \/\u003E\n\u0026nbsp;Y module 的問題找同事 B”\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"c06a\"\u003E\n你應該也對這種情況不陌生 — \u003Cbr \/\u003E\n同事 B: “A 請假耶，這問題要等他回來才能處理喔! ”\u003Cbr \/\u003E\n很少同事 B 會說: “A 請假，那你先把東西給我，我可以處理”\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"68e6\"\u003E\n但其實，這種工作互換、集體協作的例子，在生活中明明很常見\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"a151\"\u003E\n比如說便利商店的店員，A 忙著做咖啡、B 來幫忙結帳\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"6de7\"\u003E\n從沒見過哪個店員跟你說:\u003Cbr \/\u003E\n“不好意思我不能幫您結帳，負責收銀的今天請假，我只會泡咖啡”\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"e129\"\u003E\n上述這種情況在組織裡卻很常發生，原因是什麼呢?\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"adb8\"\u003E\n可能是訓練文化\u003Cbr \/\u003E\n不知不覺把 ”人” 訓練成一台 “機器” (咖啡機\/收銀機)\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"1868\"\u003E\n因此當我發現這裡的 team member 可以輕鬆的交換手頭上的工作\u003Cbr \/\u003E\n我是很驚訝的\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"5105\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgS8PCqhsW2rOtiKiK7X7_RnUMid1cYh_6pJ1W9lHTHjuAr6CSeC6v8BSCTMKo2e8vJkY7sRj5At-yDhtjoEOrG7tvLBYe-hS0k8PxqQqqBOtGSbcfQQ6qNMv50Ezo8h52NAm8AyNoQ0b0\/s1600\/20190830_medium_1_3.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"462\" data-original-width=\"693\" height=\"425\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgS8PCqhsW2rOtiKiK7X7_RnUMid1cYh_6pJ1W9lHTHjuAr6CSeC6v8BSCTMKo2e8vJkY7sRj5At-yDhtjoEOrG7tvLBYe-hS0k8PxqQqqBOtGSbcfQQ6qNMv50Ezo8h52NAm8AyNoQ0b0\/s640\/20190830_medium_1_3.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E\u003Cdiv class=\"graf graf--p\" name=\"0480\"\u003E\nMachine learning or human learning?\u003C\/div\u003E\n\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Cbr \/\u003E\n\u003Ch2\u003E\n\u003C\/h2\u003E\n\u003Ch2\u003E\n第三個常見現象: 加班\u003C\/h2\u003E\n\u003Ch2\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003EWhy work overtime?\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h2\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"ba4b\"\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003E\u003Cbr \/\u003E\u003C\/em\u003E\u003C\/strong\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"ba4b\"\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003E\u003Cbr \/\u003E\u003C\/em\u003E\u003C\/strong\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"cde9\"\u003E\n你有玩過比手畫腳這類的傳話遊戲嗎? 通常結果都是各種歪樓\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"8f1e\"\u003E\n你可能會說，如果大家都能看到題目就不會有問題\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"2a2b\"\u003E\nNo，還是不行\u003Cbr \/\u003E\n比如先前 U Think I Do 系列\u003Cbr \/\u003E\n就把朋友、家人、社會、學校、自己\u003Cbr \/\u003E\n看到一件事情的不同面向\u003Cbr \/\u003E\n放在一張圖裡，非常有趣\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"2a2b\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"2a2b\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEilu1dcZw_uA_wQi9e_mJEpZGLP8hLUgv_WObIOEgS3_nkf5j2HXMuTMhdzgDL49JjL__17rsVfoVo0ibL-srPcYWdrCw4q5sJ6IKa-snKCTGstANj8B7Yb80oStZJIquaQRvZAi2GX1dE\/s1600\/20190830_medium_1_4.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"444\" data-original-width=\"633\" height=\"448\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEilu1dcZw_uA_wQi9e_mJEpZGLP8hLUgv_WObIOEgS3_nkf5j2HXMuTMhdzgDL49JjL__17rsVfoVo0ibL-srPcYWdrCw4q5sJ6IKa-snKCTGstANj8B7Yb80oStZJIquaQRvZAi2GX1dE\/s640\/20190830_medium_1_4.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E\u003Cdiv class=\"graf graf--p\" name=\"4939\"\u003E\n不同角度的生命科學系\u003C\/div\u003E\n\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"5105\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"6773\"\u003E\n撇除那種時程明顯不合理的情況\u003Cbr \/\u003E\n大多數的加班來自於\u003Cbr \/\u003E\n每個人對事物的理解不同:\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"078a\"\u003E\n以為自己了解對方想要的功能\u003Cbr \/\u003E\n↓\u003Cbr \/\u003E\n發現不是對方想要的功能\u003Cbr \/\u003E\n↓\u003Cbr \/\u003E\n\u0026nbsp;“盡量” 修改，改不完就加班\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"7ea1\"\u003E\n這個 “盡量” 可能妥協了很多事情\u003Cbr \/\u003E\n如果前面幾次靠著加班，都很幸運的在 deadline 前完工了\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"205e\"\u003E\n再遇到這種情況的時候，就會習慣性的把加班變成解決方法\u003Cbr \/\u003E\n而忘了去想該修正哪些流程\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"205e\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgQjOOERpgsEy93WonG2HRQOi4WuQ3xNQEUomfyFA1QtcmCR0MRRUqmoL2sukJheseVKhK3sgp9F9bO5FDL0XGCalgvQ06HMTMOw9KdQ_8z0ExnvPSbHydZo7BHrDynYyFVp3hR5k6mZQk\/s1600\/20190830_medium_1_5.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"463\" data-original-width=\"694\" height=\"425\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgQjOOERpgsEy93WonG2HRQOi4WuQ3xNQEUomfyFA1QtcmCR0MRRUqmoL2sukJheseVKhK3sgp9F9bO5FDL0XGCalgvQ06HMTMOw9KdQ_8z0ExnvPSbHydZo7BHrDynYyFVp3hR5k6mZQk\/s640\/20190830_medium_1_5.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E\u003Cdiv class=\"graf graf--p\" name=\"192b\"\u003E\n又下班了?! 我還想工作\u003C\/div\u003E\n\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"c9a6\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"c9a6\"\u003E\nPM、RD、UX 都用自己的角度去理解、開發功能，在溝通不足、流程不透明的情況下，這個專案就會越來越像一個黑盒子\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"af8f\"\u003E\n當老闆問這件事情什麼時候可以做完\u003Cbr \/\u003E\n是不會有人知道的\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"69b4\"\u003E\n高中物理就告訴我們，根據不確定性原理\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"6ed2\"\u003E\n專案的完成和沒完成，是同時存在的\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"b31a\"\u003E\n只有打開黑盒子的一瞬間才會塌縮到一種可能性上\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"5fd9\"\u003E\n這種 “既完成又沒完成”\u003Cbr \/\u003E\n把人逼的 “既死又活” 的現象\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"a2a3\"\u003E\n我們稱之為 —\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"06d4\"\u003E\n薛丁格的專案\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"205e\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgpm1mmJehUEnD52sqHVTcmGAWozxda1g9oJNvsjx9u-GgaupA7VXNMv3_-IwQolbLJ907KW7x1jxKznCpJAnxN03Q5ajR0owjqwVb4vRBCIh0duTKfXly1-6WaJq1HwypQlL-uewV5o5k\/s1600\/20190830_medium_1_6.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"465\" data-original-width=\"700\" height=\"424\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgpm1mmJehUEnD52sqHVTcmGAWozxda1g9oJNvsjx9u-GgaupA7VXNMv3_-IwQolbLJ907KW7x1jxKznCpJAnxN03Q5ajR0owjqwVb4vRBCIh0duTKfXly1-6WaJq1HwypQlL-uewV5o5k\/s640\/20190830_medium_1_6.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E\u003Cdiv class=\"graf graf--p\" name=\"30b7\"\u003E\nSchrödinger’s Cat 薛丁格的貓\u003C\/div\u003E\n\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"822f\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"822f\"\u003E\n本篇文章未完，你可以現在\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Ca href=\"https:\/\/blog.rd.vivotek.com\/2019\/08\/the-year-of-being-agile-part2.html\"\u003E前往 Part2\u003C\/a\u003E\u003C\/strong\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"aca8\"\u003E\n也可以往下滑留下一些意見\u003C\/div\u003E\n\u003Cbr \/\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"205e\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/blog.rd.vivotek.com\/feeds\/5686579162423854061\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2019\/08\/the-year-of-being-agile-part1.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/5686579162423854061"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/5686579162423854061"},{"rel":"alternate","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2019\/08\/the-year-of-being-agile-part1.html","title":"The Year of Being Agile (Part 1)"}],"author":[{"name":{"$t":"Vavrin Chen"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/00542546042460997372"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEh9YpCSD1g7TmrG5FmuZ8YtPPJWpVIAj9NtanXGXEhBxFvTbUa0jGUYPlvy5MQZTtZffSjcWO8Ml3mrp4ThuxG9hCsSO4gprm3WSJHgeHnCqnsw3Fi_pDkmYYQSoHAYf_iynhh-6yXnh_U\/s72-c\/20190830_medium_1_1.PNG","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-7905389674158671872.post-1436205381009210138"},"published":{"$t":"2019-08-30T18:24:00.002+08:00"},"updated":{"$t":"2019-08-30T18:28:10.216+08:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Agile"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Culture"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Programming"},{"scheme":"http://www.blogger.com/atom/ns#","term":"scrum"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Testing"}],"title":{"type":"text","$t":"The Year of Being Agile (Part 2)"},"content":{"type":"html","$t":"\u003Cdiv class=\"graf graf--p\" name=\"cde7\"\u003E\n我們再歸納一下，一般的組織常遇到三個現象:\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"40e5\"\u003E\n1. 開冗長的週會\u003Cbr \/\u003E\n2. 同事間工作互換很困難\u003Cbr \/\u003E\n3. 加班\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"f70b\"\u003E\n而我們 team 恰恰相反，有這三個很獨特的地方:\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"af46\"\u003E\n1. 不用開週會\u003Cbr \/\u003E\n2. 協作容易，你的同事就是你的分身\u003Cbr \/\u003E\n3. 不用加班\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"44ed\"\u003E\n這些特徵好像很難同時並存，你想，不開會怎麼知道同事在做什麼?\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"8172\"\u003E\n同事之間不了解，溝通成本就大\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"dcc6\"\u003E\n人越多就越複雜，花的時間也多\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"9026\"\u003E\n怎可能不用加班事情還能準時做完?\u003C\/div\u003E\n\u003Ch2\u003E\n\u003C\/h2\u003E\n\u003Ch2\u003E\n敏捷開發\u003Cbr \/\u003E\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003EWhy OverCooked can teach you agile?\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h2\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"0d1f\"\u003E\n來講講 OverCooked 這個遊戲\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"64c1\"\u003E\n一開始食物的訂單不多，每個人可以各司其職\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"6edd\"\u003E\n專門切肉，專門煮菜，專門洗碗\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"d2d1\"\u003E\n而隨著訂單暴增和廚房地形改變\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"aba4\"\u003E\n如果還是一個人只負責做一件事，時間肯定是不夠用的\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"aba4\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEisCCBUpO2eVXHzBTkv8ioXYxt_v8AISQ3ODBlPwGulvcekK-20PM6udyrm42ARoVa2S4jlGtGBowN-8_3jePNOgILX4ZDV7mGHdxt9PUNwMS-tMggtkMj7RashATAk2C3ASsaZ1OTOj34\/s1600\/20190830_medium_2_1.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"390\" data-original-width=\"697\" height=\"358\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEisCCBUpO2eVXHzBTkv8ioXYxt_v8AISQ3ODBlPwGulvcekK-20PM6udyrm42ARoVa2S4jlGtGBowN-8_3jePNOgILX4ZDV7mGHdxt9PUNwMS-tMggtkMj7RashATAk2C3ASsaZ1OTOj34\/s640\/20190830_medium_2_1.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E\u003Cdiv class=\"graf graf--p\" name=\"3cf1\"\u003E\n一款具備敏捷精神的遊戲\u003C\/div\u003E\n\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"aba4\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003EGet back in sync\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"676b\"\u003E\n左上角可以看到現在的訂單有哪些\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"3de6\"\u003E\n一回合的時間完成越多訂單得分越高\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"176c\"\u003E\n這是一款用嘴巴打仗的遊戲\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"d110\"\u003E\n你準備要拿料還是煮菜\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"250a\"\u003E\n需要什麼幫忙\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"d9a1\"\u003E\n哪邊需要修正\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"e026\"\u003E\n都要即時說出來\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"1db5\"\u003E\n每個玩家都可以看到夥伴的狀況\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"b591\"\u003E\n這種快速 team sync 的方式就是 —\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"0723\"\u003E\ndaily scrum meeting \/ standup meeting\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003E\u003Cbr \/\u003E\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003ERealtime review\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"905f\"\u003E\n這款遊戲一次最多四位玩家\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"7bb3\"\u003E\n如果有八個人玩呢?\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"498a\"\u003E\n一般情況就是多出來的四個會在旁邊\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"f144\"\u003E\n觀戰並且嘴砲給建議\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"e269\"\u003E\n等到下一回合再換這一組人拿搖桿\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"0934\"\u003E\n這種 driver \u0026amp; navigator 的方式 —\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"178a\"\u003E\npair programming \/ mob programming\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"178a\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEh8gKRhXsGJyrybujJZhdjviMTzdO2-A2z_z9OjjU9UV3C26PLcd6ZrUAsFnBYSSUr4L5heA__rYqUxgwd3h1ck8jfxsHtZ5n3WJje-v0P7IYeUxjtJOscYPD51RU4dyECPPsroR8iOS7Q\/s1600\/20190830_medium_2_2.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"461\" data-original-width=\"697\" height=\"422\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEh8gKRhXsGJyrybujJZhdjviMTzdO2-A2z_z9OjjU9UV3C26PLcd6ZrUAsFnBYSSUr4L5heA__rYqUxgwd3h1ck8jfxsHtZ5n3WJje-v0P7IYeUxjtJOscYPD51RU4dyECPPsroR8iOS7Q\/s640\/20190830_medium_2_2.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E\u003Cdiv class=\"graf graf--p\" name=\"372f\"\u003E\nThe programmer as navigator\u003C\/div\u003E\n\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"178a\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"23d0\"\u003E\n介紹完遊戲，應該就不難回答我們一開始的問題\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003E\u003Cbr \/\u003E\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003EHow to avoid boring meetings?\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"3a6c\"\u003E\n這個 team 不是不開會\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"b573\"\u003E\n而是不開沒有效率的會\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"3bf7\"\u003E\ndaily meeting 有一些限制:\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"1cce\"\u003E\n最多 15 分鐘，站著開\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"73b4\"\u003E\n類似遊戲一回合的計時制\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"2a3c\"\u003E\n講求快速同步最新狀況\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003E\u003Cbr \/\u003E\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003EHow to develop a cohesive team?\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"ce53\"\u003E\n再來講協作:\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"670f\"\u003E\n關心不等於了解\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"5a6a\"\u003E\n想要了解一件事情\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"c68c\"\u003E\n沒有什麼比實際參與還有效的\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"7239\"\u003E\n針對複雜的 task 安排 pair \/ mob\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"ec6e\"\u003E\n提倡 collective code ownership\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"cb60\"\u003E\n簡單說就是共榮共享\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"cd4e\"\u003E\n但這樣講可能有點土\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"0b9e\"\u003E\n所以來看一下維基百科的定義:\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"0b9e\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cblockquote class=\"tr_bq\"\u003E\n\u003Cblockquote class=\"graf graf--blockquote\" name=\"9d2c\"\u003E\n合作或協作（英語：Collaboration）\u003C\/blockquote\u003E\n\u003Cblockquote class=\"graf graf--blockquote\" name=\"ac44\"\u003E\n是指一種由兩個或兩個以上的個人或團體作為一個共同的目標而交集或在一起共同工作，舉例說明：\u003C\/blockquote\u003E\n\u003Cblockquote class=\"graf graf--blockquote\" name=\"96d6\"\u003E\n一個知識分子可以透過合作的關係而去分享知識，再而經過學習和共識達到創作的目標\u003C\/blockquote\u003E\n\u003C\/blockquote\u003E\n\u003Cbr \/\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"9803\"\u003E\n從上面描述看的出來\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"9d60\"\u003E\n合作和凝聚力脫不了關係\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"432b\"\u003E\n那怎樣才能有好的凝聚力呢?\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"c51e\"\u003E\n借用本公司的四大核心價值\u003Cbr \/\u003E\n誠信、 關懷、創新、當責\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"2eb9\"\u003E\n肯定每個人的付出\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"618e\"\u003E\n讓每個人都看到自己的貢獻 —\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"618e\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cblockquote class=\"tr_bq\"\u003E\n\u003Cblockquote class=\"graf graf--blockquote\" name=\"47a8\"\u003E\n一個人走得快\u003C\/blockquote\u003E\n\u003Cblockquote class=\"graf graf--blockquote\" name=\"1bd5\"\u003E\n一群人走得遠\u003C\/blockquote\u003E\n\u003C\/blockquote\u003E\n\u003Cbr \/\u003E\n\u003Ch3\u003E\n\u0026nbsp;\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003EWhy collective intelligence matters?\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"8123\"\u003E\n電影環太平洋裡面\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"14c0\"\u003E\n龐大的機器人無法由一人駕駛\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"9143\"\u003E\n需要兩位駕駛員連接彼此的腦神經\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"c8a7\"\u003E\n共享對方的情感、記憶、經歷\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"0f0b\"\u003E\n並且認同對方的處境之後\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"29d3\"\u003E\n才能同步操控\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"29d3\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjOaNKHpx2DuamsJYgRJg_mT5vIeEwKGtQeMlvkG3NLsoXQZNDs3IQ9xFi5sZfyhcDNoVnh9PmAXZM1QAAL1qijsjV6-m79sfDPt4npdLwcGGly3tN0FIURmJBWuiEFX1I3yFq2cxEkHfg\/s1600\/20190830_medium_2_3.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"399\" data-original-width=\"695\" height=\"366\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjOaNKHpx2DuamsJYgRJg_mT5vIeEwKGtQeMlvkG3NLsoXQZNDs3IQ9xFi5sZfyhcDNoVnh9PmAXZM1QAAL1qijsjV6-m79sfDPt4npdLwcGGly3tN0FIURmJBWuiEFX1I3yFq2cxEkHfg\/s640\/20190830_medium_2_3.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E\u003Cdiv class=\"graf graf--p\" name=\"6d5e\"\u003E\nPacific Rim: Uprising (2018)\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"6d5e\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"868d\"\u003E\n好的溝通和協作\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"3d3d\"\u003E\n就是用心和時間\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"50f5\"\u003E\n灌溉的共同記憶\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"da5b\"\u003E\n他會形成一個生命體\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"d8b1\"\u003E\n持續成長\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"7fb5\"\u003E\n或者說他就是一個生命\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"42a7\"\u003E\n你們必須承擔起照顧這個生命的責任\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"2268\"\u003E\n也是這份承擔\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"0059\"\u003E\n讓你們之間的關聯\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"733f\"\u003E\n獨一無二\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"733f\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEig7D3OQf1C4z-y7ILEqiNP7N6p5dnCjfQkzYeyO5R45ycVbOJNX4xpbuGGWOsNtsyciuu-xqCr9QBlKz0vefAkWdm7IwmvtePJX4bC2lsS_Ib7X4BtP58EplhmE9K_ksG0lAG7zkeYTek\/s1600\/20190830_medium_2_4.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"525\" data-original-width=\"696\" height=\"482\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEig7D3OQf1C4z-y7ILEqiNP7N6p5dnCjfQkzYeyO5R45ycVbOJNX4xpbuGGWOsNtsyciuu-xqCr9QBlKz0vefAkWdm7IwmvtePJX4bC2lsS_Ib7X4BtP58EplhmE9K_ksG0lAG7zkeYTek\/s640\/20190830_medium_2_4.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E\u003Cdiv class=\"graf graf--p\" name=\"97d5\"\u003E\nTrue collaboration yields better results\u003C\/div\u003E\n\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"733f\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003EIteration based method\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"5eac\"\u003E\nIteration 翻成中文『迭代』\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"2b13\"\u003E\n在敏捷方法中是指\u003Cbr \/\u003E\n把一個大任務切成許多小週期可以完成的的任務\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"8a56\"\u003E\n騰訊創始人馬化騰說:\u003Cbr \/\u003E\n小步快跑、快速迭代\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"b59a\"\u003E\n這是他的產品思路\u003Cbr \/\u003E\n也成為互聯網創業法則\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"10b4\"\u003E\n敏捷開發裡的迭代週期是一個 sprint\u003Cbr \/\u003E\nsprint 這字有短跑衝刺的意思\u003Cbr \/\u003E\n很符合迭代的概念\u003Cbr \/\u003E\n一個 sprint 一般為 2 ~ 4 週\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"3ac0\"\u003E\n由團隊討論這個 sprint 能完成的功能\u003Cbr \/\u003E\n並在 sprint 結束時做個『試營運』\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"7992\"\u003E\n拿到客戶的 feedback\u003Cbr \/\u003E\n並且快速的衡量修正\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"ac3e\"\u003E\n為了好懂，借個圖舉例\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"bbf0\"\u003E\n\u003Ca class=\"markup--anchor markup--p-anchor\" data-href=\"https:\/\/www.jpattonassociates.com\/about-jeff-patton\/\" href=\"https:\/\/www.jpattonassociates.com\/about-jeff-patton\/\" rel=\"noopener\" target=\"_blank\"\u003EJeff Patton\u003C\/a\u003E 是名資深產品經理\u003Cbr \/\u003E\n他的著作 \u003Ca class=\"markup--anchor markup--p-anchor\" data-href=\"https:\/\/www.amazon.com\/User-Story-Mapping-Discover-Product\/dp\/1491904909\/\" href=\"https:\/\/www.amazon.com\/User-Story-Mapping-Discover-Product\/dp\/1491904909\/\" rel=\"noopener\" target=\"_blank\"\u003EUser Story Mapping\u003C\/a\u003E 裡\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"babe\"\u003E\n比較了傳統方法與敏捷開發法\u003Cbr \/\u003E\n如何在三個迭代週期完成蒙娜麗莎\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"babe\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgCjevnSH_rT19O6o-Pi5dc7x7pX42bXUEDKd3KF_vktqEDjclJtNnR66ltL_baYxjpwGC67lpUuf71KTGcDPkeVUxCCMm75pFyueEYArAkvI7REmET0fOuHmcVZPVcM18S4X3MPvIKl4Q\/s1600\/20190830_medium_2_5.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"322\" data-original-width=\"683\" height=\"300\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgCjevnSH_rT19O6o-Pi5dc7x7pX42bXUEDKd3KF_vktqEDjclJtNnR66ltL_baYxjpwGC67lpUuf71KTGcDPkeVUxCCMm75pFyueEYArAkvI7REmET0fOuHmcVZPVcM18S4X3MPvIKl4Q\/s640\/20190830_medium_2_5.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E\u003Cdiv class=\"graf graf--p\" name=\"90f2\"\u003E\nJeff Patton did an Iterative Mona Lisa.\u003C\/div\u003E\n\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"d3e9\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"d3e9\"\u003E\n先來看傳統的開發方法:\u003Cbr \/\u003E\n在第一階段可以看到蒙娜麗莎的頭\u003Cbr \/\u003E\n第二階段能看到蒙娜麗莎的左下半身\u003Cbr \/\u003E\n第三階段是完整的蒙娜麗莎\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"3e0a\"\u003E\n換成用敏捷開發會怎樣呢?\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"bedf\"\u003E\n在第一階段是極簡主義派的蒙娜麗莎\u003Cbr \/\u003E\n第二階段是簡單上色派的蒙娜麗莎\u003Cbr \/\u003E\n第三階段是佛羅倫薩畫派的蒙娜麗莎\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"1006\"\u003E\n不論哪個階段都是最小可行產品\u003Cbr \/\u003E\n很傳神地描述了敏捷的精神 —\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"a87d\"\u003E\n接受反饋、迅速擴張\u003Cbr \/\u003E\n盡快給客戶有價值的產品\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"a87d\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch2\u003E\n\u003C\/h2\u003E\n\u003Ch2\u003E\n敏捷帶來的影響\u003Cbr \/\u003E\u003Cstrong class=\"markup--strong markup--p-strong\"\u003E\u003Cem class=\"markup--em markup--p-em\"\u003EHow does agile affect my work and daily life?\u003C\/em\u003E\u003C\/strong\u003E\u003C\/h2\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"a0b0\"\u003E\n所以回到一開始我賣的關子\u003Cbr \/\u003E\n那個讓我吃驚的行事曆\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"4e44\"\u003E\n我發現從以前到現在\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"0a9c\"\u003E\n晚上時間的利用有了很大的改變\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"0a9c\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cblockquote class=\"tr_bq\"\u003E\n\u003Cblockquote class=\"graf graf--blockquote\" name=\"4442\"\u003E\n從同事電腦辦公桌\u003C\/blockquote\u003E\n\u003Cblockquote class=\"graf graf--blockquote\" name=\"6cf3\"\u003E\n變家人散步吹吹風\u003C\/blockquote\u003E\n\u003C\/blockquote\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"733f\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"f83e\"\u003E\n以前晚下班總要負責關公司的門\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"15d6\"\u003E\n有時候關得太順就會不小心鎖到別人\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"e028\"\u003E\n下圖的例外就是我補充的\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"e028\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ctable align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"margin-left: auto; margin-right: auto; text-align: center;\"\u003E\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd style=\"text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiEy4bGNEQkWYngZ-ME__vWSXd8YfgoHWYynkXsXaX-QcBSGLg4C_lGLZD0MnIZLh0w3RKnQuw2kNswiFYKq1ux2ZQYvTXWqbLVurqPecObCsI47xMA-0VtsDKfFe0rPChYNfMmAjXpB3o\/s1600\/20190830_medium_2_6.PNG\" imageanchor=\"1\" style=\"margin-left: auto; margin-right: auto;\"\u003E\u003Cimg border=\"0\" data-original-height=\"483\" data-original-width=\"663\" height=\"466\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiEy4bGNEQkWYngZ-ME__vWSXd8YfgoHWYynkXsXaX-QcBSGLg4C_lGLZD0MnIZLh0w3RKnQuw2kNswiFYKq1ux2ZQYvTXWqbLVurqPecObCsI47xMA-0VtsDKfFe0rPChYNfMmAjXpB3o\/s640\/20190830_medium_2_6.PNG\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/td\u003E\u003C\/tr\u003E\n\u003Ctr\u003E\u003Ctd class=\"tr-caption\" style=\"text-align: center;\"\u003E\u003Cdiv class=\"graf graf--p\" name=\"1b30\"\u003E\n關門 SOP\u003C\/div\u003E\n\u003C\/td\u003E\u003C\/tr\u003E\n\u003C\/tbody\u003E\u003C\/table\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"e028\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"341c\"\u003E\n這一年有了固定的下班時間後\u003Cbr \/\u003E\n我開始能每天帶著媽媽去運動\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"0057\"\u003E\n運動的地方是學校的操場\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"f594\"\u003E\n晚上學校警衛要關門的時候\u003Cbr \/\u003E\n看著警衛一邊關燈一邊趕人\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"216e\"\u003E\n這種熟悉又親切的感覺 —\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"3be0\"\u003E\n等我退休了或許可以來當警衛吧 😝\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"733f\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cblockquote class=\"tr_bq\"\u003E\n\u003Cblockquote class=\"graf graf--blockquote\"\u003E\n前是把家當旅館\u003C\/blockquote\u003E\n\u003Cblockquote class=\"graf graf--blockquote\" name=\"827b\"\u003E\n現在是家事盡量管\u003C\/blockquote\u003E\n\u003C\/blockquote\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"733f\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"733f\"\u003E\n\u003C\/div\u003E\n\u003Ca name='more'\u003E\u003C\/a\u003E\u003Cbr \/\u003E\n\u003Cpre class=\"graf graf--pre\" name=\"0432\"\u003E感謝你看到最後，寫這篇文章的動機是想分享敏捷精神\n也因此，歡迎大家一起 being agile\n留言告訴我你的想法或建議\u003C\/pre\u003E\n\u003Cdiv class=\"graf graf--p\" name=\"733f\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/blog.rd.vivotek.com\/feeds\/1436205381009210138\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2019\/08\/the-year-of-being-agile-part2.html#comment-form","title":"1 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/1436205381009210138"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/1436205381009210138"},{"rel":"alternate","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2019\/08\/the-year-of-being-agile-part2.html","title":"The Year of Being Agile (Part 2)"}],"author":[{"name":{"$t":"Vavrin Chen"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/00542546042460997372"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEisCCBUpO2eVXHzBTkv8ioXYxt_v8AISQ3ODBlPwGulvcekK-20PM6udyrm42ARoVa2S4jlGtGBowN-8_3jePNOgILX4ZDV7mGHdxt9PUNwMS-tMggtkMj7RashATAk2C3ASsaZ1OTOj34\/s72-c\/20190830_medium_2_1.PNG","height":"72","width":"72"},"thr$total":{"$t":"1"}},{"id":{"$t":"tag:blogger.com,1999:blog-7905389674158671872.post-6275416817742129963"},"published":{"$t":"2017-04-12T09:42:00.000+08:00"},"updated":{"$t":"2019-05-15T20:58:42.368+08:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Book"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Culture"},{"scheme":"http://www.blogger.com/atom/ns#","term":"scrum"}],"title":{"type":"text","$t":"ODD-E LESS@上海 後記 PART 4"},"content":{"type":"html","$t":"\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjduuAuhmlV04XlFyg_QuZ1B_xehszuH9aVmPUq8rYGk4yg2npUGgLr4HMfd4AwZVgNTmmh4QSKqwUd5J5SI-yCzr6MtyXbrhWb1cWWyQEaLgra7kmoqGjqgNa7MHPmH_WdVGkK-4ixgYJN\/s1600\/IMG_5736.JPG\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"240\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjduuAuhmlV04XlFyg_QuZ1B_xehszuH9aVmPUq8rYGk4yg2npUGgLr4HMfd4AwZVgNTmmh4QSKqwUd5J5SI-yCzr6MtyXbrhWb1cWWyQEaLgra7kmoqGjqgNa7MHPmH_WdVGkK-4ixgYJN\/s320\/IMG_5736.JPG\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv class=\"_1mf _1mj\" data-offset-key=\"2s4p0-0-0\" style=\"direction: ltr; position: relative;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-size: 15px; white-space: pre-wrap;\"\u003E\u003Cspan style=\"color: #1d2129;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"_1mf _1mj\" data-offset-key=\"2s4p0-0-0\" style=\"direction: ltr; position: relative;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-size: 15px; white-space: pre-wrap;\"\u003E\u003Cspan style=\"color: #1d2129;\"\u003E在 LeSS 最後一天，聽到別的公司在導入敏捷時，也成立了很多很多的實踐社群 CoP (Community of Practice)，其中一個是 心靈成長 CoP，讓我印象非常深刻，這邊來聊聊為什麼 :)\n在第五項修練中，彼得聖吉一直在強調＂整體＂：\n\n\u003C\/span\u003E\u003Ci\u003E\u003Cspan style=\"color: #b45f06;\"\u003E「遠古的人類並未把自己跟所處的世界加以區分。那時的人類所看見的世界是一個未被打破的整體，人與自然合而為一。但不知自何時起，我們學會了區分自己，\n視自己為分離的個體。我們刻意凸顯個人意識，強調獨立的意志、個人需求和個人的願望。這種自我意識的演化愈來愈強，我們也愈來愈與他人以及上帝所創造的萬物區分。\n這對人類的演進而言，是福，也是禍。」\n\n「在企業裡，行銷部門與製造部門處於對立狀態；第一線的管理人員對總公司管理當局懷有近乎憎惡的敵意；各部門的競爭更甚於跟同業的競爭。」\u003C\/span\u003E\u003C\/i\u003E\u003C\/span\u003E\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-size: 15px; white-space: pre-wrap;\"\u003E\u003Ci\u003E\u003Cspan style=\"color: #b45f06;\"\u003E\u003C\/span\u003E\u003C\/i\u003E\u003C\/span\u003E\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Ca name='more'\u003E\u003C\/a\u003E\u003Cspan style=\"font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-size: 15px; white-space: pre-wrap;\"\u003E\u003Ci\u003E\u003Cspan style=\"color: #b45f06;\"\u003E\n\u003C\/span\u003E\u003C\/i\u003E\u003Cspan style=\"color: #1d2129;\"\u003E\n系統思考，講的是不要只看單一個體與簡單的因果關係，你以為你搞懂了整個公司的系統全貌，但從更高一個層級來看，公司也只是大自然中的一個小小個體。\n而因為東西方哲學系統的差異、思考的方式不同，彼得聖吉很推崇東方哲學（從整體出發），深受釋儒道影響，也跟南懷瑾大師有許多互動：\n\u003Cb\u003E\u003Cbr \/\u003E\u003C\/b\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"_1mf _1mj\" data-offset-key=\"2s4p0-0-0\" style=\"direction: ltr; position: relative;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-size: 15px; white-space: pre-wrap;\"\u003E\u003Cspan style=\"color: #1d2129;\"\u003E\u003Cb\u003E南懷瑾與彼得．聖吉\u003C\/b\u003E\n\u003C\/span\u003E\u003Ca href=\"http:\/\/www.books.com.tw\/products\/0010345971\" style=\"color: #1d2129;\"\u003Ehttp:\/\/www.books.com.tw\/products\/0010345971\u003C\/a\u003E\u003Cspan style=\"color: #1d2129;\"\u003E\n\n而為了追求更高一個層級中的系統觀，我引用修練的軌跡中講的［天人合一］，畫出了這三個層級：\n\u003C\/span\u003E\u003Cb\u003E\u003Cspan style=\"color: blue;\"\u003E［拼命工作］－［系統思考］－［天人合一］\u003C\/span\u003E\u003C\/b\u003E\u003Cspan style=\"color: #1d2129;\"\u003E\n\n註：拼命工作，或可稱做 ［頭痛醫頭，腳痛醫腳］\n在［系統思考］出現以前，為了追求更好，唯一能作的就是［拼命工作］，但當你的意識進化到［系統思考］這一層級時，就會發現［拼命工作］不一定是有效果的，你可能是在＂成長上限＂的基模中被困住了，你必需做的是觀照整體、找到 Leverage points 來逆轉整個系統。但是你跟意識停留在［拼命工作］這一層級的人講［系統思考］時，通常他會覺得你腦袋壞了，舉狼圖騰的例子來說：\n牧場獵人：身為一個牧場的守獲者，我拼了命把這些狼全殺光不是最好嗎！！你竟然叫我不要打狼打過頭！？\u003C\/span\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"_1mf _1mj\" data-offset-key=\"2s4p0-0-0\" style=\"direction: ltr; position: relative;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-size: 15px; white-space: pre-wrap;\"\u003E\u003Cspan style=\"color: #1d2129;\"\u003E\n一樣的道理，現在要從［系統思考］升級到［天人合一］這一層級，想必也是很多人無法接受的（就跟小說 三体 裡面不同維度的概念一樣..），但是彼得聖吉一樣先為我們跨出了這一步：\n\u003C\/span\u003E\u003Cb style=\"color: #1d2129;\"\u003E\u003Cbr \/\u003E\u003C\/b\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"_1mf _1mj\" data-offset-key=\"2s4p0-0-0\" style=\"direction: ltr; position: relative;\"\u003E\n\u003Cspan style=\"color: #1d2129; font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-size: 15px; white-space: pre-wrap;\"\u003E\u003Cb\u003E修練的軌跡\u003C\/b\u003E（已絕版，幸好當年有買 XDD）\n\u003Ca href=\"http:\/\/www.books.com.tw\/products\/0010331986\"\u003Ehttp:\/\/www.books.com.tw\/products\/0010331986\u003C\/a\u003E\n\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"_1mf _1mj\" data-offset-key=\"2s4p0-0-0\" style=\"direction: ltr; position: relative;\"\u003E\n\u003Cspan style=\"color: #1d2129; font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-size: 15px; white-space: pre-wrap;\"\u003E推薦序：「第六項修練」是心的修練，是靈性的、感性的，是非理性的、沒有結論的。《修練的軌跡》讀起來也許比《第五項修練》更加「不怎麼容易讀」。但是，《第五項修練》的萬千讀者必能在脈絡當中讀出聖吉的苦心孤詣。他毫不吝惜地與我們分享更深層次的學習，在從腦到心的漫長旅程上，他舉一盞「U」型明燈，殷勤守護。 \n\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"_1mf _1mj\" data-offset-key=\"2s4p0-0-0\" style=\"direction: ltr; position: relative;\"\u003E\n\u003Cspan style=\"color: #1d2129; font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-size: 15px; white-space: pre-wrap;\"\u003E東西方哲學，各是兩個極端（整體與片段），看起來彼得聖吉很努力地把他們連結起來，令我佩服。也許有一天，我們會丟掉彼得聖吉的著作，反而直接從我們的釋儒道去體悟這些東西，看來真\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"_1mf _1mj\" data-offset-key=\"2s4p0-0-0\" style=\"direction: ltr; position: relative;\"\u003E\n\u003Cspan style=\"color: #1d2129; font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-size: 15px; white-space: pre-wrap;\"\u003E的要來研究一下大學、中庸跟管子才可以了 XD\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"_1mf _1mj\" data-offset-key=\"2s4p0-0-0\" style=\"direction: ltr; position: relative;\"\u003E\n\u003Cspan style=\"color: #1d2129; font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-size: 15px; white-space: pre-wrap;\"\u003E\n最後，回到一開始講的，我對於對岸已經開始進化往［天人合一］邁進，感到震憾..\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/blog.rd.vivotek.com\/feeds\/6275416817742129963\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2017\/04\/odd-e-less-part-4.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/6275416817742129963"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/6275416817742129963"},{"rel":"alternate","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2017\/04\/odd-e-less-part-4.html","title":"ODD-E LESS@上海 後記 PART 4"}],"author":[{"name":{"$t":"diro"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/13292247339970268280"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjduuAuhmlV04XlFyg_QuZ1B_xehszuH9aVmPUq8rYGk4yg2npUGgLr4HMfd4AwZVgNTmmh4QSKqwUd5J5SI-yCzr6MtyXbrhWb1cWWyQEaLgra7kmoqGjqgNa7MHPmH_WdVGkK-4ixgYJN\/s72-c\/IMG_5736.JPG","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-7905389674158671872.post-5351679814107665084"},"published":{"$t":"2015-07-21T16:49:00.001+08:00"},"updated":{"$t":"2019-05-15T20:57:10.918+08:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Culture"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Programming"}],"title":{"type":"text","$t":"敏捷當中的 透明性 帶來什麼好處？"},"content":{"type":"html","$t":"\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgz66uXui4mRN8vS30sSeIlcrnWByAKZyuBSzmoAdRyV6uBiRlaOxMsyBsk_h5LITEcb-s4tRRpVuhi5ocHv6Ve9hyphenhyphenquHWEVuId8DRUFYDpQ3By2J9f11m9glO5H5DjbJF1GpFIR8K_IkAw\/s1600\/water-880462_1920.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"1067\" data-original-width=\"1600\" height=\"426\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgz66uXui4mRN8vS30sSeIlcrnWByAKZyuBSzmoAdRyV6uBiRlaOxMsyBsk_h5LITEcb-s4tRRpVuhi5ocHv6Ve9hyphenhyphenquHWEVuId8DRUFYDpQ3By2J9f11m9glO5H5DjbJF1GpFIR8K_IkAw\/s640\/water-880462_1920.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n在 Scrum Team 中很強調 透明(transparency)，這次跟大家分享的是 Developer Resource 透明化帶來的好處。\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cstrong\u003E傳統團隊\u003C\/strong\u003E\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n在傳統的開發方法上，常常都是以”月”、”季”為時間單位，因此常會聽到 PM 說：可不可以\u003Cstrong\u003E再加\u003C\/strong\u003E這個 X 功能、這個 Y 功能，還有那個 Z 也順便加進來好了，這一季完成這些，應該沒問題吧？\u003Cbr \/\u003E\n身為 developer 能拒絕他嗎？有點難，因為\u003Cstrong\u003E\u003Cspan style=\"color: #ff2600;\"\u003E感覺\u003C\/span\u003E\u003C\/strong\u003E一季的時間應該可以做蠻多事情的，就算你覺得不可以，PM也很容易這樣\u003Cstrong\u003E\u003Cspan style=\"color: #ff2600;\"\u003E感覺\u003C\/span\u003E\u003C\/strong\u003E：一季耶，三個月你竟然沒辦法幫我多做 X+Y+Z?\u003Cbr \/\u003E\n在 Developer Resource 不透明的的狀況下，還真的很難回答。而不透明的原因，其實是因為週期太長、功能多且不明確，倒不是因為什麼溝通或互信的關係。\u003Cbr \/\u003E\n\u003Cstrong\u003E\u003Cbr \/\u003E\u003C\/strong\u003E\n\u003Cstrong\u003E敏捷團隊\u003C\/strong\u003E\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n但在敏捷團隊中，我們在每個 Sprint Planning Meeting 時，便會先算出這個 sprint \u003Cstrong\u003E\u003Cspan style=\"color: #ff2600;\"\u003E有多少資源可以用\u003C\/span\u003E\u003C\/strong\u003E：6(hours) * 6(developer) * 8(days) = 288 points\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n接著在 Story 介紹、Story Point 估算、決定 priority 等等活動之後，便開始討論 PO 這次最後決定的 stories：A,B,C,D,E,F，把這 6 個 stories 再細拆分成各個 tasks，例如 Story A 可能會被拆分成下列 tasks：\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Col\u003E\n\u003Cli\u003EQML：這個功能有 UI 介面，需要實作 QML\u003C\/li\u003E\n\u003Cli\u003EC++：實際功能由 C++ 完成\u003C\/li\u003E\n\u003Cli\u003EUnit Test：要對 C++ 實作單元測試\u003C\/li\u003E\n\u003Cli\u003EUAT：要完成自動化驗收測試\u003C\/li\u003E\n\u003Cli\u003ECode Review：這次的 C++ 還蠻難的，雖然有 Unit Test，但還是要進行 Code Review\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cbr \/\u003E\n然後，接下來團隊成員根據每一項 tasks 開始打牌，決定每一項的 tasks 所需的時間。這裡是關鍵，因為要由這過程去弄清楚 PO 真正想要的東西，也讓 PO 了解這個 task 為什麼需要這些時間來開發。\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n以 C++ 這項 task 來看，如果一開始大家出的點數差異有點大，例如：3,3,3,5,20,3,5，便要請出3及20的成員們分別說明一下他認為是3及20的原因。\u003Cbr \/\u003E\n張飛(RD)：我覺得這個 雙向語音 很簡單，用原本單向語音模組來改就可以了！\u003Cbr \/\u003E\n關羽(RD)：可是他不是全雙工嗎？這樣我們要改很多地方才能做全雙工..\u003Cbr \/\u003E\n劉備(PO)：耶，不用考慮全雙工，我們這個應用基本上只要雙工就可以了！\u003Cbr \/\u003E\n關羽(RD)：原來如此，是我想太多了..\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n在一番討論後，大家才能\u003Cstrong\u003E\u003Cspan style=\"color: #ff2600;\"\u003E真正清楚 PO 想要的東西\u003C\/span\u003E\u003C\/strong\u003E，而不會多做或少做，或著方向不對。此時再出一次牌，通常就能取得共識了。\u003Cbr \/\u003E\n在經過撲克牌大賽後，可以得到每個 tasks 需要的時間：QML 5, C++ 20, Unit Test 20, UAT 20, Code Review 8，合計73小時。\u003Cbr \/\u003E\n剩餘的 Story B ~ Story F 也是照一樣的方式去得到需要的時間，可能是 B:80, C:100, D:64, E:38, F:48，這樣 PO 就很清楚，在這個 sprint 有限的資源內(288)，可以去完成那幾個 stories(D應該做不完，E跟F就不要想了...除非運氣很好。\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n在 \u003Cstrong\u003EPO 很清楚知道資源有限\u003C\/strong\u003E的狀況下，他就必需去做抉擇。如果現在只有 1 個 sprint 的時間，你沒辦法 A~F 全做，你要考慮清楚最重要、對客戶最有價值的到底是那幾個!全做當然最好，但資源攤在你眼前，很清楚的告訴你：不可能！\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n所以我覺得透明性的帶來的好處，除了明確了解需求外，也可以\u003Cstrong\u003E\u003Cspan style=\"color: #ff2600;\"\u003E讓 PO 理解資源有限，他必需非常認真的選擇他要的功能!\u003C\/span\u003E\u003C\/strong\u003E\u003Cbr \/\u003E\n\u003Cstrong\u003E\u003Cbr \/\u003E\u003C\/strong\u003E\n\u003Cstrong\u003E\u003Cbr \/\u003E\u003C\/strong\u003E\n註1:我們認為每位 developer 一天當中完全專注在工作上的時間是六小時左右，扣掉上廁所、休息、上網，工作轉換的overhead等）。\u003Cbr \/\u003E\n註2:一個 sprint 為二週，扣掉第一天的 Planning Meeting 及最後一天的 Review ＆ Retrospective meeting，剩下8天。\u003Cbr \/\u003E\n註3:估算的過程重點在”溝通”，實際上的時間可能還是會不一樣。"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/blog.rd.vivotek.com\/feeds\/5351679814107665084\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2015\/07\/blog-post_21.html#comment-form","title":"4 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/5351679814107665084"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/5351679814107665084"},{"rel":"alternate","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2015\/07\/blog-post_21.html","title":"敏捷當中的 透明性 帶來什麼好處？"}],"author":[{"name":{"$t":"diro"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/13292247339970268280"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgz66uXui4mRN8vS30sSeIlcrnWByAKZyuBSzmoAdRyV6uBiRlaOxMsyBsk_h5LITEcb-s4tRRpVuhi5ocHv6Ve9hyphenhyphenquHWEVuId8DRUFYDpQ3By2J9f11m9glO5H5DjbJF1GpFIR8K_IkAw\/s72-c\/water-880462_1920.jpg","height":"72","width":"72"},"thr$total":{"$t":"4"}},{"id":{"$t":"tag:blogger.com,1999:blog-7905389674158671872.post-2418715237981077074"},"published":{"$t":"2015-02-07T09:09:00.001+08:00"},"updated":{"$t":"2019-05-15T21:05:56.957+08:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Culture"}],"title":{"type":"text","$t":"我為什麼要在 Hackathon Taiwan 做無償的講師"},"content":{"type":"html","$t":"\u003Cdiv style=\"color: #141823; font-family: helvetica, arial, \u0026quot;lucida grande\u0026quot;, tahoma, verdana, arial, sans-serif; font-size: 15px; line-height: 20.7px; margin: 0px 0px 6px; text-align: center;\"\u003E\n\u003Cimg class=\"irc_mut\" data-atf=\"0\" data-iml=\"1557925516433\" height=\"384\" src=\"https:\/\/encrypted-tbn0.gstatic.com\/images?q=tbn:ANd9GcQH6tjX11Ha5EcAENEYEee8AGz4TGeXq2WD6FXrynsp3aabiK3y\" style=\"margin-top: 108px;\" width=\"512\" \/\u003E\u003C\/div\u003E\n\u003Cdiv style=\"color: #141823; font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , \u0026quot;lucida grande\u0026quot; , \u0026quot;tahoma\u0026quot; , \u0026quot;verdana\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif; font-size: 15px; line-height: 20.7000007629395px; margin: 0px 0px 6px;\"\u003E\n\u003Cspan style=\"line-height: 20.7000007629395px;\"\u003E很多人問我為什麼要在 Hackathon Taiwan 做無償的講師（當然，還要感謝另一位被我拐來的 Jack Yang)，我可以從中獲得什麼好處呢？\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"color: #141823; font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , \u0026quot;lucida grande\u0026quot; , \u0026quot;tahoma\u0026quot; , \u0026quot;verdana\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif; font-size: 15px; line-height: 20.7000007629395px; margin: 6px 0px;\"\u003E\n坦白說，並沒有，就像我在 Qt＠Taiwan 中社團簡介寫的一樣：\"非營利\"。\u003C\/div\u003E\n\u003Cdiv style=\"color: #141823; font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , \u0026quot;lucida grande\u0026quot; , \u0026quot;tahoma\u0026quot; , \u0026quot;verdana\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif; font-size: 15px; line-height: 20.7000007629395px; margin: 6px 0px;\"\u003E\n那我到底幹嘛吃飽這麼閒呢..\u003C\/div\u003E\n\u003Cdiv class=\"text_exposed_show\" style=\"color: #141823; display: inline; font-family: \u0026quot;helvetica\u0026quot; , \u0026quot;arial\u0026quot; , \u0026quot;lucida grande\u0026quot; , \u0026quot;tahoma\u0026quot; , \u0026quot;verdana\u0026quot; , \u0026quot;arial\u0026quot; , sans-serif; font-size: 15px; line-height: 20.7000007629395px;\"\u003E\n\u003Cdiv style=\"margin: 0px 0px 6px;\"\u003E\n我很單純的，希望可以看到台灣有更好的軟體發展環境，有更多熱血青年可以投入這個領域，用軟體(包括firmware，所以軟硬體結合的產品也在我講的範圍內)帶領台灣走向下一個世代、走出國際。\u003C\/div\u003E\n\u003Cdiv style=\"margin: 6px 0px;\"\u003E\n我個人對 Qt 的 source code 研究還算不少，我覺得在 Lars Knoll 的領導下，Qt 真的是一個非常棒的設計，不論是你要拿來開發 Application，或是想從他的架構中得到啟發，我覺得它都是個很好的典範，而且 QML 讓開發效率與執行效能達到一個完美的結合！因此，我很努力的推廣Qt \/ QML，希望讓更多人可以認識 Qt，並從中學習到東西（當然，網路上還有很多偉大的 project 值得我們去挖寶)。\u003C\/div\u003E\n\u003Cdiv style=\"margin: 6px 0px;\"\u003E\n剛才在高鐵上不斷有人傳訊來問我今天 Qt\/QML 的問題、有人告訴我他要用今天教的東西打造出他想要的作品，我覺得，還是很多熱血青年的啊 XD(所以我剛剛在整理 sample project 整理好給他，然後就又熬夜了....)。\u003C\/div\u003E\n\u003Cdiv style=\"margin: 6px 0px;\"\u003E\n如果說真能得到什麼好處，大概就是有機會接觸到一些不錯的小朋友，可以拐進公司跟我一起工作吧 XD\u003Cbr \/\u003E但是我的初衷是一樣的 - 讓有心的熱血青年，可以在一個好的工作環境中成長!\u003C\/div\u003E\nDiro\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/blog.rd.vivotek.com\/feeds\/2418715237981077074\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2015\/02\/hackathon-taiwan.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/2418715237981077074"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/2418715237981077074"},{"rel":"alternate","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2015\/02\/hackathon-taiwan.html","title":"我為什麼要在 Hackathon Taiwan 做無償的講師"}],"author":[{"name":{"$t":"diro"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/13292247339970268280"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-7905389674158671872.post-7779760863467519168"},"published":{"$t":"2015-02-04T13:39:00.001+08:00"},"updated":{"$t":"2015-02-04T13:39:14.813+08:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Code Quality"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Culture"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Programming"}],"title":{"type":"text","$t":"Code review 真的重要嗎?"},"content":{"type":"html","$t":"\u003Cimg src=\"https:\/\/encrypted-tbn1.gstatic.com\/images?q=tbn:ANd9GcRIUQ7z5JsYTkT_6tcUMYsb2-rMuVdiTJXys9VHxRN_f8m-FKfh\" \/\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;\u0026nbsp;\u003Cimg src=\"data:image\/jpeg;base64,\/9j\/4AAQSkZJRgABAQAAAQABAAD\/2wCEAAkGBxQTEhUUExQVFRUXGBcYGRcXGBccGhgZHhgWFxkZGB0YHSggGBwnHBUZIjEhJykrLi4uGB8zODMtNygtLisBCgoKDg0OGxAQGiwkHCYsLCwsLCwsLywsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLDQsLP\/AABEIALcBEwMBIgACEQEDEQH\/xAAcAAEAAQUBAQAAAAAAAAAAAAAAAwECBAUGBwj\/xABCEAACAQMCBAMFBQUFCAMBAAABAhEAAyESMQQFIkETUWEGMnGBkQcjQlKhFBUzYrFDU5LB4SRygqLC0fDxRGOyFv\/EABcBAQEBAQAAAAAAAAAAAAAAAAABAgP\/xAAhEQEAAgEFAQADAQAAAAAAAAAAARECEiExQVFhobHwIv\/aAAwDAQACEQMRAD8A9nuXDqgDuBMdzlj8Av64p4h0atM7wNsTifln\/Kq3NZYxgSo7fFj9OketJfRIjVkwe2cDHkP170EBuldkJBLbA7gEk7d2kdqibj3nFhyOxyPnGnFX+PfkwixqYScYEhfxd8Z\/Qb0uvxAMKqEYzkT541Y\/0qCo45oLG2QBvODvGBGcZisqySZlYg\/XH\/gqHijdE6FVsYnzk\/zdhFRW7nETlEAk9zgRj8Xn3\/SqNhoFNArFfxQARBJiVxpHqNj5d\/kdqivPxGICHE+QnODLdsfHzHcNgFqmgVhPcv4gId5GceX4sz+n61Ghv9952OnSVhsYMgzHeNt80GyK1TQK17tegwGmLm3h76vu9z5VerXtRkdJIHaQOrq3393t8u9Bm6BTQKweLN4CLcMcZYgE7k7CMwBsN6rxd28D92qkR3852y4\/D9T3WpaWzdApoFarXxEzpM6gYlNMeFBG86fE+dFu8UVyqBugmADPUNYzcwYnH69hL+Jq+NsFqtajxuJmAq7tlo21GDCvsFjHfO0Zne7ei3CrJjX3C4Ex1CfxeewHeQjI1NhStdbN9bSSQ9zp1Y\/xQNQB+v12rHZuJgg5OlwCugZ0oUJ1NvOobR3xTUavjc0rX8K94s5cALC6RifxTMNv7vl5epxFvcVC9IwokHT1NKycPjGrHbG+wajV8bulY1y4\/ZcdW8TOynf3Tv57YrGF2\/MBQQGAk4JGZPvfDsO+O9aabKla27c4iYVUOBnIzO0avKs2wWg6o3MR5dpoJaUpQKUpQKUpQKUpQKUpQY1y0xO8CQNz7oyfmTj4VYZ0keIAxBbcEZO+ew2mtfe4EveuReZTKtpXVhSumDJjJViI23M1T9wnRo8THhvbyCSA2jbrxGgY8ye2B0jHHufwjKNq+SesAamwYOMhe3w+m\/aq3rF6cXQF6YkCfWemMk\/0qS1wJCuGcnWWMgkETOB1dpxtEDciaxf3M0z4zHKN1ScqVJxqAgldu2pt8RmIj1WVxVu4Z0XAMRmMHJJ28iPpUdqzemTdUiTsB\/28\/wD3UKckiybZdmJYPqbMkFGhxPUDoE5zLRE1Dd9nyY03riDU7EKSAS2qYz0gaojbHnmpNdDYXuFeAVuQ+NTdiB5LkDttUZt3dJ+9UGN8Y\/TAOe2IG+Z1q8gu+KxN5xblCg13JgRKkAiBM5knA9QZf\/5vpIFwiU8OQIlevLgMNTdclsZUeoqDJNi4S33gO64YiD2PSNxO3rPkKlNi4Z6g2Ugkke65J2XupisTieQm4zFrmGcOVCkAkJbTMPn+EP8AE3oRdw\/IipWbrlRHSCVGBAHS2FG477yWnATrw12Z1iTP4j\/JssRsDmMau\/ea3w0AAMZxr6iScEYz0ye4jatcvs2oYHWwgnaZjU7RqmQD4hBiJhdoyPs8fEZxeuCTtLbQ2kTqkldUCcR2JzUEh4O8oAW\/HuzqOo4CAwXBOSG+o23qfmNq5OpHVQFYEsYiWUz7pGwIk7TMGo35QZOloH3UE6mINt2eMtJBJ8\/P5Q3uRHSdLlm0Mo8RmgyE3MmOpJ2PvHFXRjW8s6WStq4RbVbo6QA5wSeldsH1OY94GcQajg3Wyii4dS6CWJA1QQXk6Tvmr14Nib09GuNJRsjoCzsIMzG+wPww7nINSFTdck4Jlo0kGVCltsyJJOBJIkGUaU\/C8LeVl1XZQA4gTsIyVzme\/wAZqx7HEayfHULqmIWVWTH4c4nfvmcQY15AdDKb10kzDa3kSZP4s4xiPSKjPs3LFjcLErp6xqgQ2RLYcaoDdhvJJJmk0pOIscQdQN9BIAjAgmRg6Z3284jBzWXxdl2IC3IX0gGZBx0mcCIx6zWMeSHMXDB0e8CxGi611cl\/5tPwAqJ\/Z2Ti4VzdYBVKgG54knpbf7w5meldsy0kYpxwl+ZLKTqUzJ\/uijYCx72Yqbg7NwWwC4JydUzMuzEbDEEAEfSp+HsuAQzBgI0mIMBQDqg5JaT23HlNa4ez\/SoNxjpCx7wXpZGXp1fyecnUc1rDHG95IxpmXbV2elgAQSfKTIAGJwI+mxmqNZvQIuDVImQI2zGO5qLmXJzduK4u3EgEaQzaTkk6gCJ3j4bEVEeRN0\/f3sEH3j2BHY7yScyMxBAFGmfwiuI13A2I7ZMnyiI2isnxVmJE5xI7b1oLXswApHiGSWbUAQ6sSx6W1SFBadOciZyayH5Mx\/tIzdMhTP3hDETrncfQ9t6DcC4PMdu\/ntVQa5+z7NaQgD4RrDYWC3hBAusz1fwx8JONiNvy7hjbtqhIJE7bCSTA9BMD0AoMqlKUClKUClKUClKUGDZRReeGGplUlO4iRq+YIHyrI4viBbRnaYUEmKC71lYMxMxj4T5+lQc3ZRZuFlDrpMqdm9CYMA9z2q7Xui61zFGNzcC2xUlhAJA1GJyYHerBze1iXg46TMgkagCPOCCR2BExWQnDrBECG3HniDPngVFZ5dbUghRqEdRy2BpBJ89OJqT8Vj2\/aDhyY8RZ7DuwwJUbsCSIjftNUve0PDrM3VMNpOnJBxMgbASJPmY3xU9nlVlPdtosRsI2II+hAI8qXOVWWMtbQ5JyActGo\/OBPwoIxzq1JWSGDW1KkQQX0ad+33iz8fUSPObY97UuHOR+RxbYSJE6iAAN5FSnldo7ou4O2ZGkjO+NC\/4R5VaeUWf7tfxdvzMGb6sAfiKC\/huZW3XWrCBuTiOkMQZxgHPlVeH5jZcwl225gGFdSYOAcHYnvV1jgkSdKqNUAwNwBAB9IxFX2uHRcqqqYjAAx5Y7UGI\/ObIVmDBtILQsSQAWwDHZSfUCpRx66tJDA69G2NWjxBscAjz748qsflNk720MjTsNo0x8NOPhV45dbDBgIIbVju2koCfOFMfTyFanTW1jLpSlZClKUClKUClKUClKUClKUClKUClKUClK13NeecPwwm\/eS36E5PwUZP0oNjSuPX7S+Xkx4rj18N4\/pU9j7Q+XsQP2gCfzI4HzJWBQdTSrLN5XUMjBlOQQQQR6Eb1fQKUpQRB21xp6YnVI38oq3i01IwK65BGnz9KqA2v8OiMb6p\/pFRc0dhZuFJ1BSVgSdXYR3zRGRamBIgxtMx6T3rWcVzG6twqLOpQVyNUlSrkn3YBDKBEncbSDW1XbNNNWJrpWnuc4uLE8PcMgHpliATA\/CBI7gkRI3EkS8TzN1CEWHbUpYgbr7mIjeW2Me6a2cUitasfP2NZy\/mj3GhrFy3gElvd\/DgHuer9D6wbmbBSzWyAPOQcmFAxncTWziqMgOCJFSZi+GZifWt\/erYiy5B7iY+RiDiPrVw5hcgHwiJiZJxlZ2U\/m\/Q7RWxikVLjxKy9aocyuaTNpg0EjpYidOrtvnHz9DUrca+qApI1b6HGNII+ckifSthppFLjw0z61\/wC8XifBftjIOT8Ix8f0zVn7yciRbMaWIPUZIAIEBczP6GJrZxTTS4Wp9YI49pjwmid8jExOR6z8PpUCcwueGlzSHDqp0oGkEjUc5kdhjciY7bWKaRUlrHblp+I5tdWIsMcEwJJiGge7CmQJnaREzi+5zS4Ap\/Z3OokYMkQJMiPPA862umkVGrjxpE5reInwTgnp03JKw5kEgeQEEST5SKlPNLg\/s2P8UQEufhcKhmNipnYzGPKttpppoao8adOa3dCFuHYlt4nB0yZBEjOAP\/Rjv83vBXIstIXC6XPVqddwOodAMAT1jbet5pppouqPGtfjbhV3AW2E8SdYbOkHSwOBp7nf41kcDxviasQV0gjuCUV4OMEavWsoqKRVYlWlKUClK0\/tgX\/YeJ8M6W8J4PpBmPWJig859svtLum41rg2CIpjxYBZyMHTqBAXyMSd8V5zeus7FnYsx3ZiST8ScmoxVaBSlKDfeyntXe4G5KEtbPvWiTpb1H5W9R85r6D4TiVuItxDKuoZSO4Ikf1r5er2r7Hua+JwbWSZayxA\/wBxpZf11D5UHe0pSgVQmohaGstJmIiTETvH+dQc3sB7RBfQJVtRmBpYMJgg9uxFWOdxmEiqG4AJkR5zitJa5Y0z+0uwBOCSR8GGqCexxEdgeqpf3ejW7dlnBNrwjgkToPT0hsTHrVyiI4m0tuKpNc9a5YSNP7W7DEwzSdLZ6g8ichvXyGKzOA5Zo8TVddy4ALSQwgMBmTnqPkMDHc5VtGcASSAPM01iYkTvHpWuu8vRraIXZ9LI2pmJJ0NqGqImY\/T0rAHKWEA8SSzC8qsQdfUUc6SHkBfD29TttW4jGeZHRTStTw3LnRtXis4Ll21FsDQyhVAbTEkHaMDBOa2NziFUAkiCQPmSAPqSB86z3UCWlR2b6sJUyJI+YJU\/QiKkqBSlKBXP+1\/tOOAW27WnuIz6WZSOjG+dz5DFdBUXFcMlxGS4oZGEMpEgj1oMflPNrPE2xcsXFdT5bg+TDdT6Gs2vD+I4k8m5i37O63bLRqQOCSmeh4911MwfIjzNexcl5ra4qyt6y2pG+oPdWHYigzqUpQKUpQKUpQKUpQK4f7XeZG1wOhTBvOEP+6AWb+gHzruK86+2y3\/stk+V6Pqj\/wDag8dpSlApSlAru\/sd5h4fGtaO162R\/wAS9Q\/5ddcJXU\/ZhH7zsav\/ALI+PhvFB79SlKDGXw\/EMafE05\/Npn+kx+lV46PDbVIEZ07x3jFXC6NZWDMTMGInadp9Kt49gLbFhIjImJHxonTXX7XDknUwB1PIJAzHVuPSZqq27EBQekBYM9JEvEHY7v8ACO0UvcTZBOtDMsDgnZRqOCcERvvii8TZIHRCQIMer9txs\/17zW9\/rltfS26lkg62Iw8lgBjxJMkiPf8A\/DVRw\/DaLo1LpYHWdQwNLTntjV8qo3EWgDqQwNffV\/aQYgyTqg+m+KuN+w1u9AIXS3iQpBjS09pmJ+dJ4XGrjhrrPA8DbiLigAqBLgZJA0\/MdJU9icCTMnBcHwdp1KMMKzA6lKxIGcZP34+MiZMVUcz4TKaGGh0J6GEXT0jq\/P2JnuZMSalH7M1rxmtFFXWI0kkTcBbFsnJcA4zgHtjDqnS3wp1qpQm\/q1Q0lpDKSMmMBhjyNRpy2xqKrchhDaVZcS6ODEYBKJ9BHrbxB4Wzpc24B6wQrQIiGjt\/EEY3Y+tSfve3qZlVD\/CGvUASHuNa8uxXzyK6YxnX+bpFlq\/ZtzcW7rCLdbSNBJ1nxWIwD+BiB8d8RtbfGqWK7ENoz3OjX0+fTn5GsROW2LgJ8NfxIfgJtkYPkCPgT5msheXIGDAEENq95stoNuTnPSYz6eQqZTjPF2rLpSlYCouJWUYTplTnyxvUtKD5Zbc5n18\/Wu2+yr2hHD8T4LtFq\/C52W5sh+fu\/MVrvbX2TvcHcZ2Aay7todB0iTIVh+A5wO8GNq5mg+p6Vwn2ce2w4pfAvkC+oEEkDxR5j+YRkfPzju6BSlKBSlKBSlKBXK\/aP7PftnCnS2l7RNxZ2MAyp+I7+ddVWLzRiLN0rOoW3IjedJiKD5hFVqi7VWgUpSgV2n2Scu8Xjw5B02UZ57aj0KD\/AIif+GuLr2T7F7FscLcdSDca5D5yAB0Y7DJP1oPQ6UpQQh21xp6YnVI38o3qLmlx1tOUUOwGFaYJ9YyfhUw1a+2iPWZ\/pFQc2uMtm4UnUFJECSPUCDJG4Hel1KMIcybq+4ZimuSBGrSI6ARknsJ2Iz2qO1zkswU2HXCGSOkFs5IB2xkdz2zG7QYqsVvVj5+Smns8a37Obj2gjBZIPugkKSfPT1Z8tJ8qo\/M3DMgsl4YrIBAjTbiSQZlnO2AFbeM7krTSKkZRfCtS\/GkW7dw2SS+kEKCYkMSDKz2gSBJYAxk1jcRzu5b0xwzmRrIEkkHVGYgEEDVO0iJ7b+KaazPI0vEc4ddJPDXGDa9oJGkSZHmSMAEzv6ViWua3CATw496CoVpKBXYOpKjEqFAI38pEdLppFIHP2easgAFsR9\/KrbuCGF4KrEwcEMWJiTBI8qu4fnN06QbeWe2D0uAoItF5mZI8Rh2H3bZxB30Uig1XF81dHZfDZ4VGhQZz4pbOxICKIHdhnOJOM5kyOEFpmkbjbcgSQDAxnuNS4OY2MUirMx1A0Tc9uC4VPDuVwJE4I16pJAB2WImQZ9KrxXPLq6lHDvqCgg5KEkEgYGo7RtuYxvW800ioOZ5jxrXrFxLtjWjIZXS\/S0XG0N3YjwwJWMlY3mvKPbb2YHCuXs6zYLBRqDSpKK4yRkGSJ81Ir32K8k+2TnhNxOEUkKoD3PJmPuD5AT8\/Sg82tXCrBlJVgQQQYII2IPY17b9n3tyvFqLN8heIGB2F0Ae8PJt5X5\/DxCrrV1lYMpKspBDKSCCNiCMg0H1LSvL\/AGN+05Sq2uNJDbC\/jSfLxAPdP8wx5xXptm8rqGRgykSGUggjzBG4oL6UpQKUpQK4vm32l8FZdkBe6VwfDUFZ7iWIB+VTfajzg8PwLBDD3SLakbgGS5Hl0gifUV4NQZnOL9p7zvZQ27bGQhIOmdwCO0zA7DFYdKUClKUCtp7Oc+u8HeF2yfRkPuuv5W\/yPatXSg964H7ReBe2rPeFtiMowaVPcSBB+NK8FpQfUIQ651dMRpgb+c1deUkEA6TGDExVotDWWkzERJjfePP1q68gKkEkAjcGCPn2oi62CAATJjJ8\/WsG\/bfWSG0jo\/H5E6pBUhZkbbx2rOtrAAyYEZMn5nvWo4nl63Lzan\/uW0DUCNDuVJIaCCdWIjFaxq95JjZeOHvnDXFghvdkGcwQQJHbv9akNi6T72JMQxBAhgMR1HK4M7EzmA5hy5nPS5XoKzLSDrVjEEGGA0mCDEQR2i\/dLkkteubNpCl10kmQTD9USQJxEeU1JyTQr4PEdri7LuJO3VJ05k+lX8anEaptsmnTsxjq1SZ6GwVwCIjOGnGO\/I31EjiLwXp0rrc6YUjctLDUQ2d4gyMDIs8qiy9osSG1gElzhicHUxJifMekVJm1iKRDhuJ0\/wAYa4b8K6dWyfhnT3OZ8jUP7JxcLqviQUmNImCkifDO\/wB5OPyxGa2DcAYu\/eXJuTBJ\/hyCOiIgCZ+VYbcnfbxiVDKQHDNEOjiSXkx4YAO\/U281cYjuVZ7JcLgrcXRBldMknMENOAPKDtWB+x8RrLeJ+Jz7zEMpdCoKlSE0oGEiZMHuRU\/B8uZHUysDxj0gifEcPEScAzn4etbOpPOw5p+X8XoIDorG1aQt4rk6l8QOwm3idSZiTpIxgiU8DxYBKXQp++wzl1Gq4GtnqtzISViYGPezXQUoNJw3D8YHBe7bZdYJAEdEEEe5vJB37b1XiOEvklwwDE2fu\/EYIoVka4AdGZhhOkSImK3VKDS8TwnFFYW9Eo8npBDmNGmLZwI75yd65j2s9iLvGBnLr4qhtHUTqySEPSAoghcYldXcivQaUHy5xFhrbMjqVZSQyncEdjUde6e3\/sSvGr4toBeJUYOwuD8r+vke3wrw\/iLDIzI6lWUkMpEEEdjQR10fsv7Y8RwYKI02zHSw1ac5KAkQY7TFc5Sg955B7WWuLRls31F86itu4NLATgTBDEZyAYkSDGdnzM3IUNctoMgzeKliUEPIQSQ2roiCCDjavnRTBkYI7ijsTuSfjn+tB7+guudK37V0kLpi8VJ0Xi0wif3ZAJzJERFc57We0b8Ktz\/aUe+xuBVt3WJSVtKDoCaRp0OYbYtuxmvJeHvMjakZkYTDKSpEiDBGdiRVhoMzmnNL3EObl641xj5nA9FGyj0FYdKUClKUClKUClKUClKUH08PD8Qxp8TTn82mf6TH6VJxOnS2uNMZnaKoLo1lYMxMwYidp2+VXX3AUkgkAZAEz8u9ELGnSumNMCI2jtHpFYtpALzkOJZUJTuI1DVvsZAiO3rWZaaQCJEiciD8wdqjF0aysGYmYMRO07fKgrxN8W0Z2wqgk\/AVDZ5gjFwD\/DbSxOBMaiB8BVObsos3C66l0mVkjV\/LI2B2n1qW3w6wRHvbjecAGSd8ACrtX1UacytH8YGAYOCAVLCQdjpEwcxUZ5zYAk3UAgmdQiB3p+57UQV1e7Mk5KrpBMGCdOCe4wcVJc5dbZSpUaSFWM7KZUekEyKgsTm9ksFW4rMxIAUzJAmMfCnEc2tI2lmjqCEkHSGKlwC206RMT3FXJy22CCFAIMgiQZlj55y7fU1aeU2jugO2JMYUoDExOkxO8UFBza3jMAi4dR26HFth8dRHxmrLfPLJjqKztqVgD0C5uREaSDO1Xnk9r8v5iOp8FmDsR1b6gDPmKDlFqI0YmYlo93RETtp6Y2igv4Tmlm6dNu6jmNUKwJjzx2qL992My+mA5OsMuEbQx6gMBsevar7PKLKmVQA4E5nBBEmZPuj6UblFoiCsjqOS34mDN3\/MA3oRIzQWrzuwTC3FbOk6eoKdJbqK4UaVJkwMVJa5naZNetQpJWWIGQxTv5lTHnUf7lsf3YyZO+TBUznqwxGfM1OvAW9ATQpUGYYasyWJ6pkySZ8zQUfmVoIXNxNCzLalgRAMmfMj6irE5tZO11Dt+Id4A\/UipH5fbKFNC6GMlQAATMyQO8gVCvJrIwLaxMxEjZhgHb3mx5sTuaCz9+2CyqtwOXBK6JaYIH4ZzmY8gT2rjfb7kfD8db8awQOIVHbEdaoFLI\/kwDCD6+VdoOS2QQdGRsZaRtsZkHAE7kADaqtyeyfwbgjBYSCqoQYP5UUfIUHzZxXDPbdkuKVdTBU7g1FX0Lzn2L4TiQRctwx\/tFJDjfuSZ3JgyCTO9eZ+0P2Y8VZJax\/tFv0xcHxX8Xy+lBw1Kuu2yrFWBVgYKkEEHyIORVtApSlApSlApSlApSlApSlApSlB9RC4dcaTETqxE+W81W8xAJALEDYd\/rVo16\/w6Ixvqn+kVdemDpjVGJ2n1iiLrZJAJEGNsY9MYqwXDq06TETqxEztvNX25gTExmNp7xVg16vw6I9dU\/0igpxiA22BXUCCCvmD2q60ekSCMDByR6E96renSdMau07T6xRJgTExmNp9KDUcTz1kutb\/AGe6QIhwOlpE49ew8zAxvVl3n7D\/AONd90mSABOoLHmQDMkA4AOQRUvFPxC3WKAPb6AqwBHvlmJmTkKvYANMGMwnjuLgkWANhEgmTMt70EAjaRMjIqKz7fHtptTacm4BOkCEJUElpMgSSPPFQ8Xzjw2INq4YgYBJJKlsADIkBZn3j86mtvf02ulSSB4pLQV6RJAAIY6pxIFRvcv+IQAmg6IMHGG1ydUnIUAQN5zFaiLEV7nFxVLfs7mFDQCJySFGfhJ8h51S3zpy6jwGVS2ks5iBDwcAg5tnvGVM5qN+YcSNRNiFVGO+pi4WQoVTmWwMiR5VvIpMTHIi4PiBcRXGzKGHzE1NVAKrUClKUClKUClKUClKUGs5xyDhuKEX7KP5MR1D4MMj61wHOvskBk8Lej+S7kfJlE\/UGvUqUHz1x3sPx9qdXDOwHe2VefWEJP6Vz9xCpIYEEbgggj4g19S1reb8h4fiRF+yj+RI6h8GGRQfNVKk4iyUdkO6syn4gkf5VHQKUpQKUpQKUpQKUpQfUIQ651dMRpjv5zV15SQQDBjB3irRaGstJ2iJx8Y86uvJKkSRI3GCKIutggCTJjJ8\/WrAjap1dMRpjv5zV9tYAGTAiTv86jFoa9UnaInG+8edBHzQMbNwJq1aW06TB1R0we2YrIQ43BPePP8AyrF5vaLWXAumziTcH4QCCe4gQCNxvWAOU3JYrf06mLdKEHNpbeeuGMqGkjftWoiO5VuqrFY\/AWCiKrMXIEFjufXJP9ayKyFIpSgpFVpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSg+c\/bbhvD4\/iViPvWb\/F1\/8AVWkrtvte4bTzAt\/eW0b5iU\/6RXE0ClKUClKUClKUClKUH1CLS6y0DXEE94n\/AEq6+oKkMJWM\/CqUoi+0oAAAgAQB6dqjFpdZaBriJ7xP+lKUFnMrGu06zEqc7wexI7j077VOm1KUO2NxXMEtzqnGjYd3bQv61Xi+PS375jod9ielNOo\/8w+tKVqY2if7iFXWeMVmdRM2yFbHcqGgfJh9au4nilRWdjCqJPwpSsivD31calyJYfNWKn9QalpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSg8l+2+x95wz+a3F+hUj\/APRrzKlKBSlKBSlKBSlKC9bROwqlKUH\/2Q==\" \/\u003E\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n很多書都在強調 code review 的重要性。在我們的軟體部門剛開始成立，並沒有 code review。這個狀況持續了幾年，一直到前年，我才開始認真思考，不做 code review 真的對嗎? 於是我們從那個時候開始逐步推動 code review。\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n在沒有 code review 的時代，有兩件事情讓我印象深刻。第一件事情已經七、八年了，有一個週末，我們因為程式在下一週初要 release，想當然爾，工作是做不完地。所以我決定週末來加班。那時候我自詡應該當規劃者，所以平常是不寫程式碼地。可是真的來不及了，所以我得跳下來自己幹。沒想到那個週末，當我打開 project 的程式碼一看，我快嚇傻了。一個函式長達一千多行，眼睛東瞄西瞄看到的是許許多多重複的程式碼。這個該怎麼改呢? 到最後就是能頭痛醫頭腳痛醫腳，可想而知，那一個週末沒有什麼好下場了。第二件事發生在三年前左右，我們一個產品內的某一個 service，在屢次的進測，總是領到最多的紅牌。最後在產品被追殺的階段，我們發現那一個 service 無法收斂了。這時候我們開始投人進去那一個 service 進行 code review。不看不會怕，看了之後才知道多可怕。那一個 service 竟然高達一萬四千多行。可怕的是，這一萬四千多行在同一個檔案。是地! 一個 service 就一個檔案。最厲害的地方是，這個 service 破了之前的一千多行記錄，有一個函式高達三千多行。最後那一個 service 只能靠硬測的方式讓他自然地收斂。然後在後面安排 refactor。Refactor 後剩下八九千行，當然也拆了不少的檔案。可以看出來原來的作品中重複的程式碼有多嚴重。我們稱這種大函式叫：\"吾碼一以貫之\"，這種一個函式殺到底的寫作方式，對於寫的人來說當然過癮，不用想太多次該怎麼擺變數，想一次就可以用 \"很久\"。但是對於看的人來說，實在是痛苦至極，看到第三頁的時候，已經不記得這個變數什麼時後宣告、什麼時候改值。諷刺的是一個函式不能太長這件事，在公司的 coding rule 當中是有提到地，為什麼還會看到這樣的事情出現？問題就在於事情沒有人去看，就容易歪掉。\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n這種事情就是這樣，開始總是最難地。前年開始推 code review 的時候，第一個遇到的難題就是人力的問題。這其實是一個弔詭的問題，本來寫 code 寫得很用力的團隊，突然要 \"插\" 一件 \"本該做的事\"，卻變成當時團隊多出來的事情。於是我只能動用手上所有的資源幫忙 review。然後因為遇到大家的時間不容易湊在一起，所以也請成員架上 Reviewboard 來協助分散式 code review。然後先是一個團隊持續地看到 review 活動，然後是另一個團隊的重要修改也開始 review。最讓人驚艷的是去今年初，已經有一個團隊將 Pre-commit review 自動化架好了 (用 Git + Gerrit + Jenkins)。只要 commit code，系統會自動驗證可否 build，然後會寄出 review request 給設定好的人。所以現在信箱一天會收到將近十封的 review request (說實在，加上 build 成功的訊息，一天信箱會被灌入 3, 40 封信，很快就會爆了 XD)。這樣的自動化，最有趣的地方在於讓你的 code 沒有被 review 過就不能夠 commit。因此現在對那個團隊而言，已經不是 optional, 而是 must。所以 review 活動就會被持續執行。而現在也會發現，因為 code review 的工作被拉出來，組長的工作裡頭自然會加入此項 task，所以比較不會像剛開始一樣覺得根本排不進去。\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n那麼到底這樣強推 review 有沒有什麼效果呢? 說句老實話，如果你期待 code review 可以大量減少 bug 數量，是比較不切實際地。但是他對於防範 non-trivial 的 bug，尤其是架構性問題、易維護問題、後續加新功能的 side effect 的防範，是有比較大的效果。另一個重點是，因為強制 code review，你可以在無形中強迫 member 去看到其他人被要求了哪些東西，下次他自己寫的時候就不容易重複同樣的錯誤。另外，自己寫的東西有人在看的時候就會比較小心一點，這些都是無形的效果。\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n現在開始有團隊在導入 scrum 了，在該團隊中更增加了 peer 的 code review。不再單純是上對下的 review。我覺得這樣做又有更進一步的效果，那就是懂 code 的人更多了，對於未來 task 的相互支援，也會變得比較有可能性了。這是我們在 code review 開始前享受不到地。\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n所以 code review 重要嗎? 非常重要。你們開始做了嗎?\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cbr \/\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/blog.rd.vivotek.com\/feeds\/7779760863467519168\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2015\/02\/code-review.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/7779760863467519168"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/7779760863467519168"},{"rel":"alternate","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2015\/02\/code-review.html","title":"Code review 真的重要嗎?"}],"author":[{"name":{"$t":"perkins"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/17509020938165298852"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-7905389674158671872.post-3203591196856613940"},"published":{"$t":"2015-01-29T13:23:00.001+08:00"},"updated":{"$t":"2019-05-15T21:14:45.332+08:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Culture"}],"title":{"type":"text","$t":"給團隊成員易於討論的環境"},"content":{"type":"html","$t":"\u003Cbr \/\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg2HD0YTYdLBMpkT4NHRREB6xkN71LdojnGlU5LU61EBVoJ0MSmrc5Z_BVohWXLVb1k5DZvLalA_1VyEnORIFG03S6TzNOAHQ1ytzi8gF4FzsYrpOvB-Ma_Vw_mdUcEOrGDGJTQMyDbZAdV\/s1600\/UNADJUSTEDNONRAW_thumb_463.jpg\" imageanchor=\"1\"\u003E\u003Cimg border=\"0\" height=\"480\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg2HD0YTYdLBMpkT4NHRREB6xkN71LdojnGlU5LU61EBVoJ0MSmrc5Z_BVohWXLVb1k5DZvLalA_1VyEnORIFG03S6TzNOAHQ1ytzi8gF4FzsYrpOvB-Ma_Vw_mdUcEOrGDGJTQMyDbZAdV\/s640\/UNADJUSTEDNONRAW_thumb_463.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n討論是很重要的一件事，而且有時侯一圖勝萬言，因此如果有白板可以讓大家討論是很重要的一件事。在我們團隊的辦公室中，我們便規劃了三面白板，其中一面是當做sprint wall \u0026amp; burndown chart，另外二面就是 member 可以自由討論的地方，以目前團隊人數(10)來說是還蠻夠用的。這個sprint有一個功能是3位成員一起合作完成的，因此我們在白板上畫出了架構與流程來溝通討論介面該如何設計，溝通清楚後，大家在座位上一抬頭就可以看到當初討論的結論了，真是個好白板 XD。\u003Cbr \/\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjoCC6mRTY_BMm_x_XUx8nzd74EsTpM9gvRS4PJ3LLooDsToRoLtOtRg29X9raH1VmnuzcyXc0PXeLNpgJki8s-54bpIG5aTacTjL-7D-h5vLGiWPKF4T7uDgR8epmTjsbnVj_EZDr_Y6D1\/s1600\/UNADJUSTEDNONRAW_thumb_44b.jpg\" imageanchor=\"1\"\u003E\u003Cimg border=\"0\" height=\"480\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjoCC6mRTY_BMm_x_XUx8nzd74EsTpM9gvRS4PJ3LLooDsToRoLtOtRg29X9raH1VmnuzcyXc0PXeLNpgJki8s-54bpIG5aTacTjL-7D-h5vLGiWPKF4T7uDgR8epmTjsbnVj_EZDr_Y6D1\/s640\/UNADJUSTEDNONRAW_thumb_44b.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003Cbr \/\u003E\n此外，我們這間還有一台投影機及一台電視，電視最近加上了chromecast，讓團隊成員要分享畫面更加容易，有時侯要分享或討論的東西在電腦上，只要按個鈕就可以顯示在電視上跟大家討論，還挺方便的（不過FPS不高，要做影片的分享較不適合，可能還是要裝個 Apple TV 比較好）。\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n敏捷團隊很重視團隊成員的互相討論與分享，但如果環境因素讓成員不易分享與討論，就很難讓大家願意去分享與討論了。\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n你的工作環境會讓成員願意討論嗎？"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/blog.rd.vivotek.com\/feeds\/3203591196856613940\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2015\/01\/blog-post_28.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/3203591196856613940"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7905389674158671872\/posts\/default\/3203591196856613940"},{"rel":"alternate","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/2015\/01\/blog-post_28.html","title":"給團隊成員易於討論的環境"}],"author":[{"name":{"$t":"diro"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/13292247339970268280"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg2HD0YTYdLBMpkT4NHRREB6xkN71LdojnGlU5LU61EBVoJ0MSmrc5Z_BVohWXLVb1k5DZvLalA_1VyEnORIFG03S6TzNOAHQ1ytzi8gF4FzsYrpOvB-Ma_Vw_mdUcEOrGDGJTQMyDbZAdV\/s72-c\/UNADJUSTEDNONRAW_thumb_463.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}}]}});