about 2 months ago

距離上一次發表文章已經是快要三個月前了。Rails Pacific 2014 也在上週末順利落幕,終於可以坐下來好好寫一篇文章了。

15193298338_bda87e98c9_k.jpg

Rails Pacific 這一次的真是超乎預期無比的成功。結束的時候講者和參加者還開始抱怨「太意猶未盡了,怎麼只有兩天而已,好短」,下一次應該來辦個三天還是五天(?)雖然聽了很開心,但是光是兩天的 Conf 就已經能把人搞死。

所以下次(2015)應該還是會只有兩天。但是會考慮增加 After Party 團體出遊的可能性。

為什麼要籌辦這樣一個 Rails 亞洲年會?

其實大部分的原因,我已經寫在當初這篇舉辦的初衷裡面了。這幾年我時常出國,參加國外的 Conference 來衝擊自己視野。

坦白說外國講者與本地講者真的實力有相當大的差距,不管是講題挑選,議題深度,解題角度都是非常不同的。社群朋友 Bruce Li 在今年跟我去過一次 RailsConf 2014後,整個人就有相當大的成長。

參加外國 Conf 是對技術開發者本身很好的投資,但像去一次 RailsConf,旅費是相當驚人的,一次就要差不多 10 萬台幣左右。不是一般 Developer 都能這樣投資。(Bruce 說他存了兩年...)

我就在想。既然要飛出去太貴,但何不把整組講者搬到台灣呢?

所以最後我們就真的這樣幹!不惜血本的去邀請了十個亞洲地區的超一流國際講者來台灣。
(全國際講者。這好像是沒多少人幹的瘋狂舉動。)

時間和場地

這次的時間是刻意安排的,之前幾個亞洲地區的舉辦人就有聊到,大家應該把舉辦時間拉近一點,這樣講者比較好邀,機票錢也比較省。

所以時間就比較無恥的排在 Rubykaigi 後一週的 9/26, 9/27。很多不願意飛那麼遠過來的美國講者,就會「願意」順便飛過來。

而這次被稱讚「極盡霸氣」的場地「張榮發基金會國際會議中心」,其實是個意外的巧合。因為這兩天是個超熱門的日子,因為我們打算又辦 Conf 又辦 Workshop,在這個日子能符合的熱門場地不多,然後很不巧的都在我要下訂前一天或前三十分鐘被訂走。這個會議場地是我在絕望之餘,上網搜尋出的第一個還有空而且符合預算的選項。(而且非常空....XD)

我們之前根本不知道這個場地如此的完美、霸氣以及巧合。(場地一樓大廳就是超大的鄭和船,五樓是海事博物館,跟 Rails "Pacific" 極度切題)。我想辦在這裏一切就是天意吧。(場勘照片)

14969686487_9ec23caa20_o.jpg

十樓 Workshop 打開窗戶就是正對總統府的 View

689e83eda48b211a7ddd5bfe5910b76d.jpg

然後 Workshop 講者都玩起了對景福門的縮時攝影

食物

食物不用說一向是我的「超級」強項。因為我一向擔任公司的伙委。我對於食物的標準就是「一定要豪氣而且吃的爽」。所以菜單裡面很扯的會有「碳烤牛排」「醉雞」「清蒸深海比目魚」這種鬼東西。(一個人的餐費接近 600 元,外燴廠商還覺得我們叫太多菜了)

5c730e1a7f0a1dc72e81e2d0527808d5.jpg

45a2fdf8cc23be26db1625b61448d8bd.jpg

不過美中不足的一點小插曲是,因為我們在 Conf 前公佈了菜單,導致票又突然賣了十幾張。原本食物準備了大約 1.3 倍左右。因為人數爆增,然後大家又因為太好吃樣樣都夾,結果食物就變成「剛好夠」「所以吃的不太爽」 Orz

這是下次應該要考慮到的變數 XD

Wifi

我第一次簽約時,場勘還可以。而且場地宣稱有 100M 雙向光纖。本來算是放心。但還是有申請了中華電信一條 60M 備用。但是前一天場測的時候,現場狀況很不好,源頭 Router 乎快忽慢。於是我們就把原本的備案拿出來用。

因為我們之前有多次籌備 Rails Workshop 的經驗。Workshop 成敗很大的一個因素就是現場網路穩定度,過去我們測出來是一顆 Airport Express 可以撐 50-60 人的 session 分量打全場這樣。之前就有買了三顆給三個 Workshop 用。在第一天 Workshop 結束後的下午,我們把三顆 Airport Express 拆到主演講廳當 Repeater 串聯「擋看看」。

結果網路竟然無比的順暢。

講者 Prem 還稱讚這是他去過那麼多次國際 Conf,第一次用到網路是這麼順暢的,而且還是用蘋果 Solution硬幹的 XDDD

(如果你的 Conf 小於 200 人,下次可以試看看這樣惡搞看看)

售票與贊助

售票

票價採取了國際 Conf(接近)公定價:5000-7500。這是國際上一般 Conf 的價錢。不過因為但跟本地的票價有非常大的落差。為了讓參加者能夠有物有所值的感覺,所以第一天安排了 Workshop(因為通常一個 Workshop 差不多就是這個錢了)。

贊助

這次真的特別感謝 Tealeaf AcacdemyFaria Systems 兩位老闆 Kevin 和 Theo,第一時間聽到我要辦 Conf,就直接大方贊助(兩間公司就有21萬)。讓我們贊助部分省力不少。而且能夠把 Conf 內容加碼辦得更棒。

有人問為什麼我們贊助商列表沒有想像的長。這要特別一提的是,因為這次本來就打算這次就是要辦爽的,最多我個人可以多負擔到 30 萬。(因為講者預算拉了一下就要 30 萬)。所以在租場地、安排食物、買東西上,都是預算拉了 OK 就直接買,沒有在「節省」的。(我真的想知道辦一次這樣不可能的 Conf 到底要花多少錢,你可以覺得我是瘋子)

而當初是算了一下贊助拉到三十幾萬就可以幾乎不賠太多錢。於是當一次談完這兩間廠商確定經費夠用後,我們就不繼續跑了。(因為安排贊助商的後續 plan 也很累的,拉太多甚至會搞爆議程)

而當然最後讓人震驚的是,這樣霸氣的惡搞竟然預算還沒被執行完,於是 After Party 就決定加碼改去吃高級海鮮燒烤吃到飽 + 生啤酒喝到飽。(那時候估包一個酒吧大概要 5 萬,但是我手上還剩20萬沒花完,就豪氣一點決定包一個海鮮燒烤酒吧震撼一下!反正也才多 3-4 萬 XDDDD)

10628016_10152765143748552_3611857378492914077_n.jpg

10686843_10152765142813552_6939903072151966932_n.jpg

Panel Discussion

這次 Conf 有兩場 Panel:「Refactoring」與「Becoming senior developer」。

15173632477_5bf6f5a26e_k.jpg

Panel Discussion 應該可以說這次 Conf 的大冷門了,幾乎每份會後問卷都是 「Panel Discussion 太精彩了。你們怎麼會想出要辦這種東西?」「這次時間實在太短了,意猶未盡。可不可以下次時間延長一倍之類的」「可以的話,我想看他們一直吵下去不要停」。

其實當中的秘辛是...因為第一天下午辦 Workshop,但早上不知道要幹嘛,所以「Panel Discussion」是殺時間用的....XDDDDD

我在外國參加 RailsConf時,Panel Discussion 是我很喜愛的一個環節,RailsConf 有一次就是 Rails Core Panel discussion。原本這種活動可能一般人會覺得很無聊,但是要是與談人是一堆大神的話,那麼這種等級的對話可能會變得非常有趣,而且大神互嗆的內容還可以讓旁聽者學到超多東西。(這些內容通常是不會在 Slides 裡看到的)

所以這次安排議程時,我也想要有這個環節,所以加上去。但效果實在好到令人稱奇。

(這次也要感謝兩位主持人 KennethMark,事先跟講者來回對過幾次問題,才有這麼完美的表現。)

收支

收入部分

  • 門票部分:~42 萬
  • 贊助部分:~31.5 萬

支出部分

  • 場租:10.5 萬 ( 1.5 天劇場型場地 + 3 * 0.5 教室場地)
  • 講者機票:12 萬
  • 講者住宿:14 萬 (神旺飯店 4900* 3+)
  • 講者接送:0.6 萬 (計程車 + Uber )
  • Before Party:4.3 萬 (神旺飯店 2F 潮品集,套餐與港點)
  • After Party:8.8 萬 (好客高空酒吧海鮮燒烤吃到飽 + 生啤酒喝到飽)
  • 兩天食物(含早茶與茶點):6.6 萬 (飛仕蘭)
  • 大會錄影(優惠價)
  • 現場網路:0.6 萬 (中華電信 60M 光纖)
  • 雜支(網路設備,印刷,立牌,T-Shirt,臨時器材租用...etc.)約 4.5 萬

總支出大約是 67 萬上下。

