職場之內、技術之外

在新創工作剛滿一年,覺得正值一個可以好好整理所有收穫的時間點,現在回想起來的確學到許多以前不知道的方法跟思維,但因為都是比較零散的個人經驗,所以一直在想要以什麼為主軸來跟大家分享,既然暫時沒辦法有一個比較系統性的整理,我就來說說我在這段時間所學到的幾個工作中最重要的特質好了。

常聽到有人說,在新創工作一年可以抵其他工作好幾年的經驗,因為會有飛快的成長,現在想想以我自己的過往經驗來比較還真的是這樣。不過大多數人對成長的認知無外乎是學習到更多技術、解決更多問題,最後獲得更高的職位、更好的工作、更多的收入。然而除了薪水跟值外等等偏向外在的因素,我認為更重要的是能夠影響每個人更長遠發展和長期回報的內在要素和相關能力。

這些偏向內在要素可能並不那麼外顯,也就是說在一個人的工作履歷上是比較難馬上看出來這些特質的 — — 儘管如此,這些特質還是會透過某些行為舉止無意間表現出來,所以雖然若以成功錄取一份工作為目標,短期內技術能力與領域相關知識等等硬實力大概是一開始最直接能夠決定結果的因素,但事實上要正確評估一個人工作能力的優劣,是在進入職場後才真正開始,也絕對不會只看技術強不強大,通過面試充其量只不過是拿張門票而已 。那麼,一個人在所屬的專業領域裡面是不是能夠讓自己與日俱進,除了看專業技術,還需要什麼呢?

專業之外的軟實力

以我自身目前的了解來總結,大致有三點可以與各位分享的:

  • 溝通能力:確定別人了解你想表達的事情、知道別人的真正疑惑跟目的
  • 流程的能力:優先順序、估時、困難度
  • 規劃能力:執行前的思考 ,想得越完整就越有彈性

溝通能力

職場上與人際相關的能力,最常聽到的無非是思考方式、待人處事和面對問題的心態等等,這些能力所綜合發展最後表現出來的特質就常常被稱為是一個人的溝通能力。而就工程師這個職業來說,所有的軟實力裡面我認為溝通能力應該是最首要要被重視的,這個應該不難理解,可以想想看在所有的需求從需求方產生,再到 PM 規劃、然後到設計執行畫面視覺的安排,最後到你身上準備實作的階段,這中間經過了多少次層層的溝通?只要有一個環節出現溝通的問題就可能讓整件事情出現紕漏,所以,先確立正確的執行方向,確保你與需求方都有接收到正確的訊息,再搭配強大的專業能力才有意義

就像我們常聽到的「先學會聆聽,才能有效溝通」這句幾乎是老掉牙的言論,不過也幾近是放諸四海都適用的原則,有些人在溝通時只講自己想講的,沒有理解別人真正想要的東西是什麼,或是其實根本誤會了方向,這些都是導致溝通失準的原因。但是沒關係,幾乎每個人都曾經有過這樣的狀況,這種能力並非能夠在一夕之間就練成的。比起因為害怕溝通錯誤而導致不敢發言,隨時意識到自己在溝通的過程裡面是否有什麼癥結點沒有釐清、思考下次遇到同樣狀況如何改善,久而久之就會慢慢能夠更順暢的與別人合作。

還有一個能夠快速增加溝通能力的方式,那就是 — — 分享吧,就像我現在正在做的一樣。透過分享,你會越來越知道怎麼表達心中的想法,因為不管是透過寫文章還是講述的方式,你都必須現在腦中思考過許多次。況且這是一個打團體戰的時代,在各個領域隨時都有新的技術或是服務出現,靠一己之力是沒辦法快速上手每件事情的,帶著分享的心態面對每個問題,讓更多人能夠與你一起成長,當有越多人慢慢有能力解決更複雜問題之後,說不定這些人可以反過來讓你學習,仔細想想這不也是個有趣的過程嗎?

流程的能力

「流程」指的當然是工作流程,工作流程是你如何順利的在一段時間內把接收到的任務處理掉。而這中間牽扯到了估算時長、任務複雜度計算、以及最重要的優先順序等等因素。在接收到任務並開始執行到完成的過程中,完成度的推進往往不會是線性的,很容易我們在做到一半的時候才發現案情不單純,有另外一個比表面上看起來更麻煩的問題需要處理。所以為了避免意外發生,是否要優先處理看起來比較可能會出現問題的任務,或是在執行任務的階段想辦法保留彈性。隨時調整任務執行的順序,常常就因人而異了。

不難想像,上述講到的三點其實是環環相扣的,先足夠瞭解了任務的複雜度,才有辦法知道自己大概多久能夠完成、也才能順暢安排每個任務的執行順序。在職場裡面,你會在每個人身上看到不同的工作流程,因為對每個人來說都有各自適合的做事方法,對你來說也是。所以你在你的職涯裡面必須一直不斷思考自己的工作方式,隨時調整看看有沒有能夠改善的環節,也許一開始沒有方向的時候會趨向於向某個前輩模仿,不過最終你一定會找到屬於自己的工作風格的。

規劃能力

知道怎麼溝通、怎麼透過流程解決問題之後,另外一個無法被忽視的要素就是需求規劃了學會怎麼規劃需求也能夠讓預先思考需求的細節、難易度,好讓你能夠合理安排任務執行時的先後順序,所以你也可以說這是前述工作流程的一環。規劃需求的能力著重於「先思考、後動手」。你可能有過一種經驗是因為時程的關係,不得已急著做完某個需求,只好先動手再說,以至於最後才發現漏掉處理了某個重要的情境,下場就是幾乎全部重來。

