原文來自 Quora:What are some things you wish you knew when you started programming?
我希望知道許多東西,但我想起來的只有27件事。
全面披露:我把最重要的事情放在第 14-26 條上(綜上所述),因為我想讓你閱讀完整的答案。我想你會喜歡的。
1、通過實踐去學習。
提高編程技能的唯一方式就是去動手實踐,不要讓一個卡殼的分析阻擋了你的開始。
2、編程不像應試學習。
記憶的東西并不重要。
3、拷貝是完全可以接受的。
我使用 Google 來解決我的大部分問題,大多數的程序員也是如此。
4、不去檢查,讓問題一直堆積是糟糕的策略。
我曾經對我的代碼進行了無線的修改,并且期盼能立即工作。這種方法的問題在于你將一個問題疊加到另一個問題之上了,這樣,找出錯誤出現的地方將會變得很困難。
5、自學真的很艱難。
對于大多數人,與有抱負的程序員合作和討論代碼是不錯的學習方式。
6、釋放你的情緒。
在你成為程序員的旅途中,你將會遇到許多錯誤信息。你要明白,搞砸了是不可或缺的一部分,在錯誤中你將會成長。
7、你不需要有 5 臺顯示器。
可能與好萊塢告訴你的相反,作為一個程序員,你并不需要一個瘋狂的顯示器來調試。你現在擁有的電腦足以開始編程。不要浪費你的錢。
8、大寫字母和小寫字母之間的差異很大。
在相似的符號中發現微小的差異,并使之成為習慣,花了我不少時間,直到你習慣了,否則你會感到格外沮喪。
9、試圖去理解一切是感到的失落的一個原因。
在一開始,我想要找出所有我遇到的問題的原理。這不是必須的。計算機本來就很復雜,我們要學的還有很多,你不可能去理解每一樣東西。這沒關系。
10、盡可能的去編寫代碼。
在學習編程的路上沒有捷徑。
11、優化代碼是編程的一部分。
我過去想要我寫的每一行代碼必須是完美的。改進代碼是正常的,你不是在寫一本出版后就不能更改的書。
12、尋求幫助的正確方式。
每個人在某一時刻都需要求助,當你求助的時候,你需要做這4件事:
- 你看到的通信細節
- 確切說明你認為應該發生什么?
- 確切說明實際發生了什么?
- 確切解釋為什么結果會不一樣?
當你經過這些步驟,你經常會無意發現解決問題的辦法,而不是去尋求幫助,這會讓你更全面的去考慮問題。
13、你不需要成為一個數學天才。
如果你不是一個數學天才,也不意味著你不能成為一個程序員。
14、總是慶祝小勝利。
用代碼去創造東西確實很酷。如果我沒有退后一步去欣賞那些我路途中創造的令人敬畏的東西,我永遠也不會到達我所處的地方。
15、創客聚會是非常有價值的。
一開始,我很樂意去參加這些讓我感到很自在的活動。一旦我做到了,我就意識到像我一樣的開發者有很多。
16、避免合并沖突會令人很愉快。
合并沖突讓人很惱火。因此當我意識到我可以在隊友之前插入一個功能,讓他不得不處理這些事情,這讓我很興奮。
17、承認你不知道是可以的。
當你從事你的第一份編程工作時,你可能會傾向于 “假裝直到你做到”,不要這樣做,沒有人指望你馬上就知道一切。
18、勝任一份工作完全不必去花費 10000 小時。
現實中,你需要足夠好去直到如何自我修正和問題出現時回到正軌,這樣花費的時間就遠遠少于 10000 小時。
19、你會在早上醒來思考代碼。
當它發生時,真 TM 酷!
20、犯大錯沒關系。
我曾經犯了一個錯誤導致我的公司損失 10000 美元,在這件事中,我學到了我編程事業生涯中最重要的一課。
21、算法就像在電話簿中尋找一個名字。
算法是一種循序漸進的方法。
22、你永遠不會覺得自己準備好了全職編程。
冒充綜合癥是真實的。試著記住,什么都不知道是正常的,最重要的是明白你可以找出你不知道的東西。
23、程序員從不停止學習。
新技術一直不斷的出現,所以那些成功的程序員就是那些繼續學習并不斷提升他們技術的人。
24、讓電腦向人類一樣思考。
大多數人認為,你需要向電腦一樣思考,事實上這正好相反。
25、編程就是使用正確的工具進行工作。
現在有許多開源的庫、工具和框架供你使用。因此你需要擴充和開發你的工具包并了解對于遇到的問題,哪些工具是奏效的。
26、在即將發生改變之前放棄是常見的。
學習編程(尤其是在你轉行的時候)是一件很辛苦的工作,這需要大量的時間和紀律,但這是可能的。太多的人為了達到目的地做了許多錯誤的工作。
27、學習編程并不輕松。
這是值得做的事情。
事后看來,我真的很高興我當初太天真了。知道這么少的回報給了我批判性思考我后來學到的一切的動機。
現在我開始花時間幫助別人通過編程來實現他們的目標。還有什么比這更好呢?
太多的初學程序員擔心什么時候才能準備好開始全職編程,所以我寫了這個標志意味著你已經準備好跨越了。