新手程式設計師應該知道的7件事

2015-09-18    分類:程式設計師人生、首頁精華1人評論發表於2015-09-18

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

資深軟體開發人員分享的一些關於專業化程式設計的經驗和教訓,這些經驗教訓都是經過多年曆練總結得出的。

如果你剛進入專業的軟體開發世界,那麼得益於在電腦科學和程式設計方面的教育和/或培訓,你已經具備了一定的知識。但是真正的開發業務工作又和在學校程式設計不同,這是你不可能從大學課程或編碼學校中學會的東西。

為了瞭解新手程式設計師需要知道哪些內容,我諮詢了一些經驗豐富的編碼老將,這些“老”將全部有著至少十年(有的甚至是幾十年)作為專業軟體工程師的工作經驗。我的問題是,如果他們現在回過頭去,哪些技能和知識是他們第一次以寫程式碼為生的時候就希望能夠掌握的。無論你是一個剛畢業剛開始自己第一份開發工作的大學生,還是年長的轉業到程式設計領域的工作者,歡迎閱讀這7條專為新手程式設計師總結的建議。

1.瞭解底層系統

軟體開發的一個重要組成部分是,瞭解程式語言。但是,正如有些人建議的那樣,開發人員還需要了解堆疊下面是怎麼回事。

“很多語言抽象化了系統層正在發生的事情,這種抽象是很有用的因為它讓開發人員在大多數時間裡變得更高效。”Pete Bul,Acquia公司的一位支援工程師說。“但是,當你碰到一個障礙,一個特別堅實的bug,需要更深層次地瞭解內部究竟發生了什麼的時候,那麼瞭解底層系統就是一個很有用的技能,可以讓你除錯程式,檢視系統呼叫,並且真正意義上看到程式碼片段與系統的其餘部分的互動,”他在郵件中這樣寫道。

無獨有偶,Robert Douglass,Customer Satisfaction with Platform.sh的副總裁告訴我,“當我剛開始程式設計的時候,對於計算機我有很多不明白的地方。檔案系統,網路連線以及記憶體機制就是三個明顯的例子。不瞭解這些,意味著我可能會不知道一些我想要呈現的程式設計結構的目標。”

2.知道命令列工具

作為一個開發人員,你必然需要將大量的時間花在IDE或程式碼編輯器上。但是,知道命令列這個工具有助於你更便捷地完成工作。

“有時候,你可能會處在一種需要緊急完成任務但工具卻非常有限的情境中。”一位已有20年工作經驗,並希望能夠匿名的資深程式設計師告訴我, “知道shell就要像呼吸一樣自然。掌握類似於find、comm、diff、vi/vim、sed、awk等工具。知道如何用命令列來查詢檔案等等,都可以在你寫指令碼的時候為你減負。”

Bull,是一位先用微軟工具,然後逐漸轉移到Linux的程式設計師,對此表示贊同:“瞭解命令列的來龍去脈以及掌握所有的實用程式真的很重要。這是我經歷過的切身體會。”

3.偵錯程式是我們的好朋友

程式設計師很大一部分時間會涉及追蹤bug。Dave Varon,Novartis公司的一位生物資訊學開發人員,著重強調了偵錯程式的優點以及它是如何減輕了時間的初始成本。 “一定要掌握如何使用偵錯程式!”他告訴我, “磨刀不誤砍柴工,事先不妨花個一兩天時間進行配置。如果沒有得到預期結果,那就除錯:設定斷點,逐步除錯程式碼,特別要注意第三方程式碼。這可以避免很多挫折,也能讓你更好地瞭解那些只能通過閱讀別人的程式碼才能知道的編碼知識。”

4.學習編寫測試

一些開發人員認為,單元測試,也就是編寫測試來驗證小單位程式碼是否在做應該做的事情,是非常關鍵的。Richard Handloff,Strategic Power Systems的資料庫開發人員,就是其中之一。 “我認為我曾給那些想要學習程式設計的人提的最佳建議就是,要學習編寫良好的測試並且學習在程式早期就開始編寫測試,”他在回信給我的郵件中這樣寫道。

5.積極應對變化和學習新系統

大家都知道,現在的技術變化很快。這不僅適用於深受我們喜愛的消費品,對於程式設計師使用的底層系統、語言和工具同樣如此。

Adam Wulf, Milestone Made公司的移動開發者和創始人建議,要積極應對變化,並始終保持在技術的前沿。 “現在,我的建議是每隔4年就得計劃去學習基本上全新的技術堆疊,”他說, “好的基礎知識永遠是可用的,但是你每天要用的工具和技術差不多每隔4年就會完全不同。”

“專案永遠不可能只用一種語言和一種框架,”一位不願意透露姓名的開發人員說, “你不能吊死在一種技術上,要習慣於從一個專案到另一個專案的轉移,一種語言/技術到另一種語言/技術的擴散,”他寫道。

6.良好的合作

儘管程式設計師習慣於戴上耳機獨自工作,但你依然要與其他人合作。Ben Miller,Sinclair數碼公司的CTO,強調了團隊工作對於事業成功的重要性。 “大專案往往意味著大量活動元件的碰撞,需要處理元件如何結合和劃分的問題,如果你不小心的話,可能會導致難以預測的工程問題。”他在電子郵件中寫道。 “在優化演算法之前,和團隊一起確保沒有問題是交叉的,可以讓每個人要解決的問題都變得簡單起來。編碼是一項團隊遊戲!“

Varon重申了人際交往能力的重要性,他說:“如果你通過再次查閱API和除錯,依然不能弄清楚問題的根源,那就應該尋求幫助。哪怕你覺得你寫的是傑作,也並不意味著沒有廢話或者不能更好。要和同事融洽相處。有時候只需要大聲地說出這個問題或許就會有靈光一現。“

一些匿名人士還分享了類似的想法,比如說成為團隊成員。 “提升團隊凝聚力,樂於助人,即使是一些瑣碎的工作,”他說。但是,在這種情況下,他警告說,“一定要有一個度,不要撿了芝麻丟了西瓜,忘記了自己的本職工作。”

7.不要害怕失業

Miller有一個特別有趣的忠告。 “跳槽就是晉升,”他告訴我。 “尋找解決問題最簡單的方法,可以讓你的程式碼彈性化和免於維護,這樣你的上司就會交給你更多的事情。他們甚至會要求你將你的做法教授給別人,“他解釋說。 “總而言之,一味地擔心失業可能會阻礙職業生涯的前進。”

譯文連結:http://www.codeceo.com/article/7-things-new-programmer-know.html
英文原文:7 things every new programmer should know
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章