# 參加ETH Taipei Hackathon經驗 ## 參加緣由 以前沒參加過Hackathon, 在中年轉職階段為了學習區塊鏈開發,參加了Kryptocamp的工程師實戰營,學習過程班主任及講師都鼓勵參加Hackathon,當時就憑著初學的熱情就開啟了人生第一次的Hackathon之旅,雖然還在上課和寫作業只有不到2週的時間專注在Hackathon,三人小組的合作出的成品還是取得上台發表的機會雖然沒有得到獎金但很值得,現在回想起來Hackathon不但可以應用學到的技術而且為了做出一個成品還會學到更多的技術和知識,還有像開發一個新的產品專案一樣有小組討論、規劃、設計、開發、測試、文件和發表等過程的經驗積累。 這邊就我參加後的經驗記錄與分享, 主要分成專案、團隊合作、開發、文件、發表等項目來分享。 [Demo video](https://youtu.be/WiHAdbOt8Mw) ## 分項說明 ### 專案 1. 第一步先閱讀Hackathon的說明和規定,要看一下每個Team最少和最多可以有多少組員,依組員的技能選擇可以參加的項目,每個Hackathon裡都有不同項目可以參加,各項目的規定和獎金都不同,例如要佈到那個鏈上才有該項目的參加資格,**專案名稱最好和要參加的項目相關**。 2. Hackathon有線上參加或是提供場地,若有提供場地也要確認場地的開放時間,場地是否有供餐或點心也很重要,若不供餐則要先規劃一下用餐的地點。 3. 需要確認時程特別是專案申請、開發時間、文件繳交、Demo day等各項時間點,最好可以自已列一個簡單的時程表,在Demo前應該要先確認時間及演練。 4. 專案內容填寫是一個重要的項目,專案描述和專案團隊的介紹可以參考一下其他專案,並加入自己喜歡的元素和特色。 5. Hackathon應該會有Discord可以加入,加入後要先去看看每個頻道裡和這次Hackathon有關的訊息。 6. 每天都要看個幾次專案網站和Discord上公告或是重要訊息的發佈,Discord上常常會有很重要的訊息發出要注意。 ### 團隊合作 1. 既然是團隊合作當然要先找到組員,可以看完Hackathon的內容後再找組員或是依組員能力選擇參加項目,也可以挑戰沒試過的內容讓團隊能力提升。 2. 需要有一個組員注意Hackathon的訊息,不管是網站的資訊或是Discord的訊息,在要繳交任何資料的時候要趕快通知組員收集資料後繳交,依我的經驗這個工作很重要不但是需要花很多時間也會關係到整個團隊權益。 3. 開發有DApp和Smart Contract,若有後端或IPFS連接等的工作都要和組員協調,每個工作都最好設定一個交期,交期最好每三分之一的時間就讓大家看一下進度,這樣若需要其他組員幫忙或是討論修改設計才有時間。 4. 需要有一個人瞭解整個專案的使用流程,這個人可以進行整合測試和最終測試,然後把測試的圖片或影片等資料資訊收集成文件,當成是展示的初步資料來源。 5. 組員的技術能力當然是愈多愈好但高手難求,善用現有的組員能力和組員的成長能力是一個重點,大家可以在前面的Hackathon中累積的能力在下一個Hackathon裡發光。 6. 團隊裡最好有1或2個人是可以快速幫忙解決問題或是補位的人,這樣有突發狀況的時候可以快速反應和修正。 #### 依照上面的說明列出一個四個人參加的範例,真實狀況可以把不同項目再重組搭配: | 組員 | 準備項目 | | -------- | -------- | | A | 確認Hackathon、Discord的內容和訊息,專案內容撰寫及資料文件整理,發表的事宜和大會溝通和協調,支援開發 | | B | 前端和Smart Contract開發程式、單元測試,準備App和QR code連結,發表準備 | | C | 後端開發程式、IPFS資料整理、單元測試,準備測試資料 | | D | 使用流程設計及整合測試,確保測試幣夠用,支援開發,發表準備 | ### 開發 1. 一開始設計的討論應該要討論到最終成品的80%的使用情境,因為在做的時候可能遇到問題一時無法解決就要應變,可能就要修改部份的設計。 2. 開發的時候要注意每次開發都要持續備份,這是為了保持大家的寶貴的資產。 3. 如之前說的開發儘量快速寫出功能但畫面的美化可以後面再處理。 4. 要估計一下剩下1/6的時間來修改和美化畫面和準備文件和Demo,例如有3天每天12小時aka36小時,在前面30小時就把所有功能都做完,剩下6小時就是要準備Demo了,最後6小時雖然還是可以調整但幅度就不能太大以免來不及準備Demo。 5. 如果有新的想法記得要先和組員討論完再進行開發實作,這樣可以減少組員間的摩擦,所以每天1~2次的同步是必須的甚至次數會更多。 ### 文件 1. 最重要的是必須確認Hackathon對文件的規定,像是繳交PPT、影片、展示網址、鏈上地址、Github等。 2. 說明問題和解決的概念,這部份要盡量找網上資料來佐證。 3. 內容盡量充實並要要參考文獻或參考網站等,引用別人的程式庫也需要說明免得變成抄襲事件。 4. 應該要有致謝章節適量提到贊助和資源提供,但不宜過多強調。 5. 最好是有使用情境的概念圖、架構圖和使用流程圖等,便於說明及閱讀。 6. PPT大約10頁左右即可,範例如下表: | 內容 | 頁數 | | -------- | -------- | | 首頁 | 1 | | 專案簡介 | 1 | | 問題與解決概念 | 1 | | 解法或改進說明 | 3 | | 問題解決程度或達成成績 | 1 | | 結論 | 1 | | 參考程式庫或網址 | 1 | | 組員介紹 | 1 | ### 發表 1. 因為國際性的發表需要用英文,應該先準備英文版的PPT和逐字稿,雖然不一定要照著唸但用逐字稿多唸幾次會比較容易說得出來,不要現場操作系統以免臨時遇到網路或鏈的問題導致無法說明,若想要展示只要展示最精華的重點就好。 2. 發表前要先和組員演練一次,看是要幾個人上台說明,而且很重要的是**注意發表時間先講重點**。 3. 我的經驗是最好2~3人上台,因為上台會比較緊張所以當講完台下有人提問時還有人可以幫忙。 4. 上台前組員間要想一下可能會被問到什麼問題,最好是有準備會比較容易應對。 5. 上台前要和大會的人先確認過上台順序和注意事項。 ## 改善與優化 當時提交的專案如下圖,在看過別人的專案後發現有幾點可以改善: 1. 專案的描述可以列表方式,說明對問題改善點並提供數據(如果有的話) 2. PPT應該多一些圖形和美化 3. 展示畫面也要再美化 ![](https://hackmd.io/_uploads/HkAzCTTB2.png)