假設你今天是一個菜逼八工程師,你可能非本科轉職,也可能本科系畢業,但不管怎樣,總之就是很菜就對了。

而還很菜的你正在找尋第一或第二份工作,此時你會想進一間什麼公司?

有一個完整的 team,大家互相合作,也有資深工程師能夠指點迷津或是指引方向。公司制度好、福利好,用很新的技術,做很酷的東西。不用相容 IE,不用維護 legacy code。

相信答案應該跟上面滿相近的。

如果有許多人對這題的答案都差不多,就代表許多人都想進這類型的公司。

可是你有沒有想過,為什麼公司要收你?假設上面的「許多人」是一百人,但公司開的缺只能收一個人,那憑什麼你覺得那個人會是你?

你一定要是那一百人裡面最突出最強的,才會被選上。

而剩下的九十九人都沒辦法進去這類型的公司,沒辦法有這麼好的工作環境。

大家都想進好公司,擁有好的環境,這是事實。可是好的環境並沒有這麼多,這也是事實。而上面兩個事實加在一起,就得出另一個結論:

大多數人沒辦法去到這麼好的工作環境。

假設你就是那剩下的九十九人,在一個沒那麼好的工作環境,而且也沒辦法找到更好的,那該怎麼辦?

此時你有兩個選擇。第一個選擇是安於現況,覺得待在現在的環境就很好了,不需要到更好的環境,這也是一個選擇。

第二個選擇是提升能力,之後才能跳到更好的環境。

如果你能到更好的環境,你早就在了。若是你現在待的環境不夠好,很有可能就是你不夠強(或者是整個大環境都太糟)。

所以要變強,變成一百人當中最優異的那幾個。

那該怎麼變強?

第一,利用工作之外的時間提升自己的能力。

這個滿多人都知道的我就不另外講了,反正不外乎就是利用下班或是假日的時間繼續鍛鍊自己的技術之類的。

第二,試著把工作的環境變好,跟它一起成長。

有些人會忘記這個選項,以為環境是無法被改變的。我同意有些環境很難被改變,但這個我們留到最後再說。

這邊的環境我們先侷限在「技術上的工作環境」,畢竟現在談的是工程師。整體上的工作環境例如說公司制度、薪水、福利等等的不在這篇文章討論的範圍之內。

例如說公司沒有用版本控制,與其一直抱怨公司環境不好而不做任何事情,不如跟主管提議說想要引入 Git,也導入 GitHub workflow,每個改動都要提 PR,還可以順便導入 code review,讓幾個同事之間輪流負責。

不過想要改變環境,自然要提出為什麼要改變的理由,以上面的工作流程來講,我自己的理由會是:

  1. 沒有版本控制的時候就不知道每個版本改了哪些程式碼,發生問題時很難 trace
  2. Code review 能幫助大家提升 code quality,也能夠了解同事到底做了哪些改動,大家對專案的理解程度都會上升
  3. GitHub workflow 讓大家有個明確的流程可以 follow,不會像以前雜亂無章,想改什麼就直接改

或者說如果今天公司只有你一個人負責這整個專案,與其一直抱怨說:「一個人也不知道自己 code 寫得好不好,好想要有一個 team」然後不做任何改變,不如自己導入一些增進 code quality 的東西,例如說 ESLint,或是寫測試,不只寫 unit test,也寫 e2e test,來把這個專案變得更完整。

雖然導入這些之後,你還是不知道自己到底做得好不好,但至少基本的東西你嘗試過了,該做的你也都做了。當你未來真的進入一個完整的 team 的時候,就可以快速上手,迅速理解整個專案,並且學習到更好的流程以及寫法。

有些人會跟著環境一起沈淪。環境很差,所以我也不用太好,只要得過且過就好。如果是這樣子,那你只能永遠待在這種環境,因為你的能力沒有提升,所以下一份也不會找到什麼太好的環境。

但若是你試著去改變環境而且成功了,就可以跟環境一起成長,一起往更好的方向走。

最後,你可能會說:「你上面舉的例子都太低估環境了,環境哪有這麼容易改變?」

我覺得這得試試看才知道,你試過了嗎?我沒有要你直接「重建」整個環境,而是一步步慢慢來,一點一點變得更好。

如果你試過了,發現因為各種阻礙(例如說主管不允許、同事不配合、公司不支持等等)而無法改變的話…

那我會建議你直接離職,去找一個願意改變的環境。