首先,歡迎來到程序員的世界。在這個世界上,不是有不少人想創造軟件並解決問題。你是一名hacker,屬於那些願意作一些有挑戰性的事情的人。php
「當你不創造東西時,你只會根據本身的感受而不是能力去看待問題。」 – WhyTheLuckyStiffhtml
對於下面的文字你沒必要徹底接受,全部這些來自一個其貌不揚的程序員。我喜歡把事情作到最好,而不是對原來的東西修修補補。linux
僅僅是由於愛好開始作一些創新,這是一個很好的開始!若是你說「我要先學習一下再開始作」那麼你永遠不會真正開始。每一個人都須要從某個地方開始,因此如今打開你的編輯器開始寫代碼吧。程序員
下面是一些很重要的建議,雖然有人並不認同,但我保證你看完個人分析之後會站在我這一邊。一開始,先不要管算法和數據結構。大多數簡單的程序不須要用到算法和數據結構,因此當你真正須要時再去學習。編程一段時間之後,你就會知道在哪些地方用到他們。這時知道算法的名字並瞭解它們的功能,而後找一些相關的論文去理解算法並動手編程實踐。若是沒有現成的函數庫(其餘程序員提供的可重用代碼),你用本身喜歡的編程語言來實現它。web
0. 選擇一門好的編程語言,一門你自認爲能夠用它快速地作出一些有用東西的語言。算法
不要選擇C語言做爲你第一門編程語言。也許選擇C語言會給你一種過期的知足感。雖然它比早期的彙編語言提供了更好語法描述,可是今天C(或者C++)不是可以快速編寫軟件的語言。絕不偏袒的說,我建議你學習一種動態語言。選擇一種你以爲語法(文檔)讓你使用起來更舒服的編程。爲此,你可能須要花費一些時間來在幾種不一樣的語言之間進行比較。這麼作目的不是爲了讓你感受更好或者讓編程更容易。更快地完成本身的做品而且可以看到成果,纔是激勵你編程的源動力。不要選擇一門須要某種重量級的IDE(IDE是一種可以幫助你編寫並運行代碼的工具)才能輕鬆編程的語言。你所須要的僅僅是一個文本編輯器。(注:原文並無標號,是咱們加上的,請你們別忘記了哦,咱們是從零開始數數的。:) )編程
1. 選擇一個好的編輯器。小程序
編輯器對程序員而言,就是像是弓對弓箭手同樣重要。這裏有一些推薦的編輯器:服務器
注意!Emacs和Vim可能已經成爲成爲古董了。可是,它們都具有一些現代編輯器多不具有的功能。數據結構
2. 選擇一個你能夠從中學到東西的操做系統
Windows不會教會你任何東西。使用Windows你惟一學會的就是打開一個exe(可執行)文件來安裝軟件和使用它。可能剛開始的時候你會以爲很酷,可是長遠來看,若是你立志成爲一個web開發人員,可能仍是要具有基本的linux知識,尤爲是當你要發佈程序的時候。Linux也容許你根據本身的要求來定製程序。Macs也很酷,可是我認爲你如今經濟上還負擔不起。
3. 不要經過複製粘貼來作備份
一個新手程序員一般會把文件複製粘貼到一個臨時目錄下面來進行備份。這也許也是他們惟一知道的方法。不要那麼作!你須要使用版本控制軟件。我強烈推薦使用Git,它是個目前很流行的版本控制工具,並且使用起來很是簡單。對一個Git新手,有一個良好的社區和不少參考資源來學習。(除了Git以外,還有mercurial, darcs, fossil等等。可是我仍是建議從Git開始,我有不少的理由來支持Git,這裏就很少費口舌了。)
4. 知道去哪裏尋求幫助
參加一個和你相關的(你使用編程工具相關的)程序員社區。好比StackOverflow就是程序員的Facebook。那裏沒有消息狀態和回覆,取而代之的是問題和答案。除此以外還要學會使用IRC。IRC是一種老式的聊天室,如今還在被大多數開發人員用來分享技術信息和幫助解決問題。
5. 培養你的禮儀
知道何時問問題。你遇到的大多數問題都是別人碰到過而且在Internet上可以找到解答的。在IRC或者任何論壇裏發問以前,先搜索一下google(或者blekko)來看看是否是有現成的答案。在IRC上問問題須要有耐心。永遠記住,人們只是處於好心來免費幫助你。有時你發問之後須要幾個小時纔能有回覆。因此,耐心等待。除此以外,記得問問題的時候要禮貌。世界很小,你怎麼對待別人,別人就會怎麼對待你。
6. 結交朋友,技術書籍只能教你解決常見的問題(他們說:書是死的)
當你在搗鼓一些程序或者從程序的做者那裏學習,你能學到一些書本上沒有的東西。當你散步的時候,請和遇到的朋友打招呼。你確定不是惟一的程序員。和其餘的程序員一塊兒交朋友一塊兒工做。你會注意到,當一羣技術愛好者在一塊兒的時候,不論話題是從什麼地方開始,最後老是以技術話題收尾。這是必然的現象。因此你能夠盡情參與。在你的黃金年齡努力編程,我能告訴你的是,我在開始6年前尋找朋友並開始討論編程,從那時起才學到那些書本和文章不會個人東西。因此我老是說,個人編程經驗有6年,由於只有那個時候開始,我纔開始與人交流並開始感受真正地開始學習編程。
7. 參加開源項目
爲開源項目編寫代碼能帶來回報。這不只僅是幫助別人,你留下的代碼會被其餘人使用或(可能)改進。當別人給你的代碼添加功能或者提出修改意見時,也是在提升你的編程水平。開源軟件項目不必定要是一個大工程,編寫一個下載youtube視頻的小程序也是頗有用的。更重要的是,你會驚奇地發現你編寫的代碼會成爲與他人有效溝通的橋樑。
最後,若干年以後若是本文的內容曾經對你有一點點的幫助,做爲回報請寫一封相似的信給但願開始編程並不知如何入手的朋友,有可能的話請糾正本文中過期的內容。
智者說過,掌握某個東西須要10年或10000個小時,也就是漢語中的「十年磨一劍」,因此不用着急。
英文原文:An open letter to those who want to start programming
中文翻譯:伯樂在線
from: http://www.williamlong.info/archives/2700.html