【從學員練習影片觀察到一個關於 TDD 的有趣現象】
極速開發的課後練習作業,雖說重點是放在極速開發要學習的技巧與刻意練習的模型,但開發的方式、順序也是刻意安排成類似 TDD 的進行方式,來讓生產力最大化(TDD 本來就是幫助開發的,不是幫助測試的)
我從2位第一次上我課的學員(當然就是 #極速開發,代表他們沒上過#單元測試 跟 #TDD與持續重構),雖然他們是照著示範影片、上課教學用 TDD 在寫整個 tennis 的過程,但從他們執行測試的時間點就可以發現:
「他是用測試來驗證 production code 的正確性」,即使他先寫了測試,也不先執行,沒有看到紅燈,每次都等到 production code 寫完了,應該要綠燈時,才執行測試。
而其他上過 TDD 課的同學 ,或是上過單元測試的同學,知道測試是用來描述情境,如果現在「加入的這個情境是新的需求或需求異動,代表目前 production code 還不支援這個情境,執行測試跑出的紅燈,就是等等 production code 要完成的 #目標」
test-frist 從來都只是 TDD 其中一個小小的衍生產物,而不是全貌。TDD, 測試驅動開發 從來都是一種開發方法,而不是測試方法。
總有些人老愛把 TDD 拿來跟測試相提並論,就總是喜歡把 test-first 當作靶子打,覺得違反人性跟直覺,覺得先寫測試在很多情況下是浪費時間或是不 work,可能拿來跟一堆測試的方法論相提並論,或總是只拿回歸測試的效益來當作 TDD 的整體。抑或是陷入 isolation unit test 與 integration test (其實就是非 isolation 等級、有實際依賴的自動測試)之爭。
```
註:TDD 事實上是可以不是單元測試等級的。
```
要比較正確看待 TDD 的角度,首先要知道它是幫助開發的、它是一種開發方式(當然不是唯一一種,甚至也不會是最好的一種,因為根本沒有最好,只有剛好)
接著要了解 TDD 可能用 IPO 模型還比較貼切,input-process-output,在你開發任何功能之前,你總要先想過這件事。而先想這件事,才是 TDD 的最基本精神。
接著是怎麼把你想好的東西,變成可執行的 spec,我們只是用測試程式來「描述」你腦袋中的「IPO模型」,把 process 的過程當作一個黑箱子。
而這個 IPO 模型在結合成「使用情境」,就會帶來「高易用性 API 的好處」,只有在一開始就先想好怎麼給別人用,最後才會好用。所謂的一開始想好,指的不是預先設計一堆 class,而是 input/output 想清楚期待(一般會結合實例化需求,搭配 Given/When/Then 的 gherkin style 來把前置條件、資料、前提想好,當發生什麼事,應該是怎樣的結果),然後描述它。在紅燈定義清楚目標,綠燈完成 input/output 關係且沒弄壞前面的所有情境後,來針對 process 進行重構(事實上 Kent Beck 的 TDD by Example 更多是用 refactor 來 #完成 process。
```
註:所謂的 output 不一定只有回傳值,包含外部依賴狀態、資料的改變,甚至顆粒度小一點,針對物件導向設計的話,物件內部狀態的改變也算,只是物件內部狀態改變,驗證點要嘛是拿得到內部狀態,要嘛就是要驗證物件哪個行為會因這個內部狀態而有所不同。
```
## 戰 TDD 之前該先做好的功課
要戰 TDD,是不是至少要把 Kent Beck 的 TDD by Example 看完?
要戰 TDD,請不要拿它跟測試方法論來比,那只是一下就被人看破手腳。因為它是個開發方法論。
要戰 TDD,請不要把它的好處只限縮在跟回歸測試、自動測試的比較,因為那只是它的衍生好處,當你試過在白海報紙上 TDD 就懂,TDD 是在釐清你的思緒的同時,又可以以終為始,確保你在 production code 的每一個動作都是為了滿足某個期待的情境。
要戰 TDD,請不要去把 單元測試、整合測試捲進來,那是測試的顆粒度,那是測試的分類,TDD 從來都不是只能限於單元測試。
要戰 TDD,請不要在那邊戰他是 bottom-up ,是直接從程式/class 的角度出發,事實上 TDD 既不是 bottom-up, 也不是 top-down, (書裡面就有講這件事咩),實務上的 TDD 結合倫敦派(GOOS)跟芝加哥派(Classic TDD),會更像 Outside-In 的進行方式,先定義好驗收情境,接著從最外部(也就是使用者看得到的部份)一路把依賴往另一邊的系統邊界推,直到推到系統以外的依賴資源(persistence 或 external API/service)
```
註: ATDD by Example 中 ATDD by Example, Kent Beck 寫的序最後的一段話。
Kent Beck:
「就像我曾說過的,TDD的一個缺點是,它可能會退化為一種用來滿足開發人員需求的編程技能。某些開發人員從更廣泛的角度來看待TDD,輕易在他們測試的不同抽象級別間跳躍。然而在ATDD中不存在歧義,這是一種加強與非編程人員溝通的技術。我們之間良好的協作關係,以及作為這種關係基礎的溝通,能夠使軟件開發更有效率。採用ATDD是向著溝通更清晰這個目標邁進的重要一步,而此書是一本全面又平易近人的入門讀物。」
```
要戰 TDD,請不要只關注在 test-frist,因為他只是用 test 來幫助你 think-first,不要邊寫邊想。然後不要過份依賴或相信你腦袋的能力,把你想好的東西具體化出來,最好可以被直接執行,最好除了你以外每個人執行出來的結果都會一樣(不管是對的,還是錯的)
要戰 TDD, 請不要把論點放在見樹不見林,如果你有看 TDD by Example 的 Part 1, Part 2 那兩個加起來共 24 個章節,就知道一開始就得把當下想到的全貌紀錄在一個「紙本」的 backlog (所謂的紙本,只是要講這並不依賴於任何工具)
而這個需求輪廓的全貌,會隨著你逐漸完成一部分一部分的情境,設計逐漸浮現後,而隨時跟著增減調整。
但不代表 TDD 就是先想到一個測試案例,就直接先幹下去了,那根本是亂搞。
以上這些,都還不是在列 TDD 的好處,而是針對那些從來沒搞懂 TDD 但又愛戰 TDD 的人一點提醒,你戰的很可能是「你誤解的 TDD」。
TDD 還有許多實務上的用途,列上我在譯者序中的一小段:
>> 測試驅動開發(Test-Driven Development, TDD)!一種以測試為開發輔助、以測試來描述需求情境、以測試來當作目標、以測試來表達期望、以測試來驗證疑問、以測試來實驗學習、以測試來溝通協作、以測試來協助設計高易用性 API 的「開發方法」。
譯者序有開放給大家看,請見:https://tdd.best/book/tdd-by-example/
拜託,要戰之前去看一下祖師爺 Kent Beck 對 TDD 的原始見解:https://www.tenlong.com.tw/products/9789864345618?list_name=srh
如果你想正確的使用 TDD 來幫助你在實務上產生許多的價值,帶來許多的好處,尤其是需求釐清、持續重構、小步快跑的部份,最好理解的培訓課就在這:https://tdd.best/courses/classic-tdd-by-example-video-training/
最後我想講一段話:
TDD 從來都不該被導入到團隊中,但它是一種很好的自我鍛鍊與學習的方式,也是一種能用很低的成本來帶來很多好處的開發方法(見下方註腳),然而它也不是適用所有的情況,但它可以讓『完美』變成一個動詞,而非不變的形容詞。
```
註:
Kent Beck 在 DHH 靠腰:《TDD is Dead》 之後寫的一篇反串文:《RIP TDD》
https://www.facebook.com/notes/1063422864115918/
我幾年前的簡易翻譯,通常也是 TDD 可以幫助你解決的問題,如下:
- Over-engineering (過度設計)
- API feedback (改善API的設計與可用性)
- Logic errors (想的跟寫的不一樣,寫的跟需求不一樣)
- Documentation (寫跟維護文件是痛苦的)
- Feeling overwhelmed (找不到切入點)
- Separate interface from implementation thinking (抽象設計)
- Agreement (確保已修正問題的證據)
- Anxiety (改東壞西的擔心受怕)
```
很久沒對 TDD 發表這種長篇大論了,因為不理解、不想理解、不同角度理解的人居多,能真的到各自的塔上用不同角度來看原義,以及實務上用它來幫助解決的問題有哪些的人,真的太少。
大部分人只想針對這個詞彙來攻訐以博得流量跟吸引目光,而不是想著「我可以用它來幫助我什麼」
問題跟需求是中性的,解決問題跟滿足需求的手段與方式有千萬種,不會只有一種,也不會有所謂的對錯,多點角度去了解不同的方法、方式,然後融會貫通,發揮綜效,在實務上用最少的成本與風險來產生最大的價值,這才是真正的目標。
導入敏捷不該是目標,導入 TDD 也不該是目標,目標永遠都是在實務上產生價值、解決問題、滿足需求。
同時也有54部Youtube影片,追蹤數超過80萬的網紅果籽,也在其Youtube影片中提到,|香港街拍—瑞典回流攝影師港式幽默融入照片 日走幾萬步街拍為醫喪母之痛:試過影一張相等了3個月 大樹爆炸頭、間條撞間條、?頭問號……你心目中有畫面嗎?這些都是黃建榮(Edas)的作品,他是業餘街拍攝影師,初學習攝影時,也曾醉心研究森山大道與何藩的大師級作品,但近年拿起相機時,決定放下所有啟蒙與執念。...
「抽象程式」的推薦目錄:
- 關於抽象程式 在 91 敏捷開發之路 Facebook 的最讚貼文
- 關於抽象程式 在 Facebook 的最讚貼文
- 關於抽象程式 在 Facebook 的最佳貼文
- 關於抽象程式 在 果籽 Youtube 的最佳貼文
- 關於抽象程式 在 小戴 Davina Youtube 的精選貼文
- 關於抽象程式 在 啟點文化 Youtube 的最佳貼文
- 關於抽象程式 在 【thunkable 抽象化與函式】EP1:抽象化(Abstraction) - YouTube 的評價
- 關於抽象程式 在 第21 篇、抽象- Java 程式設計- 程式語言筆記 - Zrn Code 的評價
- 關於抽象程式 在 程式老爹-papacode - 第三步抽象化: 透過概念化與簡化 的評價
抽象程式 在 Facebook 的最讚貼文
🌿
夏日的午後,來杯清涼無負擔的茶
是我現在在家工作最悠閒的時光
身為茶飲界的台灣之光
茶裏王海內外獲獎無數
已連續4年榮獲國際風味絕佳獎肯定
其中王中之王的台式綠茶
更連4年勇奪國際風味賞三星的最高殊榮
把台灣茶推向國際,真的好風光👏🏻
一切的榮耀,除了品牌實力夠堅強
更要歸功於背後辛勞的茶農們
我們取之容易的茶裏王
這次看了茶農的致敬影片才體悟到
每一滴茶湯,都是經過那麼嚴謹又繁瑣
一道道製茶步驟淬鍊而成
每個成功也都並非偶然
因為茶職人對於種茶、製茶技術的堅持
讓我們喝到的「回甘就像現泡」
不僅僅只是口號!
回想起自己這三四年創作歷程上
常被問及KOL的成功方程式
抽象來說,除了幸運外
可能是在每個想放棄的時刻
感謝自己有多堅持了一會兒
認清該放棄時,又不多加留戀
忠於自我,踏實做好每件想做的事
只要實際付出,終將有機會嚐到果實
致敬所有
堅持做好每件偉大而渺小之事的職人們
茶農致敬影片大家趕快去看看~
記得和我分享,你最感動的是哪一個片段?
https://youtu.be/j6gCOQJGjHQ
#茶裏王
#致敬茶農職人魂
#茶裏王感動邀約
抽象程式 在 Facebook 的最佳貼文
好書推薦《#造局者》部落格文末抽獎贈書 2 本
這是我今年讀過最喜歡的書之一,作者探討在這個 AI 崛起和時局飄渺動盪的年代,人類已經無法跟演算法和電腦的計算速度競爭。但是,身為人類的我們仍然擁有一項電腦無法取代的優勢:「懂得建立、想像、創造各種思考框架的能力」,掌握這項能力的人在未來會愈來愈有優勢。
部落格文章 https://readingoutpost.com/framers/
Podcast 用聽的 https://readingoutpost.soci.vip/
.
【這本書在說什麼?】
《造局者》這本書的作者是三位學者共筆,他們都是在 AI 和 大數據領域有卓越的成就,分別是《經濟學人》雜誌資深編輯庫基耶(Kenneth Cukier)、英國牛津大學網路研究所教授麥爾.荀伯格(Viktor Mayer-Schönberger)、歐洲管理科技學院教授,決策、模型暨數據中心主任德菲爾利科德(Francis de Véricourt)。
他們發現在 AI 崛起和世局動盪的現在,人類最無可取代的能力之一就是「決策能力」,而要擁有好的決策能力就必須掌握許多不同的「思考框架」。因為當一個人能提出正確的思考框架,就能找出更多的選項,做出更好的決策,創造更好的局勢。深諳此道的人就被稱之為「造局者」。
這本書從人類如何做出好的決策出發,談到建立思考框架的重要性,也提供我們三種最重要的建立思考框架的方式。在書本中段,則說明了遇到瓶頸的時候,如何重啟另一個思考框架。在後半段則說明了我們該如何學習更多的思考框架,以及讓自己擁抱更加多元性的策略,並且培養敏銳的心智。
如同這本書的介紹影片裡談到的:生活中一切都需要抉擇,而做出更好抉擇的秘訣,就在於思考框架。駕馭這種思考方式可以讓你更瞭解世界、改善工作表現和人際關係、促進社會進步。這也是人類之所以能夠勝過機器和 AI 的因素。成為「造局者」正是未來人才必不可缺的關鍵技能。
.
【什麼是造局者?】
以標準的定義來說,「造局者」(Framer)指的就是起草美國憲法的那一群人,他們建立了聯邦政府的框架。因為美國憲法就像是一個思考框架,用來定義和界定聯邦政府的職權及程序。而在這本書中,造局者指的就是那些「懂得建立和運用思考框架的能手」。
這本書要講的重點之一,就是無論人們的地位高低,每個人都可以成為造局者:「能夠發揮和建立思考框架,或是重啟思考框架的能力,讓自己的生活乃至於整個世界有所不同。」作者也不斷強調建立思考框架所需要的技巧,可以靠著訓練與經驗不斷進步。這本書就像是一本操作指南。
.
【什麼是思考框架?】
在1970年代,「心智模型」(Mental Model)的概念開始流行,人類的推理並非以邏輯形式在運作,反而更像是在模擬現實:人們評估各種選項的方式,是去想像可能發生的種種情況。我們對於世界萬物的思考方式,會受到你「相信」這個世界如何運作而影響。因此,面對同樣一件事情,用不同心智模型在思考的人會有不同的觀點。
而在這本書中所謂的「思考框架」(Frame)就是我們選擇和應用的心智模型,這會決定我們如何理解世界、決定我們如何行動。面對一個新的情境,我們也可以用思考框架去歸納和歸類,並且想出一個抽象的概念,在應用到這個全新的情境裡面。
舉例來說,當我們要畫地圖的時候,經常會採取「笛卡爾直角坐標」的思考框架,這上面有X軸和Y軸的維度可以幫我們用2D的觀念畫出相對的距離和位置。可是當你要在台北市搭捷運從A地到B地的時候,反而採用「捷運地圖」的思考框架比較有效,雖然捷運地圖的站點之間,距離和位置都不是真實的呈現,可是卻能幫助乘客直覺地理解:下一站要去哪裡。這時的重點就不是距離和位置,而是清楚地辨認出目的地的站點該搭乘哪一條線。
所以當我們問:「哪一種地圖最好?」這個問題本身並沒有意義,而是會因為使用的情境和目的的不同,而產生不同的答案。所以,也沒有什麼叫做最正確的思考框架,都是要看情況和目的而定。讓自己成為建立思考框架的能手——也就是造局者,就能懂得如何選擇並且應用思考框架,這會是各種決定與行動的基礎。
.
【思考框架的轉變】
在聊主動建立思考框架之前,讓我們先看一個被動轉換思考框架的真實故事,這是書中提到一段關於朗讀到默讀的閱讀框架轉變。在西元11世紀之前,歐洲大部分都是在教堂才會有閱讀的行為,而且都是以「集體朗誦」的方式在進行,主要的目的是讓大家參與一個讚頌神的集體活動。但是到了11世紀之後,開始出現另外一種閱讀的框架,也就是「默讀」。
默讀讓閱讀這件事情不再是集體的體驗,而是一種個人的經歷。每個讀者都可以控制自己要讀快一點或慢一點,你也可以重複閱讀某一些篇章,自己可以慢慢思考書裡面的內容,產生新的點子,促進獨立思考。到底,是什麼東西造成了人們從朗讀的閱讀框架,轉移到默讀的閱讀框架呢?
在早期的書籍和文章裡面,常常沒有標點符號,字跟字之間也沒有空格,就像是一連串的字母之間不斷地延續。這種情況下光是要閱讀就非常困難了,想要默讀更是不可能的任務。這個時候集體朗讀就有它的功能,因為在一群人裡面,總會有人過去曾經讀過這篇本文,還記得某些字跟段落該怎麼念,就可以帶領大家一起朗讀下去。
在後來才出現了一項創新,書籍的字裡行間,開始有了「空格」和簡單的「標點符號」,這個時候就不再需要有人帶領,許多讀者可以自己進行斷句,獨自閱讀一本書了。於是,在這個時候人們就可以切換到另外一種閱讀框架。這件事情的影響非常的深遠,因為這一整個新世代的讀者都可以自行默讀,有助於人們自己的獨立思考,進而激發出更多元的思考框架。
.
【建立思考框架的三個方式】
建立思考框架的方式有三個:想清楚因果關係,想像出平行現實,運用物理學定律制定適合的限制條件。這三個特色正是應用思考框架的時候最重要的因素。值得注意的是,思考框架本身並不是解決方案,而且是尋找解決方案的工具。以下分別介紹這三個方式:
.
1.#因果關係
人類運用因果思維來看待這個世界,可以更容易理解世界,也有助於預測未來可能發生的事情,可以說人類是天生「因果推理」的機器。相較起來,AI 科技就無法擁有自己的因果思維,而是需要人類幫忙設定。舉經典的 Dota 電腦遊戲來說,這是一個兩隊人馬 5 vs. 5 互相廝殺,力求破壞對方大本營的遊戲。
科學家找來遊戲高手擔任 AI 策略的開發人員,設計了一些獎勵因素,讓 AI 跟自己進行的數百萬次的對戰,反覆嘗試錯誤,找出最好的操作手法。但是當 AI 跟人類正式交鋒的時候,人類還是取得了上風,尤其在團隊合作上面 AI 顯得像一團散沙。
後來,開發人員發現說,一般玩家會分成三個階段來安排戰鬥,所以開發人員就依照這樣的順序安排程式,在不同的階段給予不同的策略,調整獎勵的優先次序。然後開發人員就發現說一開始機器人通常只會照顧自己,所以還得幫他們建立「團隊合作」精神的框架。他們建立起了一些跨越個人遊戲角色的「超參數」,調整成一隻要達成共同獎勵的團隊。經過這一些修改之後,AI 反過來把人類打得落花流水。
值得注意的是,電腦不是自己學會這些事情的,而是因為人類先輸入了一些「因果框架」的獎勵因素,才可以讓這些運算發揮它的功效。同樣的現象發生在其他像是圍棋和西洋棋遊戲的對決,真正的突破並不在於機器高速的數字運算,而在於人類調整了 AI 對於因果關係(獎勵)的思考框架。
.
2.#平行現實
書中的說法是「反事實思考」,但我認為有點難懂,用「想像出另一個平行現實」比較好理解。這個方法可以讓我們跳脫當下對世界的認知,想像出一個全新的情境,問自己:「如果……會怎樣?」就像是小孩子在玩扮家家酒,或者是科學家透過抽象理論設計出全新的實驗。透過想像出一個平行現實,我們可以將因果關係轉換成實際行動,測試看看可能有什麼影響,帶來什麼後果。
心理學家高普尼克(Gopnik)認為這種能力其實在人類孩童時期就已經具備了,他還把嬰兒稱為「搖籃裡的科學家」,她設計過一個很有趣的實驗名叫「贊多測試」的假裝遊戲(贊多指的是顏色鮮豔、形狀可愛的物體)。
實驗的第一階段,高普尼克和孩童待在同一個房間,孩童會學到一個因果關係:把贊多放到一個機器上面,機器就會播放生日快樂歌,幫一隻猴子玩偶慶生。然後,在實驗的第二階段,會有實驗人員走進來把機器和贊多拿走,高普尼克和孩童一起露出失望的表情。
這時候高普尼克會拿出一個「盒子」、兩個不同顏色的「積木」,並對孩童說:「我們假裝這個盒子是機器,這塊積木是贊多,另一塊積木不是贊多。」接著她鼓勵孩童繼續幫猴子玩偶慶生。此時,孩童挑選了正確的積木,放到盒子上。即使她把兩塊積木的定義互相對調,孩童都能夠選到正確的積木。
這個假裝遊戲的實驗,證實了人類自幼就擁有了反事實思考的能力,也就是有能力可以想像出另一個平行現實。高普尼克發現,更會玩假裝遊戲的孩子,就能對平行現實做出更好的推論。她說:「嬰兒和幼兒就像人類社會的研發部門,至於成人這是那些單調無聊的製造與行銷部門。」許多人在成年之後,反而容易落入單一現實的思考方式,而忘記了我們天生就有想像平行現實的能力。
.
3.#限制條件
作者提到,所謂的建立思考框架,並不是任由想像力無邊無際地飛翔,也不是像斷了線的氣球到處亂飄,而是要有一定程度的「條件限制」,有助於約束我們的想像力,讓平行現實的想像維持在可以執行的程度,這才能讓思考光架真正發揮效用。
書中舉了一個很像電影裡才會發生的真實故事「恩德培行動」,這是一個以色列精銳部隊在恩德培機場的行動中,從恐怖分子手裡救出人質的戰鬥情節。1976年,恐怖分子綁架了飛機上106名人質,關押在烏干達的恩德培機場航廈中。當時烏干達獨裁者跟以色列當局並不友好,出動軍隊肯定不是好的選項。另一個方案是讓突擊隊員假裝成獲釋的巴基斯坦犯人,但太容易被看穿了。還有人提議讓突擊隊員降落在機場旁的湖裡,但是湖裡有許多鱷魚,而且任務結束之後這麼多人該怎麼全身而退?
評估了各種可能選項後,在種種條件限制之下,以色列想出了一個奇招:讓突擊隊搭乘運輸機在夜間降落到機場,搭乘機場內常見的車輛前往航廈,消滅恐怖份子、救出人質之後搭乘運輸機直接回國。他們在空軍基地搭建了航廈的等比例模型,透過少數獲釋的人質口中知道人質的大約位置,並且一次又一次地排練所有行動,講究到每一秒、每一步該怎麼進行。
在一個沒有烏雲的午夜,29位突擊隊員搭乘運輸機降落機場,他們身穿烏干達軍隊的服裝開著機場車輛前往航廈。突擊隊以迅雷不及掩耳的速度突擊航廈,只花了十分鐘就解決所有的恐怖分子,然後就帶著人質直接搭乘運輸機返回以色列。整場行動中只有三位人質喪生,而且連烏干達政府都還來不及反應。這個故事從天馬行空的平行現實裡,限縮了各種條件,找出了最可行的方案,最後成功執行了這次任務。
.
【重啟另一種思考框架】
當你想要解決一個全新問題的時候,尤其是還沒有人曾經解決過的問題,你可能會感到不知所措。這個時候,先透過兩個步驟來思考:(1) 先從自己腦袋裡的框架庫找找看,有沒有其他適用和類似的框架、(2) 檢查其他不同領域的框架庫,看看有沒有能夠直接借用,小幅度調整就可以使用的框架。
如果這兩個步驟都找不到適合的框架庫,那麼才嘗試最困難、也是最後的殺手鐧:「發明新的思考框架」。作者提醒道:「切換到不同的思考框架,能讓你對世界有不同的觀點,但這也有風險。」一旦你重新找到一個新的思考框架,帶來的報酬可以是相當可觀的。
書中有一個重啟框架的例子很值得我們參考,美國紐澤西南邊的小城市康登市為了改善當地的犯罪率,直接解散整個警察隊伍並且重整執勤策略。當時城市的治安非常糟糕,市容也很破舊,到處都會發生大小程度不同的犯罪。這還不是最慘的,警方栽贓、造假、暴力執法的情況更是屢見不鮮。民眾除了害怕黑道,也非常害怕警察。
當地首長找來社區領袖和居民共同商討,最後決定放棄頭痛醫頭、腳痛醫腳的貼膏藥方式,採取全新的執法策略。解散警隊之後,他們精挑細選和新聘任的警察,改變了巡邏的方式。他們逐家登門拜訪、自我介紹、談談可以幫忙居民什麼。警察在街頭舉辦派對,和民眾聚餐,和小孩打籃球。
過去的思考框架是「警方將人民視為罪犯」,但是新的思考框架則是「警民一家親」的社區群體,警察從原本打擊犯罪的戰士,搖身一變成了社區當中親切的守護者。最後,康登市的犯罪率下少了一半,謀殺率少了六成,警方過度使用武力的案件少了九成五。重啟思考框架的方式,獲得了前所未有的成功。
.
【創造多元性的四種策略】
作者指出,很多人可能會認為,想要擁有多元性就代表要接觸大量的想法和觀點,其實那是抓錯了重點。多元性的優勢不是來自於數量,而是來自於差異。找出七百個類似的想法,不如找出七個不同的想法來得有價值。如果一個工具箱可以有七種不同的工具,絕對會比擁有七百把錘子的工具箱更加實用。
如果我們想要擁有多元的思考框架,就是要刻意的去營造,以及一起維護,這並不是一次的成功就可以高枕無憂。如同貝佐斯在《創造與漫想》書中提到的:「這個世界要你與眾無異,千方百計把你拉向跟大家一樣,別讓它得逞。」人類本能的從眾傾向,以及社會自然而然的同質化趨勢,都需要我們自己刻意地、有意識地選擇,才能夠擺脫與眾趨同的自然發展,擁抱更加多元化的觀點和想法。
如果你想為自己的生活、家庭、工作環境創造出多元性的樣貌,可以採取以下四種策略:擁抱變化,運用教育,鼓勵遷徙,容許摩擦。
.
1.#擁抱變化
如果一個思考框架一直以來都行不通,最好的做法就是擁抱改變,試試看別種思考框架。書中舉例同性戀婚姻的推動者,把美國從1995年支持同婚的人從25%提高到2020年將近70%。以前的同志運動一直把婚姻當成是核心議題,也一直把爭取這種「法律權利」當作是重點。但是進展並不顯著。
當時那種法律思考的框架,講究的是「法律權利」,但就是沒有效果。那種框架太缺乏想像力、太唯物主義,沒有說服力。到了2000年,他們研究很多民意調查還有焦點團體的意見,想弄清楚大家到底還有什麼疑慮。他們去思考說要怎麼樣用大眾的思考模式來談。最後他們選定了一個價值觀的思考框架,鎖定大部分的人結婚的原因:「愛、奉獻、家庭」。
他們把同性戀婚姻不再當成一種自由或者是權利,而是對於愛的表達與承諾。他們漸漸的讓大家知道,世界上有許許多多不同的框架,而且都同樣正當。到了2011年,第一次出現的黃金交叉,支持的人數正式超過了反對的人數。根據調查,只有14%的人會說這是一種「自由」,而有32%的人會說這是一種「愛」,是一種人類的情感。最後在2015年聯邦最高法院正式裁定的用憲法來保障同性伴侶的結婚權利。這並不是強迫民眾接受某種特定的思考框架,而是讓各種不同的思考方式能夠共存。
.
2.#運用教育
要建立起多元的思考框架,從教育著手是非常有效的模式。美國有一個很有趣的研究,就是去看美國的白人父母和黑人父母怎麼跟孩子談論種族。發自內心一片好意的白人父母,通常不會去刻意談到種族議題,因為他們相信「種族色盲」這種做法比較能夠讓孩子避免成為種族主義者。
另一方面,黑人父母卻常常和孩子討論種族議題,在他們看來,這種種族色盲的做法就是在故意忽視各種明顯的歧視現象。例如逛超市的黑人被懷疑是小偷,開著車子卻無緣無故被警察攔下來,黑人孩子的家庭教育就是要強調看到「種族的各種顏色」在日常生活的各種影響。
最後,這些社會學家發現,種族色盲的框架正好是種族歧視的主要來源,白人父母雖然出自於好意不想強調種族之間的差異,但也在無意之間,否認了有色人種遭受到歧視的真實狀況。這種教育方式忽略了差異,抹去了多元性。要培養多元的思考,就必須認識到差異的存在,承認仍然存在的落差。
.
3.#鼓勵遷徙
如果我們能夠鼓勵遷徙及流動,人們會把自己的文化和思考方式帶到別的地方,促進融合和變化。曾經有學者研究各個區域和城市的經濟成敗因素,發現了這些地區成功背後的原因有三個主要的因素:「科技、人才、寬容」。作者認為,「寬容」是其中最關鍵的一項,那些現在最開放的地方,經濟表現就最好。因為這些地方有更大的思考地圖,會讓人能夠放手冒險,這也是思考框架多元化所造成的經濟紅利。
像是美國被譽為一個民族「熔爐」,但是最近比較像一個「燉湯」,也就是讓裡面的好料都還維持各自的形狀。像是韓國人會住在洛杉磯的韓國城,華人會住在舊金山的唐人街,拉丁美洲的族群住在德州南方,古巴人住在佛羅里達州,巴西人就住在波士頓。雖然這種文化融合的速度不像我們想像中的快速,但是不同的文化激盪之下,也為美國社會注入了很多元的觀點和看法。
.
4.#容許摩擦
把社會上的摩擦,看成是這個社會的優勢、而非缺點。作者說到:「如果在社會裡面維持思考框架的多元化,確實會讓人們彼此之間感覺到不安很衝突,就是因為大家要看到彼此的不同,而且還要可以彼此互動。但畢竟,大家觀點不同、意見相對,本來就是正常生活該有的模樣。」
哈佛法律學院的昂格(Unger)教授認為,如果要讓政治進一步的去中心化,就必須要用一些反事實的模型來做思考。他說:「當社會很果斷地沿著一條路前進的時候,應該要多方下注,以避免損失,也就是要允許在特定的地點或部門,跳脫一般的解決方案,實驗看看不同的國家走向會怎樣。」
昂格鼓勵讓社會充滿摩擦,也鼓勵教育上面要用辯證式的討論方式,不要讓社會被束縛在單一的版本,而是可以嘗試其他的社會組織方式。運用和擁抱多元的思考框架,才能擁有多樣化的各種策略,再從中選取適合的方案。
.
【對思考框架保持警覺】
這本書告訴我們,幾乎沒有錯誤的思考框架,只有不適合某種情況的思考框架。而且各種框架應該要有共同存在的權利。但是作者們提醒我們要保持一個警覺,他們說:「唯一要注意的是,這種慷慨的態度要有一個前提,也就是說:『唯一』的一種錯誤的思考框架,就是拒絕其他的思考框架。」
要讓框架多元性的目的,就是為了讓各種框架可以彼此競爭、互補、對抗、共存。然而,如果有某一套思考框架的目的在於完全抹煞其他框架的存在,這就是不可被接受的。所以作者們才說:「如果你聽到有任何人或團體,說只有自己的思考框架放諸四海皆準,只有自己說的是真理的時候,千萬別相信。」
.
【後記:拓展想像的邊界】
如果說另一本我很喜歡的《超級思維》那本書是心智模型的「百科全書」,那麼《造局者》就像是心智模型的「使用指南」。書中有清楚的概念和步驟,讓我們了解為什麼要學習更多的心智模型,以及該怎麼樣活用各種心智模型,並且在必要的時刻推翻自己的假設,重新啟動一個新的心智模型。
這本書是今年我讀過的書裡面感到非常印象深刻,也讓我的思考方式深受啟發的。作者們把故事和理論的比例搭配得恰到好處,從一則又一則的故事和研究案例當中,會自然而然地理解作者們要帶給我們的觀點,也讓我感受到什麼叫做多元性,以及為何要擁抱差異。
從書中也可以發現,AI 並不會削弱心智模型的重要性,反而是增強了心智模型的重要性。因為 AI 無法自己建立思考框架,仍然只能依靠人類。人類最重要的特色就是可以處理「假設之外」的新問題,能夠把心智模型的空間拓展到可以親身體驗的範圍之外,也就是能夠做到抽象與推理。人類只靠著極少數的資料,甚至是完全沒有新的資料,就能夠適應全新的、過去從來沒有體驗過的情境。
作者最後提醒到:「這是一個救贖也是一個警訊:一個人如果擁有建立思考框架的能力,就會保有價值。但要是放棄了努力,沒有辦法做好這件事情,就會失去現在人類的特權地位。」我們能夠想像的邊界,就是我們世界的邊界。
.
Kobo 購書連結:https://bit.ly/3rRI8Kg
Kobo 電子書7折代碼:WAKIFRAMER
使用期限:8/15~8/21
.
感謝 天下文化 提供贈獎抽書
抽象程式 在 果籽 Youtube 的最佳貼文
|香港街拍—瑞典回流攝影師港式幽默融入照片 日走幾萬步街拍為醫喪母之痛:試過影一張相等了3個月
大樹爆炸頭、間條撞間條、?頭問號……你心目中有畫面嗎?這些都是黃建榮(Edas)的作品,他是業餘街拍攝影師,初學習攝影時,也曾醉心研究森山大道與何藩的大師級作品,但近年拿起相機時,決定放下所有啟蒙與執念。回歸自我,街拍照不只諧趣,也不只煽情,而是結合具像與抽象的協調與和諧。
土生土長香港人Edas,曾到瑞典工作十一年,八年前,覺得從事程式編碼的工作太着重邏輯思考,他希望公餘時得到暫時解脫,所以學習攝影,另拓創作空間。二〇一四年回流香港,他在大街小巷看到各種有趣的景象,開始沉迷街拍,「當時在瑞典的照片比香港的簡潔,還在想,回到香港後就好難再拍到類似影像。真正到了香港,雖然覺得環境較雜亂,但變化很大,就嘗試甚麼都拍。」
https://hk.appledaily.com/lifestyle/20210205/W7NS47H2EVHXXEKMYREZUUKBCE/
影片:
【我是南丫島人】23歲仔獲cafe免費借位擺一人咖啡檔 $6,000租住350呎村屋:愛這裏互助關係 (果籽 Apple Daily) (https://youtu.be/XSugNPyaXFQ)
【香港蠔 足本版】流浮山白蠔收成要等三年半 天然生曬肥美金蠔日產僅50斤 即撈即食中環名人坊蜜餞金蠔 西貢六福酥炸生蠔 (果籽 Apple Daily) (https://youtu.be/Fw653R1aQ6s)
【這夜給惡人基一封信】大佬茅躉華日夜思念 回憶從8歲開始:兄弟有今生沒來世 (壹週刊 Next) (https://youtu.be/t06qjQbRIpY)
【太子餃子店】新移民唔怕蝕底自薦包餃子 粗重功夫一腳踢 老闆刮目相看邀開店:呢個女人唔係女人(飲食男女 Apple Daily) https://youtu.be/7CUTg7LXQ4M)
【娛樂人物】情願市民留家唔好出街聚餐 鄧一君兩麵舖執笠蝕200萬 (蘋果日報 Apple Daily) (https://youtu.be/e3agbTOdfoY)
果籽 :http://as.appledaily.com
籽想旅行:http://travelseed.hk
健康蘋台: http://applehealth.com.hk
動物蘋台: http://applepetform.com
#街拍 #攝影師 #喪母之痛 #攝影師 #瑞典
#果籽 #StayHome #WithMe #跟我一樣 #宅在家
抽象程式 在 小戴 Davina Youtube 的精選貼文
#podcast #邏輯思考 #抽象化
抽象思考是邏輯思維不可缺少的東西,但是我們該如何培養抽象思考的能力呢?
數學不好的人,是不是就與抽象能力無緣了?沒有抽象能力,是不是就不用談邏輯思考?
其實每個人多少都有抽象能力,也懂得使用抽象技巧,只是我們能不能更有意識地訓練它而已。
● 探討「如何訓練邏輯思考」這個問題 00:10
● 什麼是抽象化 03:08
● 如何增進抽象能力 08:59
● 使用語言訓練邏輯的問題 14:32
● 與聽眾共創內容 23:50
✒️前往閱讀本篇文字稿 https://moke.tw/talk/podcast-s2ep06/
💰支持小戴的推廣行動 https://moke.tw/donate/
📚 延伸閱讀
《如何訓練自己的邏輯思考力》 https://www.darencademy.com/article/view/id/16110
《不用學程式也能訓練邏輯思維的方法》 https://moke.tw/blog/2018/f398f7810ddd/
《掌握複雜系統的利器 — 抽象化思考》 https://daodu.tech/06-11-2020-manage-complex-system-abstraction
https://button.like.co/yenru606
抽象程式 在 啟點文化 Youtube 的最佳貼文
[ 7/21 開課!]【寫作小學堂】~寫出專屬風格,找回文字悸動
打造一盞自己的聚光燈,建立起專屬於你的品牌印象
課程資訊:https://www.koob.com.tw/contents/3655
【08/10開課!】《人際回應力-看懂情緒,輕鬆對談》~第20期(僅剩"2"位名額)
一個人的命運,是回應力的總和!
課程資訊:http://www.koob.com.tw/contents/157
更多學員心得分享:http://goo.gl/Guc6V6
【線上課程】《人際斷捨離》~
讓你留下怦然心動的關係,活出輕盈自在的人生!
課程連結:https://pse.is/E5MW5
第一講免費試聽:https://youtu.be/YyLvd1cNcDw
【人際維基】桌遊體驗會~讓你一玩就懂別人的在乎~06/16(日)14:00
活動資訊課程:https://www.koob.com.tw/contents/3072
【哈克工作坊】~讓你的存在,成為別人想親近的禮物~06/29(六) & 06/30(日)(僅剩“1”位名額)
課程資訊:https://www.koob.com.tw/contents/3897
【08/10開課!】《人際回應力-看懂情緒,輕鬆對談》~第20期
一個人的命運,是回應力的總和!(僅剩“2”位名額)
課程資訊:http://www.koob.com.tw/contents/157
更多學員心得分享:http://goo.gl/Guc6V6
【線上課程】《時間駕訓班》~
學會提升效率,擺脫瞎忙人生,做自己時間的主人
課程連結:https://pse.is/DDDHB
第一講免費試聽:https://youtu.be/flfm52T6lE8
線上課程【不用開口,就讓你擁有人際好感】
啟動人際溝通的關鍵影響力 https://goo.gl/v3ojdo
桌遊【人際維基】~一玩就懂得別人的在乎:https://goo.gl/Ej4hjQ
到蝦皮購買【人際維基】:https://goo.gl/ASruqR
=============================
以下為本段內容文稿:
不曉得你在生活中,有沒有一種經驗,就是你控制不住自己的腦袋,會一直往負面的方向想去,明明知道這樣想會讓自己心情很不好,可是你就是停不下來。
可能早上在會議裡,老闆多念了你兩句,你就開始擔心自己的飯碗會不保,下一波裁員會輪到你。
或是情人晚一點回家,也沒接到你打去的電話,你就開始焦慮他是不是愛上別人,不愛你了,
更有可能這次聚會你的朋友,表情比較嚴肅,笑容比較少,你就開始自責是不是自己不小心說話錯,讓朋友不開心等等,很多很小的事情,你都可以無限放大。
來,先別自責,你要知道這其實是代表你的腦袋有在進化。
因為我們人類的大腦,有一個地方是比一般動物還要發達的,叫「新皮質區」,因為有了這一塊,我們才有洞察力,可以看見表面事物底下的含義,語言發展,可以跟人溝通互動,閱讀書本,消化反芻成自己的知識等等,使我們擁有智力和反省能力,甚至是想像能力。
但有一得必有一失,在獲得抽象運作的同時,這個新皮質也讓我們學會的擔憂、變得容易絕望、固著。
這裡的固著,就是你的壞習慣為什麼那麼難改掉的原因,他有點像是電腦程式,一定被寫入,就很困難被刪除。
但動物沒有這一塊,所以你會發現一隻羚羊剛剛被一隻獅子追,千鈞一髮,躲過危險後,下一秒他可能就躲在草叢呼呼大睡,可是如果換成是人,恐怕就沒這麼快放鬆,我們可能會拼命抓住另一個人,跟他說:「你知道剛剛有多危險嗎?我被“一群”獅子追,差點死掉ㄟ!」
我們會在腦中重複播放這個可怕的畫面,然後開始擔心下一次如果獅子來怎麼辦?要怎麼逃脫?會不會傷害到我們其他的家人,可能想著想著就失眠了。
演化的需要,讓我們人類比較容易專注在負面想法,而不是正面想法,目的是活下來,而不是活得好。
可是即使我們已經不在草原上生活,生活也相對安全,你知道走在路上不會有獅子跑出來傷害你,你的平均壽命可以高達八十歲,但我們還是控制不住基因裡的本能,很容易鑽牛角尖,自己嚇自己。
這該怎麼辦?難道在等三百年嗎?等大腦在長出另一個「新新皮質區」,來抑制這樣的衝動發生嗎?
當然不是,其實有更簡單的做法。
既然你已經知道這是刻在骨子裡的本能,一昧的壓抑和阻止是無效的,你只會賦予他更大的吸引力,讓壞念頭越長越大。
你唯一能做的就是承認並允許自己這麼想。
蛤!不是不要想,反而要想個夠?
對,你沒聽錯。舉個例子,很多人有分手的經驗,如果有人跟你說,天涯何處無芳草,走,我們去喝酒,喝完你就不會想那個人了,你覺得有用嗎?
答案絕對是沒用了,很可能喝完一個人回家,隔天宿醉沒人照顧,你覺得更孤單,然後哭更慘。
那該怎麼辦?
請你拿一支筆一張紙,用力的把你腦袋中的想法全都寫下來,把那些抽象的、片段的、破碎的記錄下來,變具體的過程,你就在滿足大腦新皮質的需要,讓他覺得你有在做事,保護自己。
因為在創作的過程中,你需要寫字或打字,就彷彿你重新經驗那個可怕場景,但不一樣的是,這一次是你自己主動送入虎口。
不是啦!是你主動啟動事件,所以你可以控制危險的大小,你可以隨時按下暫停,讓自己跳離開,想想下一次可以怎麼逃脫。所謂的體悟或是啟發,其實就是大腦編織的一套行動策略,要你下一次不要重蹈覆徹。
這個效果,我確實在我帶領的寫作課學員身上有見證,有些學員他可能跟家人的關係有些糾纏,但他也說不出來自己卡住的地方是什麼,但透過寫下來,然後放個幾天,他重新發現原來這件事情還可以怎麼想?是對彼此都好的。
或是,有些學員並不知道生命中的某個經驗對他有很大的影響,他只記得某個畫面很重要,於是他花了一點時間,重新回憶,寫下來,啟動了新皮質區的運作,寫著寫著,他就懂了為何他會這麼在乎什麼事情?或是個性變得體貼?或是能言善道,那些都是在好多年前種下的種子。
所以寫作,並不是附庸風雅,只有那些喜歡咬文嚼字的文青才會想做的事情,不,他反而是一個最簡單、容易入手的方法,幫助我們冷靜下來,啟動新皮質區,開始反思、策劃。
如果你覺得自己的想法很容易原地踏步、糾結,或是你希望訓練自己的反思能力,每一次啟動的速度可以快一點,就像好的跑車0-100公里只有三秒鐘,那麼寫作會是一個很好的幫手,訓練你的抽象和邏輯能力,讓你更懂自己,同時也加大對自己想法的掌握度。
所以,希望今天的分享,能夠帶給你一些啓發與幫助,我是嘉玲。
如果你對於啟點文化的商品,或課程有興趣的話,如同今天分享到的「寫作小學堂」課程,下一期是在7月21號開課。是由我和另一名資深的編劇一起開立的課程,不只有教學,還會親自一份份給每個學員寫來的文章,給回饋,因為很量身定做,所以名額非常有限,很期待你能夠把握這難得的機會,期盼在教室能夠見到你。
最後,如果你喜歡我製作的內容,請在影片裡按個喜歡,並且訂閱我們的頻道。別忘了訂閱旁邊的小鈴鐺,按下去;這樣子你就不會錯過,我們所製作的內容。
謝謝你的收聽,我們再會。
抽象程式 在 第21 篇、抽象- Java 程式設計- 程式語言筆記 - Zrn Code 的推薦與評價
抽象 方法必須使用覆寫的方式定義方式的本體!! 範例程式. abstract class Animal {. ... <看更多>
抽象程式 在 程式老爹-papacode - 第三步抽象化: 透過概念化與簡化 的推薦與評價
第三步抽象化: 透過概念化與簡化, 提取出事物的核心概念。 以剛剛我們分析的金色路徑舉例, 我們先提出具體細節。 首先我們如果要拿到寶藏要前進六格這時候進行抽象 ... ... <看更多>
抽象程式 在 【thunkable 抽象化與函式】EP1:抽象化(Abstraction) - YouTube 的推薦與評價
【thunkable 抽象 化與函式】EP1: 抽象 化(Abstraction) | 程式 設計的重要觀念. 8 views8 views. Oct 17, 2022. 0. Dislike. Share. Save. ... <看更多>