每位新手程序員都應當了解的七條箴言

jopen 9年前發布 | 6K 次閱讀 程序員


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

每位新手程序員都應當了解的七條箴言

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

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

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

每位新手程序員都應當了解的七條箴言

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

“很多語言會以抽象形式將系統級別的運作機制剝離出去,而這種抽象性確實非常重要,因為它允許開發人員在大部分時間內保持更高的生產效 率。”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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!