對於編程學習,什麼才是最重要的?
呢喃
為愛走天涯
任賢齊
00:00/04:10
對於編程來說什麼最重要,每個人答案也許都不同,這個答案也不可能是唯一的。但我想,既然是「最」重要,那必然要排個先後或者主次。
我經常看到一些文章,在談論一個問題時會給出一大堆解決方案。每一個解決方案或者是模糊不清楚的,或者是讓人不知道從何入手的。給出太多無法具體操作的、看似正確卻無法實施的方案這無異於流氓。
我看過一篇文章談如何學習編程,文章給出的答案是:
重視基礎
注意細節
培養編程興趣
多寫代碼
這建議其實和廢話沒有兩樣。就如同你問人家如何能夠畫好畫,答曰:多練。這似乎是最沒用的大實話。
這些年我喝過各種編程雞湯,但唯有一劑甚是美味,屢試不爽,堅持服用有奇效。
我8年前大學畢業。畢業後在一家不大不小的軟體公司里某了一份編程的工作。剛上班那會兒,每當遇到技術的問題,我很自然的會去求助公司里的老員工,指望別人快速告訴我答案。
有些同事挺好的,你問他問題,他會拿著代碼給你調試;有些同事很不耐煩,告訴你一個大致的思路,就不再理你了。
隨後我逐漸發現,別人能幫你解決的,我自己都可以通過調試來解決;大方向不清楚可以用搜索引擎,逐步排查信息。
難題肯定是有的,但是求助於人並不是一個好的習慣;堅持自己debug代碼,搜索資料、分析資料才是初學者最應該養成和堅持的習慣。
對於開發者來說,通過調試和分析培養自己解決問題的能力,是最為重要的事情,沒有之一。
一個程序員能堅持不求人,自己解決問題,能做到這一點,他的未來不會太差。
當我們的代碼報錯時,我們急於求人,是一個非常不好的習慣。如果是方向或者方案性的問題,他人還有可能給我們指出一條明路,但對於代碼的報錯,很多時候,你們眼中的高手也是無能為力的。因為即使再牛x的人,很多錯誤他也只能調試,既然他都要調試才能解決,為什麼你自己不能調試呢?
很多時候,我們自認為自己是初學者,所以潛意識裡認為求助他人是應該的。其實這是借口,或者說你潛意識裡不夠勇敢,不夠自信,不相信自己能解決問題。但你殊不知道,你每求助一次他人,你自己就浪費了一次學習和深入學習知識的機會;也浪費了一次培養自己編程思維的機會。
每個人都是從初學者開始的,我們編程不是 造火箭大炮,編程也不是什麼高科技,你沒有理由因為是初學者就不去自我解決問題,何況我已經告訴你了方法:調試,斷點調試,你的代碼出了錯誤,那就一定是你的代碼寫錯了。
我最近統計了下提問區的問題,」undefined、canot import xxx module、None」等關鍵字在問題中出現的頻率極其之高。而這些關鍵字的出現說明這個問題本身就是代碼寫錯了,調試就能解決。提出這樣的問題,無異於是說,我不想調試,老師你幫我調試吧。
我沒有你的代碼,我真的調試不了。每次我看到 貼出來的大段代碼,眼睛都看疼了,找到的錯誤99%都是單詞拼寫錯誤、少了括弧、多了逗號。
我做了4門課,回答了5000多個問題,裡面真正有價值的問題,我實話實說,不到1%。這個比例是何其的可怕。
我覺得做課程,其實是在做服務,所以只要你提出來了,合不合適方不方便我都會花幾分鐘時間幫你看看。但我要說的是,如果你抱有我遇到了問題,老師就有義務幫我解決,這話絕對沒錯,但這種思維是真的害了你。
你的編程之路還很長,以後你還會遇到很多問題,不是每個問題都有人幫你解決。你也不要認為,我現在是初學者,基礎很弱所以求助他人是可以的;等我基礎好了我就能自己解決了。
編程在不同的階段會有不同的問題,而這些問題和你是不是初學者、是否基礎弱都沒有關係。你今天遇到的問題,等你成為大神後依然會遇到各種各樣的問題(當然,如果你現在不養成自我解決問題的能力,我認為你成為大神的可能性可能和人類發現外星人一樣低)。每個開發者在學習一個新的領域的時候,他都是」初學者「。所以這種」初學者「的特權是不存在的。
自己調試代碼還對我們培養編程思維有很大的好處。
很多知識只看書或者看視頻是沒有太大效果的,編程本身就是一個在發現錯誤—調試錯誤—解決錯誤—獲取經驗這樣一個永無止境的循環中螺旋上升的能力。一個人編程十年遇到的bug何止千萬,正是在解決這些異常紛繁錯誤的過程中,我們的編程能力和思維邏輯才能得到提高。
萬事都是說起來容易做起來難,也許你看完這篇文章後也會嘗試自己去調試解決問題,但很可能解決不了。怎麼辦?沒有辦法,解決不了也要自己調試解決。
請把自己想像成魯濱遜,你在一個無人的荒島上,沒有人求助,沒有人幫你,一切只能靠你自己。魯濱遜在島上種植大麥和稻子,自製木臼、木杵、篩子,加工麵粉,烘出了粗糙的麵包。他捕捉並馴養野山羊,讓其繁殖。他還在荒島的另一端建了一個「鄉間別墅」和一個養殖場。這簡直是世外桃源。
如果你也想擁有一個世外桃源,擁有自己獨立的精神世界,那麼請從「調試"做起。
TAG:小樓昨夜又秋風 |