【從學員練習影片觀察到一個關於 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 也不該是目標,目標永遠都是在實務上產生價值、解決問題、滿足需求。
同時也有3部Youtube影片,追蹤數超過6萬的網紅錄低香港 DocHK,也在其Youtube影片中提到,思浩大談海鮮市場仲有人住,發現後即安排去酒店! (大家真風騷)...
海報紙 在 夫妻原聲帶 Facebook 的最讚貼文
育兒經驗談|讓小孩馬上安靜的五種妙招🌟
⠀⠀⠀⠀⠀⠀
生活總有崩潰時,當你又忙又累,只想要片刻寧靜時,小孩總是不願放過你。
⠀⠀⠀⠀⠀⠀
為避免發生家庭單方面鬥毆事件,因此我們需要跟宇宙借力量。
⠀⠀⠀⠀⠀⠀
今天分享五種可以讓小孩馬上安靜,自己靜靜玩耍的方法,在你需要專注的時候,獲得短暫安靜的時光。
⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀
1. 看影片
⠀⠀⠀⠀⠀⠀
不論任何影片,小孩都很有興趣,只要影片在動,嘴巴就會閉上。
⠀⠀⠀⠀⠀⠀
隨著影片長度不同,你可以得到不同的安靜時光。
⠀⠀⠀⠀⠀⠀
推薦:莎拉與乖乖鴨、阿奇幼幼園、超人傑克
⠀⠀⠀⠀⠀⠀
貼心提醒:一次盡量不超過 30 分鐘,一天勿超過 3 次。
⠀⠀⠀⠀⠀⠀
安靜指數:⭐ ⭐ ⭐ ⭐ ⭐
⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀
2. 繪畫本/白紙
⠀⠀⠀⠀⠀⠀
沒有不能安靜的孩子,只有不夠大張的紙。
⠀⠀⠀⠀⠀⠀
孩子安靜的時間 = 紙張大小 X 畫筆顏色
⠀⠀⠀⠀⠀⠀
給孩子一盒 48 色的彩色筆加上六張全開海報紙,你就可以安心的喝上一頓下午茶了。
⠀⠀⠀⠀⠀⠀
推薦:奶油獅可水洗彩色筆 48 色、白色藍色綠色全開海報紙。
⠀⠀⠀⠀⠀⠀
貼心提醒:記得穿上弄髒也不心疼的衣服,還有鋪一張防水墊會比較好。
⠀⠀⠀⠀⠀⠀
安靜指數:⭐ ⭐ ⭐
⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀
3. 迷宮/尋寶書
⠀⠀⠀⠀⠀⠀
如果是一般故事書,孩子可能會纏著你念給他聽。
⠀⠀⠀⠀⠀⠀
但是給他一本迷宮書,規則簡單過程困難,讓他起碼安靜十分鐘。
⠀⠀⠀⠀⠀⠀
記得還要跟他說:「牆壁有刺,不可以碰到牆壁喔」
⠀⠀⠀⠀⠀⠀
讓他慢慢畫,畫到你睡著。
⠀⠀⠀⠀⠀⠀
推薦:知識大迷宮套書、迷宮偵探套書、屁屁偵探套書
⠀⠀⠀⠀⠀⠀
貼心提醒:孩子一開始可能會沒耐心,記得提供一些獎勵誘因。
⠀⠀⠀⠀⠀⠀
安靜指數:⭐ ⭐ ⭐ ⭐
⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀
4. 拼拼圖
⠀⠀⠀⠀⠀⠀
拼圖不只對大人是修身養性,也是小朋友鍛鍊耐心、小肌肉、圖像組合能力很好的活動。
⠀⠀⠀⠀⠀⠀
可以先從 30 片以下的開始練習,待瞭解規則後,就可以買 100 片、300 片的給他。
⠀⠀⠀⠀⠀⠀
當他認真拼起來時,你想叫他吃飯都不願意呢。
⠀⠀⠀⠀⠀⠀
推薦:《Unidragon World》木製拼圖系列、《海裡魚》木質拼圖系列
⠀⠀⠀⠀⠀⠀
貼心提醒:記得剛開始時,要多多誇孩子,並把作品好好收藏,增加孩子的成就感。
⠀⠀⠀⠀⠀⠀
安靜指數:⭐ ⭐ ⭐ ⭐⭐
⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀
5. 吃東西
⠀⠀⠀⠀⠀⠀
吃東西的聲音總好過喊爸爸媽媽的聲音。
⠀⠀⠀⠀⠀⠀
這對於許多家長來說是下下策,且不能連續使用,孩子會吃撐的。
⠀⠀⠀⠀⠀⠀
但只要找對食物,有時候 10-15 分鐘的寧靜,就足夠你喘口氣了。
⠀⠀⠀⠀⠀⠀
推薦:需要剝殼的栗子或花生、切薄片的水梨、蘋果或是小蕃茄、小碎片餅乾等。
⠀⠀⠀⠀⠀⠀
貼心提醒:兩歲以下不建議,以及要注意孩子喜好和過敏狀況。
⠀⠀⠀⠀⠀⠀
安靜指數:⭐ ⭐ ⭐
⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀
2022 最潮育兒日曆:https://cwgroup.tw/calendar2022
⠀⠀⠀⠀⠀⠀
除了這些方式之外,你還可以預約明年的安靜。
⠀⠀⠀⠀⠀⠀
《親子時光日曆》正面是為你打氣的暖心語錄,背面是給孩子玩耍的空間。
⠀⠀⠀⠀⠀⠀
讓孩子天天都有新樂趣,讓你一天增加五分鐘的寧靜片刻。
⠀⠀⠀⠀⠀⠀
早鳥募資中,快為明年的自己準備吧!
海報紙 在 夢想騎士 Facebook 的最佳解答
【Life Chat日常故事】#05
以心輔師第一視角,記下在I-LIFE發生的日常,在陪伴的故事裡,有時候我們也看見了自己的樣子。
文字:小杜
------
在第三級廚師考試失利之後他連說話的餘力都沒了,其實不難理解他的失落,畢竟那是一個光是學習煮飯就要花上一年的地方。
我用手托著下巴,想掩飾焦慮的心情,但他的眼神過於無神,以至於看不出來他有沒有在看我。
「要不要打給你朋友,邀請他來這裡聊聊你的失落?」我必須說回頭看來這真是好方法,感謝我的腦袋。
回過神來時,小華正興致勃勃地和朋友討論最近想到的新菜色,他們在半開的海報紙上大放異彩,替自己的廚房之旅找回新的意義。
我想,這次的會談加入了同儕,更貼近小華此刻的需要,看著他們談笑著回顧這些時間以來的學習,也為這個歷程劃下了富有意義的一個逗點。
海報紙 在 錄低香港 DocHK Youtube 的最讚貼文
思浩大談海鮮市場仲有人住,發現後即安排去酒店! (大家真風騷)
海報紙 在 Lo-Fi House Youtube 的精選貼文
#快去IG參加抽獎
#還有額外驚喜給專屬會員 #記得至社群貼文查看
新品將於4/11,10:00pm準時上架 ‣ https://bit.ly/2IaSal3
-
身為少女Youtuber頻道(Sil的名言
終於能開箱除了油漆電鑽以外的物品了!
這次A’room的居家新品我們真~的非常喜歡
舉辦的抽獎活動在IG舉行哦!
趕快去參加:https://pse.is/IG-006
-
【 商品連結 】
舒適精梳棉素色床包組(單人)|NT$1080|https://bit.ly/2Z3baYz
蜜糖奶油鬆餅小涼被|NT$1280|https://bit.ly/2Ur91Hz
奶油玉米流蘇抱枕|NT$420|https://bit.ly/2G7JOYq
LAZY LIFE裝飾海報紙卡|NT$300|https://bit.ly/2Z0CCGh
happy sunday立體毛絨繡抱枕|NT$690|https://bit.ly/2ULzGy5
DEAR BABE印花枕頭套(兩入組)|NT$520|https://bit.ly/2Ge257U
COZY LIFE 手繪掛布|NT$300|https://bit.ly/2GeOg9c
-
想要打造理想的生活空間嗎?歡迎到 Lo-Fi 官網了解服務方案!
首頁 ▶️ https://reurl.cc/Qdq1NZ
服務介紹 ▶️ https://reurl.cc/MvQYWL
立即預約 ▶️ https://reurl.cc/qdR9an
.
活動到4/10(三)20:00 - 4/12(五)20:00止
我們將在4/13(六)20:00抽出兩位幸運兒獲得小涼被、玉米流蘇抱枕其一!
-
然後,終於有優惠可以提供給大家,淚流滿面
4/11 10:00 AM 至 4/15 10:00 AM 止
輸入折扣碼「lofi100」,每筆訂單滿1000即可享有100元折扣抵用
沒抽到獎也有折扣,4/11準時開搶!
💎 加入 Lo-Fi House 會員大家庭 ▶ https://pse.is/member006
💎 每週五 20:00 定時更新~每週三 20:00 *不定時更新
💎 請記得開啟YouTube🔔通知!
⬇️⬇️⬇️
📌 Lo-Fi の 生活日常:IG ▶https://pse.is/IG-006
📌 Lo-FI の 居家知識:FB ▶https://pse.is/FB-006
更多必看經典影片🔎
一天完成房間改造!一步步教你從0到1打造春天粉嫩風!
https://lofi-house.pros.si/project19-006
IKEA 必買攻略!六項實用、百元居家小物推薦
https://lofi-house.pros.si/talk2-006
合作邀約:lofi-service@lofi-house.com
海報紙 在 公視新聞網 Youtube 的精選貼文
"更多新聞與互動請上:
PNN公視新聞議題中心 ( http://pnn.pts.org.tw/ )
PNN 粉絲專頁 ( http://www.facebook.com/pnnpts.fanpage )
PNN Youtube頻道 ( http://www.youtube.com/user/PNNPTS )
PNN Justin.tv頻道 ( http://zh-tw.justin.tv/pnnpts )
公視新聞網 ( http://news.pts.org.tw )
體罰在台灣並不稀奇,但如果對幼稚園的小朋友也體罰、會不會太過分了?新竹市立幼稚園就被家長指控、有一名老師用捲起來的海報紙、打孩子手腳,甚至還把不乖的小朋友頭下腳上抓起來。現在班上有家長發起連署、要求園方處理這名不適任老師,教育處也已經介入調查。
新竹市立幼稚園傳出不當體罰事件,有家長向人本基金會投訴,孩子在園內遭到老師以倒吊的方式體罰,甚至還用海報紙捲起打手腳,要孩子回去不能跟家長講,為此,班上家長還發起連署,要求園方處理不適任老師。
人本基金會新竹分會主任 李慧貞:有個小朋友是在老師團體討論課的時候,因為老師覺得他不乖沒有坐在位置上,就把他抓起來倒立像蝙蝠一樣抓起來,所以當下孩子是驚聲尖叫臉都紅紅的,全班小孩都嚇到講不出話來。
連署家長:可能就是被打,那家長就會問說為什麼在事情的當下你們沒有跟爸爸媽媽反映呢?那小朋友就會說因為老師有交代回家不可以告訴爸爸媽媽。
事情發生後,園方也在教室內加裝監視器,觀察這名李姓老師的上課情況,但因為這起體罰事件,李姓老師這學期暫時請假,班級也由其他老師接手,園方則組成處理小組,針對家長投訴體罰孩子的部分進行調查。
新竹市立幼稚園園長 邱玲玲:當時合班老師看到的狀況是,在團體討論的時候有一位小朋友影響團體討論的秩序,老師要去抓住他抱起他的時候,孩子一掙脫最後孩子只剩下兩隻腳在老師的雙手這裡,所以就變成好像在倒吊一樣。
由於沒有當時的監視器畫面,只能靠孩子和合班老師的描述,究竟當時體罰的情況如何,園方還在調查中,不過園方坦承,這名老師的教學方式,跟家長溝通方面確實有問題,而主管機關市府教育處正介入加強輔導,會依據不適任老師處理流程,最快這幾天就會有初步結果。
記者 冉瑞雯 新竹報導"
海報紙 在 海報紙- Explore 的推薦與評價
常見海報類材質為水性或乳膠PP相紙,表面為防刮痕,一般皆會上亮膜或霧膜保護,顏色便會稍微加深. 但其實還有另一種材質「海報紙/ 噴墨專用紙」~~ 印刷顏色較為 ... ... <看更多>