PyCon TW 2021 籌備與參加心得

Posted by Matt Wang on Sunday, October 10, 2021

2019 以贊助商身份幫忙顧攤,2020 成為開發組志工,而 2021 是第三年參與 PyCon TW,也是我首次擔任軟體社群志工團隊的幹部。

As an Attendee

今年依舊是沒花太多時間在演講囧(心理仗著錄影之後會在 PyCon TW 的 YouTube channel 上釋出就想偷懶 XD),有認真聽的大概只有 Keynote speeches 和幾場和網站開發相關的講題,但活動參與的深度和前面兩年相比還是高出不少:

逛贊助商攤位

逛贊助商攤位大概是我在會期期間收穫最多的活動 XD,幾乎所有贊助商都有在攤位上釋出職缺相關消息(有不少贊助商表示在攤位投遞的履歷內部處理順位會優先於一般投遞管道),身為一個專業的失業仔當然是各種問爆,Gather Town 各攤位上氣氛也都蠻輕鬆的,除了各種 reverse interview 以了解一些產業資訊外,也可以大致從聊天過程中略知公司風氣。部分贊助商(如 Appier)也直接在攤位上辦 tech talk 來分享內部使用了哪些技術、解決了怎樣的問題,就算沒有求職需求也是很值得一聽。

Open Space: Python 官方文件正體中文翻譯計畫

Open Space 是 PyCon TW 會期期間的一個聚會活動,其實就像是個自由聊天的場合,有什麼想聊的主題都可以報名、在 Gather Town 上佔一個攤位,參加者也是直接在 Gather Town 上現身就好了,今年主題從疫苗、教育、法律到創業都有

我在今年六七月左右加入Python 文件繁中翻譯計畫 ,也從 PyCon TW 網站組志工拉了一些朋友來幫忙,至今幾乎每個月都至少有一次專案聚會。不過有在穩定貢獻並參與聚會的志工還是不超過十個,在推動進度上還是蠻辛苦的,所以大夥就決定把十月的聚會和 Open Space 合辦,順便以聊天之名行招募之實,雖然大部分時間都在喇賽但最後還是有拉到一名翻譯志工,真是可喜可賀 QQ。

Open Space 會場一隅,翻譯計畫的攤位是圖中左上角那個XD。

Open Space 會場一隅,翻譯計畫的攤位是圖中左上角那個XD。

Sprint: Apache Airflow Workshop

Sprint 是 PyCon TW 安排在大會正式會期之外的一個為期一天的免費活動(和 Scrum 中的 Sprint 沒什麼關聯XD),目的是讓開源專案貢獻者們有個一同開發、交流和認識朋友的機會,project 列表可以事先在大會提供的 HackMD 文件 上找到,舉辦形式可能是 (1) 專案成員聚在一起專注開發或是 (2) 專案負責人帶著新手開發者認識專案並嘗試解掉 issues,而我參加的 Airflow Workshop 就比較偏後者。

Workshop 由Jarek PotiukAirflow PMC member TP前 PyCon TW 主席、Airflow 開發者 來帶領。上午時段主持人介紹了 Airflow 專案並協助大家將開發環境跑起來,下午開始就讓參加者自由發問或是去挑個 issue 來解,當天就有五個來自這個 workshop 的 PR 被 merged。

Jarek 在 Gather Town 上介紹 Apache Airflow。

Jarek 在 Gather Town 上介紹 Apache Airflow。

不僅能對 Airflow 這個世界知名的專案有基本認識,遇到問題還有核心開發者可以當場解答,真的是個很讚的活動!沒用過 Airflow 的我也是在茫茫 issue 海中挑到一個軟柿子 來解,當天發完 PR 直接讓兩位主持人 review & merge,讓我以後可以嘴說我是 airflow 貢獻者 XD,值得發個推道謝和紀念一下。

As a Volunteer Developer

經歷組織架構的改變

