不要只會寫程式,做為軟體工程師必備的 6 項能力

不要只會寫程式,做為軟體工程師必備的 6 項能力

在我投入軟體工程師的前 5 年,我總認為工作只要把程式寫好就行了,其他的事不用太在乎。
到現在已經當工程師 15 年了,我認為寫程式只是一個基本技能,還有更多能力需要掌握才行。

這十幾年的工程師生涯,我是一步一步學習成長上來的,從基層的工程師,轉為技術主管,一邊工作一邊下班接案賺外快,除了技術不斷提昇,在團隊合作和做人處事上面也要有所提昇。

現在除了接案網頁開發,我更喜歡投入程式教學,除了分享程式技巧,我也會分享開發人員的觀念想法。

經過這十幾年的經驗,累積了一些方法與心法。
以下總結了 4 項開發技巧,以及 2 個觀念想法分享給你。

習慣 Debug 找原因

以前在公司擔任技術主管的時候,常常會有同事來詢問我程式問題,當他敘述完問題後,我會反問他一句話:「你有試著 Debug 找原因嗎?」,最常聽到一個回答是:「我沒有 Debug 耶」。
那我會請他試著 Debug 一下,在關鍵的程式碼上面按中斷點,然後執行程式看看。

看他 Debug 之後,很多時候自己就找到原因了,而我什麼也沒做,就解決問題了。
只有少部份情況,我會講解他還不知道的知識,來幫助同事解決問題。

許多人程式寫完直接執行,然後看到非預期的結果,或是錯誤發生。
然後一直改程式一直試,花費不少的時間,不使用 Debug 找原因,造成開發進度變的很緩慢。

我認為寫程式的品質要好,就是在過程中不斷 Debug 觀察每一個變數的值,是否符合預期。
當每一個環節都正確了,最後才會做出品質穩定的功能。

不斷優化程式架構

我大概在 10 年前就已經開發出專案底層架構了,這 10 年來每一次開發新專案,都會使用自己的底層架構。
底層架構是將許多共用常見的程式碼,封裝在底層的物件裡面,而商業邏輯只要呼叫方法,傳入變數就可以完成任務。
底層架構是多年來累積的程式碼,也是歷年的心血結晶,當我學到新的寫法時,我會去優化底層架構,讓底層更完善。
會優化程式的目的通常有幾點原因:

  1. 速度效能更快
  2. 解決既有的 Bug
  3. 更容易閱讀
  4. 用更短的程式碼做到一樣的結果
  5. 提供更靈活的方法
  6. 將相同的功能整合一起

我認為寫程式是需要不斷學習成長的,現在回頭去看以前寫的程式,會覺得有許多可以改善的地方。
通常有不同的寫法可以完成相同的事情,而我們可以選擇更精簡更有效率的寫法去達成。

善用程式碼產生器

我以前是在專案開發公司任職,不斷的承接新專案,在專案內有非常多相同的功能出現,例如與資料庫互動的新增、修改、刪除與查詢程式碼。

相同的程式碼一直會重複撰寫,只是傳入的參數不同而已,因為一直重複寫,除了不斷的 Copy, Paste 之外,我嘗試了更快的方法:開發程式碼產生器。

我學習一些程式碼產生器的觀念,自己開發程式碼產生器的工具,當接下來專案又遇到相同的功能時,我只要在程式碼產生器裡面去設定參數後,一鍵產生完整的程式碼。
將產生後的程式碼放至專案後,再修改少部份程式碼,一個功能就完成了,整個效率大提昇。

我初期花了不少時間開發程式碼產生器,但是後期大量節省了開發時間,提昇專案開發速度的效果非常明顯,這是一種節省時間的投資。

勤勞做程式筆記

每一次當有學到新的語法或方法時,最好把程式碼記錄到筆記本裡面,因為…忘記程式碼很正常。

常常在寫一個新功能時,都會忘記要使用那一個語法,就算曾經有寫過相同的程式碼,也會忘記放在那一個檔案裡面。

在我剛開始學習寫程式的時候,就有發現這個問題,程式碼實在太多太雜,很難記得清楚,我一開始用純文字來記錄程式碼,後來程式碼一多,也變的不好找。

最後我自己花了一些時間,開發了個人程式碼筆記系統,以後當忘記程式碼時,就到我的程式碼筆記系統裡面找範例,這樣開發的速度就更快了。

