如何以軟體工程師的身份工作?

來顆大葡萄發表於2019-03-13

好的行業程式碼

好的行業程式碼有以下屬性,依序是:

  1. 可讀性,因為程式碼用來讀和維護的頻次要高於寫。程式碼的意圖必須清晰,讓其他開發者在多年後依然理解。
  2. 防禦性,就是要遵循防禦性編碼的最佳實踐。防禦性編碼本身就是一個課題,不過其要義是:你必須確保自己所寫的類和方法的不恰當使用不會導致你的程式碼搞得軟體都崩潰。
  3. 最佳化,位列清單的最後未知,因為大多數時候你並不需要真正去擔心這個。這並不意味著你應該編寫糟糕程式碼,在存線上性解決方案的情況下以O(n³)的效率去做某個東西。但開發者通常渴望嘗試並且會在不需要的情況下過度最佳化,卻犧牲了程式碼的可讀性和防禦性。你永遠都應該能夠證明犧牲了這些屬性的特定最佳化是值得的。

現在你瞭解瞭如何去編寫良好的行業程式碼了。

編碼的工作你不會幹太多的

說出來也許有點令人吃驚,但是大多數時候你都不用寫新程式碼,而是相反,要做:

  • 除錯
  • 讀已有程式碼
  • 開會或者寫電子郵件
  • 研究該怎麼做以便不用寫程式碼

因此編碼以外的技能對你的職業一樣關鍵。

除錯和閱讀程式碼

  • 除錯遠不僅僅是用列印語句。一切使用廣泛的語言和技術棧都有各種強大的工具。學會使用它們,因為這些會讓除錯輕而易舉,節省你無數的時間。
  • 理解程式碼庫。大多數技術棧都有某種程式碼圖譜生成工具來幫助你理解程式碼庫的結構。企業級的 IDE 通常都內建了那種功能。你還可以利用 ReSharper、grep 或者 Sourcegraph 之類的工具來探索程式碼。
  • 理解產品。你會對居然有這麼多開發者在試圖“修復”軟體前不知道軟體應該是怎麼工作的感到驚訝。先看看文件再說吧。

組織你的思路

既然你的大量時間都是用在溝通、研究和多工上,你需要一些工具來幫助一切井然有序。

  • TODO 清單/任務工具:你的公司應該已經有了某種任務管理軟體了,但你自己也有類似的個人系統是有幫助的。使用便利貼或者像 Trello 或者 Todoist 之類的軟體。
  • 筆記:開會一定要記筆記,要致力於改進現有文件並且建立個人的知識庫。使用 Evernote、OneNote 或者筆記本。使用這些工具似乎有用力過度之嫌,但日後在回顧這一耗掉了你 3 天時間才想清楚的晦澀的開發過程時你會感謝自己的。不做豐富筆記的好的軟體開發者我一個都沒見過。
  • 圖表/視覺化:人是視覺動物,建立流程圖和架構可幫助你和其他人理解複雜的話題。在跟非技術人員溝通時圖解尤其有用。可使用 Lucidchart、 Visio 或者白板。

知道何時使用庫

簡短回答:隨時都要。

詳細回答:99% 的時間內你都不應該重新發明輪子。在大多數的軟體工程崗位,實現特定型別的東西都屬於純粹浪費時間。這並不意味著你不應該知道所使用的演算法和資料結構是怎麼工作的,因為這可以幫助你決定用什麼以及什麼時候用。

為了成為一名高效的軟體工程師,你需要理解自己可以任意支配使用的那些庫。大多數流行語言的標準庫都是極其有用的,其規模比你想象的要大。此外,程式碼庫也許也會利用了額外的特殊庫。閱讀其文件,知道什麼使用去使用它們。

你還應該不要害怕去建議額外的庫,如果它們將節省時間的話。然而,你需要確保自己選擇了一個好的庫供行業使用。好的庫的標準是:

  • 開源,這樣你就可以驗證自身程式碼的質量,並有可能修補對應用非常關鍵的 bug。
  • 按照 MIT 和 BSD 等方式進行的授權,這樣你的公司使用起來就不會遇到任何問題。要小心 GPL,因為它會讓你不小心就將整個程式碼庫都開源出去。
  • 成熟,比方說出來已經有一段時間了,並且功能集非常豐富。
  • 維護性強,新版本推出很密集。
  • 別的公司或者專案也使用,這個可以充當品質認證確保有行業支援,能持續維護下去。

持續改進

為了替自己建立新的職業機會,除了學習會讓你更擅長日常工作的技能以外,你還需要持續改進自身技能並且學習新技能。

其實學習的機會有很多,而且其中很多都是你可以負擔得起的:

  • 線上課程:向領域內最好的教授學習的機會,而且方式靈活,不容錯過。現有技能的補充性教程可以去可以看看 Coursera、 Udacity 以及 edX 等。
  • 線上碩士學位:線上碩士學位是最近在頂級大學流行起來的一個趨勢,這種方式可以靈活地繼續你的正規教育。相比之下,這種繼續教育方式費用沒那麼昂貴,修完整個學位大多數在 1 萬美元左右。喬治亞理工大學、UT 以及加州大學聖地亞哥分校等大學均提供此類學位。我個人推薦喬治亞理工大學的線上碩士虛偽,我去年剛從這裡畢業。
  • 部落格:部落格是開發者社群的重要組成部分。諸如 Coding Horror、Joel on Software 等部落格或者甚至更加詼諧的網站如 The Daily WTF 等都可以為你提供資訊,瞭解到作為軟體工程師該幹什麼不該幹什麼。瀏覽 Medium、r/programming, HackerNews 等新聞流也能讓你找到好部落格和好文章。
  • 會議:最後但並非最不重要的一個,會議時令人讚歎的學習機會,你絕對應該利用公司的培訓預算去參加會議。以下是不完全的好會議清單:GOTO(通用), Strange Loop(通用), PyCon (Pytho),CPPCon (C++),DEF CON (安全),Fluent (Web 開發)。上述所有的會議在 YouTube 上都有影片,所以你哪怕不出席也能學到東西!


IT學習群:483787113(暗號: ITPUB)   優就業直播課學習、疑問諮詢、記得找管理員要10G學習資源

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902763/viewspace-2638278/,如需轉載,請註明出處,否則將追究法律責任。

相關文章