我所在的網站組為開發組底下三個小組之一。在 2020 年以前,PyCon TW 負責開發相關任務的組別只有一個開發組,而將開發組拆分成以下三個小組的計畫在 2020 逐漸成形、在 2021 正式開始:

  • Data team: data-driven 幫助各組下決策,也提供了結案報告上的各種數據,幫助大會留住贊助商爸爸媽媽們
  • Infra team: 開發各種減少各組志工重複性任務的工具(e.g. 批次發信、議程影片上傳等,詳情請見這份文件
  • Web team: 官網和投稿與審稿系統的開發與維護(tech stacks: Django, Nuxt.js, GCP)

今年各組職權分工更加明確,網站組真的就只要顧好網站(不用像去年開發組守備範圍超級廣 XD),開發組成員也更加多樣、不再侷限於前後端,志工團隊中也能夠更系統化的在中推動各項事務。

盡力降低開發成本

老實說網站組的任務大概是一個 senior full-stack engineer 全職可以扛得住的量,tech stack 也沒有太複雜,但所有 PyCon 志工都是無償付出,社群成員 churn rate 也大多比 full-time job更高,所以開發成本理想上最好降低到每個志工都能快速上手、盡快開始貢獻的地步,因此今年初訂定了一些相關目標(refactor legacy code, smoother CI/CD, website archiving, etc)。

其中最大宗的任務就是將原本網站架構 (mono Django) 改為前後端分離 (Nuxt.js/tailwindcss + Django/DRF)。多數網站志工反應剛加入團隊後都有經歷一段理解不能的痛苦時光,原因除了原本的 Django app 近年越趨複雜,主要是大多數任務需要負責的志工具備基本全端知識(常發現本業是後端的志工 A 不懂 SCSS 怎麼改、擅長前端的志工 B 不知道 Django 怎麼用,A & B 都看不懂 Django template 在幹嘛,然後他們就漸漸淡出志工團隊了QQ)。幸運的是我們在第一次組內會議就有討論這個問題,加上為了更方便的 SEO/i18n 設置,在春節前就確定改走前後端分離並完成基本架構雛形,今年合作與開發上也明顯變得更順暢。

不過這一年的感受是,要同時完成網站開發需求與回頭解那些卡卡的地方實在太血汗惹QQ,還有許多不夠完善的地方,目前是期許自己在 2022 能繼續完成這些目標,讓當年度網站組專心完成滿足各組所需的前後端開發任務就好。

有達成好好學習前端的小小心願

在今年以前我都是個前端智障,總覺得(和後端相關知識相比)前端的技術塞到腦袋後都很快就揮發,而且到去年還在請我的好同事 Flynn 教我最最最基本的前端知識 ,但一直以來其實都期許自己能懂一些前端技術、與前端工程師溝通可以更順暢,所以在 PyCon 遇到這個學習機會當然就被強迫要好好的把握了。學習一個現代前端框架的基本概念、學著用 Tailwind CSS、試著實作 components (e.g. card, modal , tabs )、嘗試和 designer 討論合作、認識 SEO/i18n 等,對我來說都是完全新奇有趣的嘗試,就算和職涯發展無直接相關,但還是覺得這段學習經歷非常值得!

學著如何帶 team

這是我自己當初決定接下 team lead 的主要原因,雖然在社群志工團體內帶 team 和在公司內部帶 team 有著巨大差異,但對我來說還是個難得的學習機會。今年有幾個要點:

  • 確保成員都有學到自己想學的東西:我認為這是社群志工最基本的需求,要在工作之餘繼續開發真的是很累人,如果接到的任務還是自己不喜歡的應該會更加痛苦,所以在分配任務之前都有確保這是志工想要有興趣接下的,就算過了幾週後發現無法勝任或工作突然忙碌不能繼續接也不會勉強。
  • 分配任務&追蹤進度:為了在如期交付的條件下達成上述目標,大多數任務會在 deadline 一個月前就找好負責的志工,並每隔兩三天就會去關心一下進度,非常緊急或難度極高的任務才會交給少數幾位經驗較多的成員負責,剩下那些對志工沒什麼學習價值的瑣事我會盡量自己撿來做。
  • 兩週舉辦一次聚會:在籌備期間網站組舉辦了約 20 次聚會(大多在咖啡廳,疫情警戒期間轉為線上聚會),我會在每次聚會前追蹤所有成員的開發進度,聚會前半段我會 go through 正在進行或待認領的任務有哪些、團隊進度為何、志工月會宣布了哪些事,後半段就讓大家自由問問題、聊天打屁或一起寫 code,但重點其實是聯絡感情。

這樣的合作方式算是有點緊迫盯人,自己其實很怕有志工會忍受不了就離開,幸好今年團隊成員每個都能打,最後收到的回饋也都蠻正面XD。

網站組成員來自四面八方 (Pinkoi, Shopee, TSMC, IBM, Inventec, etc),就連目前失業的都有(就是我QQ)

網站組成員來自四面八方 (Pinkoi, Shopee, TSMC, IBM, Inventec, etc),就連目前失業的都有(就是我QQ)

Summary: 把社群當作技術練習場

剛開始單純想認識一下軟體社群在幹嘛才加入 PyCon TW,但這兩年參與志工籌備收穫遠比想像的多:在軟體技術上,因為網站組用到的 tech stack 和我正職工作用到的可以說是完全沒重疊,可以玩到很多平常沒碰過的東西(而且 OCF 還會幫忙出 GCP 費用),今年擔任小組長也是對我個人 soft skill 的培養;而這些學習經歷比起以營利為目標的開發又有更多一些的容錯空間、有機會認識新朋友並瞭解其他產業的動向也開闊了眼界。

工商服務 – 志工招募

如果剛好有人看了這篇文章後想更近一步了解 PyCon TW 或甚至有興趣成為 PyCon TW 志工的話,以下連結也許有點幫助:

misc

今年網頁設計師決定要把志工的大頭照放到工作人員頁面 (也許是學 COSCUP?),這頁面的實作是最無聊又最花時間的(都花在裁切大頭照和比對各組名單…),但這頁可能是接收到最多來自志工正面評價的一頁 XD,另外也可以在這頁面上發現志工中貓奴比例頗高(我也曬了一隻肥貓 ❤️)!

Reference