為什麼不知道這三個關鍵,你會錯失在短時間內成長為高級工程師的機會

為什麼不知道這三個關鍵,你會錯失在短時間內成長為高級工程師的機會? 人們說學程式很難? 我不太贊同這種說法。我認為你需要今天就知道這三個關鍵,今天就讓你學習的速度翻倍。這是我希望我一開始學寫程式就可以掌握的技巧,你甚至只要做我接下來要講的一兩件事,我保證你將會以兩倍以上的速度成為一位高級的工程師!

關鍵一: 突破舒適圈

1
printf("Hello, world!");

這是開始學程式的人都會接觸的第一行程式碼:「哈囉! 世界!」。這行程式碼看起來很簡單,很快就可以寫完。但如果每天都只練習寫一行一行的 hello world 程式碼很難有進步。這個例子也許比較離譜,事實上許多人會在學完物件的寫法、或達到一定程度之後就停下腳步,留在舒適圈裡。千萬不要停下腳步! 你需要快點察覺你是不是已經在某個階段停了很久,並且快點開始強迫自己練習更進階的技巧。不過我認為你更需要馬上開始做第二件事: 尋找頂級的專家。

關鍵二: 尋找專家

最快的學習方法是模仿專家,並讓專家給你回饋,藉此不斷修正你的方向,讓你朝向專家靠近。除此之外,我還要你去模仿專家的「心智表徵」,也就是專家在練習跟在實戰的時候會怎麼想。讓我給你一個完美的例子。當人們看到這行程式 printf("Hello, world!"); 可能會用一句普通的句子來解釋它: 印出「Hello, world!」這串字。如果用這種方式思考,會很難輕易得做進階應用。讓我給你一個進階應用的例子:

1
2
3
std::string str1 = "Hello";
std::string str2 = "world!";
printf((str1 + ", " + str2).c_str());

這段程式碼一樣可以印出「Hello, world!」這串字,但用上面這種思考模式會很難理解為什麼可以在小括弧中寫「(str1 + ', ' + str2).c_str()」來一樣印出這串字。如果我們這麼想: 這段程式執行起來會把一個「字元陣列的指標」傳給「printf() 功能」,我們就可以知道不論程式怎麼寫,即便是把三個字串接在一起,得到一個 C++ string 物件,再去呼叫它的 .c_str() 功能來得到一個以 '\0' 結尾的 const char* 字元陣列指標,總之最後只要把一個「指向一串字元陣列起始位置的指標」傳到 printf() 裡就好。用這種思考模式來寫程式你將可以非常輕易地做出各種變化跟進階應用。你現在已經會像專家一樣思考了,最後你需要確切知道你要怎麼做,來用最短的時間把你變成一位程式高手。

關鍵三: 有目標的分段練習

如果你剛學完物件的用法,我就要你練習寫出一個管理電子書櫃的應用程式,會很難讓你有明顯的進步。但如果我要你先練習找出書本的屬性 (例如書名、頁數、目前看到第幾頁),再要你設計如何操作一本電子書 (例如讀取某頁的內容、翻頁、跳轉到某頁),最後再要你設計怎麼管理一到多本電子書 (例如列出我擁有的所有書本、加一本書到書櫃、用書名找到某一本書)。用這種方式很顯然可以讓你很快地掌握撰寫類別的每個關鍵點: 包含分析物件屬性跟類別屬性的寫法、設計物件的操作介面跟類別方法的寫法,設計讓兩個物件互相合作,並用一個容器物件來管理一群物件的寫法。把一項技能拆成幾個重要的部分,分段設定學習目標並且一段一段練習可以很快有成果、很快有成就感、很快可以開始思考怎麼做會更好、並且很快開始找專家尋求建議,甚至更可以讓成就感推著你,讓你自動自發地不斷往前進步。

這才是高效率的學習方式! 我甚至想要你現在就停止讀這篇文章,立刻去實行這三個方法,讓你用最快的速度開始進步。如果你願意讓我成為你的專業教練,歡迎直接回 call 我聯絡我,我將教你一套完整的 10 堂課,把你訓練成一位高級的專業工程師!