熟練規劃的能力,習慣在實作之前先在腦海中想過一遍大概要實作的方式,就可以幫助你改善這個問題,減少像這樣打掉重練的尷尬狀況一再發生,也許搭配一些圖片、也許條列一些文字,都可以幫助自己整理思緒。一旦開始試著這麼做,你會發現在接到任務後,要實作之前,就會越來越清楚整件事情的輪廓,伴隨而來的就是更有餘裕一次考慮到更多的條件跟細節。同樣地這個能力我相信沒有人可以一開始就做到最好,許多人都是伴隨著經驗的累積而慢慢練成這樣的能力的,相信你也可以。

寫在最後

以上是我近一年跟許多前輩所學到認為比較重要的非技術能力,醞釀了兩個禮拜終於整理下來了,在這邊分享給大家。我認為長期看來,這些非技術能力對個人成長的幫助一定會超越你現在正在學習的技術能力,因為技術是會隨著時間一直演變下去的,十年前版本的 JavaScript 放到現在來看可能早已有許多不適合的地方,所以需要不斷地更新跟學習。但不管技術怎麼變,人性、與人交際相處的方式和你面對問題的思考方式,是可以持續累積和成長的。所以我也會建議你一定要找到有辦法增進與展現上述幾種能力的工作環境,不要長期處於太過於封閉的環境中。

這類工作心得文我通常每隔一段時間,或有心得後會整理下來給大家參考,希望可以幫助到你們,而這樣子的文章同時也能讓我衡量自己的成長。舉例來說,看看半年前寫的工作心得文,再與這篇文章做比較,我覺得我可以明顯感受到我自己對整個工作流程與中間環節有了不一樣程度的認知,那麼,希望下次能有更深刻的收穫,感謝各位的收看,下回見了。

2022 年我該如何成為前端工程師?

2022 年我該如何成為前端工程師?

嗨!不知不覺又過了一年!不知道大家 2021 這一年過得如何?最近開始有聽到幾個朋友也想要試著學習前端開發,剛好也看到了這一篇在講前端開發者所需要技術的整理,簡單節錄一下一起分享給有需要的讀者們。 接下來的分享基本上以這篇文章的內容為主,會以我的觀點節錄一些重點來跟大家分享,所以如果想看第一手資訊或是習慣看英文的朋友也可以點進去直接閱讀。 成為一個前端開發者需要的「基本」要素 沒錯,這篇文章是站在作為一個基礎的前端開發者的角度來設想需要的技能/工具,所以對於想要尋找 WebAssembly 或是 Svelte.js...

作自己的腦內偵探 —— 利用 PDCA 的概念,見證每天進步 1% 的自己!

作自己的腦內偵探 —— 利用 PDCA 的概念,見證每天進步 1% 的自己!

嗨,我是 Mujing ,今天要講的跟技術比較沒有直接關係,我想要跟大家分享一個平常工作時可以逐步優化自己工作流程的方法,這個方法叫做 PDCA 筆記,最近剛好在研究。試著在工作時用過了幾次之後,我發現這套方法能夠讓自己看見自己執行任務的現況,再想辦法針對問題逐個改善。針對想要優化自己工作的流程卻不知道哪邊可以做得更好,或是怎麼樣做得更好的讀者,這邊推薦這個方法給你。 Outline PDCA 是一種思考的框架P、D、C、A 怎麼做?使用橫向 A4 紙假說的重要性建立一個長期目標寫在最後 PDCA 是一種思考的框架...

React 元件庫製造紀事錄 (二) – package.json 與 Webpack

React 元件庫製造紀事錄 (二) – package.json 與 Webpack

在元件庫系列文的第二部分,會試著用 webpack 來打包模組,並把過程記錄下來。我們在前面的文章裡面提到了許多種類的 JavaScrpt 模組系統,而模組系統的差異在 SSR 架構下,我們要製作元件庫時可能會是一個需要處理的問題,除了把所有元件庫的程式碼直接轉換成 UMD 的模組系統,我們也可以透過 package.json 來做處理,這一點我們也會一併說明。

React 元件庫製造紀事錄 (ㄧ) –  問題說明與第一個麻煩:JavaScript 的模組系統

React 元件庫製造紀事錄 (ㄧ) – 問題說明與第一個麻煩:JavaScript 的模組系統

這陣子為了解決了一個讓我蠻頭痛的問題,第一次接觸前端 module 的打包,也了解到原來平常我們很方便能夠用 Npm 或 Yarn 這類套件管理器裝一裝就能夠直接使用的一些第三方工具在功能開發完之後,為了要讓別人能夠使用所做的處理上並不是這麼的單純,隨著使用方式的不同,要處理的部份也會有所不一樣。 舉例來說,如果是一般純粹都是 JavaScript 函式庫,可能只需要透過 Babel 這類工具來處理 JavaScript 版本與瀏覽器的支援性問題就好。不過若你的專案需要處理 React 元件或是圖片 Icon...

瀏覽器的時光機—歷史堆疊、 pushState 與 replaceState API

瀏覽器的時光機—歷史堆疊、 pushState 與 replaceState API

或許 pushState 與 replaceState 這兩個詞你可能沒聽過,但是瀏覽器「上一頁、下一頁」功能你一定不陌生,其實這兩個 API 是瀏覽器提供給開發者操作瀏覽紀錄用的,透過這兩個 API 並搭配事件處理,我們就可以將瀏覽器預設的「上一頁下一頁」修改成我們想要的客製化結果。 使用情境說明pushState / replaceState 與點擊新連結有什麼不一樣pushState / replaceState 與 Stack 結構pushState / replaceState...