每位新手程式設計師都應當瞭解的七條箴言

51cto發表於2015-08-19

  資深軟體開發人員分享他們在多年從業當中學習到的,關於如何成功推進專業程式設計工作的種種真知灼見。

每位新手程式設計師都應當瞭解的七條箴言

  如果大家屬於剛剛涉足專業軟體開發世界的新人,各位可能會以為自己完全能夠憑藉著多年來在電腦科學及程式設計領域獲得的教育及/或培訓順利玩轉一切。不過在這一行業浸淫多年的老鳥開發者則希望提醒大家,單憑科班灌輸的知識還遠遠不夠,我們還需要從實踐當中瞭解到更多極具指導性的寶貴財富。

  為了掌握這些真知灼見,我與多位經驗豐富的資深開發人員進行了溝通——他們至少在軟體技術領域擁有十年乃至更長的從業經歷(有幾位甚至已經從業數十年)。提到他們希望自己在剛剛畢業並初次涉足程式設計行業時能夠了解到哪些箴言,他們都有著自己的答案。無論大家是剛步出校門的應屆生還是已經在程式設計領域有些心得的從業者,下面這些來自老鳥們的建議相信都能在未來的發展道路上幫助各位找到正確方向。

  瞭解與底層系統相關的一切

每位新手程式設計師都應當瞭解的七條箴言

  當然,軟體開發工作當中的重要組成部分之一正是程式語言本身。不過正如各位前輩所分享的心得所言,開發人員同樣需要了解堆疊之下所發生的一切。

  “很多語言會以抽象形式將系統級別的運作機制剝離出去,而這種抽象性確實非常重要,因為它允許開發人員在大部分時間內保持更高的生產效率。”Acquia公司技術支援工程師Pete Bull指出。“不過當大家遇到障礙或者說非常嚴重的錯誤時,則需要對引擎蓋之下運作的一切擁有相當程度的理解。我們需要有能力除錯某項程式,並檢視系統呼叫以真正掌握特定程式碼片段與系統其餘部分之間的互動活動,”他在採訪郵件當中寫道。

  同樣的,Platform.sh公司客戶滿意度副總裁Robert Douglass告訴我們,“當我剛開始上手程式設計工作時,計算機本身還蘊含著大量我無法理解甚至聞所未聞的奧祕。檔案系統、網路以及資料如何駐留在記憶體當中,這就是三個典型的例項。這部分知識的缺失,意味著我根本無法真正從程式設計角度出發瞭解開發專案中的某些目標。”

  熟悉命令列工具

每位新手程式設計師都應當瞭解的七條箴言

  作為一位開發人員,大家很可能會把大量時間用在使用IDE或者程式碼編輯器身上。不過需要提醒大家,如果瞭解如何在命令列上實現同樣的操作,那麼各位的日常生活絕對會變得更加輕鬆。

  “有時候,大家會發現自己只能使用一臺配置一切就緒,但可用工具非常有限的裝置,”一位已經擁有二十年從業經歷的資深程式設計師告訴我們。“要像熟悉呼吸那樣熟練掌握shell,包括find、comm、diff、vi/vm、sed以及awk等等。有時候利用正確的合作行編寫小型指令碼來查詢必須馬上進行修改的檔案將非常重要——因為生產體系很可能已經受到了影響、而造成URL指向未知檔案的那位技術人員還在斐濟度假呢。”

  作為一位開發者,Bull最初使用的是微軟工具,但隨後逐步轉移到了Linux陣營。他表示“我已經學習到大量與命令列相關的專業知識,並意識到Linux系統之上提供的這些功能的重要地位。現在我能夠輕鬆地重新呼叫幾年前自己編寫完成的程式碼,或者拿出幾天或者幾周時間對grep + awk作出進一步改進。”

  偵錯程式是我們的好朋友

每位新手程式設計師都應當瞭解的七條箴言

  要想顯著節約寶貴時間,非常重要的一點就是利用相關工具追蹤各類bug。Novartis公司生物資訊學開發人員Dave Varon對於偵錯程式的重要意義作出了強調,並解釋了其如何幫助我們獲得遠超過初始學習成本的收益。“學習使用偵錯程式,快快快!”他在採訪當中指出。“拿出一、兩天時間好好鑽研配置一番。在此之後,如果發現結果與預期不符,那麼馬上除錯:設定斷點、貫穿程式碼,特別是第三方程式碼。這不僅能夠幫助我們大大降低問題出現機率,同時也能夠讓大家在其間學習到很多原本只能通過閱讀他人程式碼掌握的知識。”

  學習編寫測試