老實說 Conf 辦到一半我們也很訝異這樣的數字(特別是還剩錢)。因為以往去其他 Conf,很多內容都是相當將就,食物吃不飽,演講聽租公家機關,但聽主辦者說可能還是會辦到差一點虧錢。於是我們就覺得這次根本就是惡搞亂花錢,鐵虧一屁股,虧個少於30萬就是萬幸了。結果像我們什麼東西都是一路霸氣到底,竟然還是至少有剩 5-6 萬 =_=。

實在讓我太吃驚了 Orz

其他心得

  • 這次讓工作人員很 Proud 是,蠻多講者和參加者都稱讚這是他們參加過最好的 Conf,Great & Very well-organized,第一次辦 Conf 能辦到這種程度真是很厲害。(而且這次一半以上講者都是該國的 Organizer,要讓他們講出這種話有難度)。(而且他們還偷問我們這麼誇張的 After Party,到底是需要花多少錢 XDDDDD)
  • 聽到 well-organized 蠻心虛的就是了。因為八卦是:到Conf前一個禮拜我們都還在擔心會不會大爆炸,印刷品包括識別證和T-Shirt都是Conf 舉辦前一天才「應該會寄到」。立牌差一點開天窗。場地找了好久才定案。飯店差一點訂到出包。etc.etc....所以這次也實在太出乎籌辦組自己的意料了!
  • 原來真的會有人看菜單來報名吃飯,多了十幾張票,害我們原本食物準備應該是夠的,結果差一點不夠。
  • 張榮發的服務超級無敵好,景觀與設備非常霸氣!推薦!
  • 參加者受到非常多國外講者帶來的知識與視野衝擊(這正是我們想做到的)。
  • 因為好幾個講者都在研討會上提到 ActionView 設計不合理的問題,於是會後講者決定跨國合作重寫這部分,會在 Rails 5 釋出。(真是讓人激動 & 與有榮焉)
  • 這次因為宣布到開辦,只有三個月的時間,又是第一次辦,所以宣傳和 Update 沒有做得很好。不過因為第一次搞這麼大已經做出口碑了(據說下次日本要組一個大團來參加下一屆)。所以下屆在高雄應該會搞得更盛大。
  • Panel Discussion 幾乎所有人的意見都是要增長,並且場次增加。
  • Workshop 很有收獲,但希望增加初學者場。

官方照片

https://www.flickr.com/photos/railspacific

官方錄影

我們有僱用攝影師,45 天後會釋出 Confreaks-like 版本。

不過會眾有槍版可以擋著先( https://www.youtube.com/playlist?list=PLvRovXx4tzas8CQtAKC5VeZpjPO7SH-uk ),但缺 Panel 的部分。

致謝

工作人員

這次我要感謝最多的是 Taipei Rails Meetup 社群當地的支援。這次的工作人員有:

  • xdite (籌劃,付錢,挑食物,拉贊助,簽所有的名)
  • 小蟹 (網路、雜務、導遊、拉贊助)
  • Kenneth (與所有講者的溝通往來,主持人)
  • Sdlong (食物大隊長)
  • Mark(主持人、導遊)
  • Bruce (Workshop 大隊長)
  • 鴨七(Workshop 組與講者邀請)
  • Walter (簽到工作人員)
  • Ruddy & Eugene (簽到工作人員)

(都是社群常客)

特別是 Kenneth,它包了幾乎所有講者的往來郵件與擔綱主持人的工作。有跟講者打過交道的就知道這是巨痛苦的工作,沒有他的大力幫忙可能 Conf 就開超大洞...Orz

贊助商

這次也要感謝所有贊助商的幫忙。有一些參加者稱讚我們這次 5000 塊的門票,真是「物,超,所,值」。但真實的情形,不是物超所值。而是每個人的成本根本就超過 5000 元啊 XDDDD 多的部分都是贊助商出的。特別是這些贊助商都是一聽說台灣要辦這樣的 Conf,二話不說馬上贊助。真的是超級義氣的!

參加者

還要感謝所有的參加者,Conf 門票是很真的很貴。也感謝大家願意相信主辦方,能夠捧場這樣的研討會。希望你們在這樣的 Conf 都有 Gain Something。

另外要 update 一下。(以免有參加者漏掉了我們的會後信)

我們打算送出明年的 10 張 RailsPacific 門票,資格是:

下一次的 RailsPacific 2015

下一次的 RailsPacific,是 2015 的 9 月,而且會是辦在「高雄」。

我們希望比這次辦得還要盛大,歡迎大家再度參加!

 
4 months ago

最近幾次上課同學都有問到 !? 的問題。因為已經回答三次了,覺得應該足夠做懶人包。

Ruby 中的 ! 與 ?

加在 method 後面,如 empty? 或 gsub!

在 Ruby 中,method 的命名,是允許後面加一個 !? 結尾。

一般的慣例是,如果

  • 設計一個 method 後面有 ?,如 empty?,表示回傳值「預期」會是 (boolean) true / false
  • 如果一個 method 後面有 !,如 gsub!,表示此 method 執行,「預期」會改變原物件裡面的值。

(如果你自己設計的 method,加 ? 其實不會自動轉 true / false,這只是一個「大家認為」「預期」應該的慣例)

2.0.0-p195 :001 > string = "ABC"
 => "ABC"
2.0.0-p195 :002 > string.gsub("A","a")
 => "aBC"
2.0.0-p195 :003 > string
 => "ABC"
2.0.0-p195 :004 > string.gsub!("A","a")
 => "aBC"
2.0.0-p195 :005 > string
 => "aBC"

加在變數前面,如 !current_user

! 前面表示相反值。

if !current_user:若 current_user 不存在

! 與 = 放在一起,如 !=

!= :就是 不等於

( current_user ) ? current_user.name : "Anonymous"

三元判斷式:上面這一段等於

if current_user
   current_user.name
else
  "Anonymous"
end

!!

!! 把該物件轉成 truefalse

2.0.0-p195 :008 > a = "a string"
 => "a string"
2.0.0-p195 :009 > !!a
 => true
2.0.0-p195 :010 > b = nil
 => nil
2.0.0-p195 :011 > !!b
 => false

Rails 中的 ! 與 ?

save 與 save! / create 與 create!

Rails 中的這兩組 save 與 create 與行為與 Ruby 的不太一樣。

其中 save / create,遇到過 validation 時,只會回傳 truefalse。但有時候我們要 debug 一個表單,有時候一直不知道為何表單為何沒成功一直 false,有時候會使用 save!create! 去 debug。這兩個 method 會 throw ActiveRecord::RecordInvalid exception 中斷程式。明確的告訴你壞在哪邊。

Rails 4.0 以前的 method?

在 Rails 4.0 以前的版本。若你有一個 boolean attribute 叫 is_admin。你可以直接在程式碼裡面呼叫 is_admin? (不需另外包裝)就會回傳 true / false

Rails 4.1 + 這個版本的 ! 與 ?

Rails 4.1+ 內建了方便實作類 state machine 的 enum 。!? 會自動幫你變更狀態和查詢狀態。

class Conversation < ActiveRecord::Base
  enum status: [ :active, :archived ]
end

# conversation.update! status: 0

conversation.active!
conversation.active? # => true

conversation.status  # => "active"


# conversation.update! status: 1

conversation.archived!
conversation.archived? # => true

conversation.status    # => "archived"


# conversation.update! status: 1

conversation.status = "archived"

# conversation.update! status: nil

conversation.status = nil
conversation.status.nil? # => true

conversation.status      # => nil


可以看到一些微妙的差別。


廣告:歡迎參加 亞洲首次的 Ruby on Rails 年會 - Rails Pacific 9/26-9/27。有亞洲全明星及講師以及多場實用 Workshop。 7/31 前報名早鳥票台幣 5000 元。請速搶購。

 
5 months ago

og-image.jpg

首先,要很高興的跟大家宣布,亞洲首次的 Ruby on Rails 年會 - Rails Pacific 要在台灣籌辦了!

時間會是在 9/26-9/27 (五、六)。在 RubyKaigi 的後一週。請大家幫忙宣傳這個活動。

這個 Conf 會是一天 Workshop、一天 Conf 的形式。我們邀請了幾乎是亞洲全明星級的 Speaker 來台灣做演講和工作坊。此次機會十分難得。敬請把握。

票價是台幣 5000 元。學生票是 3500 元(需附有效學生證,限碩士以下)。

大會網址:http://railspacific.com/

為什麼要有這個 Ruby on Rails 年會?

東南亞幾個國家的主要幾個明星級講者,甚至是 Conf 主辦方,其實都是互相認識的。大家聊天的想法,都是亞洲各國除了要有自己的 RubyConference 外,也應該要有一個共同的 RailsConference。

(美國有自己的 Rails Conference ,歐洲有 RailsBerry,北歐有 Frozen Rails ,就是亞洲沒有)

而各國的 Ruby Conference 當中其實非常矛盾的是:明明很多人職業是 Rails Developer,很多講題也是針對 Rails 為主,卻只能塞在不到一半的 Session 席次。我們希望有一個專門只談 Rails 的 Conference。

為什麼辦在台灣

  • 台灣在東南亞島鏈上是中心點,大家飛來這邊機票費用不容易爆炸。
  • 台灣的 Rails Developer (想學,其實正在用)的人,其實在東南亞比起來算很高的。

我常常參加世界各地的 Ruby / Rails Conference,常跟世界各國 Rails、與國外想找 Rails Developer 的公司打交道之後。我發現幾件事:

  • Ruby on Rails 的需求量,永遠都處於大量缺乏人才的狀況。
  • Ruby on Rails Developer 薪水非常的高。
  • 台灣 Rails Meetup 的參與人數,在世界上比起來是非常高 active 的社群 ( 20-40 / per week, 40-100 per speech )

但問題是,即便台灣有這麼多想學且正在用的 Rails Developer,卻不知道「世界上哪裡有 Rails 工作」,哪裡有外國公司要找 Rails Developer,只能被動的等其他公司來台灣找人。

所以我們想辦一個 RailsPacific,把這個線牽起來,讓台灣成為 Rails 社群在亞洲的 Community Hub。

Conference 內容

亞洲的 Ruby Conference 多半集中在當地 Ruby 的應用(一半),以及一些 General 的 Rails 設計技巧(一半)。講題數量被壓縮,且整體 Rails 的 track 相對於 RailsConf(美國談論)的主題和水準是有差距的。

我們希望要辦就辦一點轟轟烈烈的,在亞洲就把水準拉上去。而且讓大家不必花大錢機票飛到美國去,在亞洲就能能吸收到這些經驗,學到這些技巧。

因此 Conf 的內容我們會集中在以下相關議題:各國的大型 Rails 網站的維運技巧。Rails Developer 如何自我成長。各國的社群籌組交流。學習 Rails 的進階的議題:如 Rails Internal 架構解析,如何 follow edge Rails,網站架構設計實戰等等...

這些一般很難在亞洲 Ruby Conference 出現的議題。

關於講者

Rais Pacific 這次請到全為亞洲全明星的陣容。為各位介紹一下陣容:

三位 Rails Commiter ( All times #21, #27, #34 )
  • Ryan Bigg : (大洋洲:澳洲)知名 Rails 書籍:Rails in Action 3 的作者,2011 Ruby Hero Award,Rails core commiter #21。
  • Akira matsuda : (亞洲:日本)知名的日本 Rails core commiter #27 ,Asakusa.rb 的創辦人。曾在 RailsConf 演講 Rails Internal 的主題。
  • Prem Sichanugrist : (亞洲:泰國)知名的泰國 Rails core commiter #34,在 thougtbot 工作,曾在多個 RubyConf 演講 Rails Internal 的主題。
六位明星級講者
  • ihower: (亞洲:台灣)台灣 RubyConf 創辦人,Rails Best Practices 作者
  • Shibata Hiroshi:(亞洲:日本)日本的 Ruby Commiter,在 Paperboy 公司任職,擅長大型網站運營經驗,且對設計架構、調校、追 Edge Rails 相當在行。
  • Richard Lee : (亞洲:台灣)iCook 創辦人兼 CTO,iCook 有多威大家都知道了
  • Christopher Rigor (亞洲:菲律賓)Engineyard 亞洲區 Application Support Team 的頭,Rubyconf PH 的主辦人
  • Nick Sutterer (德國,現居澳洲)知名 Gem : Cells, Reform 的作者
  • Ding Ding Ye (亞洲:中國)RubyConf 2013 籌組人,敏捷項目管理工具「風車」的創辦人。知名 Podcast:Teahour 的創辦人與主持人。

為什麼一天是 Workshop

我們去過一些 Conference,發現若「只」舉辦 Conference 其實是對聽眾較不足的。

  • 不會所有議題都有興趣聽,有時候會跳過
  • 動手比較能記住東西

所以有時候去一個 Conference,記都記不得這次聽過什麼

而這次我去 RailsConf,有一軌就是單純只開 Workshop。而大家對於這屆 Workshop 的水準讚不絕口(甚至有從來沒在市面上出現過的整天 Elixir Workshop,教得超經典超贊的,光這個 Workshop 就值得那張門票了...)

我們做過調查,發現大家在日常工作,或是來聽 Conference,有幾個議題是在亞洲大家都想學,也比較弱的:

  • TDD
  • Refactoring
  • Object-Oriented Design
  • Performance Tuning

這些議題很難用一兩個 session 講完,而且這些投稿 session 通常也是一些 tips 的集合,聽完也缺乏實作機會,不知所以然。而國外有這些的實戰 Workshop,但學習這些技巧,不僅要自費飛去,而且門票也不便宜(約 700-1500 USD)(還要加上機票約 1200 USD)。

在實際運作社群的時候,我們發現 Workshop 才是有效能夠提升 Developer 技能的活動。因此也希望在這個活動,舉辦 Advanced 級的 Workshop。一舉能拉昇提升亞洲地區普遍的 Rails 實力。

為什麼門票這麼貴?要 5000 NTD

其實,世界各國的 Ruby/ Rails Conference 價格都是都是大概介於 150-750 USD 左右的價格。比如說

  • RailsConf 22500 台幣
  • Reddot Ruby Conf 5000-9000 台幣(按照購買時間)
  • RubyConf PH 6000 台幣
  • RubyConf AU 14000 台幣

我們希望在台灣辦一個讓國際認可的高品質國際研討會。同時藉著這個 Conference 能夠打開台灣的 Rails 國際知名度以及同時提升亞洲地區的開發實力。所以邀請了很多亞洲頂尖的高手來台灣參加這個盛會,想辦好這種等級的 Conf 經費就容易墊高。

而這個價格:含了一天的 Workshop 以及一天的明星級講者演講。說實在 5000 這個價格也並非算高(一個 Workshop 就值回票價了)。

通常如果你要參加這種等級這種講者的活動。往往需要的費用會是: 15000+ (機票),10000+ (住宿),5000+ (Conf 門票 )。

在 7/31 前門票會是 5000, 8/31 前門票會是 6000,之後是 7500。

你們在 Conf 期間還會有什麼活動?

  • 我們會廣邀美國以及亞洲對 Hiring Rails Developer 有興趣的的公司進行 Recruiting 的 Event
  • 期間應該也會有初階的 Workshop 會舉辦

請用力轉帖

希望大家踴躍參與 Rails Pacific 這個年度盛事,以及轉貼給對 Rails 有興趣的 Developer 知道有這個活動,這個講者陣容以及演講內容非常的難得。在亞洲其他國家也幾乎沒有出現過,請把握機會。

 
5 months ago

這是剛上過這個 Workshop 的學員心得與筆記。

如果你很需要這方面的專案滅火訓練,歡迎報名七月班,早鳥報名(折扣 NTD 1500) 到 7/10 晚上截止。

若有五人以上的公司團報需求。請來信洽 hello@rocodev.com

 
5 months ago

為什麼我覺得 User Story 是學會專案控制很重要的一環。是因為我發現長久以來,很多開發者 do project management the wrong way。

事情做不完的根本原因是很難分清楚:手頭上的東西是「異想天開的想法」「也許改天再做也可以的想法」「真正對專案有重大貢獻的想法」還是「完全不需要實作的想法」。

在不把「真正對貢獻的想法」以及「真正對專案有重大貢獻的想法」梳理出來之前,你不可能知道在給定時間內,有多少資源讓自己能夠準時交付對專案有貢獻的 code。更不可能知道,在時間緊迫之下,哪些「想法」是可以被無情地刪除的。

因此專案延遲是相當正常的。

在最近上課後跟學員交流之後,我更從互動中發現,為什麼有些公司導入 Scrum 會失敗,是因為到 RD 手上的時候,其實 Ticket 都已經被切好。而這些 RD 是在「完全不知道原始故事長什麼樣的狀況」的情境去實作這些 Ticket 的。所以就容易做出歪掉的產品,而因為歪掉,就會在 Acceptence Test 被打回去。

許多 delay 或做歪的專案,問題都在原始 requirement 或 goal 並沒有被專案中負責執行的人好好理解,然後再化之為能夠執行的 Tickets。

而 Issue Tracking System 也淪為「掛想做的任務的工具」,而不是「管控」「應該被做」的「管理任務工具」。

在此前提下,更不可能將專案所收斂。

把該做的事情分離出來

所以如果要真正貫徹 Agile。第一件事情就是要把「該做的事情」好好的分出來。

以此為出發點。再去學如何做 Story Valuation,Velocity,Priority 管控。

在這過程中,後續使用更多的 communication tool 、collaboration tool、continuous delivery tool 排除協作中所會遇到的障礙。

然後,你才會開始看得懂: 那些敏捷開發的書到底在講什麼。哪些你可以用,哪些你不需要用。為什麼 scrum 某些方法 work,哪些方法不 work。

為什麼你花時間讀完一本 scrum 教科書,你的團隊卻還是敏捷不起來。

我想真正的關鍵在這裡。

 
5 months ago

這是剛剛在社群頻道上閒聊的結論。

因為我最近在教 Rails 進階班,都用 Github Pull Request 在收學生作業。

作業進度無所遁形

這個方法非常有效率,因為:

  1. 有效掌握學生何時交作業,避免理由伯。
  2. 可以讓助教線上共同批改。
  3. 學生可在 pull-request 直接發問。
  4. 可互相參考解答。

容易檢驗抄襲

所以我想大學資工系其實應該也可以比照辦理才是?比起之前用 FTP 上傳,這個方法實在有效率太多了,而且也可以驗證學生是不是自己寫的。

  • 如果是自己寫的必有 commit log
  • 就算參考其他人的解法也沒關係,起碼 (1) 他有辦法學到怎寫作業 (2) 抄襲者還是可以用 CI Server 做批改魔挑出來打 0 分。
  • 容易設定死線

逼迫大家共同作業

更進一步的用法我還想到,可以用 Gitbook 寫課程共筆或共同寫期末報告。

這樣同組誰偷懶就一目了然。而且還可以訓練用 git co-work 的能力。

培養未來競爭力

而且 Git 現在幾乎是軟體開發界、寫作電子書界、參與開源專案必備的技能。

讓學生直接贏在起跑點上,應該是可以稍微扭轉一下台灣軟實力的劣勢。

學習資源:

至於哪裡可以學使用 Git?教 Git 會很難嗎?

Code School 已經寫了一份免費的 Git 教材 Try Git 。老師連準備教材的時間都省下來了...XD

update: 密西根大學有老師今年也這樣收作業:http://ivory.idyll.org/blog/2014-teaching-undergrads-with-github.html

 
5 months ago

因為在編教材,覺得這很基本也很重要。所以特別來出來寫。

helper_method

在 controller 裡面的 method 不能在 view 裡面用。

也就是在

class ProductsController
  def find_cart
    @cart = Cart.find(session[:cart_id])
  end
end

View 裡面不能用

   <%= find_cart.items %>

拉這個 cart 出來直接用。

如果你要在 controller 和 view 都能拉現在的購物車,必須要用 helper_method 宣告這是一個 controller 級的 helper。

class ApplicationController
  helper_method :current_cart
  def current_cart
    cart = Cart.find(session[:cart_id])
    return cart
  end
end

這樣你就能在 View 裡面用 current_cart。

   <%= current_cart.items %>

或者是 Controller 裡面也能用 current_cart。

class ProductsController
  def add_to_cart
    find_cart.items << @product
  end
end

view_context

在 helper 裡面的 method 不能在 controller 裡面用。
也就是在

class ProductsController
  def show
    @page_description = truncate(@product.desc, :lenght => 50 )
  end
end

是不會動的。

如果要在 controller 裡面取用系統內建的 Rails View Helper,或自定義的 View Helper。
必須要用 view_context 去調用。

class ProductsController
  def show
    @page_description =  view_context.truncate(@product.desc, :lenght => 50 )
  end
end

小結

但基本上還是建議在 View Helper 與 Controller 的 code 不要互相混來呼叫來呼叫去。讓 View 歸 View,Controller 歸 Controller。若真有業務上的需求需要「到處都可以用」。建議寫 Module 掛在 lib 用 mixin 技巧混入。

 
6 months ago

這是剛上過這個 Workshop 的學員心得與筆記。

如果你很需要這方面的專案滅火訓練,歡迎報名六月班,早鳥報名(折扣 NTD 1500) 到 6/10 晚上截止。

(五月班)

 
6 months ago

Intro to Rails Workshop X COSCUP BOF ( Taipei #02)

首先,我要先宣布 Intro to Rails Workshop Taipei #2 會將在 7/19(六)舉辦!

報名網址在:http://tw-rails.kktix.cc/events/rails-outreach-taipei-02-coscup

時間地點在 7/19 (六)COSCUP 的 BOF 時段與場地 ( 18:30-22:00),這次我們開放名額為 60 人

因為上次 #1 的 workshop 有人抱怨說臨時宣布結果名額報不到,因此這次報名時間是從 6/4 (三)10:30 開始,請大家明天早上準備好開始搶票...。這次也一樣需要地方的教練支援,教練報名網址在此

Building Rails Workshop ( COSCUP 演講)

另外不管你是 Ruby on Rails 社群的朋友,或者是別的語言社群想辦 Workshop 的朋友,我在 COSCUP 7/20 (日)14:10 - 14:50 會有一場 Talk,分享辦 Rails Workshop 與推廣 Ruby on Rails 的經驗與技巧,歡迎各位參加!


RailsP2P program

第二件事就是這個令人興奮的 RailsP2P program: http://railsp2p.tw 。(學習機會與教練媒合平台)

10419933_306479536178221_881628148_n.jpg

在籌辦過三場 Workshop (北中南)之後,我們發現 Ruby on Rails 在台灣教學的需求非常非常的猛烈。從社群幾次 Workshop 報名的速度以及我的著作 Rails101 的銷售數字。我們估出了大概全台灣現在有興趣入門學習轉職成 Rails Developer 的人大概有 1000-2000 人左右。

學習 Rails 並順利轉職目前有三個階段:

  1. Intro to Rails (了解 Rails 基本架構與環境)
  2. Basic Rails Development ( Rails 基礎開發技巧與結合 Gem 開發功能、簡單的 deploy, see Rails101 as example )
  3. Intermediate Rails ( Rails 程式實戰開發 / 軟體規劃能力 )← 求職標準

我們發現一個殘酷的現實:即便再怎麼努力辦免費的入門 Workshop,一場以 40 人為計。我們就算一年辦 20 場,都消化不完這個需求(且每辦一次 workshop ,主辦單位都要至少招募 10 個以上的助教)。

如果要能有效地推廣 Rails,那我們應該要做的不是把開 Rails Workshop 的責任攬在主辦單位身上,而是把機會開放給每一個社群開發者:

最後,我們想出了一個遍地開花計劃:

RailsP2P: http://railsp2p.tw 。(學習機會媒合平台)

教練資格

如果要讓大家能夠更快更容易的得到學習 Ruby on Rails 的學習機會,社群不應該把 Rails 的教學資格壟斷在某些人手上,取而代之的應該是的創造點對點遍地開花的教學架構。

經過評估測試過,目前的 Workshop 教練需求條件:

  1. 學習 Rails 超過三個月的時間有能力教 Intro to Rails
  2. 學習 Rails 超過一年的時間有能力 Rails101

透過 RailsP2P,人人可以上網找 Rails 教練,不管你住在台灣的哪裡,都有辦法得到 Ruby on Rails 的現場指導機會。

讓想學 Rails 的開發者,指定想學習的教材與時段,刊登需求聘請私人 Rails 教練一對一的教你(各地都可以)。

刊登學習步驟:

螢幕快照 2014-06-03 上午8.38.50.png

  1. 上網填寫你的學習需求
  2. 登記所在地 (在台灣的哪裡)及有空的時段
  3. 有興趣的教練實際聯絡進行教學

目前我們建議課程所學習的時間以及學費是 Intro to Rails : 4 hr (NTD 2000-4000)。Rails 101 : 8-10hr ( NTD 5000-9000 )

教練聯絡學員步驟:

  1. 上網看到有興趣的 case,進行應徵
  2. 登入 Github 帳號填寫簡單自我介紹以及背景
  3. 學員若對您感到興趣會寄信聯絡
  4. 雙方交換聯絡方式以及教學模式 / 地點 / 時段

人人都可以加入 Rails 教學的行列

這個需求刊登平台,從一開始就是為了解決各地的學習與教學需求而生,現在不會收仲介費,未來也不會收費。而且我們社群希望利用這個平台創作出新的職業契機:

很多 Rails 開發者在抱怨想回鄉工作,但家鄉卻沒有好的工作機會。有了這個平台,在家鄉教 Rails 也可以是一種職業機會。我們的台南社群朋友就開玩笑說:太爽了,這樣台南區的教學機會就都是他的了,藍海市場,幾乎沒人跟他搶 XDDDDD

想賺外快嗎?你可以嘗試一個月晚上教幾場 Rails,一個月下來的學費也有幾萬塊,不無小補。

希望 RailsP2P 可以創造一個人人有功練,人人有錢賺的正向學習環境,歡迎各位加入 Rails 學習 / 教學的行列

 
6 months ago

首先,感謝各位三年以來的支持。

為了讓更多人能夠學習 Ruby on Rails,加速 Ruby on Rails 推廣教育地進行。我決定將 Rails 101 的價格調降到 0。

螢幕快照 2014-06-03 上午7.16.38.png

購買連結還是以下這兩個網址

但從今天開始,你可以在 leanpub 上把價格調為 0 元,免費取得這本書

當然,練習完畢如果你覺得這本書有用,可以再重新付費給我。

Github Repo 在此:https://github.com/xdite/rails-101

 

My Books

  1. #1 Rails 101

    Buy Rails 101
  2. #2 Maintainable Rails View

    Buy Maintainable Rails View
  3. #3 Lean SaaS

    Buy Lean SaaS