2023年10月10日 星期二

從 Frontend Engineer 轉到 Feature Analyst 的一週年心得

TL;DR 總結論

使用 as a - I want to - so that I can 的格式撰寫 user story,就不容易漏掉開發時需要的背景資訊,可以節省工程師反覆追問使用情境的時間

使用 cross-functional process flow 的格式繪製 user journey,就不容易漏掉 happy path 以外的操作邏輯,可以節省工程師反覆確認產品行為的時間(感謝強者前同事 19 教我這個招式)

使用 given - when - then 的格式撰寫 acceptance criteria,就不容易漏掉驗收時需要一併檢查的先決條件和分支路線,可以節省功能交付後才回過頭來東敲西補的時間

把 acceptance criteria 變成自動化測試的 test cases,就不容易記錯預期的產品行為,可以節省工程師翻閱 source code 回答 PM 問題的時間,也可以降低重構時把既有功能搞壞的機率

去年中的時候,也就是我轉職前端工程滿四年無法再藉由自稱菜鳥來逃避責任的時候,因為團隊裡寫規格的人手不夠,開始兼任文件寫手的工作

團隊成長的代價

轉職前端的頭兩三年,團隊很小,PO、QA、客服由同一條龍同一位同事擔任,任何事情問他就能得到最終答案。因為有這麼一個會走路的 single source of truth,開發過程中幾乎沒有寫文件的必要,同事從客戶那邊帶回新需求時,會找前後端一起討論,我出 wireframes 確認以後,大家就各自散開寫 code。當時這個以一條龍為祭品 conversation over documentation 的模式,從工程師的角度看,覺得運作得蠻順暢的

後來團隊跟著產品一起出售,來到一間比較大的公司,產品變複雜分工變細,溝通協調的難度也跟著變高

首先遇到的問題,是層層轉達造成的資訊衰減。客戶的意見過了 N 手、抵達工程師這裡時,我們只知道「決定要做某某功能了」,但究竟是為了滿足什麼需求、要在什麼情境下被如何使用,這類脈絡性的資訊往往會遺失

除此之外,由於產品範疇變大功能變多,超過一條龍一個人可以負擔的程度,工作自然會被拆到不同人身上。當設計跟前端由不同人處理,對介面行為的認知就會有不同版本;當 PO 跟 QA 由不同人擔任,對驗收標準的認知就會有不同版本;隨著時間過去,每個人的認知還會漸漸變模糊。由於不再有人能擔任祭品產品規格的 single source of truth,單靠 conversation 的溝通就不容易收斂出具體的結論

於是,為了讓資訊不會在多次傳遞之後衰減或佚失,以及為了找回產品規格的 single source of truth,文件的需求就浮上檯面來

2021年5月28日 星期五

g0v summit 2020 議程與 ⟪審稿小幫手⟫

去年因為跳坑議程委員的關係,要幫研討會的會眾們代客選修,每個選修工具人都要看完兩百多份稿件,而且這些稿件還會不斷新增和變更內容,因為數量太大、版本太多,單純開個試算表已經無法應付,因此替自己做了審稿工具。

事後在 coscup telegram 頻道討論審稿流程的時候,得知 pycon 有超完整的文件,這種有條有理的做事方式,個人真的非常喜歡 😍

原本想寫一篇完整的審稿心得文,不過因為豬血糕生病的關係,就只停留在和朋友閒聊然後記錄在 SNS 的階段了。


閒聊:政府適合辦什麼樣的黑客松

前陣子跟友人聊到政府辦黑客松,也在這邊記錄一下個人的想法。


發散 vs 收斂

黑客松的特性,是利用 bottom 模式產出多元的成果,因此適合運用在發散的情境。

政府單位辦黑客松,第一件事是搞清楚手上任務是發散性質、還是收斂性質。例如,政府提供 1 份素材讓民間發展成 N 個遊戲或教案,是發散性質;民間提供 N 個靈感讓政府收斂成 1 個官方網站,是收斂性質。

