l

2016年12月24日 星期六

2016大阪姬路神戶考察之旅Day8-B夙川公園賞櫻

Dec. 23 16:05~17:05

▼今天要離開神戶前往大阪,離開神戶前還有最後一站先到夙川公園賞櫻。從神戶三宮買了前往夙川驛的電車票。

屏幕截图 2016-12-23 16.06.10

屏幕截图 2016-12-23 16.06.38屏幕截图 2016-12-23 16.06.48屏幕截图 2016-12-23 16.07.05

 

▼一下電車在車站內就可以看到夙川公園盛開的櫻花,雖然已經過了滿開的最高點,還是很漂亮。

屏幕截图 2016-12-23 16.11.25

 

▼拖著兩個行李逛公園太累了,還好車站有行李櫃可以寄放,只是身體輕鬆卻瘦了荷包。

屏幕截图 2016-12-23 16.14.11

 

▼看這個地圖櫻花開放的區域還滿大一片的。

屏幕截图 2016-12-23 16.17.31

 

▼有一群幼兒園的小朋友也出來賞櫻,第一次看到這麼大台的「兒童推車」。

屏幕截图 2016-12-23 16.18.36

 

▼櫻花。

屏幕截图 2016-12-23 16.20.13屏幕截图 2016-12-23 16.20.36屏幕截图 2016-12-23 16.21.07屏幕截图 2016-12-23 16.21.38屏幕截图 2016-12-23 16.22.01屏幕截图 2016-12-23 16.22.47

 

▼不知不覺走到下一個車站,準備回頭。

屏幕截图 2016-12-23 16.22.34

 

▼除了櫻花以外沿途有ㄧ些步道兩旁種滿大樹,走起路來也很舒服。

屏幕截图 2016-12-23 16.22.56屏幕截图 2016-12-23 16.22.22

 

▼另一組可愛的小朋友,人數比較少推車也比較迷你。

屏幕截图 2016-12-23 16.28.32

 

▼更多櫻花。

屏幕截图 2016-12-23 16.31.30

屏幕截图 2016-12-23 16.31.55屏幕截图 2016-12-23 16.28.17屏幕截图 2016-12-23 16.37.15屏幕截图 2016-12-23 16.37.51屏幕截图 2016-12-23 16.38.13屏幕截图 2016-12-23 16.52.21屏幕截图 2016-12-23 16.52.56屏幕截图 2016-12-23 16.53.30屏幕截图 2016-12-23 16.53.42

 

▼櫻花寶座。

屏幕截图 2016-12-23 16.34.22

 

橫向生長的松樹居然還如此茂盛,好特別。

屏幕截图 2016-12-23 16.59.20屏幕截图 2016-12-23 17.00.32

 

▼離開夙川驛前往大阪。

屏幕截图 2016-12-23 17.02.45


***

友藏內心獨白:看完收工。

2016年12月21日 星期三

軟體架構勒?

Dec. 21 16:12~17:17

擷取

 

很多跑敏捷開發的朋友對於在敏捷開發中如何設計軟體架構一直有不少疑問。廣義地說,無論是跑什麼開發流程,軟體架構設計本身都是一個傷腦筋的議題,只不過在傳統Waterfall流程當中,因為有專屬的「軟體架構設計」階段,所以讓人產生一種「在Waterfall中軟體架構設計非常明確」的 錯覺 感覺。實際上,跑Waterfall流程的確可以產生一份非常明確的軟體架構設計,只不過這份軟體架構的實用性經常被開發人員打上一個大問號,和最後開發人員實作出來的軟體系統之間存在很大的差異性,可能「連他爸爸(架構師)都認不出來這是他的親生架構」。

