fbpx

新手軟體工程師如何避免犯下最大的錯誤

Contents

作者:Edmond Lau ,The Effective Engineer   作者。  Soft & Share 獲作者授權翻譯。

身為新手軟體工程師,由於缺少經驗你很有可能犯了些戰略上的錯誤。 也許你自己建立了某一個功能後才發現原來早就有一個共同的設計模式原本可幫助你做得更好,或是你意外地在已經上線的服務或是產品推出有問題的程式碼,或是你忘了處理系統擴展與效能表現,讓你在截止日前完工前備感壓力辛苦地趕工。

錯誤會發生,且這些錯誤都只是學習中正常的部分。

更重要的是你要確定大的決策都正確且你避開了最昂貴的錯誤。對於新進的軟體工程師,長期來看最大的錯誤會是你沒有將你的學習速度最佳化。 有些人犯了這個錯誤是因為他們安於現狀,其他則是因為他/她們自以為已經懂很多而太過驕傲,更多人掉入這陷阱是因為他/她們害怕失敗而不去嘗試新的東西,而這也是註定落後原因之一。

在學習速度上一點點差額長期下來就變成很大的差別,因為對自己的投資的效果會隨著時間複利增加。今日你所學的知識與教訓奠定了你未來機會的基礎,讓你能在機會來臨的時候已經準備好。而且越早對自己投資,這些投資在你事業上將有更高的的加倍效果。

Alfred Lin 與其他在 Zappos 的領導團隊要求成員每天進步1% ( 註一 ),如果你可以持續每天1%,一年365天,在一年過後,你將會超越37倍的增強,不是365% (3.65倍)。 這是複利成長的力量。

所以沒有把握時間學習與成長的機會成本非常得高。當在做決策的當下,你應該要自問: 哪個選擇將增加我學習的速度? 長期來說,能讓你更快學習成長的抉擇,將帶你走向更寬廣的成功大道。

另一個專注於你的學習速度非常有價值的理由—這是個可行的框架,幫助你決策而且常常幫你做到工程上所謂的最佳實踐標準。一旦你選擇了增加學習速度做準則的框架,當你作為一個新手工程師所面臨的一些其它艱難的決定會自然地遵循這個框架:

  • 如何決定要做哪一份工作? 要在新創公司還是大公司工作? 要在一家普通的公司還是一個高成長 、能和一群聰明的人互相學習的團隊工作?
  • 你什麼時候要尋求幫助,又什麼時候應該自己掙扎著解決問題? 當你越花越多時間掙扎時卻沒有再學到任何東西時你需要一點指引,幫助你有更充裕的時間學到更多。
  • 你應該將你的程式送給誰審查? 如果你的目的是學習,你應該送給最苛薄的批評家,他/她能給你可行動且詳細的回饋,告訴你要如何改進你的設計跟程式碼,而不是給你團隊中的同伴,他會傾向很快地像蓋橡皮圖章似的表示贊同。
  • 你每次提交多少程式碼的區塊大小是合適的? 由於早點獲得回饋將讓你有辦法將回饋納入你未來的程式中,你應該要做比較小,漸增的變更。我剛開始做軟體工程時,在 Google 擔任實習生,犯了一個錯誤:我把上一星期做的所有專案的程式碼全部一起提交 。 我的輔導師的信箱上面寫著 “Edmond 已經送給你極大一包的程式碼等您審查”。這不只讓程式碼審查進度延遲而且我的暑期工作變成沒人理會。如果我的輔導師沒有批准任何變更,我也失去了跟他學習並採行他的回饋練習的機會。你可以確定我在這樣的經驗後,所有程式碼的提交都採行漸進式的方法。
  • 你要挑選比較熟悉的工作還是不在你舒適圈範圍內的工作來做?或許在與你相關專長領域還是有關聯狀況下,如果處理非舒適圈範圍的工作將讓你學到很寶貴的技術,那麼你可以考慮接受這個挑戰,而不是一直在做同樣的事。
  • 你做的專案失敗了或是你做的某一個功能並沒有發揮到你預期的影響力你要怎麼辦? 為了讓你能從這裏得到最大的教訓,你應該開放與誠實地和團隊成員做檢討,整理出從這教訓所獲得的知識,以及下次如何避免再犯同樣的錯誤。
  • 要如何應對你工作中一定要共事但卻又難相處的同事呢? 在你的職涯中你肯定會遇到難相處的人。一旦沈淪,採取被動攻擊(passive-aggressive)或盡量避免接觸這位同事,對你未來與人相處是不會有任何改善。 反之,把這件事當做挑戰做為一個經驗會比較好。主動的學習如何展開困難的對話,如何解決爭端,以及如何讓這份關係變得富有生產力。也許剛開始你會遇到挫折,但你在每次嘗試都累積未來如何應對的經驗。
  • 如果你在計劃於近期換工作,在最後的幾個月你應該如何做呢? 假設每個人每兩年就換一次工作,那所謂的”最後幾個月”隨著時間累加起來 ,簡單地不費力地工作代表你將失去很多學習的機會。 那為何不仍然設法在這幾個月也盡情的工作與學習呢?

還有很多其它的例子證實從進入職場的早期就遵循學習與成長的途徑,通常都會有更好的成果,尤其是當你比較不需要去顧慮限制和責任的時候。

幾個星期前,我和一家正在成長的新創公司的共同創辦人共進晚餐,期間我們聊到徵才的話題。我們兩個都已經做過許多的面試,都觀察到一位觀念正向、積極成長的應徵者通常比不太關心自我精進的人有比較強的技術與成就。就算現在你的技術層級還不是很強,如果你的學習曲線是以指數比率增長的話,很快地你將超越很多資深的工程師。

所以請專注於增長你的學習速度。刻意安排你時間中的20%投資你自己。讀書、升級你的技術或是非技術的技藝、尋找導師、參加研討會。 要留意,如果你避免了對於你的學習速度不做最佳化的錯誤,你已經走在成為最好的工程師的路上了。

這個部落格源自 Edmond 在Quora上的回覆

Alfred Lin, “The Power of 1%”, Zappos Blog, Jan 8. 2009.

原文 : How to Avoid the Biggest Mistake You Can Make as a New Software Engineer

關於這篇文章作者

edmondlau-headshot-1-w400-54af35b37dcef5c8646f247dcd0e9ed570e6ea506a7a00d19c3e1880d3b1485f

 

Edmond 目前教導軟體工程師和技術經理如何有效率的建立有意義的影響力。

他是 Quip 早期的軟體工程師,曾經在 Quora、Google和 Ooyala 帶領軟體開發團隊。

著作:The Effective Engineer

喜歡我們的分享嗎?歡迎使用以下的社群分享按鈕分享給你的朋友吧!

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: