【從學員練習影片觀察到一個關於 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 也不該是目標,目標永遠都是在實務上產生價值、解決問題、滿足需求。
同時也有10部Youtube影片,追蹤數超過2,120的網紅汪詩敏 Sylvia,也在其Youtube影片中提到,試了電腦的新剪接軟體結果磨皮過了頭臉好假🥲 剪完才發現too late 片頭的音量爆掉忘了拉低so sorry🙇🏻♀️ 下次還是換回舊的app剪接吧😅 Business inquires 合作邀約 📩 [email protected] About Sylvia: FB: http://w...
「anxiety翻譯」的推薦目錄:
- 關於anxiety翻譯 在 91 敏捷開發之路 Facebook 的最佳貼文
- 關於anxiety翻譯 在 陳曉謙物理治療師/肌力與體能訓練師 Facebook 的最佳解答
- 關於anxiety翻譯 在 賓狗單字 Bingo Bilingual Facebook 的最佳貼文
- 關於anxiety翻譯 在 汪詩敏 Sylvia Youtube 的最讚貼文
- 關於anxiety翻譯 在 CH Music Channel Youtube 的精選貼文
- 關於anxiety翻譯 在 可以勇敢Be Brave Youtube 的最佳解答
- 關於anxiety翻譯 在 【中英翻譯】blackbear - anxiety (ft. FRND) - 焦慮 的評價
- 關於anxiety翻譯 在 和焦慮一起冒險! 的評價
- 關於anxiety翻譯 在 anxiety用法的推薦與評價,FACEBOOK和網紅們這樣回答 的評價
anxiety翻譯 在 陳曉謙物理治療師/肌力與體能訓練師 Facebook 的最佳解答
【書籍分享:情緒按鈕】
.
「當我們被一些外在的人、事、物刺激時,情緒會像開關的按鈕一樣,被觸動、啟動」
.
💡「『觸發點、刺激』出現後,我們如何『反應、回應』,並怎麼透過自己的『內在資源』,辨識、釐清這些過程對我們的影響,或者思考為什麼會有這樣的情緒反應。」
.
整本書即在探討「觸發點-反應-內在資源」,這三者的關係。
.
舉例來說:
🔸 觸發點:同學、朋友沒有採納自己的建議,決定用另外一種方案
🔸 反應:感到非常生氣,並怪罪其中跟自己最要好的同學
🔸 內在資源:思考生氣(回應)的背後原因,自己的反應過度,可能來自「生長在一個不被支持的家庭」,因此當類似的事情發生,會不加思索地認為「不採納己見」是針對自己,而不是方案本身
.
雖然這本書,主要是在探討我們如何受到外在事物,而引發不加思索的情緒。但在這個過程中,我們可以對自己更加了解。因為大家對同一件事情的情緒反應都不同,這個差異可能源自「個別的過往經驗、原生家庭、價值觀等」。
.
因此,每個情緒,可能是悲傷、焦慮、恐懼,背後可能都有一個故事或經歷。如果沒有描繪腦中的一張路徑圖(引發情緒的因果關係),同樣的事件再次發生時,我們還是會有同樣的反應跟情緒。
.
💡「從慣性思考、不加思索的行為模式(反應),轉換為有意識的自我掌控(回應)。」
.
💡「隨著我們調度內在資源,原先的觸發點,可以轉換為單純的資訊,並不會侵襲我們內心的平靜,例如,回覆『是喔,他這樣做了』」
.
最後,謝謝高寶書版送來的書,我蠻推薦給「對自己的情緒反應、背後的原因」有興趣的人,不過可能跟翻譯、專有名詞的關係,我自己在唸這本書所花費的時間比平常多了一些,供各位參考。
.
英文書名:Triggers: How we can stop reacting and start healing
其他文章:https://jackchen.sport.blog/
其他圖片:https://www.instagram.com/chenhc82/
#情緒按鈕 #大衛瑞丘 #高寶書版 #閱讀 #心得 #情緒 #反應 #悲傷 #憤怒 #恐慌 #焦慮 #心理學 #過往經驗 #原生家庭 #物理治療師 #陳曉謙 #triggers #davidricho #emotion #sadness #madness #anxiety
anxiety翻譯 在 賓狗單字 Bingo Bilingual Facebook 的最佳貼文
【防疫紓壓 6 招 + 英文】
去台中的時候,還敢在拍照時,短暫拿下口罩,現在足不出戶已經連續好幾天了。
疫情之下,什麼局勢都變得好快,所有理所當然,都變得很奢侈。
我記得聽過某個 podcast 說,we’re terrified of change,人很害怕改變,而最近的改變,來得又劇烈又快,對心理健康也有很大影響。
我看了一下聯合國兒童基金會的網站文章,它分享的是,如何在疫情期間,保持心理健康(How to protect your mental health during the coronavirus pandemic)
它教了 6 招,我簡單翻譯分享給你
-----
1 焦慮是正常的
Recognize that your anxiety is completely normal.
適當的焦慮,可以驅動我們做必要措施(戴口罩、勤洗手、少群聚、接種疫苗)
請不要說你焦慮,但是不戴口罩趴趴走,那我真的昏倒。
-----
2 找消遣
Find a distraction
能做的都做了之後,要記得看部喜歡的電影、聽聽歌、讀小說,稍微逃避舒壓一下。
#逃避雖可恥但有用
-----
3 用其他方法跟朋友保持聯繫
Find new ways to connect with friends
平時常見面的,先換成線上打 game、視訊聊天、講講電話。
像我自己的《聽新聞學英文》podcast 訪談,短期內都打算轉線上或延期了
-----
4 趁機回應自己的需求
Focus on yourself.
你一直想學羊毛氈,可是沒時間?你一直想把英文學好,可是工作跟玩樂太滿?你可以考慮趁這段時間,做自己想要的進修或室內娛樂(你不要給我想歪!)
但其實人與人的連結,確實是很美好啦(誤)
-----
5 接納負面感受
Connect with your feelings.
不能跟朋友打屁聚餐,當然失望;不能跟約好的來賓促膝長談,當然可惜。
這次負面感受,別壓抑,讓它淡淡地來、讓它好好地去 🎵
-----
6 支持自己、支持身邊的人
Be kind to yourself and others
如果你因為疫情遭受霸凌(也許是確診者或家屬、或是因為生活型態改變),請務必向信任的人傾訴、尋求心理支持。如果你身邊有人心理狀況不好,也記得讓她感受到你的溫暖。
所以不要再謾罵前獅子會長了,沒有人想生病。
-----
以上6 個技巧的翻譯,我都是根據內文,再結合自己的感受說出來的,並不是純粹的「翻譯」喔~
想要看原文,這裡請:
https://www.unicef.org/serbia/en/how-protect-your-mental-health-during-coronavirus-covid-19-pandemic
台灣加油,我們曾經面對過疫情升溫,我們可以克服的 💪 很快,讓我們都施打了疫苗、都戴好口罩,又可以到其他城市走走晃晃。
This too shall pass.
什麼都會過去的。
#防疫 #心理健康 #播客 #podcast #中文podcast #聽新聞學英文 #社區感染 #台灣 #團結 #翻譯 #英文 #學英文 #英文單字 #英文學習
anxiety翻譯 在 汪詩敏 Sylvia Youtube 的最讚貼文
試了電腦的新剪接軟體結果磨皮過了頭臉好假🥲
剪完才發現too late
片頭的音量爆掉忘了拉低so sorry🙇🏻♀️
下次還是換回舊的app剪接吧😅
Business inquires 合作邀約 📩 dtjobs99@gmail.com
About Sylvia:
FB: http://www.facebook.com/sylwang
IG: http://www.instagram.com/syl_115
Pixnet: https://sylviawang1105.pixnet.net/blog
這不是合作影片!
![post-title](https://i.ytimg.com/vi/vQvXW1M-Wi0/hqdefault.jpg)
anxiety翻譯 在 CH Music Channel Youtube 的精選貼文
《ジョゼと虎と魚たち》
蒼のワルツ / Ao no Waltz / 蔚藍的華爾滋 / Waltz of the Blue
作詞 / Lyricist:Eve
作曲 / Composer:Eve
編曲 / Arranger:Numa
歌 / Singer:Eve
翻譯:澄野(CH Music Channel)
意譯:CH(CH Music Channel)
English Translation: CH(CH Music Channel)
背景 / Background :
https://i.imgur.com/TgQMRC1.png
版權聲明:
本頻道不握有任何音樂所有權,亦無任何營利,一切僅為推廣用途。音樂所有權歸原始創作者所有。請支持正版。
Copyright Info:
Be aware this channel is for promotion purposes only without any illegal profit. All music's ownership belongs to the original creators.
Please support the original creator.
すべての権利は正当な所有者/作成者に帰属します。あなたがこの音楽(または画像)の作成者で、この動画に使用されたくない場合はメッセージまたはこのYoutubeチャンネルの概要のメールアドレスにご連絡ください。私はすぐに削除します。
如果你喜歡我的影片,不妨按下喜歡和訂閱,你的支持就是我創作的最大原動力!
If you like my videos, please click like and subscribe! Thx :)
粉絲團隨時獲得最新訊息!
Check my Facebook page for more information!
https://www.facebook.com/chschannel/
中文翻譯 / Chinese Translation :
https://home.gamer.com.tw/creationDetail.php?sn=5053985
英文翻譯 / English Translation :
日文歌詞 / Japanese Lyrics :
懐かしさに溺れた まだ青かった僕ら
雲が残る合間 ただ太陽を見ていた
おざなりな僕ら 溢れだした声が
ただ大切な事は 伝わらないようにできてた
かたちのない色味を 抱きしめてみたの
期待と不安の日々を 後悔の味で知った
知らない世界へ 手を伸ばしたくて
強がりのウソなど ポケットにしまった
優しさを包む痛みも全部
覚えていたくて
ただ願って願って 生まれ変わっても
不確かな未来を謳っては触れたくて
伝って伝って 頬を流れる
その涙の味は いつかの約束
ただ灰になって 朧げになって
遠く何処かへ この夜を越えて蒼に染まる
夜もすがら夢を 張り巡らした想いを
見つからないまま 月は影を落とした
寝もやらず明けて 手も離せなくて
憧れる君を 遠ざけてしまった
あの日の僕の眼差しも全部
霞んでしまって
ただ痛くて痛くて 堪らない
空の青さは深く色を孕んでは冷たくて
伝って伝って 寄せ合う肩を
震わせた 微かな温もりを抱いては
まだ見ぬ世界へ 花は風を待って
遠く何処かへ この夜を越えて蒼に染まる
犯してきた過ちも その後悔さえも
かけがえのないものだから
ただ願って願って 生まれ変わっても
不確かな未来を謳っては触れたくて
伝って伝って 頬を流れる
その涙の味は いつかの約束
ただ灰になって 朧げになって
遠く何処かへ この夜を越えて蒼に染まる
中文歌詞 / Chinese Lyrics :
依舊青澀的我們沉溺於懷舊過去
僅是望著雲雲間隙中探頭的太陽
從敷衍的我們口中流露出的聲音
刻意不透露一絲珍貴重要的事情
我曾試圖伸手擁抱那不具形體的滋味
期待與不安的時光,帶著後悔的苦味度過
我希望能將手伸向未知的世界
而把倔強的謊言收進口袋裡
將溫柔包裹起的苦痛也想全部——
毫不畏懼地體驗看看
僅是祈求著、渴望著,若能有來生
仍想高頌並觸及那不可預測的未來
緩緩地、緩緩地,自臉龐滑下的淚水
那淚水的味道是某日一同許下的約定
哪怕僅化作一片朦朧、化作點點塵埃
仍邁向遙遠的某處,飛越這片黑夜、渲染上蔚藍的色彩
那夜深人靜的夢,與那心頭滿溢的思念
始終無法尋回,僅是與月光映照的身影相伴
徹夜未眠至天明,依然畏懼鬆開緊繫的雙手
卻不知不覺與憧憬的你,漸行漸遠
那一天我看見的一切也全都——
因淚水變得模糊不清
僅是隱隱作痛、好難受,令人難以承受
天空的蒼藍孕育出的顏色太過冰冷刺痛
緩緩地、緩緩地,兩人互相倚靠的雙肩
你總輕輕顫抖,只要我抱起你、傳遞那微微的溫暖
繁花等著風兒吹起,向著從未見過的嶄新世界
邁向那遙遠的某處,飛越這片黑夜、渲染上蔚藍的色彩
不論是曾犯下的過錯,抑或惦記的點點懊悔
「全都是無可取代的珍貴回憶啊。」所以啊——
僅是祈求著、渴望著,若能夠再有來生
仍想高頌並觸及我們那不可預測的未來
緩緩地、緩緩地,自你臉龐滑下的淚水
那淚水的鹹味是彼此曾一同許下的約定
哪怕所有的回憶早已化作一片朦朧塵埃
仍向著遙遠的某處,飛越這片黑夜、渲染上海洋般蔚藍的色彩
英文歌詞 / English Lyrics :
Drowning in nostalgia, we were still young
I was just looking at the sun while the clouds remained
We were so standoffish, with the overflowing voice
I couldn't express the things that are so important to us
I tried to embrace the shapeless color
I learned about the days of expectation and anxiety with the taste of regret
I want to reach out to a world I don't know
But I put my pretended strength back in my pocket
I want to remember all the pain that surrounds my kindness
Simply pray and pray, even if I am reborn
I don't want to forget that uncertain future
Tears that intertwined and trail down the cheek
are the taste same as the promise from that day
Even if they become ashes and everything becomes vague
Somewhere far away beyond this night, it is dyed in blue
I've been dreaming all night long with these overflowed feelings
The moon cast a shadow without being found
I couldn't sleep and couldn't let go of our hands
You're the one I yearn for, yet somehow I've kept you away
All the things my eyes saw on that day have also become hazy
It just hurts and hurts and I can't stand it
The blueness of the sky is deep and cold.
Our shoulders slowly close together
You shivered, I pass on my slight warmth
To the world we haven't seen yet, with flowers dancing in the wind
Somewhere far away beyond this night, it is dyed in blue
The mistakes I made and even the regrets are irreplaceable, so I...
Just hope and hope even if you are reborn
I want to touch and sing along with the uncertain future
The taste of tears that fall and fall down my cheeks
are the taste same as the promise from that day
Even if they become ashes and everything becomes vague
Somewhere far away beyond this night, it is dyed in blue
#喬瑟與虎與魚群
#ジョゼと虎と魚たち
#JoseetheTigerandtheFish
![post-title](https://i.ytimg.com/vi/jkTpuMsbxbA/hqdefault.jpg)
anxiety翻譯 在 可以勇敢Be Brave Youtube 的最佳解答
別讓憂慮偷走生活Don't Let Anxiety Steal from You|陪你一起對抗焦慮Ep.5
🍃
我們的每一天有很多事等著我們,有時候是開心的事發生、也會出現難題的時候。
但你有算過嗎?
你一天當中,花在擔心害怕跟憂慮的時間又有多少呢?
-
焦慮像是一個小偷
偷走你的時間
偷走你的精力
更偷走你心中的平靜安穩......
一起來看今天這一集,讓我們一起向憂慮生活say No。
🍃
特別感謝:
翻譯 - Ada
彩妝 - 新娘秘書 miss nini
-
留言跟我們分享你看完的心得喔!
#可以勇敢對抗系列 #別讓憂慮偷走生活 #可以勇敢
#歡迎訂閱我們的頻道及分享影片
![post-title](https://i.ytimg.com/vi/dEDve-TXA4c/hqdefault.jpg)
anxiety翻譯 在 和焦慮一起冒險! 的推薦與評價
翻譯 : 棋山、顧涼茶、唐鳳 遊戲原網址: English (original). 你可以任意改作&混搭這個遊戲! (啥?) 檢視完整原始碼. 在一個焦慮軟體上分享: 和焦慮一起冒險! ... <看更多>
anxiety翻譯 在 【中英翻譯】blackbear - anxiety (ft. FRND) - 焦慮 的推薦與評價
... <看更多>