今天聽Erica提到有許多人在上完「使用者故事對照工作坊 (User Story Mapping Workshop)」之後跑來問他,當完成使用者故事對照(用戶故事地圖)之後,要如何將銜接軟體架構的設計。如何設計軟體架構這個問題,Teddy在跑Scrum以及學習User Story Mapping的時候也遇到,以下是Teddy的做法:

  • 套用物件導向設計與分析的做法:Teddy曾經在〈在領域模型上講故事〉文章中提到相關做法,如果把「使用者故事對照」這張地圖類比成UML裡面的Use Case Model,就可以從中找出重要的概念,並使用這些概念建立起軟體系統的「領域模型」。有了這份領域模型,就可以開始施考採用哪種軟體架構風格(software architecture style),例如MVC、Layered、Client-Server、Plug-ins、Microservice等,來「容納」這些重要的概念。
  • 向RUP(Rational Unified Process)學習:RUP也是一種疊代與增量開發方法,除了疊代(iteraion)以外,在RUP當中還將軟體專案分成四個階段:Inception、Elabration、Construction、Transition,每個階段可以包含若干的疊代。第一個階段用來驗證專案的可行性,通常很短,有點類似某些敏捷開發做法所說的「Iteration 0」的味道。第二個階段Elabration結束之後,大概會完成20%的 use case實作(RUP使用use case撰寫需求),主要的專案風險已經被釐清,並且產生「software architecture baseline」。換句話說這個階段結束之後產生軟體架構雛形,這個雛形可以支撐後續Construction階段的主要開發工作。

如果你的專案需求相對比較明確一些,則可以套用RUP的做法,首先透過User Story Map上規劃產品釋出計畫(release plan),或是規畫好幾個「最小可行性產品(MVP)」的學習計畫。把每個release plan開發週期視為一個RUP專案,然後朝向當完成20%最重要的user story的時候,能夠讓軟體架構成型,設計「足夠的軟體架構」來支持這些產品釋出或學習計畫。在每一個疊代週期挑選user story的時候,除了考量user story對客戶的價值以外,有時也要考慮挑選對軟體架構風險比較高的user story優先開發。

  • 重構:敏捷開發的主要目的之一就是要對付複雜的軟體開發專案,也就是要避免「計畫趕不上變化」的情況。所有原本可行的事物,都可能因為「發生改變」而導致失敗。這時候只能藉助重構的力量,讓軟體架構可以重新回到正軌。要讓重構可行,除了需要了解重構的技巧,還必須有足夠的測試案例以及持續整合來驗證重構沒有讓系統「越補越大洞」。

***

接下來打個廣告,泰迪軟體在2017年1月8日舉辦「使用者故事對照工作坊 (User Story Mapping Workshop)」一日課程,歡迎對這個主題有興趣的朋友一起學習、成長。

***

友藏內心獨白:關關難過關關過。

2016年12月20日 星期二

捷徑是破壞生態的殺手

Dec. 20 21:28~22:16

屏幕截图 2016-12-20 21.28.20

 

▼上週六從台北出發到武陵農場與福壽山農場三天兩夜小旅行,昨天一早八點半從「武陵山莊」出發,去走位於武陵農場內的「桃山瀑布步道」。這是一條非常平緩的步道,沿途沒有任何一個階梯,連「肉腳」都可以在3~3.5小時內順利走完全程。

屏幕截图 2016-12-20 21.33.12

 

▼一路上看到很多雪霸國家公園所立的指示牌。

屏幕截图 2016-12-20 21.35.47屏幕截图 2016-12-20 21.36.02屏幕截图 2016-12-20 21.36.12屏幕截图 2016-12-20 21.36.48屏幕截图 2016-12-20 21.36.59屏幕截图 2016-12-20 21.38.31

 

▼幾乎所有的指示牌都只出現一次,惟獨這個「捷徑是破壞生態的殺手」,沿途出現N次。Teddy第一次看到它以為這只是一個隨機出現的「政令宣導標語」,就好比「天乾物燥,小心火燭」一樣。但因為它不斷地出現,引起Teddy的好奇。

屏幕截图 2016-12-20 21.42.18

 

仔細一看才發現,原來整的步道上有很多跨越山坡的「捷徑」,穿越這些捷徑雖然可以少走很多蜿蜒的道路,但因為捷徑穿越山坡地,造成水土保持不易。因此國家公園管理處特別在每條「捷徑」前面擺設「捷徑是破壞生態的殺手」指示牌,提醒遊客沿著規劃的步道行走,不要穿越捷徑。

