宅男程序員給老婆的計算機課程之1:認清實際

男主角:Wuvist(新浪微博),真名翁偉,自稱胖程序員一個,幸虧已婚。學習.NET出身,現經常使用Python作服務器端開發,曾任新加坡某創業公司主程。公司被techcrunch blog事後,以爲新加坡生活太過安逸,終於於去年辭職隻身回家鄉汕頭創業,活躍於珠三角技術沙龍,熱衷於與其餘技術宅分享。python

Wuvist

本文做者:Wuvist程序員

女主角:Katze,Wuvist的老婆,女程序員,在某跨國投行任Unix系統管理員,常被Wuvist嘲笑技術太差。算法

「算法」、「數據結構」等,是本質;很重要,須要掌握,但通常開發時,不多須要本身去實現。編程

以爲多數開發,是「拚積木」。設計模式

即使是業務邏輯須要對一些數據進行排序,也不可能本身去實現一個quicksort算法;而是直接調用quicksort的現成類庫。服務器

這也直接形成了2B ED窮其一輩子都不能掌握真正的編程能力。數據結構

他們認爲,可以「解決」問題就好,至於問題是怎麼解決的,他們並不關心。架構

對於細節的認識、掌控能力,直接形成了水平的天淵之別。框架

以拍照爲例子,之前人們用傻瓜相機,如今人們用iPhone去拍照;很快,很方便,還能夠加濾鏡。運維

可是,普通人們在不瞭解什麼是光圈、精深、背光等概念的狀況下,是沒有可能成爲攝影師的。

即使他們放下iPhone拿起DSLR。

普通人跟攝影師拍攝一樣的東西;出來的照片也許會差很少,但若是深刻去比較,景深、角度、光線、取景等等等等細節,則都會有差異,而這些差異積累起來,就形成了普通照片與攝影做品的差異。

畫家要畫好畫,必然要對畫筆、顏料、紙張的特性有深刻的瞭解。

廚師要作好菜,必然要了解食材的特性,對調味料、廚具等有嫺熟的掌控。

ED的「解決問題就好」,跟沒有下過廚房的千金×××拿着菜譜使用微波爐作菜沒啥區別。

在大廚手裏,微波爐也能夠是神器;但:

「有的人,縱然神刀在手,亦沒法成爲刀中之神。」

程序員要「拚好積木」,那必然須要對積木的種類、材質、特性,有深刻的瞭解。

總得對quicksort的實現有認識,纔可以用好quicksort。在有的場景下,quicksort的性能反而是最差的。若是不瞭解,就沒法去把quicksort用好。

程序開發中,有一個著名的 80 / 20 原則。

我想,這個原則也能夠適用於ED。

程序員只要花20%的努力就能夠成爲一個混日子的ED;80%的程序員均是如此。

但若是要成爲一個優秀的程序員甚至hacker,那麼,須要花多至少4倍的努力。

有什麼積木能夠用?積木自己是怎麼作的?積木A比積木B好在哪裏?

這些,是須要花大量的時間去了解。

所有都是實在的經驗積累,沒有捷徑。

都是.NET語言,C# 跟 VB.Net的差異在哪裏?對於ED,他們偶爾也會對這樣的問題感興趣,而後,他們會去看介紹,看比較文章。。。。但其實,這事徹底是木有用的。

他們看了別人的介紹,覺得本身懂的,但實際上,他們只是在復讀而已,徹底木有懂。

做爲一個ED,要了解C#跟VB.Net的差異在哪裏,最好的方式,就是花時間去把兩種語言都學了。用這兩種語言分別去寫個幾萬行程序,而後就懂了。

當某天ED成爲Hacker的時候,那就反倒能夠去看各類介紹,看一眼,而後瞬間就能夠悟了。

這也就是爲何很牛程序員學習新語言能夠那麼快,由於有太多的知識能夠複用;而這些知識的積累,必然是須要經過在實際中,無數行的實際編碼,無數篇的資料閱讀中得來的。

沒有捷徑。

不少初學者,或者說,編程的僞愛好者,他們,會熱衷於去四處請教大師,下載各類經典書籍,企圖讀一本編程聖經,而後一晚上脫胎換骨。

這是,不可能的。

這種僞愛好者,永遠不可能成事;在學習的過程當中,抱着去「走捷徑」的心態,自己就已是入了歧途;最終會花更多的時間。

原來Ruby / 如今 Python的一個光頭大牛Zed A. Shaw,爲了表達「沒有捷徑」這樣的觀點,特地寫了本《Learn Python The Hard Way》:
http://learnpythonthehardway.org/

甚至有一個系列:http://learncodethehardway.org/

從長遠來看:The Hard Way Is Easier。

我徹底贊成。

做業:

1. 列舉10個Python Web框架

2. Python有多少種不一樣的解釋器?

3. Perl 跟 Python 有什麼不一樣?

51CTO系列:

  1. 宅男程序員給老婆的計算機課程之0:認清本質
  2. 宅男程序員給老婆的計算機課程之1:認清實際
  3. 宅男程序員給老婆的計算機課程之2:怎麼看待牛人
  4. 宅男程序員給老婆的計算機課程之3:架構比較
  5. 宅男程序員給老婆的計算機課程之4:SQL vs NoSQL
  6. 宅男程序員給老婆的計算機課程之5:設計模式
  7. 宅男程序員給老婆的計算機課程之6:模版引擎
  8. 宅男程序員給老婆的計算機課程之7:運維的重要性
  9. 宅男程序員給老婆的計算機課程之8:控制器
  10. 宅男程序員給老婆的計算機課程之9:數據模型
  11. 宅男程序員給老婆的計算機課程之10:作,就對了!
  12. 宅男程序員給老婆的計算機課程之11:域模型
相關文章
相關標籤/搜索