前言
我在觀察並釐清什麼樣的「品格」是一位工程師可以具備的,以及普遍工作環境和社群帶給我的感受,總結出幾點可以解決問題的模式,在日常也作為我自己參考與努力的依據。
工程師可以具備的優良品格有以下幾點:
- 有耐心
- 能溝通
- 跳脫框架
有耐心
軟體開發不會變的就是一直改變,現實總是脫離理想,會需要有極大的耐心才能應付這一切
身為解決問題的人卻總是被問題困住?一直都在最新技術背後追趕?嚴重的冒名頂替症?耐心是你應對這一切最好的方式。
我們常常看到「x 小時學會 y」、「y 個月成為 z」的教學和事蹟,但卻不會看到背後的故事;解決真實世界問題的故事比較像是:「花了整周時間,翻遍了每一則文件只為了解決一個老天才知道的詭異問題」、「每個月都跑出新技術等著你學習吸收、幾年過後又變得毫無用處」、「維護鬼才知道怎麼運作,因為歷史因素層層疊加的混沌義大利麵代碼」。
有耐心意味著接受嘗試和錯誤是常態,許多不完美的嘗試才有時會產生好的結果,雖然有時候看起來毫無意義,不過解決問題的過程就是這樣。
大多時候只有你自己清楚在做什麼,給自己多一些耐心去去嘗試去失敗,任何人都可以在短暫的學習後成為一個領域的專家,但保有耐心是真正珍貴需要磨練才能得來的美德;大多成就背後都有無數的失誤和嘗試,這並不代表我們不應該尋找好的方式來解決問題,意味著當卡住時任何行動都比沒有行動好。
- 對失敗習以為常並養成耐心
- 嘗試並失敗也是產出的一部分
- 不完美的嘗試比什麼都不做好
能溝通
溝通並不侷限於與人與人的交流,也可以是透過文件或代碼的方式來傳遞意圖
為了解決問題能否靈活的運用不同的方式解讀溝通?能不能良好的解讀他人的意圖?能不能清楚的表達自己的意圖?我們不會是萬能的人,所以需要和同事合作,和地球另一端的人合作,和未來與過去的自己合作,這些都需要良好的溝通。
理解產品需求、翻找文件找尋解決問題的方法、撰寫可維護的代碼……背後都算是廣義上的溝通技巧。
- 學習閱讀文件解決問題
- 學習討論和解釋自己的想法
- 尊重他人的時間、就事論事
跳脫框架
隨著職位升級,需要解決的問題不再是技術本身,而是如何讓團隊更有效率的解決問題
入門工程師通常會從被指派的事項開始,隨著職位升級專案的範圍擴展到開發功能、專案、公司與產業,隨著對技術和產品的理解逐漸擴大,重心不再是「解決問題」而是「發掘機會與問題」,所以跳脫框架的能力變得更加重要。
- 不吝嗇跨領域合作,用更廣闊的角度看待問題
- 帶領團隊達成目標(鑑別、量化、執行)
延伸閱讀
- Stop postponing things by embracing the mess
- How To Out Code The Competition - bigboxSWE
- 7 Levels Of Engineers Describe Software’s Most Important Skill