// 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\/-\/Event+Storming?alt=json-in-script\u0026max-results=8"},{"rel":"alternate","type":"text/html","href":"https:\/\/blog.rd.vivotek.com\/search\/label\/Event%20Storming"},{"rel":"hub","href":"http://pubsubhubbub.appspot.com/"}],"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":"1"},"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"}}]}});