編程究竟難在哪兒?

都說程序員一天只有三件事:吃飯、睡覺、敲代碼。

都說學會編程很簡單,可是要學好編程很難

那,編程到底哪裡難?

編程究竟難在哪兒?

其實編程一點兒都不難,它只是和你十幾年來在學校受的教育格格不入而已。

很多人覺得難,只是難在理解不了事物的本質,難在沒有解決問題的能力,難在堅持。

一、我們根本就不理解事物的本質,只是去“記憶”

從小到大,我們受到的教育終極目的只有一個:考個理想的學校。

這麼多知識點,我們需要做的就是背下它們,或者更高級一點,理解它們。

即便是強調思辨和分析的“文科類”,也可以靠死記硬背答題模板拿分,就連作文都要有統一的標準。

編程究竟難在哪兒?

比如一篇《灰姑娘》的文章,老師平時怎麼教我們的,還記得嗎?

老師每次上課的模式都是:打開課本翻到36頁,把一篇文章唸完,然後說“分段”,這個分段的方式叫做總分總,記住啊,期末要考,然後會問誰來總結中心思想。

每次每個學期開學第一天上課,老師一進來第一件事是說:我先把不考的劃掉。我們自然很開心,因為這一塊又不用考了,只要劃掉的就不用看了。

編程究竟難在哪兒?

所以,填鴨式的教學讓我們從小到大都非常擅長記憶,井井有條的套公式,背知識點,背那些對我們有用的。

但是這一切到了編程這裡,通通都不奏效。

我們在大學的時候剛開始接觸編程,可能會有些人會和我一樣很痛苦,沒有任何計算機基礎,深深烙印在我們骨子裡的“高考精神”就是去“背”,我們認為學習一門編程掌握其語法,將語法爛熟於心,那就是去“記”,結果就是啪啪打臉。

編程究竟難在哪兒?

我們接受了十幾年的應試教育,為了最大化公平,考試必須有一套清晰的標準。正是因為如此,我們更看重應試技巧而非知識本身,學習變成了追求標準答案,求知變成了死記硬背。

而編程的核心,不是編程,也不是語法,甚至不是算法或數據結構本身,恰恰是如何分解問題——發現規律建立解決問題模型,映射到合適的數據結構和算法上,最後才根據算法寫程序實現。

二、我們沒有主動解決問題的能力

老師給我們講課複習最喜歡問的問題:作者在這裡用了“絢爛”這個詞,為什麼比我們用“絢麗”要好很多,然後我們就得玩命記“絢爛為什麼比絢麗強”,到時候期末要考。

然而,我們自己沒有主動去解決問題的能力,我們只知道老師教什麼,我們學什麼,按照老師的那套方法那套流程去解決那一個問題。

編程究竟難在哪兒?

解決問題的能力也是源自你是否會獨立思考。關於獨立思考,我覺得每個人都應該要有,作為一個成年人,很多事情都要別人講得很明白才懂得怎麼去做,那別人也不太願意把事情交給你辦,也不太相信你能辦好,你也很難掌控自己的命運。

程序員的解決問題能力不是天生的,自然得靠後天的經驗積累。我們工作中會遇到各種各樣的問題,比如需要去跟蹤調試產品所產生的bug,又比如說使用第三方組件所遇到的一些問題,再比如說使用一些插件或者IDE所產生的一些編譯問題。

編程究竟難在哪兒?

這個時候第一反應不是去別人那裡尋求幫助,而是自己嘗試去看去解決問題。首先得確定這是一個什麼樣的問題,對這個問題下一個定義,看它是自己編碼上的問題,還是一些編譯上的問題,再或者是第三方庫引入的問題。

確定之後,你可以根據運行時產生的崩潰信息或者編譯時出現的編譯錯誤,找到錯誤的根源。如果是代碼上的問題其實是很好定位的,我們只需要根據錯誤的堆棧找到出錯的地方,然後你再去看這部分代碼的處理邏輯,只要不是特別複雜的業務處理,基本上能很快解決。

三、我們做一件事情沒有毅力,難以堅持

我們趕上了好時代,“知識改變命運”那一套對我們沒有什麼太大的用處,因為我們父母打拼好的生活,我們只需要享受,可能還會有人笑著說:我的命運不需要改變,可以改變一下就糟糕了。

所以我們對一件事情沒有想著去堅持,沒有想著要把這件事情做到什麼樣的程度,只是覺得安於現狀很好,很安逸。

編程究竟難在哪兒?

這也是導致很多人學編程時說的:還沒有入門就已經放棄了。

學習編程有一點不容易是因為你需要集中注意力——尤其是當你學習新東西的時候。這是一種精神上的負擔,有時候你無法弄清楚——為什麼你寫的代碼沒法奏效,或者為什麼它就奏效了。

編程究竟難在哪兒?

在算法學習中,我們遇到的很多東西都是非常複雜的(數據結構和算法等等),每當我學習編碼時,我都會應用“50/50規則”。

我用50%的時間來做困難的任務,學習概念和算法等等。另外50%的時間我就幹自己最有興趣的活兒。所以我在日程學習中保持了一種平衡。

堅持學習也是有方法的,不然只會感到越堅持越難受,從而越想放棄。

別偷懶,別忘了,你要成為一個開發人員。

不要陷入“我正在學習,這已經足夠好了,等我準備好了,我再去找工作”的誤區。

所有這些都是你在成為一名開發者的路上將要面對的挑戰。承認它們,以正確的態度面對它們——所有的挑戰只會讓你變得更強、更好。

最後,要享受學習編程的過程,享受你正在構建的東西,無論是你的項目還是你自己的未來。


分享到:


相關文章: