原文來自 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、學習程式設計並不輕鬆。
這是值得做的事情。
事後看來,我真的很高興我當初太天真了。知道這麼少的回報給了我批判性思考我後來學到的一切的動機。
現在我開始花時間幫助別人通過程式設計來實現他們的目標。還有什麼比這更好呢?
太多的初學程式設計師擔心什麼時候才能準備好開始全職程式設計,所以我寫了這個標誌意味著你已經準備好跨越了。