我自己寫程式碼筆記系統已經是十幾年前的事了,現在有不少的線上工具方便管理程式碼,例如 Notion, Evernote, HackMD 等等工具可以線上使用。

持續學習新技術

科技是日新月異,軟體開發也是。當你認為新技術將會成為趨勢時,請提早開始學習。

還記得大約 8 年前,手機 App 逐漸流行起來,許多廠商相繼開發手機 App 應用程式時,那時候我只會寫網頁程式,當時我認為 App 將會成為趨勢,在未來一定會有人問我會不會寫 App,我應該要提早掌握這技術,我便向主管要求我想承接 App 專案,當時公司還沒有 App 專案,而我就自己下班後自學 App 程式。

在一年後公司突然有一個 App 的專案,而主管就詢問我有沒有意願承接,我就把自學的 App 經驗應用在公司專案上,藉由公司很順利的開發完整的 App 專案。

大概 6 年前,我們團隊都使用 .Net Web Form 技術開發網頁,後來 MVC 的開發觀念普及了,我認為 MVC 的開發模式將會成為主流,而 Web Form 模式將會成為過去式。

當時在公司有新的專案要開發,我跟主管討論一下,我們決定使用新的 MVC 模式來開發新專案,這是一個不容易的決定,因為不是只有我要學習,參與專案的同事也要一起學習新模式,而學習新技術總會比較辛苦,又會影響專案開發速度。

當時的我是先投入研究,再將所學習到的方法,教會其他的同事,反而因為教學的關係,對新技術的掌握速度更快一些。

多學一個語言或技術,對我來說不吃虧,會讓我更有競爭力去爭取更好的報酬。
其實利用公司的資源去學習一項新技術,是很划算的決定,同一份時間付出,不僅得到薪資回報,還提昇了技術能力。

現在的新技術層出不窮,包含區塊鏈、人工智慧都是新技術,如果你認為那一個新技術是未來趨勢的話,那建議你可以提早開始學習喔。

溝通目的是讓別人聽懂

身為一個工程師,已經習慣面對專業問題,但是並不是所有人都明白你的專業問題,當在解釋問題時,如果對方非同行專業人士,要用對方能聽懂的話來解釋。

工程師解釋問題時,如果提到專業術語,對方不明白的話,盡量用白話或是比喻方式去描述問題,講述一個大概能懂的情境就行了,對方並不會想真的了解問題內幕。

想練習這樣的能力,可以做幾個練習,試著把你的專業,對小孩子或老人家做簡報,如果他們也能聽懂的話,那你就成功了。

如果對方是同事/主管或是有經驗的老闆,適時的用專業術語解釋是沒問題的,重點就是先想一下,對方是否能聽懂再溝通,也就是換位思考對方的立場。

工程師的溝通問題,我很常見,甚至有時候,我也會犯同樣的錯。
有時候上台簡報時,滿滿的專業術語,讓聽的人都想睡覺了,能善用比喻去解釋的話,也是一個很棒的能力。

總結

謝謝你看完這麼長的文章,在成長的路上,每一個人的經歷都不一樣,所屬的時代也不一樣,過去很多工具要自行開發,現在則是有很多現成的工具可以選擇。
工具很多很方便是沒錯,可以提昇工作效率。
但工程師的特色就是,我們是有能力去創造更好的工具,不要埋沒了自己的創意天份。

軟體工程師是一個終生學習之路,環境變化很快,每過一陣子就會有新的事物出現,我能給出最好的建議就是「持續學習」,第 2 好的建議應該就是「分享」了。

工程師最常做的事情是「解決問題」,但不要只會解決問題,多與人接觸溝通,人生才會完整。

重點整理

  1. 習慣 Debug 找原因
  2. 不斷優化程式架構
  3. 善用程式碼產生器
  4. 勤勞做程式筆記
  5. 持續學習新技術
  6. 溝通目的是讓別人聽懂

相關學習文章

如果你在學習上有不懂的地方,可以參考線上家教服務

如果你喜歡這篇文章,請幫我在上方綠色的拍手圖示按 5 下
使用 Google 或 FB 免費登入,你的鼓勵支持我繼續創作,寫出好的文章

[加入社團一起討論] 或是 [追蹤 Instagram]

2 thoughts on “不要只會寫程式,做為軟體工程師必備的 6 項能力

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *