程序員差別的本質
當我開始在閱讀《技術的本質》的時候,我就開始在思考這樣一個問題,我們在使用技術還是工具。
技術與工具
在某百科上說
一項技術是關于某一領域有效的科學(理論和研究方法)的全部,以及在該領域為實現公共或個體目標而解決設計問題的規則的全部。
</blockquote>對于技術不同的人的理解可能是不同的,和上圖中的使用工具類似的是,和工具一樣,技術也在不斷地成長和進行。網站的成長史似乎可以簡化為下面的過程,可能還會有ASP.NE等等,只是因為我接觸得比較少。
- 靜態的HTML
- CGI和Perl腳本
- PHP
- J2EE
- Django
- Ruby on Rails
- Nodejs
</ul>實際上這是技術的一種演變,然而做為最核心的東西HTML似乎還是那樣的。作為新技術產生的核心——HTML也在不斷也進化中。然而,沒有想象中的那么明顯,看上去像是不變的,只是技術在不斷地向前前進。對于我們來說這些都是工具,有時我們在用工具創造中新的工具,好比是技術本身,通過結合一些技術創建出新的技術。同進化史一般,我們沒有辦法從無到有創造出一個新的東西,沒有上帝。
而作為一個普通的程序員,我們所做的只是在使用工具,從芯片到語言,從語言到框架,從框架到實現。
編程的秘密
每個人在技術的成長過程中都有不同的經歷,對于我來說現在的總結大概是如此(ps:有興趣可以參考過去的那些語言)。
- 當我開始學習第一種語言
LOGO
時,我還小覺得很神奇,至少對于計算機還是保持神秘的。- 當我開始學習C++時,由于作者對于其優雅的宣稱,我覺得C++確實很優雅、
- 當我開始學習
Python
的時候,我發現簡單才是我所要追求的。- 當我開始學習Ruby On Rails的時候,我發現生成可以很強大,但是因為強大,所以沒有意思。
- 當我開始學習
Django
的時候,我發現這才是我想要的訂制。- 當我開始寫
博客
的時候,我覺得比于HTML來說,Markdown才是適合我的。- 當我開始寫下此文時,我開始覺得我應該試著去做點什么。
</ul>于是我又回到了原點,開始迷茫我想要的是什么?當我實習半年以后,我學到了更多的東西(實習半年后:正在變得高效),而我開始的時候我才在偶然的一次機會中才了解到,我們用的都是工具。只是,我們可以用工具創造出工具。
編程只是用來解決問題的工具,優美與否對于解決問題的幫助,取決于是一次性問題還是長期問題。編程的核心是解決問題,正如SEO的核心是內容(詳情見:每個程序員必知之SEO)。于是,
我們把一個又一個的迷團解開了,剩下百無聊賴。
</blockquote>當我們在討論生產率的時候,得知高級語言會比低級語言來得有生產率,但是效率可能會因人而異。高級語言來自于低級語言,這些似乎沒有那么重要。人們熟悉了不同的IDE、不同的語言,相比于那些入門者來說,諳熟語言的人只是更加熟練罷了。同《賣油翁》的
我亦無他,唯手熟爾
般,對于有些東西只是因為用多了,然后熟悉罷了。事實真的是這樣么?如果我們每天寫的是1+1=2,我們會知道1+2=3么。那么所謂的優秀的程序員和普通的程序員的差別在哪?
</blockquote>技術的成長
這里的技術指的不是個人在技術上的成長,而是技術自身的成長。
技術在某種程度上一定是來自此前已有技術的新的組合。
</blockquote>一個優秀的框架、軟件、系統的產生必然會基于其他的已有技術或者框架,如:
Ubuntu GNU/Linux
- 內核是Linux
- 編譯器GCC
- 庫GLIBC等等
- 腳本語言Python等
- Bash
- 等
</ul>而這其中的一些小命令如ls、cd、wget也是這個系統的組成部分之一,我們無法找到一個不依賴于其他系統的軟件。如果你自己動手編譯過 Linux,或者你會更有體會一個GNU/Linux系統需要什么。從一個庫來說它是基于其他的基本庫,如C標準庫,而從C標準庫的編譯又依賴于編譯器,這些都循環中前進著。
gcc4.7編譯出了gcc4.8 gcc4.6編譯出了gcc4.7 gcc4.5編譯出了gcc4.6 等等
這是對一個可以自身編譯自身的編譯器而言,我們無法忽視的是技術背后有許多細節。巨人是站在巨人的肩膀上,過去我們可能一群工程師一個月開發出來的軟件,在今天可能可以由一個工程師一天開發出來。因為我們可以基于前人的經驗及教訓,而這也是所謂的高生產率的程序員和一般的程序員間的區別。
自然而然的優秀的程序員吸收了其他人的經驗以及教訓,換在今天來說,你今天所在的位置并不是因為你比別人聰明,或者是別人比你聰明,只是因為你吸收了更多的知識及經驗。當然,教育不公平不應該這邊的討論范圍。
程序員的差別
回到開始的話題,我們使用的如圖所示的工具的話,你會選擇
- 石頭
- 矛
- 電鉆
- 電腦
</ul>中的哪一個,這是一個有趣的話題,正如。。
- 匯編
- C語言
- Python
- Django
</ul>這個問題沒有一個真正的答案取決于你所做的事,而問題的關鍵在于你知道的只是
匯編
,而不知道有其他東西的存在。這里的意思不是讓你把上面的都學了,而是對于我們所處的領域我們應該有一個寬泛的了解。了解并不一定是親身實踐,如上一標題所說,我們只需要去吸收別人的知識及經驗,一個有趣的答案便是從別人身上學習會更快。只是在那之前,我們需要去學會學習,因為你可能處在某個位置,沒有其他人做過。而對于標題的答案來說應該是:
優秀的程序員不僅僅只是使用工具。
</blockquote> 來自:https://github.com/phodal/awesome-developer/blob/master/entries/different.md本文由用戶 cey6 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!