***

走著、走著突然覺得這句話非常有意思。大部分的人聽到有「捷徑」可走,應該沒什麼人願意繞遠路,從來沒想過捷徑居然會是破壞生態的殺手,有負面的含意。如果把場景換到軟體開發上,這句話可以換成「捷徑是累積技術債的原因」。為了省時間,軟體開發常見的「捷徑」有:

  • 不需要養專門的測試工程師,給客戶測就好了。
  • 程式看起來可以動就可以,code不用寫得太漂亮。
  • 不用安排教育訓練預算,我們只找有即戰力的人(PS:薪水22K)。
  • 公司請你是來解決問題的,不是請你來寫程式的(非常有道理,我也想和絕地武士一樣用念力來解決問題啊)。
  • 專案管理的最高指導原則就是責任制以及如何讓員工自願加班。

***

以上所說,好像有點汙名化「捷徑」。往好的方面想,「捷徑」也可以看作是「聰明做事的方法」。從這個角度來看,捷徑還是破壞生態的殺手,只不過這個生態是不好的生態(不好的公司文化、陋習),是需要被打破的生態。

嘴長在人身上,就看你要怎麼解釋。

***

友藏內心獨白:87分不能再高。

2016年12月17日 星期六

2016大阪姬路神戶考察之旅Day8-A清晨的北野異人館

Dec. 08 06:12~18:45

▼今天要離開神戶,吃早餐之間先到飯店附近的北野異人館逛逛。

屏幕截图 2016-12-08 06.14.51

屏幕截图 2016-12-08 06.13.12屏幕截图 2016-12-08 06.13.22屏幕截图 2016-12-08 06.13.33屏幕截图 2016-12-08 06.13.50屏幕截图 2016-12-08 06.14.16屏幕截图 2016-12-08 06.14.39

 

▼約莫10幾分鐘就來到北野異人館下方區域,也是CityLoop巴士停靠的地方。

屏幕截图 2016-12-08 06.17.58屏幕截图 2016-12-08 06.18.17

屏幕截图 2016-12-08 06.15.14屏幕截图 2016-12-08 06.18.08屏幕截图 2016-12-08 06.18.26屏幕截图 2016-12-08 06.18.34屏幕截图 2016-12-08 06.18.56屏幕截图 2016-12-08 06.19.17屏幕截图 2016-12-08 06.19.27屏幕截图 2016-12-08 06.19.37屏幕截图 2016-12-08 06.19.46屏幕截图 2016-12-08 06.19.55屏幕截图 2016-12-08 06.20.12屏幕截图 2016-12-08 06.20.23

 

▼繼續往上走。

屏幕截图 2016-12-08 06.24.50屏幕截图 2016-12-08 06.20.52

屏幕截图 2016-12-08 06.24.16屏幕截图 2016-12-08 06.21.00屏幕截图 2016-12-08 06.24.27

 

▼來到北野天滿宮,原本盛開的櫻花被這幾天的雨打落了不少。

屏幕截图 2016-12-08 06.26.20屏幕截图 2016-12-08 06.28.55

 

▼滿地的櫻花別有一番風味。

屏幕截图 2016-12-08 06.27.31

 

▼風見雞館。

屏幕截图 2016-12-08 06.32.02

屏幕截图 2016-12-08 06.30.35屏幕截图 2016-12-08 06.30.43屏幕截图 2016-12-08 06.31.04屏幕截图 2016-12-08 06.31.15屏幕截图 2016-12-08 06.32.27屏幕截图 2016-12-08 06.32.54

 

▼往回走準備吃早餐。

屏幕截图 2016-12-08 06.39.01屏幕截图 2016-12-08 06.38.25

屏幕截图 2016-12-08 06.38.16屏幕截图 2016-12-08 06.38.41屏幕截图 2016-12-08 06.39.31

 

▼Super Hotel早餐。

屏幕截图 2016-12-08 06.41.59屏幕截图 2016-12-08 06.42.08


***

友藏內心獨白:少了遊客感受完全不同。