【深度】程序員、黑客和開發者的區別

程序員黑客開發者究竟有何區別?這個問題往往會引發踊躍的討論與辯論。但是我看到的很多說法往往至少在一個重大方面是有瑕疵的,所以在此我願給出我的定義,希望這個定義能夠更準確些。

  1. 程序員是能夠通過操縱計算機代碼解決問題的人。他們的技能水平可高可低—從掌握基本腳本的入門級到可利用任何一門語言的絕對巫師都算是。
  2. 黑客是做東西的人。在本文背景下,是指通過對計算機編程做東西的人。這是對這個術語的原創、純粹的定義,比方說,你有了一個想法以後就設法 “破解” 某個東西讓它可以工作。這個詞也可用到修改東西使其功能發生重大改變的人身上,但是不像前面的定義用得那麼多。
  3. 開發者是正規培訓的程序員。他們並不僅僅要解決問題或者創造東西,而是按照一套設計和實施原則去做事。這些事情包括性能、維護、伸縮、健壯性以及安全等。

簡而言之,這三者都利用代碼去解決問題。程序員是一個涵括性術語,帶有問題解決者的含義,黑客是創造者 / 多面手,開發者是正規培訓的程序員,他們不僅解決問題,而且是採用(很可能是通過正規教育學到的)結構化和按照規定的方式去做解決問題。

關係

一個人可以是上述三種角色的組合。以下就是這三者的相互關係:(參見下面的維恩圖

  • 黑客和開發者都是程序員。
  • 許多程序員,甚至開發者的創意都不足以被視爲是黑客。
  • 許多程序員,甚至也包括黑客,其教育程度或者經驗均不足以被看作是開發者。

理想情況下一個人當然想同時成爲這三種角色,比方說足夠有創意成爲一名黑客,受到的正規訓練和經驗足夠多可以設計軟件而不僅僅是破解東西。

不過即便你不是很有創意,並且 / 或者缺乏教育以及 / 或者經驗來正確開發大規模應用,你仍然應該對自己是一名程序員感到自豪。利用代碼解決問題本身就是一種超級能力。

註釋:

  1. 黑客的類型很寬泛,可應用到任何領域,不僅僅是計算機。而本文主要是針對軟件類型。
  2. “coder”基本上等同於程序員。
  3. 破解往往跟質量差相關聯,但並不總是這樣。這是因爲破解通常都是大刀闊斧一想到就開幹效果最好而不是一點點的慢工出細活。在黑客也是開發者或者雖然不是開發者但還需要盯住設計和質量的情況下,事後回過頭來看看自己的創作並且解決存在問題幾乎是免不了的。
  4. 確定誰可以叫做黑客,誰不能被稱爲黑客是一件認知見仁智者見智的事情。大都同意的基本規則包括 1)你得做出 1 件或以上大家覺得有用的東西,2)其他黑客覺得你是黑客。
  5. 在安全界,黑客還意味着多件事情。對於測試者來說這通常意味着這個人理解系統並且能攻克其安全控制。不過頂級安全對黑客的定義要更加純粹,比方說創建了供他人使用的安全軟件或工具的人就是黑客。
  6. 在流行文化裏面,黑客意味着計算機犯罪。在安全界此類演員往往被稱爲是 “攻擊者”。
  7. 著名程序員,同時也是最早的計算機社區名人之一的 Eric Raymond 是這樣定義黑客的,“聰明、有創意、思想開放,享受問題解決和學習,樂意分享知識高於一切的人。”
  8. “軟件工程師”等同於開發者。意味着受到過有關軟件架構、設計的正規教育以及必要的預教育。

本文翻譯自:The Difference Between a Programmer, a Hacker, and a Developer

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章