開發者們要如何開始職涯

Andy Lu
Oct 12, 2024

--

九月底參與了 JCConf,今年是第四年參與,第三次以講者的身分參與,回想第一次參與 JCConf,當時的我坐在台下,我告訴自己我要突破舒適圈。所以那時除了上台分享外,我在 Kotlin 讀書會內幫忙讀書會的導讀,也經常空在 Medium 上分享內容。

而會進行這些「突破」,起因都是來自於一本書 Soft Skills 軟實力|軟體開發人員的生存手冊,如今的我,雖然還稱不上大神,但是至少我已經不再是菜鳥的那個我。

在 JCConf 的議程中,幾乎每位分享者的主題都是與 Coding 相關、與 JVM 相關。而今年有一場主題很不一樣,是來自美國的 Jim Grisanzio 所分享的Developers - Build your Carrer Now - 這不是關於 Coding,而是一場關於與職涯相關的分享 -

當我以軟體工程師開始我的職涯時,我想說就一直寫下去就對了,但是某一天會發現,如果不專注在提升自己的能力上,那麼很快就會有碰牆期,可能沒有辦法在開發中找到樂趣。

所以開發者要如何建立自己的職涯?不斷在同一領域加強自己的能力是最重要的。若想認真經營下去,除了專精技術外,還需要在社群中貢獻你的能力。試圖成為領域的專家,讓自己為他人付出,壯大社群。

技術的專精

現在開發軟體的生態很多元,有不同的平台、不同的程式語言。同一種程式語言可以開發不同平台的程式,而同樣的平台也可以使用不同程式語言開發,要如何選擇你手中的武器(程式語言),便是最重要的一件事。 Kotlin 支援 Multiplatform 的開發,一套 Kotlin 程式碼就可以開發不同平台;而同樣專精在 Multiplatform 的 Flutter 也能夠完成相同的事。 面對這麼多不同的選擇,開發者會開始苦惱,到底要選擇什麼語言來開發? ((謎之聲:我全都要))

首先選擇想要參戰的平台(網頁、App、後端…),接著挑選程式語言,可以依照生態系、語法來選擇,或是挑選一個有緣份的。 當語言與平台選擇完後,接者就是不斷的學習,讓自己成長。Grisanzio 說,如果要建造一些東西,就把它作大,並且精通它、深入研究其複雜性。

一開始可能是開發一個 Toy Project,接著可以將這個專案擴大,並且在各個方面深入研究,例如如何有效的客製化 View,如何正確的使用執行緒,…

之前常常在想,一名 Junior 工程師做久了就自然成為 Senior 工程師嗎?答案是不會。Senior 除了會的東西比較多外,最大的要點就是思考的深度。

打個比方 Junior 與 Senior 之間最大的差異是,Junior 工程師接收到一個任務後,或許不會思考太多就先去 ChatGPT 詢問,然後將產生的程式碼貼上,測試會動後,就不管他了,接下來的造化就問天。

但是 Senior 可能會考慮這個解法是不是正確,是不是與現在的架構相符,是否有符合需求…,而在這些思考的過程當中,是可以獲得樂趣的 ((軟體工程師的快樂就是這麼簡單))。而在這些過程當中,不知不覺的就成長了。

在 《心流》一書提到,懂得運用或轉變周遭機會的人,會比那些認為自己無力改變現實環境而放逐自己的人,更能掌握體驗的品質。也就是說,若能夠從不同的機會學習、進步的人,就可以在別人抱怨的時候進步,此時兩人的差距就會逐漸增大。

社群的貢獻

在自己公司內部接觸到的人、事是有限的,如果只計算開發者,可能又更少,若想找人討論開發上遇到的問題,除了 Goolge、ChatGPT 外,社群是最好的一個渠道。而在社群討論的最大的好處是,可以找到一堆跟你使用相同語言的人,當面對不熟悉的議題時,找到人解答的機會會比較大。且通常社群裡面都會有很多熱心的人,他們不求回報的回答,只為了解決他人的問題。

有些社群會定期舉辦讀書會或是 Workshop,通常這些活動都是免費的。有人帶著學習,會比自己瞎摸還來的快。

Grisanzio:Find a mentor, Be a mentor!

在社群內除了當 Taker 外,要讓自己成長的最好方法,就是當 Giver,當你對於某項議題有涉獵過,有些心得,不妨在社群內分享你的想法,當有人在社群請教時,大方說出自己的意見。經常有聽到人家說,教導別人是學習最快的方法,所以我在學習 Kotlin 時,就是邊擔任讀書會導讀邊學習。而這也讓我學習 Kotlin 的速度比以前自己學習還要來的快。((當然一部分是以前比較不熟悉程式語言XD))

假設你有使用開源的軟體,若發現 Bug,可以試著提交 PR,當你的 PR 被接受後,相信你也從中獲得喜悅,而且你的名字也會在 Contributors(貢獻者) 內,那麼你的身分也會從 Taker 成為 Giver,因為你的無私讓這個軟體成長。

其他

除了自身的技術以及社群的貢獻外,我認為最重要的是自己的家庭與健康。工作與家庭需要平衡之外,家庭與社群也需要平衡。我一直認為,家庭是支撐我前進的最大動力,為了要讓家庭的成員幸福,所以我要在支撐我職涯的技能上投資,付出時間在社群貢獻,但回過頭來,還是要留一些時間給自己家裡面的人。

當然囉,最重要的是自己的身體,很多工程師因為長時間都在電腦前面奮鬥,作息不正常、飲食不正常,工作若干年後,身體都壞光光了。所以除了技能提升外,也別忘了自己的身體也要照顧。((我常常跟我兒子說:我最愛媽媽、哥哥還有弟弟,我兒子就會問我:那你自己怎麼沒有愛你自己。))

這篇文章雖然不太算技術文章,但還是有些價值,因為我覺得人生是一趟單程列車,錯過的事物都不會再重來,而這篇文章、這場分享,可以讓我們好好思考一下。((怎麼沈重了起來XDD))

後記

我覺得 Grisanzio 的分享蠻有趣的,每一張投影片都是一張全幅的照片加上少許文字,而每張照片都有一段故事,讓聽眾能夠進入他的世界、進入他想要跟我們分享的主題內,這點是我可以學習的部分。

我與 Grisanzio 在慶功宴上的合影

Jim Grisanzio:https://jimgrisanzio.wordpress.com/jim/

--

--

Andy Lu

Android/Flutter developer, Kotlin Expert, like to learn and share.