發散性質的任務,適合百花齊放的黑客松;收斂性質的任務,則適合諮詢少數深入瞭解脈絡的專家顧問。

競爭 vs 合作

由於 bottom up 模式相當不受控,想讓黑客松的成果符合主辦單位的意志,常會用獎金當餌,引導參與者使用特定 api、開發特定用途的產品等。

既然提供了獎金,就必須有公平的方式分獎金,因此勢必得加上評審跟排名規則,於是競賽元素成為許多黑客松的基本配備,也變成很多人對黑客松的刻板印象。

有競爭,沒合作。競賽型黑客松的特性,是每個隊伍壁壘分明,參賽過程中彼此互不交流。

政府的角色通常是和利害關係人對話、 促進多方協力,因此政府辦的黑客松其實通常不適合採用獎金制跟競賽制。獎金制吸引獎金獵人的同時也會排擠利害關係人,而競賽制會遏止參與者之間的溝通合作。


發表在 mastodon 上的原文 https://g0v.social/@etblue/105697295645156851

2020年5月4日 星期一

街舞日記:(G)I-DLE 的 Uh Oh、CHUNG HA 的 Snapping

最近一期街舞課剛結束,翻了一下影片,發現去年工作變 hardcore 以後,影片就都沒貼上來 😂 趁今天連假剛放完 context switch 的時候補貼一下好惹

(G)I-DLE 的 Uh Oh

CHUNG HA 的 Snapping

都是去年的影片了。今年全球的武漢 SARS 疫情爆發後,除了提早到教室開門時順便消毒門把、電燈開關之外,上課過程中全程開著窗戶、全班也都戴口罩,在這之後,街舞日記文應該就都是戴著口罩的版本惹 www

戴口罩跳舞真的很累內 ∠( ᐛ 」∠)_

2019年11月1日 星期五

公民日記:戰爭世代、科學世代、藝術世代
Civic Diary: the War Generation, the Science Generation, and the Art Generation

Steps to Civilization Cliff / 通往文明斷崖的階梯

年初的時候寫在鎖朋友文的東西,為了方便讓人引用,也貼到部落格來。
I've written a private post early in this year. I'm posting it here too so people can quote the content conveniently.

美國開國元勳之一 John Adams 格言:
John Adams, one of the Founding Fathers of the United States, used to say:
我必須修習政治學與戰爭學,我們的後代才能擁有修習數學、哲學的自由;我們的後代必須修習數學、哲學、地理學、博物學、造船學、航海學、商學及農學,他們的後代才有學習繪畫、詩歌、音樂、建築、雕刻、繡織和瓷藝的權利。
I must study politics and war, that our sons may have liberty to study mathematics and philosophy. Our sons ought to study mathematics and philosophy, geography, natural history and naval architecture, navigation, commerce and agriculture in order to give their children a right to study painting, poetry, music, architecture, statuary, tapestry and porcelain.
John Adams, Letters of John Adams, Addressed to His Wife

個人覺得最後面,應該要再加上一句:
Personally, I would like to append some more words:
如果後代醉心於哲學、藝術,而遺忘了我們這一代所學過的政治學與戰爭學,那他們的後代就必需重新開始做我們這一代的事。
If their children forget about the politics and war we've learned, then the next generation will need to start over.

最近的感慨:
Some thoughts recently:
開源烏托邦的理想,是屬於藝術世代的浪漫;而我們目前面對的,是戰爭世代的問題。
The open source utopian is the romance belongs to the art generation. However, the problems we are dealing with right now, belong to the war generation.

以上,寫給 五年前的自己 。
For the old version of me 5 years ago.

2019年10月28日 星期一

Web Front-end 菜鳥心得:用 React Custom Hooks 製作頭尾相依的連鎖反應

以下是一隻菜鳥在無窮迴圈之森與變數未宣告之谷中逃出生天的掉漆冒險故事

