[JSDC 2020] 參與心得
前言
上週參加今年JavaScript 開發者年會(JavaScript Developer Conference; 簡稱JSDC),其實這是第一次參加,去年原本有想報,結果錯過報名時間…….
回歸正題,本次 JSDC 的所有議程中主要想聽是關於:遠端工作以及導入 TypeScript 相關議題
以下列舉參加其中幾場的分享及心得
Topic: Remote Team
Speaker: TonyQ (王景弘)
這場的講者是大名鼎鼎的 TonyQ !
TonyQ 在本次議程中,以假設在被迫遠端(或面試需要遠端)的情況下,從三個面向來討論遠端工作
原因
為何要Remote?
TonyQ 以自身及所聞周遭的遠端工作者經驗來討論會 Remote 的理由:
- 工作型態:本身可能是SOHO族,以接案的形式工作,客戶本身並不關心自己在哪裡工作,對方提出需求,你提供產出,只需要定期開會(or 碰面)確認進度,確保能夠有產出。
- 交通因素: 通勤時間過長,乾脆在家工作,遠比通勤所花的時間來的有效益
- 時間因素: 自身工作內容比較特殊,如:管伺服器 or 系統的人,因為系統可能在離峰時間、非正常上班時間出事,需要On-call 遠端維護主機
- 空間因素: 團隊分散在各地,辦公室有多個點,大家不在同一個空間,若要實體討論,花費的時間、金錢的成本過高,若透過數位工具,可以幫助團隊省下這部分的成本
- 家庭/健康因素: 家裡臨時需要協助,e.g. 家人有突發狀況、COVID-19
講者表示能夠面對面溝通很好,也喜歡隨時進入工作狀態,不用費盡心思出門到辦公室工作,隨時與團隊夥伴保持聯繫。
而遠端工作對於 TonyQ 來說,是一種工作方法,不同的工作方法,要用不同的態度來處理,想要上手遠端工作,需具備幾項條件:
- 自我管理
- 團隊整體對目標有一定的共識(避免大家看起來做同一件事情,卻分道揚鑣的窘境)
接著以管理者的身份來分享自己在管理 Remote Team 的經驗
個人
先找總機
有一個統一的管道可以讓團隊成員去問問題,作為主要的溝通窗口
- Line
- Slack
- Teams
建環境
由於遠距工作倚賴數位溝通,會需要一些其他工具
- VPN: 連進公司內網
- Git Repo
- Security Guide
確認必須的行政邏輯
- 工時
- 請假
- afk (away from keyboard)
- 團隊工作時間確認必須的行政邏輯
確認任務分配模式
- issue tracking
- Redmine
- Trello
- Teams
- PM / 主管
- 同事
溝通討論
公私分明,討論完後再把結論填回 issue treacking
- PR & Code Review
- 使用 Azure DevOps
- 先 push 到其他 branch 發 PR,code review 後再 merge
concall/電話
- Teams 可以在 pure web 完成分享螢幕、通訊
- 在家工作建議準備可工作的書房或空間
管理者
情感
遠端還是要做 Team Building
- 避免部屬與上司相互猜測彼此工作狀況
有沒有人最近少講話或情緒不太穩定
- 關照情緒需要電話或者見面了解
規劃
盡量用文字而少用電話,安排要減少情緒。
進度問題
- 傳統叫下屬交工作報告
- 用 Readmine 查看活躍度,查看 commit 花費時間和紀錄
新人文件一定要寫
- 幫助新人融入團隊最快的方法
- 不用太精緻,txt 也行
同仁已讀不回怎麼辦
- 把工作交付他人(對同仁的處罰)
SOS 怎麼處理
- 有排人值班 oncall,用電話溝通
如何避免重工
- 避免里長伯類型的同仁
- 明確指派任務
- SOS人員無法解決時應向上呈報
技能落差
- 要死線前才發現無法完成
- 要派有技術的人 watch,定時 commit 記錄落後派人去盯
- 不用全部都盯,盯重要 issue 就好
開會模式
- 不開大會,開小組會
同仁不適應怎辦
- 用主管權利引導他,定期 tag 同仁回復討論,通常要嘛他適應,要嘛他走
建議原則:
- 高響應
- 定期 keep alive
- 對於新人,可以要求指定時間回報狀況
- 高容錯
- 對於文字多思考可能的意思
- 溝通需要更多的容錯
- 盡可能有第三個人在場 (避免 1v1 單人聊天)-讓其他人也知道狀態,避免雙方認知有落差,此時有第三方可以幫忙作證
- 高產出
- 工作不要排滿,七八分就好,排滿很危險
禁忌:
- 忌消失
- 忌不懂裝懂
- 忌缺確認
- 忌追殺 (除非 SOS)
總結
團隊需要定期更新目標,落實目標管理,走在正確的方向
Topic: 本科 / 遠端 / 新創 經驗分享
Speaker: 邱弘毅 (沒一村)
講者有在經營粉專 - 沒一村隨便說,接著回答幾個大家都會問的問題
本科 vs 研究所
很多人必須面對的課題: 考研? or 工作?
講者提到可以先想理想工作是什麼
理想工作
- IC 半導體 vs 軟體工程師
- 台灣 IC 半導體一定要唸碩士(門檻)
- Data Engineer vs software engineer
- 研究 vs 開發
以Software Engineer 來說,因為本身都是做開發,不ㄧ定要唸研究所
國內 vs 國外研究所
- 國內: 研究、修課
- 國外: 修課
- 如果有想要國外工作,可以念國外研究所
機會成本
對講者來說,機會成本是非常重要的,比較下面兩個
- 本科直接工作:累積兩年工作經驗 + 薪水
- 研究所: 得到更多 domain specific 研究經驗
兩者要做取捨,這就回到自己本身的理想工作是什麼?
遠端工作
講者目前的公司位於美國,團隊的開發者也都是四散在各地,簡單跟大家分享近一年的遠端工作心得
遠端工作疑問
如何找到工作?
- AngelList:大多數為國外新創
- Upworks (接案發包)
- 臉書遠端社團
能力需求?
- 英文 or 外文:能夠溝通,聽說讀寫據基本能力。
- 自制力:對遠端工作者是必須具備的能力
- 自學能力
- 溝通能力
優缺點?
- 優點:時間彈性、減少通勤時間、效率高
- 缺點: 容易超時工作、缺少和同事交流
Topic: 用不用 TypeScript 隨便你,反正我是用了
Speaker: Will 保哥
保哥本次想討論的主題是為何要使用TypeScript,用了有什麼好處?
什麼是 TypeScript?
TypeScript 由微軟開發,主要提供 JavaScript 型別系統和對 ES6 的支援,屬於強型別。
因為 TypeScript 誕生得主因是 JavaScript 本身是弱型別語言,在撰寫上非常自由,不需事先定義好資料型別。
不過也因為風格自由,可能倒置程式執行時,發生不可預期之錯誤。舉例來說:
以下圖片取自保哥的簡報
上述範例可以看出,因為未事先宣告資料型別,所以在執行 processData
這個函式時,無法得知街道的物件data
會是什麼,接著執行函式內邏輯時,出現TypeError
這項型別錯誤的提示訊息,只要打錯字,這支程式基本上就掛了。
若轉成 TypeScript
上述保哥所舉得範例,左邊預先定義一個Interface
,宣告Data
這個物件的屬性包含三種型別。
而下方的錯誤訊息來自IDE的提示,很貼心的提示你可能發生的問題。
講者觀點:
弱型別並非沒有,還是有些大神可以把他玩到極致,產出如同藝術家般的作品,但是對一般人來說是很難做到;而強型別玩到極致,如同蓋大樓,藉由大量型別的定義,幫助開發者建構中大型的專案,在實際案例中,不可能所有開發者都是藝術家級別。
透過規範來幫助開發者建構出易維護、擴充的程式碼,減少錯誤。
TypeScript 是透過型別來擴充 JavaScript,透過編譯的方式來產生 JavaScript,而 TypeScript 的型別檢查是發生在程式編譯的階段
好處: 讓開發工具看懂原始碼
後續保哥分享了他在公司將一個兩萬行JS Code 的專案升級成 TypeScript,過程中發現型別的問題非常大,花費不少時間做Complie Error,陸續將可被規範的物件,定義出該有的樣子,同時也提到導入 TypeScript 的確會增加開發時間,畢竟要先定義好型別,不過放長遠來想,或許是個值得投資的項目。
後記
感謝 ALPHA Camp 活動贊助,以優惠價取得門票,有幸參與今年JSDC研討會,實屬難得的機會。