每位新手程式設計師都應當瞭解的七條箴言

  一部分開發人員認為單元測試——具體來講,就是編寫測試以驗證小型程式碼單元是否起到了其應有的作用——非常關鍵。來自Strategic Power Systems公司的資料庫開發人員Richard Handloff就是其中之一。“我認為我能給新人們提供的最好建議,就是學習如何編寫出優秀的測試機制,並在專案開發初期就制定出一套可行的測試方案,”他在採訪郵件當中寫道。

  制定改變規劃,瞭解新型系統

  時至今日,每位從業者都清楚地意識到技術正在快速發展轉變。這種現象不僅影響著我們心愛的客戶的實際體驗,同時也改變著底層系統、語言乃至程式設計師們日常工作所使用的各類工具。

  Milestone Made公司創始人兼移動開發者Adam Wulf建議稱,新晉程式設計師們應當準備好——而且搶先一步——應對技術變革。“就目前來講,我認為大家應該以四年為週期就學習全新技術堆疊作好規劃,”他表示。“良好的基礎知識當然能夠始終發揮作用,不過我們每天所使用的工具乃至技術方案每過四年就會發生顛覆性的變更。”

  “專案不應再利用單一框架以單一語言編寫而成,”一位不願透露姓名的開發者建議道。“大家千萬不要在某個專案當中只使用一種開發方式,因此請儘快適應在不同專案之間進行語言/技術轉換的實際需求,”他在採訪郵件當中寫道。

  與他人保持良好關係

每位新手程式設計師都應當瞭解的七條箴言

  儘管常規概念下的程式設計師都會戴著耳機在自己的小世界裡埋頭工作,但不可否認的是,我們仍然需要同他人並肩協作。Sinclair Digital Ventures公司CTO Ben Miller著重強調了作為團隊成員角色工作對於實現職業生涯成功的重要意義。“大型專案往往是由眾多活動元件構建而成,如果我們無法順利完成協作,那麼元件的合併將成為一項不可能實現的任務。”他在採訪郵件當中指出。“在嘗試對某種演算法進行優化之前,請先與團隊進行溝通並確保任何能夠幫助團隊成員減輕工作壓力的任務分配規劃都已經部署到位。程式設計是一項團隊競技專案,千萬別忽視了這一點!”

  Varon還著重強調了人際交往能力的重要性,表示“如果大家無法自行完成API或者除錯的審查工作,請借力於他人。我們自認為編寫出了一段堪稱傑作的程式碼,並不意味著它就一定出色或者沒有進一步提升的空間。跟在大學裡一樣,同處一室的其他同伴也面臨著同樣的問題,而且每個人都有可能找到了解決問題的最佳答案。與同事們建立起融洽的合作關係,有時候甚至單純向對方描述問題就足以幫助我們找到解決靈感。”

  另一位不願透露姓名的受方者也表達了類似的想法,即成為團隊中一員對於順利完成任務所起到的積極作用。“即使當前的工作比較繁重,我們也應當儘可能幫助其他成員解決各類難題,這將讓大家的職業生涯走得更加順暢,”他表示。不過在這種情況下,他也提醒大家“但請注意,要保證有理有節的幫助強度,否則我們很可能身陷其中而耽誤了自己的份內職責。”

  勇敢邁出自己的道路,以自由職業身份編寫程式碼

每位新手程式設計師都應當瞭解的七條箴言

  Miller在這裡提出了一項有趣的建議,而且乍看起來似乎難以理解。他在採訪中告訴我,“在工作之外編寫程式碼更易於實現職業生涯提升。找到最簡單的問題解決辦法並對程式碼進行免費的彈性設定與維護,那麼客戶自然會提供更多工作供我們完成。他們甚至會邀請我們以教師的身份指導其內部開發人員,”他解釋道。“簡而言之,過分擔心當下這份工作是否穩定反而會阻礙職業生涯的健康發展。”

  原文標題:7 things every new programmer should know

相關文章