l

2015年6月30日 星期二

課後回應

June 29 12:33~13:38

螢幕截圖 2015-06-29 13.30.41

 

在〈又一個學期結束〉文章中Teddy提到在北科大兼任的「軟體生命週期管理」課程在上周結束了,今天早上看了同學填寫的期末心得,有一些話想說,但因為課程已經結束找不到學生可以說,就寫在部落格上吧。

當掉不是威脅

有同學表示:「我們這一組的PO已經很努力了,為何最後還要拿學分做威脅?」

期末報告的時候,有一組學生所做的功能並沒有辦法達到end-to-end,也就是說使用者沒辦法用他們的App串起一個完整的流程。於是Teddy說:「想像一下你們三組是同個公司的三個團隊,今天要決定你們開發的產品要上市,還是終止開發。請問,你們認為自己的產品已經可以上市了嗎?如果你們也同意這個產品的功能沒有達到end-to-end,哪麼PO是不是要當掉?」

在Scrum框架中,PO負責產品成敗,這一點和PO努不努力沒有絕對的關係。這不是「沒有功勞也有苦勞」,也不是自我感覺良好覺得已經很努力就好了,而是誰該扛起責任的問題。在這件事情上,最低標準就是App的功能是否可以串起來達成使用者的一項end-to-end需求。如果PO很努力但卻連這一點都無法做到,這樣的努力是沒有實質競爭力的

Teddy說:「PO是不是要當掉?」目的是讓學生對應到Scrum框架中的責任,期末報告只占學期20%,不會只靠這一次報告就定生死。專案失敗大家都有責任,但就事論事,負責產品規劃與決定優先順序的PO,要負擔最大的責任,責無旁貸。

***

你沒那麼脆弱

有同學表示,Teddy嘴巴不饒人(翻成白話文就是嘴賤),或是懷疑某個同學不做事一直「噹」他。也有同學感謝Teddy不停地找麻煩,讓他們有更向上的動力去完成專案。

雖然很多人認為大學、研究所的訓練,不應該是就業導向,而是要多研究學問。但很抱歉,Teddy的課程就是就業導向,希望學生在出社會之前,可以培養Teddy自己認為是正確的軟體開發觀念。雖說敏捷開發鼓勵從錯誤中學習,但這並不表示我們不需要預先做功課,也不用動腦筋。只要信手拈來,隨便丟出很粗糙的想法或產品給客戶,然後期待沒人發現,或是等待收到一堆負評,再從這些負評中尋求改善。

「軟體開發最難的就是動腦」,這是一門需要動腦與回饋的課,需要一直問為什麼的課,需要挑戰既有習慣的課。如果有一天你覺得Teddy的碎念不算什麼,相信你到很多地方都可以存活得很好。

***

友藏內心獨白:Output不等於outcome。

2015年6月29日 星期一

又一個學期結束

June 29 10:02~10:38

螢幕截圖 2015-06-29 10.01.40

 

上禮拜四結束了這學期北科大的「軟體生命週期管理」課程,下課前20分鐘,Teddy請同學們寫下在這門課中學到哪些事,在課程結束之後他們會想繼續使用,以及有哪些可以改善的地方(個人或是課程內容)。

關於好的部分,有同學提到:

  • 雖然上課前已經大概知道Scrum的內容,但經過一學期實際與團隊一起參與專案開發,才發現很多問題會因為專案內容、團隊默契與想法而有所不同,如何在實際生活中將所學理論加以應用,是一種挑戰。
  • Alexander的pattern方法,透過分析force來形塑產品解決方案,並判斷設計的好壞。
  • 因為分組,所以認識不同實驗室的人,了解他們的專長,並在專案中互相學習,彌補自己的不足。
  • 經過四個sprint,產生一個實際的產品,看到才有感覺哪裡好、哪裡不好,並採取行動逐漸改善。
  • 問答方式的上課形式,讓學生比要願意(其實是被強迫)要思考與表達意見。
  • 世事無絕對,要加強用不同的角度來看到一件事。

***

關於持續改善的部分,同學都很客氣,提到的比較少:

  • 所有角色最後都跳下來參與開發,產品的方向與流程改善因而被忽略。
  • 希望第一個sprint能夠在助教陪同下完成(Teddy內心獨白:你可以去募款顧問費用XD)。
  • 表達、發現問題與尋找force的能力。
  • ▼請Teddy幫學生的題目分析force(Teddy內心獨白:募款前請先review學生的企劃書?!)。

螢幕截圖 2015-06-29 10.30.17

***

最後Teddy告訴學生:「學了之後改變你的思想與行為,這個東西才有用。」謝謝這16位學生陪Teddy和助教過了有趣的一學期。

***

友藏內心獨白:怎麼這學期好像過得特別快啊。

2015年6月28日 星期日

2015捷克、奧地利考察之旅Day5-F哈維爾市集

June 15 23:10~23:50

▼離開提恩中庭前往哈維爾市集,這幾個景點相距不遠,徒步即可到達。途中路過建於1783年的艾斯特劇院,造型非常優美,是現今最古老的劇院之一。

螢幕截圖 2015-06-15 22.30.02螢幕截圖 2015-06-15 23.21.15

 

▼路上遇到一段正在施工的道路,原來石頭路是這樣修復的,一顆、一顆鋪上去還挺費功夫的。

螢幕截圖 2015-06-15 23.20.26螢幕截圖 2015-06-15 23.19.52

 

▼抱小豬拍照,要付費。

螢幕截圖 2015-06-15 22.32.28

 

▼沿路的建築,市容很整齊。

螢幕截圖 2015-06-15 22.42.47螢幕截圖 2015-06-15 22.43.12螢幕截圖 2015-06-15 22.43.26

 

▼來到哈維爾市集,這裡的攤販比布拉格廣場上還多,賣的東西也多。不過走到這裡已經好累了,所以快速逛了一圈就準備回旅館休息。

螢幕截圖 2015-06-15 22.32.38螢幕截圖 2015-06-15 22.43.57螢幕截圖 2015-06-15 22.31.20螢幕截圖 2015-06-15 22.31.29螢幕截圖 2015-06-15 23.20.06

 

▼這隻鼴鼠是捷克家喻戶曉的人物,在CK到處都看的到,布拉格也有。

螢幕截圖 2015-06-15 23.20.16

 

▼回旅館前在一家賣照相器材的商店買到一個萬用插座,從台灣帶過去的接腳太短,無法使用。在CK的那幾天跟旅館借了一個,但CK買不到。還好一下子就在布拉格找到,免除了缺電危機。

螢幕截圖 2015-06-15 23.20.43

***

友藏內心獨白:Adapter真的很重要啊。

2015年6月27日 星期六

2015捷克、奧地利考察之旅Day5-E提恩中庭

June 15 21:13~21:42

離開布拉格廣場走到附近的提恩中庭,因為位於堤恩教堂後方,故得此名。這個中庭雖小,但有一些可愛的藝術裝置,而且來此的遊客較少,有種鬧中取靜的優閒感。

螢幕截圖 2015-06-15 21.15.36螢幕截圖 2015-06-15 21.17.05

 

▼餐廳。布拉格的餐廳太多了,雖然可以眺望中庭,但比這裡特別的餐廳太多,而且也還不餓,所以沒有在這裡用餐。

螢幕截圖 2015-06-15 21.17.21

 

▼很特別的建築,二樓設有迴廊。建築物整體感覺怪怪的,有種不對稱感,但又不會覺得很醜。

螢幕截圖 2015-06-15 21.16.24

 

▼房子的一邊有一隻熊,類似在屋角嵌入裝飾品的建築在布拉格還滿多的。螢幕截圖 2015-06-15 21.37.34螢幕截圖 2015-06-15 21.33.39

 

▼這個造型好奇特,算是大眼章魚嗎?

螢幕截圖 2015-06-15 21.17.13

 

▼提恩中庭好像是台灣團必來的景點,因為有菠丹妮,據說比台北要便宜很多。

螢幕截圖 2015-06-15 21.17.30

 

▼還有刺蝟筆專賣店,門口就擺著一隻大刺蝟筆,很搶眼。

螢幕截圖 2015-06-15 21.16.51

***


友藏內心獨白:被刺到應該會很痛吧。

2015年6月26日 星期五

三個圓圈(2):Scrum三種角色責任

June 23 14:22~14:46

螢幕截圖 2015-06-23 16.28.45

▲Scrum三種角色責任

前幾天在網路上聽了Henrik Kniberg介紹敏捷產品開發,其中剛好有一張文氏圖說明Scrum三種角色責任,簡單明瞭:

  • 產品負責人:負責產品需求,確定產品方向與需求對於使用者價值的優先順序,確保團隊做正確的事情,不會白忙一場。換句話說,這個角色負責決定What(要做什麼)。
  • 開發團隊:負責把產品做好,把關品質。這個角色負責How(如何做、做多久)。
  • 教練或ScrumMaster(SM):負責讓Scrum團隊(包含開發團隊與PO)持續改善,協助排除阻礙。流程順了,能力提升了,自然可以越做越快。

***

Teddy在上Scrum課程的時候常說:「產品的價值來自於事情做對,品質做好。在Scrum框架中,做對做好剛好由PO與開發團隊負責。」但只有做對、做好還不夠,還要加上持續改善的能力,才可以克服外在變化以及工作中所遭遇的阻礙,打造一個「贏的團隊」。

***

友藏內心獨白:最後一句好像廣告台詞 XD。

2015年6月25日 星期四

【台中場】8月份Design Patterns這樣學就會了入門實作班

June 24 20:55~21:51

螢幕截圖 2015-06-24 21.33.59

 

學校沒教、主管不懂、同事不會、自己沒空學的「Design Patterns這樣學就會了入門實作班」終於要離開台北,到台中開課了。在幾位熱心朋友幫忙之下,已經在台中找齊最低開課人數,促成8月22、23、29(六、日、六)的課程。上課地點在台中市西屯區(台中市政府旁,上課地址將於開課前五天通知),已經確定開課,中部的鄉民們可以參考一下。

***

公開班開到第11梯次,廣告台詞寫到不知道要寫什麼。談一談這門課想要傳達什麼重點。

  1. 什麼是設計:做了一輩子的軟體設計工作,鄉民們的心中是否有一個關於「什麼是設計」的清晰定義嗎?這個問題的答案,會影響鄉民們從事設計的能力與看問題的視野。
  2. 什麼是軟體設計的產出物:參與軟體開發這麼久,忙到沒天沒夜,請問你在忙什麼?寫需求文件,還是畫UML圖表?什麼才是軟體設計的產出物?這個問題的答案,會決定鄉民們應該將有限的資源投入在軟體開發的哪個活動上面。
  3. Alexander的pattern方法:透過name、context、problem、force、solution與resulting context這六個元素,你可以分析問題、記錄知識、看到別人忽視的重要設計限制、看到問題背後的問題。
  4. 基礎物件導向觀念介紹:用白話文解釋最基礎但卻不易清楚弄懂的觀念,包含interface、inheritance、 polymorphism、 composition、 delegation、尋找hot spot、生物多樣性原則、抽象耦合、Programming to an Interface, not an Implementation、Favor object composition over class inheritance。
  5. 10個常用GoF設計模式:包含State、Facade、Template Method、Factory Method、Abstract Factory、Observer、Command、Adapter、Strategy與Composite。
  6. 套用設計模式的技巧:如何避免誤用模式?如何選擇合適的模式?如何評估現有的設計?
  7. 逼學員動腦:讓學員在課程結束之後,養成自我覓食的能力,可以自己獨立分析與判斷設計問題。

螢幕截圖 2015-06-24 21.50.17

***

了解Alexander的pattern思維,讓鄉民們可以從「制高點」看問題,有種脫胎換骨的感覺。敏捷與精實開發社群的人都知道,要落實一項改善活動,不能只看某一點(區域最佳化),而是要觀照全局,系統化思考,做到整個價值鏈(value-chain)或工作流程的最佳化。如果你站在西門町紅樓樓頂,你只看的到附近的街景。站在101大樓的觀景台,可以看到大台北地區的街景。嘗試去看到問題的全貌,會讓你成為一位更好的工程師

***

報名網址再貼一次:Design Patterns這樣學就會了:入門實作班,8月22、23、29(六、日、六)在台中

***

友藏內心獨白:謝謝台中朋友促成。

2015年6月24日 星期三

三個圓圈(1):產品願景

June 23 15:27~14:20

螢幕截圖 2015-06-23 15.59.08

▲產品的願景

畫幾個圓圈,利用集合來分析事情是一個很常見的技巧,詳細說明請參考維基百科上的文氏圖(venn diagram)。這一系列文章Teddy想記錄一下幾個自己覺得有用,可以解釋軟體開發相關概念的文氏圖。

今天先介紹Teddy在《SCRUM:用一半的時間做兩倍的事》書中看到的文氏圖,用來解釋產品負責人(Product Owner)應該平衡的三項產品因素:

  • 做的出來:第一個考量的因素是團隊要有能力可以把產品做的出來。你可以構想開發核融合發電廠,永遠解決人類能源供應的問題,不排放溫室氣體也不產生核廢料。問題是技術上目前無法做出這樣的產品,除非你的目標就是要打破現有技術困難,否則就算業務接到大單子,東西做不出來也是白搭啊。
  • 賣的出去:第二個因素是要能夠賣的出去。你可以開發出酷炫的電動機車,或是地表上最強的手機,但是如果客戶不買單,也是白搭。
  • 有熱情:最後一個因素是要讓團隊對於產品有熱情。很多產品滿足前兩項因素,做的出來也賣的出去,可是對於團隊而言,工作可能非常乏味,都是一些重複性,沒有學習與成長的機會。這樣的產品,無法激發團隊的熱情,長久而言也不容易做出好產品出來。

***

如果鄉民們你剛好是產品負責人,你的產品願景是否滿足以上三個條件呢?Teddy看過做的出來,賣不出去的產品;看過賣的出去,做不出來的產品(真的有些業務可以買空賣空);也看過有熱情的團隊,以及行屍走肉的團隊。三者兼具,可以提高做出好產品的機率。

如果團隊士氣低落,請試著思考看看,是不是團隊的熱情消失,要如何調整或是溝通產品的願景,讓團隊重新熱血起來。

員工內心獨白:我只是上班討口飯吃的啊。

***

友藏內心獨白:熱情常常被忽略。

2015年6月23日 星期二

守破離與技能模式

June 20 15:55~17:53

螢幕截圖 2015-06-20 17.44.22

 

有人說守破離源自日本禪宗的修行層次,後來廣泛應用到所有的學習方式,最常聽到的講法就是武術(合氣道或劍道)的學習。在敏捷開發書籍中也經常能夠看到用這三個字用來解釋學習的三種層次。

  • :透過一個老師、一本書、或其他途徑來學習一種新知,首先完全遵守所學到的規則、教條,依樣畫葫蘆,反覆練習,直到熟練。這一階段相當於Teddy在〈傻的願意相信〉所提到的學習方法,先不要對方法懷疑也不要自作聰明胡亂調整規則,就是傻傻的照做。在這個階段鄉民們只要「目光如豆」即可,不用考慮全局,不需旁徵博引,只要把新的規則演練到滾瓜爛熟即可。古人說:「熟讀唐詩三百首,不會做詩也會吟」,差不多就是這個意思。
  • :熟練基本規則之後,懂得依據不同狀況靈活運用,突破現有框架的規範。例如,小朋友學習交通規則,在守的階段知道也能夠身體力行做到不闖紅燈。到了破的階段,如果有人拿著菜刀在後面追殺他,他知道可以打破紅燈不能行的規則,逃命要緊。到了破的階段,學習者可能因為熟練而自行產生新的看法,或是因為接觸到其他新知識,而激發出不同於以往的思維。應用的好到了破的階段學習者開始產生創意,應用的不好可能會便成知法玩法,硬坳。
  • :忘卻原本所學的規則與限制,回應外界的行為與反應都是自然而生,無須刻意做作。到了這個階段可以直接在情境中觀察到問題與作用力(force),然後直接產生出合適的解法,達到Quality Without A Name的境界。

***

最近在《Pragmatic Thinking and Learning》學到另一個有關學習的模型,稱為「Dreyfus Model」,這個模型將學習分成五個階段:

  • 新手:對於某項技能沒有或只有很少的經驗。新手並沒有很強的學習意願,只是想要解決手邊的問題,希望有立竿見影的方法可以套用。這個階段的人需要規則與標準作業流程(SOP)。
  • 高級新手:能夠依據以往的經驗,慢慢但吃力地依據不同的情境挑選合適的解決方案,逐步跳脫死板的SOP。雖然在這個階段已經可以累積出一些解決問題的原則,但對於問題的全貌還是沒有全面性的理解。如果讓高級新手去解決一個更大的問題,他們可能會以為這個問題與之前的規則不相關而將其忽略,因為這已經超出他的能力所及。
  • 勝任者:勝任者已經能夠在腦袋中建立問題領域的概念模型(conceptual model),並且可以用透過它以抽象化的方式來解決問題,甚至是以前沒有遭遇過的問題。勝任者解決問題的能力需要依靠詳盡的計畫與過往的經驗,如果在所遭遇的問題上經驗不足,他們對於解法也比較沒有把握。在老闆的眼中,勝任者通常被歸類為「主動積極的員工」,他們有能力去教導新手,因為具備自我解決問題的能力,也不會經常去打擾專家。
  • 精通者:開始思考全局,針對所要解決的問題,建立完整的概念模型。精通者具備持續改善的能力,能夠反省自己做事的方法,自我逐步改進。也能夠透過學習別人的案例,來拓展自己的經驗。
  • 專家:專家是該領域知識的主要來源提供者,具有豐富經驗,且知道要如何在不同的情境中應用這些經驗。專家會寫書、寫文章、演講,分享他的知識。專家根據直覺工作,擅長觀察與問題相關的特徵與細節,並忽略那些無關緊要的雜訊。

***

▼Teddy嘗試將「Dreyfus Model」對應到守破離,在每個階段的邊界之間,應對關係也許不是很正確,不過重點在於同時間觀看兩個模型,可以知道自己的等級(新手、高級新手、勝任者、精通者、專家),以及這個等級處於學習的守、破、離階段。不知道這種對應有什麼用,只是覺得好像將兩個不同但相關的概念之間找到了一座橋,這樣就很開心了微笑

螢幕截圖 2015-06-20 17.41.12

***

友藏內心獨白:Dreyfus Model還滿有趣的。

2015年6月22日 星期一

等一個人的Context

June 17 12:29~14:15
螢幕截圖 2015-06-17 14.21.47

▲莫札特是跑到布拉格之後才大紅大紫的。

 

去年有一位修北科資工所【敏捷與精實軟體開發】課程的學生寫了一篇〈重新燃起對閱讀的興趣〉文章,他提到剛開始讀Teddy的〈搞笑談軟工〉部落格的經驗,讀完之後沒感覺也看不太懂。後來修課之後為了準備期中考,回頭看〈搞笑談軟工〉部落格,沒想到居然越看越有感覺。

相信有不少鄉民可能也有類似的經驗,剛開始接觸〈搞笑談軟工〉不知道Teddy在胡扯些什麼,過了一段時間再回頭看,可能可以看出一些端倪。本篇不是要吹牛說Teddy的思想領先鄉民多少時間,而是昨天突然有一種感觸:「看書或讀文章最難的不是英文看不懂,而是我們腦袋裡面有沒有一個合適的context(脈絡、情境、背景知識),去吸納、理解書中的內容。英文應該是次要的障礙,因為很多資料就算是寫成中文我們也看不懂啊。

***

學生修課的過程Teddy自認沒有講什麼高科技的東西,只是提供一個context,介紹裡面的地形地物給學生認識,期望在課程結束後學生具備自我餵食(自我學習)的能力。

有人認為學習不需要懂理論的東西,要立即可用,拳拳到位。這是一種實用性導向的學習方式,主要目的在於解決眼下的特定問題,對於將所學拓展到其他領域可能就不是其關心的重點。Teddy認為理論的東西不是不能講,而是要用何種方式講到大家聽得懂。理論或是方法論,給我們一個框架、一個context,去觀察與收納各種模式(pattern),讓原本獨立的世界串接起來,讓知識的學習、記憶與運用變得更加靈活與輕鬆

***

有一位朋友說他讀了一本書,因為作者「廢話很多」讀起來很累,但硬著頭皮讀到一半之後終於進入作者的世界,了解他所想要表達的重要觀點。有些鄉民可能會覺得時間有限,不需要讀書,只要看一看作者公開的投影片就已經很夠用了。Teddy認為投影片是「看熱鬧」的成分居多,真的要累積層次,要進入作者心中的context,還是要讀書。投影片充其量只是讓你成為新手或是高級新手,要成為專家,你需要理解context。

***

友藏內心獨白:做學問哪有不花時間的。

2015年6月21日 星期日

2015捷克、奧地利考察之旅Day5-D布拉格廣場遇到雪

June 01 13:17~13:54
▼放好行李約下午三點,準備出門逛逛。沒想到一踏出旅館大門又遇到下雪,還好隨身帶著雨傘。


▼走沒幾分鐘到達傳說中的布拉格廣場,首先映入眼簾的是天文鐘。每小時天文鐘會表演一次,可惜到達時已過了下午三點,只能等下次再經過時再看。


▼此次國剛好遇到復活節,布拉格廣場上面擺了許多慶祝復活節的攤子。


▼和CK老城區廣場類似,攤子有賣吃的有賣紀念品的。只不過布拉格廣場大多了,攤子的種類也比較多。


▼廣場中央搭了個小樓台,可以走樓梯上去。旁邊還裝飾著櫻花。


▼登上小樓台往下拍照。


▼還有一個攤位運來小馬和綿羊,可以買食物餵牠,一包20克朗。


▼廣場一角立著宗教改革先驅胡斯雕像,因此又被稱為胡斯廣場。


▼下午四點二十,天已放晴。廣場上有活動,又擠滿了人。


▼這算是「雪後天晴」嗎?


***

友藏內心獨白:好大的雪。