JavaScript 開發者年會 (JavaScript Developer Conference)是台灣最大的 JavaScript 年度性技術研討會,每年都會分享最新技術的討論、分享;今年因為疫情影響,改為全遠端方式進行,並針遠距離工作做經驗分享,剛好自己很喜歡這個主題,所以報名了年會,在這邊紀錄一些覺得很有興趣的主題。
在這邊感謝AlphaCamp推廣JavaScript 開發者年會與提供機會讓筆者參加這次精彩的座談分享;AlphaCamp除了有優秀的全端教育資源外,也不定期舉辦公開/非公開課程,是個非常棒的線上學校。
Remote Team - TonyQ (王景弘)
講者2005年到2020年之間只有五年的期間每天進入辦公室,而最近達成了三個月內只有四次進入辦公室的成就,卻同時帶四十多人進行產出,對於遠端工作相當了解。
原因 - 為什麼我們需要遠端開發
一般人的眼中,遠端開發等同於在家工作的代名詞,但實際上並不限於在家工作才是遠端開發, 在實際情況中,也有可能是兩間相隔兩地的公司,雙方在看不見對方的情況下進行開發,但他們都有一個共通點,跟對方之間有個鴻溝、都需要透過中介的媒介(例如電話、LINE、視訊等)來進行溝通;而以下有幾個遠端開發的情況:
- 工作型態(接案):
客戶只提供需求,而接案者提供產出,並不需要在客戶旁工作。 - 交通因素:
交通時間過長,造成成本過高,所以乾脆在家工作。 - 時間因素:
產品需要On-Call、維護作業、緊急處裡等。 - 空間因素:
工作場所不只一處,跟工作夥伴都不在同一空間,甚至在海外。 - 健康、家庭因素:
家裡有需要照顧的人,或者受傷不方便行動。 - 緊急危難:
像是今年疫情所造成的影響。
個人 - 作為一個工程師,在遠端開發上要注意什麼
- 自我管理:沒人會盯著你工作,每隔一段時間就需要確認輸出跟同事之間是否有工作上的共識這點是很重要的。
- 先找總機:初次面對遠端工作環境,跟工作夥伴聯絡方法很重要的,Line、Slack、Teams等都是一種方法。
- 數位溝通:除了連絡方法外,程式碼之間交流也很重要,例如VPN、Git Repo、Security Guide。
- 行政邏輯:打卡、請假方式、工時、團隊工作時間、AWK(away from keyboard)這幾點都需要注意;假如上班期間受傷了,可以用打卡紀錄申請公傷;如果請假了、暫時離開電腦前,要怎麼讓團隊知道自己不在工作崗位上;另外也有工作夥伴工作時間差異,有些人可能是中午開始工作,要怎麼交接、溝通也是個重點。
- 任務分配:確認團隊是怎麼交付工作的;講者有提到一些工具,Remine(Issue tracking)、Trello、Slack等。
- 溝通軟體:私人、工作使用的溝通軟體都需要分開,避免24小時都被訊息騷擾。
- PR、Code Review:使用CI、CD自動化測試、整合工具減少Review的成本。
- 態度:高響應,不想被緊迫盯人,需要定期回報自己的動態;高容錯,在溝通上,永遠多想想會錯意的可能性,多對多的討論會比一對一溝通更好;高產出,產出要比預期高一點,總之別把事情排滿。
- 禁忌:找不到人、不懂裝懂、缺確認、追殺(除非緊急)。
- 確保能專心工作的環境。
管理者 - 作為一個管理者,在遠端開發上要如何跟員工互動、管理輸出
管理者是看不到部屬的,遇到問題要怎麼處理?把問題分類
情感問題:
- team building:部屬可能會不知道上司怎麼評價自己的,造成一些不必要的困擾,可以team building、給個月的月會跟部屬聊天溝通。
- 文字情緒不穩定、少講話的部屬:適時訊息與電話關心。
規劃問題:
- 每個月定期不斷宣講長期目標是主管的工作,Review也要。
- 善用電話、文字討論,如果不太會說話也不太能打字溝通,那可能不適合做管理者。
進度問題:
- 下屬的工作報告、Git activity 、issue activity (Redmine activity)、Log by commit、紀錄工時報表。
- 追蹤長期目標的達成。
- 因為缺乏面對面教學,新人文件是必備的。
其他問題:
- 訊息已讀不回的部屬,如果工作重要,可以適時把工作交代給別人。
- SOS處理,直接電話處裡。
- 需求重工(兩人重複做一件事情),需要有交辦任務的窗口,需要確保任務只有一個人進行,而不會有其他人干擾。
- 技能落差(交代事項無法完成),追蹤工作進度。
- 開會模式,小組會議比大會議更好
- 同仁不適應,一對一緊迫盯人。
總結:
團隊必須定期更新目標,清楚地讓團隊知道下一期要做什麼,做到這件事情,團隊管理就不會差到哪邊去(落實目標管理)。
用 API mocking 讓前端不再苦苦等待 — Huli
一般來說在前後端分離的架構下,當後端API還沒做好時,前端只有幾種對應方式:
- 等到後端API做好
- 用Express自行建立API
- 做JSON假資料
這邊講者提供兩個額外的方法,MSW(Mock Service Worker)與MirageJS
MSW(Mock Service Worker)
與一般串接API Server不一樣的是MSW透過瀏覽器的Service Worker代替API Server,對前端網站來說,可以發出真正的request,並由Service Worker接收(但API Server不會接收到),根據路由回應資料(handler)。
除了早於後端開始進行開發外,另外MSW一個優點是可以針對各種狀況寫測試,例如模擬登入失敗、使用者攜帶錯誤token等。
Mirage JS
與MSW不同的是MirageJS使用fetch XHR的方式模擬API,所以request並不會發出,在dev tool上也自然不會看到任何訊息。
同樣的跟MSW一樣也能寫測試,只是每次測試都需要建立一個假backend server;MirageJS主打的重點是提供ORM給使用者建立一個精簡的假backend server。
總結
本科 / 遠端 / 新創 經驗分享 — 邱弘毅 (沒一村)
本科 VS 研究所
對於理想工作的挑選,該怎麼決定?有幾個方面可以做思考
- IC 半導體(碩士是基礎門檻)?軟體工程師?
- Data Engineer (偏向研究,走商業研究所比較好 )? software engineer?
- 研究 ? 開發?
國外、國內的研究所差別?
- 國內:修課外,還需要做研究
- 國外:只需修課,不一定要做研究;如果想要在國外找工作,在國外唸研究所是有幫助的
念不念研究所的機會成本
- 本科畢業後工作:兩年工作經驗與薪水
- 研究所:得到更多domain specific研究經驗
遠端工作
如何找到工作?
- AngelList(美國新創徵才網站)
- Upworks (接案發包平台)
- 臉書遠端社團
遠距工作者在台灣 (work remotely in Taiwan)
Remote Taiwan 遠距工作
能力需求?
- 基本的外文(英文)溝通能力,不一定要很流暢
- 自制力
- 自學能力,由於遠端工作的緣故,有可能與工作夥伴能相處的時間只有短短幾小時,遇到問題需要自行解決
- 溝通能力,站在工作夥伴的角度思考
優缺點?
- 優點:工作時間彈性、不用通勤、高工作效率
- 缺點:超時工作、缺乏跟同事的交流
遠端工作需要的工具與心法
工具
- Slack:用於非緊急溝通使用;站在收訊息者角度,收到訊息應該盡快給(簡短)回應,而且不應該不停call同事
- Zoom 、Google meet:開會、重要事情使用
- Email:跟外部人士溝通使用
同事之間的協作
- 先評估一兩天內自己與同事之間的工作是否互相會影響,影響到哪部分(好比開車要小心不要撞到他人,但也要預期別人可能會來撞自己)
- 我會不會阻礙到同事的工作:搭配 daily stand up meeting 確認互相在做什麼
- 別會不會人阻礙到我工作:可以先問同事工作進度,是不是在同一個工作項目
- Do blockers First - 不要妨礙到他人
自身效率
- 不要讓井水乾涸:在工作queue中永遠要預留一些工作項目(Ticket),通常是不太重要的項目,在同事block自己工作時,可以取這些項目繼續工作
- 大小 Ticket 交錯:讓心理負擔減輕
- 該休假就休假:同上;通常美商休假會比較彈性,但要記得讓所有人知道
美國創新文化
think big
- 世界最大的市場
- 風險投資
- 薪水股票選擇權
be agile and self motivated
- 每個人都是 1/n:自己的做為很重要,也影響他人,關係公司的發展
- 找到有趣的事激發熱情
- be the CEO of your work
Trust your partner
- No micromanagement:不要問太細
- Flexiable paid time off:相信同事會善用時間
- Flexiable working hours:相信同事會做到最好的輸出
外商公司的生存之道與黃金手拷-Eric ShangKuan
Tips of Working in an Enterprise
如果希望進入大公司,有幾個重點
檢視自己的Ownership/Leadership
- 永遠不說不干我的事情(not my business):專注自己的工作雖然是好事,但拒絕合作也可能會喪失其他領域的機會
- 據實以報:有時候工作搞砸了卻不敢據實以報,導致工作夥伴無法信任,讓人感覺自己並不在意工作的好壞,阻礙自己成為一個好的team player
解決問題的能力
- 解決問題時,你的經驗究竟是真的經驗還是偏見?有時候可能是用錯誤的方式解決問題;正確應該是找出真正的問題原因,而不是看到問題描述就當下解決
溝通能力
- 聆聽,而不要自顧自的講話
- 使用他人習慣的程式、平台、工具
黃金手銬(大公司的職涯發展)
- 在大公司內每個人都是一個螺絲釘(individual contributor),有時候只想專注做好自己的事情,但是升等成為leader或manager時,不能動手做第一線的事情,要思考的是如何讓組員發揮戰力,而不是自己獨力奮戰
- 不要迷信job titile,job titile跟自己的專業並無相關,雖然跟同事有相同title,但並不代表你們之間能力相同;此外也不要認為有了這個title自己就有相關的能力
- 大公司會給好薪水,但自己做的是individual contributor做的事情,導致自己跟外部脫節,而想要脫離這個情況,卻因為現有職位的薪水而卻步;多面試,多參與社群,認識舒適圈以外的人,增加新 skill
了解你的熱情配不配的上你的渴望