昨天花一整天才弄好的東西,過程中一度進退維谷、想衝去 slack 跟 senior 喊救命,最後菜鳥我終究還是靠著驚人的意志力,一邊維持不打擾別人休息時間的紀律,一邊奮力爬行抵達了終點... _:(´ཀ`」 ∠):

想解決的問題


系統中有三類物件,彼此互有關連,這些關連只會紀錄在其中一方,因此前端從 api 拿到資料後,會做一些計算,才能在每個物件的畫面上顯示出它和誰相關連。任一類物件新增、修改、刪除時,前端也需要重新計算,更新相關連物件的狀態。

前端這邊的計算任務為:

  • 物件 A 變動時,自動更新物件 B 與物件 C
  • 物件 B 變動時,自動更新物件 A
  • 物件 C 變動時,自動更新物件 A

2019年9月14日 星期六

Web Front-end 菜鳥心得:將 stateful components 遷移到 React hooks 的第 17 週

灰底是各種跨 component 共用的東西,白底是會實際 render 到畫面上的部分

去年十月開始,egghead 電子報就陸陸續續提到 React hooks 的消息。今年二月隨著 React 16.8 發佈,hooks 正式成為內建的功能。今年四月底,Create React App 3.0 也開始支援 hooks。

這段時間,菜鳥我一直抱持觀望的態度,直到最後確定 hooks 是 React 家族不可逆的大轉向,就決定要盡可能趁手上專案還沒大到改不動的時候遷移過去。現在雖然還沒全數改版完,但算是稍微做到一個段落,趕快趁記憶新鮮時記錄一下,給其他有類似改版需求的人參考。

2019年8月10日 星期六

街舞日記:iKON 的 Goodbye Road、BTS 的 Boy with Luv

前兩期的街舞課,一首是最近風雨飄搖的 iKON 的歌,一首是持續如日中天的 BTS 的歌。

回家有練習的效果...

回家沒練習的效果 www

很喜歡 BTS 的 Boy with Luv,應該要跳熟一點,有點後悔回家沒練習 😅

最近主要的煩惱之一就是街舞課的團購人數不足,先前在運動中心開課的時候,三不五時會有新同學路過,現在我們班自己出來外面開團,除了固定班底以外很少有接觸到新同學的管道,所以只要有同學畢業或暫時休息,人數就很容易不夠 QQ

MV 舞的課程要記舞步、隊形、還要抓表演的感覺,其實蠻複雜的,大腦無法放空,所以能接受的人數一直都遠低於有氧舞蹈或重訓健身,需要對街舞或者對 kpop 有愛,然後以本團來說,還要禮拜天早上起得來這樣 XDrz

住台北又喜歡街舞的朋友請趕快來當我的同學吧 😭😭😭

🚨2019年第五期課程報名開始🚨
上課日期:9/1、9/8、9/15、9/22、9/29、10/6、10/13、10/20(週日)
費用:2400/一人/8堂
上課時間:10:30 - 12:00
上課地點:近捷運市府站
上課歌曲:票選中

有興趣的朋友趕快臉書私訊我~~~

2019年7月5日 星期五

Web Front-end 菜鳥心得:從 UI 轉職到前端的瓶頸們

轉職到前端工程已經一年又兩個月而且公司還活著,這段期間常常卡關覺得崩潰,直到最近一兩個月,才開始有得心應手的感覺。如果有人跟我一樣從 UI 設計轉行過來,可能也會遇到類似的瓶頸,想說趁記憶新鮮的時候整理出來好了,看能不能幫到人 ٩( ᐛ )و

2019年6月11日 星期二

公民日記:離開 g0v 的第三年

昨天 g0v 揪松團的網站上,出現這篇公告:

https://jothon.g0v.tw/notice/

事隔三年,當初讓我離開 g0v 的因素,終究浮上了台面。什麼情況下才會發表這樣的聲明,有概念的人應該一看就懂,不需要我多做解釋吧... 😌