你與優秀程序員之間的差別本質!



你周圍肯定有很多同你一樣的程序員,有認真考慮過你們之間的差別嗎?換句話說就是,你認爲那些優秀的程序員和普通的程序員之間的區別是什麼?希望本文能讓你有所思考~


當我開始在閱讀《技術的本質》的時候,我就開始在思考這樣一個問題,我們在使用技術還是工具。


技術與工具


在某百科上說:

一項技術是關於某一領域有效的科學(理論和研究方法)的全部,以及在該領域爲實現公共或個體目標而解決設計問題的規則的全部。


對於技術不同的人的理解可能是不同的,和上圖中的使用工具類似的是,和工具一樣,技術也在不斷地成長和進行。


網站的成長史似乎可以簡化爲下面的過程,可能還會有ASP.NE等等,只是因爲我接觸得比較少。

  • 靜態的HTML

  • CGI和Perl腳本

  • PHP

  • J2EE

  • Django

  • Ruby on Rails

  • Nodejs


實際上這是技術的一種演變,然而做爲最核心的東西HTML似乎還是那樣的。作爲新技術產生的核心——HTML也在不斷也進化中。


然而,沒有想象中的那麼明顯,看上去像是不變的,只是技術在不斷地向前前進。對於我們來說這些都是工具,有時我們在用工具創造中新的工具,好比是技術本身,通過結合一些技術創建出新的技術。同進化史一般,我們沒有辦法從無到有創造出一個新的東西,沒有上帝。


而作爲一個普通的程序員,我們所做的只是在使用工具,從芯片到語言,從語言到框架,從框架到實現。


編程的祕密


每個人在技術的成長過程中都有不同的經歷,對於我來說現在的總結大概是如此(ps:有興趣可以參考過去的那些語言)。


  • 當我開始學習第一種語言LOGO時,我還小覺得很神奇,至少對於計算機還是保持神祕的。

  • 當我開始學習C++時,由於作者對於其優雅的宣稱,我覺得C++確實很優雅、

  • 當我開始學習Python的時候,我發現簡單纔是我所要追求的。

  • 當我開始學習Ruby On Rails的時候,我發現生成可以很強大,但是因爲強大,所以沒有意思。

  • 當我開始學習Django的時候,我發現這纔是我想要的訂製。

  • 當我開始寫博客的時候,我覺得比於HTML來說,Markdown纔是適合我的。

  • 當我開始寫下此文時,我開始覺得我應該試着去做點什麼


於是我又回到了原點,開始迷茫我想要的是什麼?當我實習半年以後,我學到了更多的東西(實習半年後:正在變得高效),而我開始的時候我纔在偶然的一次機會中才瞭解到,我們用的都是工具。只是,我們可以用工具創造出工具。


編程只是用來解決問題的工具,優美與否對於解決問題的幫助,取決於是一次性問題還是長期問題。編程的核心是解決問題,正如SEO的核心是內容。於是,

我們把一個又一個的迷團解開了,剩下百無聊賴。


當我們在討論生產率的時候,得知高級語言會比低級語言來得有生產率,但是效率可能會因人而異。高級語言來自於低級語言,這些似乎沒有那麼重要。人們熟悉了不同的IDE、不同的語言,相比於那些入門者來說,諳熟語言的人只是更加熟練罷了。


同《賣油翁》的我亦無他,唯手熟爾般,對於有些東西只是因爲用多了,然後熟悉罷了。事實真的是這樣麼?如果我們每天寫的是1+1=2,我們會知道1+2=3麼。


那麼所謂的優秀的程序員和普通的程序員的差別在哪?


技術的成長


這裏的技術指的不是個人在技術上的成長,而是技術自身的成長。


技術在某種程度上一定是來自此前已有技術的新的組合。


一個優秀的框架、軟件、系統的產生必然會基於其他的已有技術或者框架,如:


Ubuntu GNU/Linux

  • 內核是Linux

  • 編譯器GCC

  • 庫GLIBC等等

  • 腳本語言Python等

  • Bash


而這其中的一些小命令如ls、cd、wget也是這個系統的組成部分之一,我們無法找到一個不依賴於其他系統的軟件。


如果你自己動手編譯過Linux,或者你會更有體會一個GNU/Linux系統需要什麼。


從一個庫來說它是基於其他的基本庫,如C標準庫,而從C標準庫的編譯又依賴於編譯器,這些都循環中前進着。


 gcc4.7編譯出了gcc4.8
 gcc4.6編譯出了gcc4.7
 gcc4.5編譯出了gcc4.6
 等等


這是對一個可以自身編譯自身的編譯器而言,我們無法忽視的是技術背後有許多細節。


巨人是站在巨人的肩膀上,過去我們可能一羣工程師一個月開發出來的軟件,在今天可能可以由一個工程師一天開發出來。因爲我們可以基於前人的經驗及教訓,而這也是所謂的高生產率的程序員和一般的程序員間的區別。


自然而然的優秀的程序員吸收了其他人的經驗以及教訓,換在今天來說,你今天所在的位置並不是因爲你比別人聰明,或者是別人比你聰明,只是因爲你吸收了更多的知識及經驗當然,教育不公平不應該這邊的討論範圍。


程序員的差別


回到開始的話題,我們使用的如圖所示的工具的話,你會選擇

  • 石頭

  • 電鑽

  • 電腦

中的哪一個,這是一個有趣的話題,正如。。

  • 彙編

  • C語言

  • Python

  • Django


這個問題沒有一個真正的答案取決於你所做的事,而問題的關鍵在於你知道的只是彙編,而不知道有其他東西的存在。


這裏的意思不是讓你把上面的都學了,而是對於我們所處的領域我們應該有一個寬泛的瞭解。瞭解並不一定是親身實踐,如上一標題所說,我們只需要去吸收別人的知識及經驗,一個有趣的答案便是從別人身上學習會更快


只是在那之前,我們需要去學會學習,因爲你可能處在某個位置,沒有其他人做過。


而對於標題的答案來說應該是:

優秀的程序員不僅僅只是使用工具。


via:https://github.com/phodal/awesome-developer/blob/master/entries/different.md

發佈了3 篇原創文章 · 獲贊 7 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章