為什么要練習編碼套路(Code Kata)?

jopen 9年前發布 | 18K 次閱讀 程序員

為什么要練習編碼套路(Code Kata)?

背景

編碼套路(Code Kata)這個概念是《程序員修煉之道:從小工到專家》的作者之一 Dave Thomas 提出的。Ruby 開始盛行的時候,Dave 也成為了該語言的最重要的傳播者之一。那時他寫了很多關于 Ruby 和 Rails 起源的哲學和市場語境的文章。他也因此學習了很多敏捷方法和概念。正是在這種背景下,Dave 提出了編碼套路的代碼學習技巧,并開始推廣。

這個概念主要指的是,針對某一種特定技術或技能進行重復性的練習,從而將其熟練掌握。套路(Kata)這個概念借鑒于武術,指的是可以獨自或多人共同練習的一系列動作、招式。當然,這個詞還可以用來描述武術中的其他動作,比如高度模擬實戰的練習等。

維基百科介紹:

起初,套路是教授和練習武術的方法,通過這種途徑得以保存和傳承許多成功的戰斗技巧。練習套路,可以讓一組人通過系統的方式,而不是單人、無序的方式,進行艱苦的武術訓練。

武術中使用套路(Kata)的主要目的,在于傳遞行之有效的技巧,并且重復地訓練。這可以讓學習者練成條件反射式地、自然而然地做出這些動作。而要達到這個目的,關鍵不在于系統地練習,而是將動作和技巧內化,做到根據不同的需要進行變化。

為什么要練習編碼套路(Code Kata)?

武術套路圖

對編碼套路的態度

關于用這個方法來練習編程技巧,人們對此有三種看法:鄙視,中立,贊成欣賞。中立的人群認為并不能從這種反復編寫同樣一個問題的方法中學到什 么,鄙視這種方法的人們也這么認為,不過反對的程度更深。剩下來的便是欣賞這種方法的人了,他們認為反復編寫同一個問題,或者編寫很多小的代碼程序例子, 是有一定用處的。

我也贊成這種方法。我從去年開始斷斷續續學習編程,中間犯的一個錯誤就是練習少,沒有及早的認識到這是一門要在“干中學”的學科。第一次了解編碼套路,還是在 codewars 網站,而接觸這種技巧的時候,我已經磕磕碰碰學習編程有大半年的時間了。

練習的重要性

練習,作為一種學習方法是適用各個領域的,不僅僅限于武術,還包括彈奏樂器、提升體育競技水平、準備演講和提升對語法和書寫的掌握。業界知名程序員、《程序員的吶喊》的作者 Steve Yegge,就曾經在一篇文章中提到了練習(鍛煉)的重要性。

我認識很多杰出的程序員——這是在亞馬遜工作最好的額外“福利”之一。如果仔細觀察他們,你會發現他們時時都在鍛煉。他們已經很優秀了,但他們仍然 不忘鍛煉。他們鍛煉的方法林林總總,而我在這篇文章中只會介紹其中的幾種。據我了解,這些杰出程序員之所以如此成功,就是因為他們一直在鍛煉。完美的身材 要靠定期的鍛煉才能獲得,而且必須堅持鍛煉才能保持,否則身材就會走形。對于編程和軟件工程來說,道理是一樣的。

如何練習編碼套路

Dave Thomas 認為可以將套路作為學習編程的一種技巧。方法很簡單:每一個編碼套路,都是一個簡單的編碼難題,容易解決,可以讓練習者不斷的嘗試,直到完美。這樣做的目 的,就是幫助練習者每一次都能夠找到更好的解決方法。練習者甚至可以對套路定下各種限制,比如說要使用一種自己不常用的語言。

幫助編程學習者進行套路練習的網站有很多。知道這類編程練習網站之后,我做了一些搜索,收藏了一些國外程序員推薦的站點,在這里推薦給大家。

練習編碼套路,貴在堅持、專注。當然,練習到了一定的水平之后,確實再做一些簡單的題目,很難有較大的提高。建議高水平的朋友,往人工智能、大數據、自然語言處理這些高階話題練習。

編程派會怎么做

我還是一個初學者,所以我會繼續堅持做編碼套路練習。每一個我覺得有一定難度、可以延伸的套路,我都會詳細記錄下我的解法,或者找到網絡上更好的解法,與大家分享,一同學習編程,一起進步,爭取能夠成為黑段高手。這也是我在個人站點開設練習板塊的初衷。

為什么要練習編碼套路(Code Kata)?

武術高手

參考資料

  1. http://www.sitepoint.com/code-kata/
  2. http://blog.csdn.net/happydeer/article/details/17023229
  3. https://hackhands.com/dont-code-katas/
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!