【從學員練習影片觀察到一個關於 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 也不該是目標,目標永遠都是在實務上產生價值、解決問題、滿足需求。
同時也有2部Youtube影片,追蹤數超過25萬的網紅凱利TV,也在其Youtube影片中提到,在動物世界中有這樣一群動物,它們相對其他動物有些弱小,它們為了自身安全會采取保護措施。今天的兒歌我們就要給小朋友們介紹這樣一種動物,它是什麽動物呢?就讓我們跟著兒歌一起找答案吧~ 歌词: 神奇的 變色龍呀,是否見過? 顔色是 隨心隨欲 變來變去 藍顔色呀 紅顔色呀 (綠顔色呀 ,黃顔色呀 ...
敏捷開發教學 在 雪倫 》跨國商業人士 沒告訴你的事 Facebook 的最佳解答
Kerwin下週四受邀於 #商業思維學院 授課。你可能常聽我分享K哥營運大中華區市場,出差歐美,定居雪梨的故事。但很難得,他終於開課了——把海外市場開拓「使業績5倍增長,營收破億」的實戰,理出可操作的步驟,教戰給同學😃。K哥剛在學院社團和同學們自我介紹,我也轉過來和大家分享😎
「我現於雪梨工作;身處規模8000人美國上市公司Atlassian,我們打造全球第一的敏捷工具 Jira/ Trello;《財星》500大企業 超過 80% 是我們客戶(包括SpaceX、NASA),公司股價超越 Facebook、微軟、Salesforce。
而我之所以能36歲,在全球頂尖企業擔任大中華區負責人,與我拓展海外市場,有絕對關係。
畢業幾年後,我發現自己在職場遇到晉升瓶頸,大公司給新人的機會太少,我很希望突破自己的格局。我給自己一個挑戰,去海外發展。
因為美國、中國是當今科技強國,當你打破國界限制,能做中國市場,又能與西方人共事;這將槓桿你的職涯,進入嶄新機遇——而熟稔中文、歡迎西方文化,正是台灣人的優勢。
在台灣公司工作,待在一間有前景與企圖心的企業,進軍國際市場的機會,早晚會出現在你眼前。我常在想,如果我能更早預備自己的海外拓展力,當時一定會掌握更多好機會。(我31歲才真正第一次出去「見世面」)
另一方面,不少人想去海外工作,但到了海外,除了技術職缺,難以發揮優勢。很多人以為只要出國就好了,但真正重點是,你到海外能夠「活得好」。如果你了解如何拓展海外市場,為公司帶來獲利,你不只不缺工作機會,你對公司絕對是重要角色。
其實,我當初只是誤打誤撞走入商業開發。作為沒有資源、沒有人脈的創業公司負責人,為了活下去,必須嘗試各種辦法,最終透過3人小團隊,使Jira從沒沒無聞,廣傳一~五線城市,業績翻5倍成長,達2500萬人民幣營收。也是這些經歷,讓我直接被hire到雪梨總部。
在全球Top科技公司爬升重要管理位置,你獲得的,絕對是最領先的國際視野&科技管理先趨。
我以前根本沒有想過,這是可能的事情。
話說回來,「海外拓展力」是一個能讓你「在世界到處走」的能力,但台灣很少有親上戰場的人,將海外市場拓展,系統化地教學傳授。我很希望將這條可行的路,傳承給台灣同學。
不要像我以前一樣覺得「不可能」,不要錯失讓自己站上國際舞台的機會。
在這一堂課,我會為同學預備:
1. 實戰經驗傳授
2. 你需要具備的思路&策略
3. 可實際執行的步驟
你將具備以下能力:
一、(從0~1) 到了一個全新海外市場,我沒有任何人脈、資源,我該從哪裡開始?
二、(從1~100) 當我有了一些資源,下一步該怎麼擴大影響力?(我會與你分享,我如何做到第一年賺進 500 萬人民幣,第二年 5 倍成長。歸納你可以實際執行的方式)
三、面對不同文化,我如何在海外市場有效擴散聲量(從無到有地建立專家形象&經營toB社群)。
那就期待下週四和同學課堂見!」
報名課程&了解課綱:https://learn.bizthinking.com.tw/packages/18Aaf1/intro
課程結束後,有30分鐘時間,你可以親自與K哥交流提問,我自己也很期待聽見同學的feedback。如果大家喜歡這樣的課程,不吝讓我們知道,K哥以後會更多分享自己的經驗。非常開心幫助同學邁向國際職場,一起共勉之!😊
敏捷開發教學 在 杜書伍 聯強集團總裁 Facebook 的精選貼文
【聯強旗下通達智能運籌 獲選5000大企業TOP10金磚企業】
CRIF中華徵信所最新公布「2020年台灣地區大型企業排名TOP5000研究」調查,聯強旗下通達智能運籌,獲評為「TOP10金磚企業」。通達以往默默耕耘電子產業供應鏈服務,並多角化延伸經營到宅服務市場,以著重人文與溫度的服務細節,提升客戶感受為訴求,在嚴峻疫情對產業的衝擊中,仍能展現高度成長動能與競爭力,方獲選為2020十大金磚企業。
中華徵信所每年從國內5,000大企業的非公開發行公司,依據五項指標,篩選出有獨特經營特色、營收與獲利亮眼、可謂隱形冠軍的「金磚企業」。中華徵信所指出,通達智能運籌為聯強集團成員,2020年營收成長高達168.93%,成長動能主要來自疫情帶動宅經濟、遠距會議、教學需求爆發,進一步提升到宅服務的業務量遽增;並藉由其與家電、電腦等品牌商的結盟力,擴大維運、安裝與家戶服務版圖,因而獲選為「金磚企業」之一。
通達智能運籌總經理林憲群表示,此次獲選金磚企業,可視為通達智能運籌營運策略的發酵。2020年全球經濟籠罩在疫情陰霾,對於產業與企業都是一場硬仗,十足考驗企業的應變能力與韌性。通達近年積極推動全面性的數位機制優化,且大舉切入到宅服務市場,提出『資訊價值,人文品質』的訴求,與高級家電品牌商和電商結盟營運,讓委託主掌握即時通透的資訊,以高度具營運價值的管理資訊讓營運更精準敏捷,有助於合作夥伴快速面對市場的變動。
通達智能運籌2021年更清晰定位為「科技產業的營運管理服務平台」,致力於與上游品牌、中下游客戶群共同組成產業鏈中,最具競爭力的供應鏈團隊。通達智能運籌以資訊串聯價值為核心,串聯通達終端的資訊,整合提供訂單處理、金流服務、到宅服務、雲倉服務、智慧物流、技術服務等各項交易履行。讓品牌商專注於市場經營與行銷策略,通達以高效率高品質的服務,包辦解決供應鏈中的疑難雜症。
#相關新聞
1.台灣產業「與病毒共存經濟」 開啟5000大企業轉型
https://bit.ly/3eXgiHb
2.聯強旗下通達智能運籌五週年 全新形象服務中心落腳桃園
https://bit.ly/3eXgq9D
3.聯強旗下通達智能運籌 到府服務推出用戶行動支付服務
https://bit.ly/3y4twJW
4.聯強轉型MSP平台商 提供金融、運籌、資訊服務
https://bit.ly/2V8HBr2
#通達智能運籌 #金磚企業
🌏聯強國際為亞太第一大、全球第二大資通訊通路集團,2020年全球營收規模突破台幣1兆3,300億元。
🎯知識與經驗的分享,是我們回饋社會的方式。
敏捷開發教學 在 凱利TV Youtube 的最佳解答
在動物世界中有這樣一群動物,它們相對其他動物有些弱小,它們為了自身安全會采取保護措施。今天的兒歌我們就要給小朋友們介紹這樣一種動物,它是什麽動物呢?就讓我們跟著兒歌一起找答案吧~
歌词:
神奇的 變色龍呀,是否見過? 顔色是 隨心隨欲 變來變去
藍顔色呀 紅顔色呀 (綠顔色呀 ,黃顔色呀 )
拿定主意 一瞬間就 變了身 (隨意地 變化)
悄悄秘密 可怕的 許多蛇 靠近來
兩只眼 發亮找獵物
變色龍靠 進樹葉 聰明地變成 草綠色
非常地 安全 找不到
凶猛的 斑紋豹 嗷嗷地 咆哮著
尖牙利齒 想要 找獵物
變色龍靠 進花叢 聰明地變成 紅顔色
非常地 安全 找不到
敏捷凶猛 的老鷹 盤旋 在天空
利爪尖嘴 想要 找獵物
變色龍靠 近石頭 聰明地變成 灰黑色
非常地 安全 找不到
可怕的 大鳄魚 張開大大嘴巴
搖動尾巴 想 找獵物
變色龍靠 近樹木 聰明地變成棕色
非常地 安全 找不到
▶ 凱利TV
https://goo.gl/MnQ6zt
▶ 愛麗和故事
https://goo.gl/Z0ihAN
▶ 凱文和遊戲
https://goo.gl/kahF3d
[ 凱利和朋友們 官方SNS ] : 凱利, 愛麗, 凱文的幕後, 日常生活的信息在這裏呀! 大家都來看看吧~
▶ 凱利和朋友們 官方 Facebook :
https://www.facebook.com/CarrieAndFriends/
▶ 凱利和朋友們 官方 Instagram :
https://www.instagram.com/carrie_and_friends/
▶ 凱利和朋友們 官方 Kakao Story :
https://story.kakao.com/ch/toyfriends/
▶凱利和朋友們 -- 新浪微博
http://weibo.com/5881681818/profile?topnav=1&wvr=6&is_all=1
▶凱利和朋友們 -- 愛奇藝網
http://www.iqi▶ 凱利TV
https://goo.gl/MnQ6zt
▶ 愛麗和故事
https://goo.gl/Z0ihAN
▶ 凱文和遊戲
https://goo.gl/kahF3d
[ 凱利和朋友們 官方SNS ] : 凱利, 愛麗, 凱文的幕後, 日常生活的信息在這裏呀! 大家都來看看吧~
▶ 凱利和朋友們 官方 Facebook :
https://www.facebook.com/CarrieAndFriends/
▶ 凱利和朋友們 官方 Instagram :
https://www.instagram.com/carrie_and_friends/
▶ 凱利和朋友們 官方 Kakao Story :
https://story.kakao.com/ch/toyfriends/
▶凱利和朋友們 -- 新浪微博
http://weibo.com/5881681818/profile?topnav=1&wvr=6&is_all=1
▶凱利和朋友們 -- 愛奇藝網
http://www.iqiyi.com/u/2466035840
▶凱利和朋友們 - -騰訊視頻網
http://v.qq.com/vplus/kailifamilyyi.com/u/2466035840
▶凱利和朋友們 - -騰訊視頻網
http://v.qq.com/vplus/kailifamily
敏捷開發教學 在 凱利TV Youtube 的最讚貼文
憨態可掬的大熊貓是中國的國寶,今天就讓我們跟著熊貓之歌,再對這個可愛的朋友進行一次了解吧~
熊貓 圓通圓通 / 熊貓 憨態可拘
熊貓 可愛的 熊貓 嚯
喜歡吃 美味 的竹葉/ 喜歡 甜甜的 綠竹子
哇嗚 哇嗚 吃得很香甜 / 嚯
(一天到晚吃呀吃不完 )
(念唱)
常常戴著太陽墨鏡 / 調皮淘氣 熊貓
一天到晚 打哈欠/ 嚯
一搖一擺 熊貓/ 肚子鼓鼓 熊貓
耳小尾短 會爬樹/ 嚯
四肢黑黑 熊貓 / 白白胖胖 熊貓
黑白兩色 混一起/ 嚯
咕噜咕噜 翻跟鬥/ 樹木上面來攀爬
新奇 動作很敏捷/ 嚯
▶ 凱利TV
https://goo.gl/MnQ6zt
▶ 愛麗和故事
https://goo.gl/Z0ihAN
▶ 凱文和遊戲
https://goo.gl/kahF3d
[ 凱利和朋友們 官方SNS ] : 凱利, 愛麗, 凱文的幕後, 日常生活的信息在這裏呀! 大家都來看看吧~
▶ 凱利和朋友們 官方 Facebook :
https://www.facebook.com/CarrieAndFriends/
▶ 凱利和朋友們 官方 Instagram :
https://www.instagram.com/carrie_and_friends/
▶ 凱利和朋友們 官方 Kakao Story :
https://story.kakao.com/ch/toyfriends/
▶凱利和朋友們 -- 新浪微博
http://weibo.com/5881681818/profile?topnav=1&wvr=6&is_all=1
▶凱利和朋友們 -- 愛奇藝網
http://www.iqiyi.com/u/2466035840
▶凱利和朋友們 - -騰訊視頻網
http://v.qq.com/vplus/kailifamily
敏捷開發教學 在 91 敏捷開發之路 - Facebook 的必吃
91 敏捷開發之路。 ... 因為軟體開發就像在高空作業一樣,在高空中要面對狂 ... 可以說自己的教學範圍不包含這一塊,或不熟這一塊,但真的不該把「測試程式」定位在 ... ... <看更多>
敏捷開發教學 在 ezteamwork Agile 敏捷式教學影片_完整版ver.2 - YouTube 的必吃
【ezteamwork Agile 敏捷 式專案管理】滿足短時間 開發 、回饋、改善的 敏捷 式管理透過 敏捷 式的滾動管理,提升 開發 團隊的協作與溝通效率, 開發 進度透明化 ... ... <看更多>