为什么好学生,学不好编程?
老師好,今年我大二,軟件工程專業。
我的高數、英語等課程都學的很好,考試成績也很高。但唯獨學校開的C語言學不懂,即使花了很長時間?看懂了一點,仍然也寫不出來代碼。而且,我同宿舍的很多人都有這種情況,她們從中學到現在,各科也都學的很好,但唯獨學不好編程。請問,是什么原因造成的啊?
?
答:一些好學生,寫不了代碼;而一些“差學生”寫程序卻很厲害。這個問題,我在很多大學都遇到過。以下,談談我的觀點。(本文僅表達個人觀點,無意冒犯)
?
第一,“好學生”的學習方法,不適合學編程。
????很多好學生,是這樣學習的:預習、學習、復習、不懂就問,必須先把第一個知識完全搞懂,才會去學習第二個知識。覺得這樣,雖然學的慢一點,但會學的很踏實。
????怎么說呢?以上這種想法本身是沒錯的,但如果真這么學,可能得先花個3年才能完整的學完第一遍;然后再花個3年復習,才能記住。不過,等你學完后,那些技術是否還在普遍使用,就不好說了。
? ? 為什么這么說呢?
? ? 因為,
??????? 1.軟件開發的知識量太大了,更新速度太快了;
??????? 2.想學好軟件開發,必須掌握“二八定律”。尤其初學時,只要把那些最常用的20%技術掌握了,就足夠了。但對于“好學生”而言,讓他們暫時放棄80%的知識,心理上可能無法接受。他們習慣了腳踏實地的學習,他們反對蜻蜓點水、投機取巧。這就導致,原本一個初學階段“不重要”的知識,耗費了他們大量的時間和精力,甚至打擊了他們繼續學習的信心。
? ? ? ?? 舉個例子,初學者學“反射”和“自定義注解”時,大概率是學不懂的,即使學懂了,也不知道“反射“、”自定義注解”究竟能用來干啥?所以,此時,就產生了兩種學習方向。
????(1)算了,這些知識既然學不懂,我就臉皮厚一點,不管了,先跳過這些,去學習后面的其他知識吧(這往往是“差學生”的選擇);
? ? (2)堅持就是勝利!雖然我今天沒學懂,但我一定比昨天強;同樣的,明天也一定比今天強。只要我堅持下去,一定能夠學懂的(這往往是“好學生”的選擇)。
? ??? 實際上呢?像“反射“、”自定義注解”等非常多的知識,不要說初學者了,就是三年以內的上班族程序員,也不一定理解的很透徹。也就是說,那些折磨人、耗時很長的大量知識點,通常“不值得”初學者花太多的時間去學習。即使學了,可能在很長一段時間內 也用不上,用不上 就自然會淡忘了。
? ?? ?因此,在學習軟件開發時,“差學生”有著思維上的優勢,他們會接受“不懂就跳過”的學習思維;而“好學生”卻往往在大量非重點知識上耗費太多精力。
?
????
????對于“好學生”和“壞學生”的學習思維,還有一點值得說明。“壞學生”可以在對一個知識一知半解的情況下,就直接上機去實踐;而“好學生”經常需要等到他把那個知識徹底搞懂了,才敢去上機。但由于軟件開發的知識量太大,根本沒有足夠的時間讓你把每個知識全搞懂再上機;此外,軟件的“實踐性”屬性就已經決定了,軟件開發是必須通過反復的上機實踐,才可能達到“徹底”的搞懂。
?
?
第二,“好學生”過于追求問題的標準答案。
??在學習數學、物理、化學等傳統學科時,存在著嚴格的公式和明確的定律。常見的考題可能也就幾千道(幾千道是我亂猜的,不要杠,杠就是你對)。我想說的是,每一個知識、每一道題的答案,幾乎都有標準化等著你。是對是錯,一查便知。但軟件開發卻有著很大的不同。軟件開發屬于“工科”,是一門實踐性學科,必須“實踐”才能知道最適合你的答案。就好比游泳,在岸上講再多的理論,都必須你下水親自試了后,才知道哪個動作、哪個姿勢最適合你。
? ? ?再舉一個具體的例子。數學題錯了,老師會告訴你是哪些計算弄錯了;英語題錯了,老師會告訴你哪些語法有問題;物理化學題錯了,老師也會告訴你哪些公式或定律用錯了。但軟件開發呢?基本的語法錯誤,Eclipse、Idea等編譯器會直接提示你錯誤,所以不用問老師;但如果是邏輯錯了,怎么辦?的確,老師可以指導你是哪里的邏輯出了問題,但要注意,“邏輯”是長在你自己腦子上的,最佳的方式仍然是需要你自己找到思維出錯的根源,然后才能想辦法修正,老師只能幫你“治標”,但“治本”還需要你自己想辦法。更甚,有些問題,老師是沒法回答你的(除非忽悠你)。比如,你可能會問“老師,JVM最佳參數怎么調?”,老師回答“得根據具體情況調”;你又問“老師,TOMCAT線程數多少合適?”,老師回答“得根據具體情況調”;你接著問“老師,堆空間設置幾個G最好?”,老師回答“得根據具體情況調”。此時,你可能面帶微笑離開,但心里一定會想“老師,你咋這么水”。實際上,我認為以上類似的問題,老師真的是沒法回答的。你不妨這么想,如果真的有“統一的、通用的最佳參數值”,人家JVM為什么不預先設置好?還非得讓我們每個人去設置一遍?每個項目不同、每臺計算機的性能不同、設置每個項目自審的架構質量不同,這些都會影響到如何設置一個“最佳參數”。那這些問題要怎么解決,如何設置最佳參數?兩個辦法:1.經驗;2.根據性能測試的結果慢慢調整。(此外,你真的認為,對于你提出的這個問題,每個老師的水平都比你高嗎?)
?
????總結一下本文:很多“好學生”學不好編程的原因,可能有如下兩個:
? ?? 1.學習過于踏實,不懂得暫時跳過非重點知識。應該根據二八定律,先用最短的時間,學習最實用的技術。
? ? ?2.問的太多,不懂得學軟件開發一個很重要的能力是:自學。學軟件開發不要追求對錯,而要追求如何提升自己的思維邏輯。
? ? ?
?
?
- 完?-
推薦閱讀
測評 | 2<<3 的效率高于 2*8 ?
Java小白到大神的心路歷程(框架)
答疑 | 我是JAVA初級,有必要學架構設計嗎?
總結
以上是生活随笔為你收集整理的为什么好学生,学不好编程?的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 第八届中国高等院校设计作品大赛启动
- 下一篇: 基于Casbin实现ABAC
