原文來自 Quora:What are some things you wish you knew when you started programming?程序員
我但願知道許多東西,但我想起來的只有27件事。web
全面披露:我把最重要的事情放在第 14-26 條上(綜上所述),由於我想讓你閱讀完整的答案。我想你會喜歡的。算法
一、經過實踐去學習。編程
提升編程技能的惟一方式就是去動手實踐,不要讓一個卡殼的分析阻擋了你的開始。框架
二、編程不像應試學習。工具
記憶的東西並不重要。post
三、拷貝是徹底能夠接受的。學習
我使用 Google 來解決個人大部分問題,大多數的程序員也是如此。優化
四、不去檢查,讓問題一直堆積是糟糕的策略。調試
我曾經對個人代碼進行了無線的修改,而且期盼能當即工做。這種方法的問題在於你將一個問題疊加到另外一個問題之上了,這樣,找出錯誤出現的地方將會變得很困難。
五、自學真的很艱難。
對於大多數人,與有抱負的程序員合做和討論代碼是不錯的學習方式。
六、釋放你的情緒。
在你成爲程序員的旅途中,你將會遇到許多錯誤信息。你要明白,搞砸了是不可或缺的一部分,在錯誤中你將會成長。
七、你不須要有 5 臺顯示器。
可能與好萊塢告訴你的相反,做爲一個程序員,你並不須要一個瘋狂的顯示器來調試。你如今擁有的電腦足以開始編程。不要浪費你的錢。
八、大寫字母和小寫字母之間的差別很大。
在類似的符號中發現微小的差別,並使之成爲習慣,花了我很多時間,直到你習慣了,不然你會感到格外沮喪。
九、試圖去理解一切是感到的失落的一個緣由。
在一開始,我想要找出全部我遇到的問題的原理。這不是必須的。計算機原本就很複雜,咱們要學的還有不少,你不可能去理解每同樣東西。這不要緊。
十、儘量的去編寫代碼。
在學習編程的路上沒有捷徑。
十一、優化代碼是編程的一部分。
我過去想要我寫的每一行代碼必須是完美的。改進代碼是正常的,你不是在寫一本出版後就不能更改的書。
十二、尋求幫助的正確方式。
每一個人在某一時刻都須要求助,當你求助的時候,你須要作這4件事:
當你通過這些步驟,你常常會無心發現解決問題的辦法,而不是去尋求幫助,這會讓你更全面的去考慮問題。
1三、你不須要成爲一個數學天才。
若是你不是一個數學天才,也不意味着你不能成爲一個程序員。
1四、老是慶祝小勝利。
用代碼去創造東西確實很酷。若是我沒有退後一步去欣賞那些我路途中創造的使人敬畏的東西,我永遠也不會到達我所處的地方。
1五、創客聚會是很是有價值的。
一開始,我很樂意去參加這些讓我感到很自在的活動。一旦我作到了,我就意識到像我同樣的開發者有不少。
1六、避免合併衝突會使人很愉快。
合併衝突讓人很惱火。所以當我意識到我能夠在隊友以前插入一個功能,讓他不得不處理這些事情,這讓我很興奮。
1七、認可你不知道是能夠的。
當你從事你的第一份編程工做時,你可能會傾向於 「僞裝直到你作到」,不要這樣作,沒有人期望你立刻就知道一切。
1八、勝任一份工做徹底沒必要去花費 10000 小時。
現實中,你須要足夠好去直到如何自我修正和問題出現時回到正軌,這樣花費的時間就遠遠少於 10000 小時。
1九、你會在早上醒來思考代碼。
當它發生時,真 TM 酷!
20、犯大錯不要緊。
我曾經犯了一個錯誤致使個人公司損失 10000 美圓,在這件事中,我學到了我編程事業生涯中最重要的一課。
2一、算法就像在電話簿中尋找一個名字。
算法是一種按部就班的方法。
2二、你永遠不會以爲本身準備好了全職編程。
冒充綜合症是真實的。試着記住,什麼都不知道是正常的,最重要的是明白你能夠找出你不知道的東西。
2三、程序員從不中止學習。
新技術一直不斷的出現,因此那些成功的程序員就是那些繼續學習並不斷提高他們技術的人。
2四、讓電腦向人類同樣思考。
大多數人認爲,你須要向電腦同樣思考,事實上這正好相反。
2五、編程就是使用正確的工具進行工做。
如今有許多開源的庫、工具和框架供你使用。所以你須要擴充和開發你的工具包並瞭解對於遇到的問題,哪些工具是奏效的。
2六、在即將發生改變以前放棄是常見的。
學習編程(尤爲是在你轉行的時候)是一件很辛苦的工做,這須要大量的時間和紀律,但這是可能的。太多的人爲了達到目的地作了許多錯誤的工做。
2七、學習編程並不輕鬆。
這是值得作的事情。
過後看來,我真的很高興我當初太天真了。知道這麼少的回報給了我批判性思考我後來學到的一切的動機。
如今我開始花時間幫助別人經過編程來實現他們的目標。還有什麼比這更好呢?
太多的初學程序員擔憂何時才能準備好開始全職編程,因此我寫了這個標誌意味着你已經準備好跨越了。