在個人職業生涯中,沒有一種技能比 SQL 更有用!

 

做者 | Craig Kerstiens前端

譯者 | 阿拉丁git

創業公司 CitusData(CitusData 是一家將 PostgreSQL 商業化的初創企業,也是 PostgreSQL 社區領導者,不久前被微軟收購)的雲產品負責人 Craig Kerstiens 近日發文表示,在他十多年的職業生涯中學到了不少技能,但沒有一種技能比 SQL 更有用。他的文章在 Hacker News 上引發了熱烈討論,截至發稿之時已經收到 779 個點贊、372 條評論,網友紛紛表示:SQL 一直以來確實被嚴重低估了。下面就讓咱們一塊兒來看一下 Craig 是怎麼說的。程序員

在個人職業生涯中,我學到了不少技能,但沒有一種技能比 SQL 更有用。SQL 在我看來是最有價值的技能,由於:sql

  1. 它對於不一樣的職業角色和學科來講都是有價值的;
  2. 一旦學會了就不須要從新再學;
  3. 它讓你看起來像個超級英雄。一旦你掌握了它,而其餘人不懂,你就顯得特別強大。

讓我進一步探討這些問題。數據庫

1 SQL 是一個能夠處處使用的工具編程

不管你扮演的是什麼樣的職業角色,總能從 SQL 中找到一種方式讓你的生活變得更輕鬆。做爲一名產品經理,我要查看數據,分析產品的有效性以及制定產品路線圖。若是咱們剛剛發佈了一個新功能,那麼是否有人使用過新功能的相關數據極可能被保存在關係數據庫中。若是我正在關注一些關鍵性業務指標(例如月增加),那麼這些數據極可能就存在某個關係數據庫中。咱們面對的多是一個支持 SQL 的記錄系統。知道如何以最原始的方式訪問它能夠爲我節省大量的精力,由於我不須要再向其餘人索要這些業務指標數據。後端

在成爲產品經理以前,我已經在使用 SQL 來了解系統內部發生了什麼事情。對於工程師來講,使用 SQL 一般能夠更快地獲取想要的信息。當 Web 應用程序的運行速度變慢時,瞭解應用程序中運行的 SQL 以及如何優化它是不可或缺的技能。固然,這超出了對 SQL 基本瞭解的範疇……但爲了加快查詢而添加索引而不是去折騰緩存,仍是很是值得花費額外的時間去學習的。緩存

2 SQL 是永久不變的數據結構

記得大約在 20 年前,我建立了第一個網頁。當時以爲這是一件很是神奇的事情,而後我加入了一些 JavaScript 代碼,提示用戶點擊是否選項或輸入一些東西。大約 10 年後,jQuery 出現了,雖然它有時候比較冗長,並且還須要學習一些新東西,但整體來講,它讓一切變得更好了,因此我決定花時間學習 jQuery。而後是 Angular、React、Ember,直到如今,我已經有了一個完整的管道,能夠將基本的 JavaScript 代碼引入到個人網站中,但現實倒是我如今仍然在努力實現 20 年前的事情,就是讓用戶單擊是否選項。架構

但 SQL 卻幾乎沒有真正發生什麼變化。但須要注意的是,它其實已經發生了一些變化——有了現代的 SQL(https://modern-sql.com/),但我仍然認爲它不如其餘語言那麼引人注目。每隔幾年就會出現一個新標準,偶爾還會出現一些新的東西,好比對窗口函數或 CTE(公用表達式)的支持,但 SQL 的基礎是永久不變的。學習 SQL 一次,就能夠在你的職業生涯中重複使用它,不須要再從新學習。但不要誤解了個人意思,我其實很喜歡學習新東西,但我會選擇學習一些真正有用的新東西,而不只僅是另外一種完成一樣任務的方法。

3 SQL 讓你看起來像個超級英雄

SQL 是一個被低估的技能,大多數應用程序開發人員不肯意去學它。由於不多有人真正瞭解 SQL,因此你的 SQL 技能可能看起來比實際的更優秀。過去,在一家擁有數百名工程師的公司裏,無論是初級工程師仍是高級工程師,他們每週都有好幾回會問我這個問題:「嘿,你能告訴我怎麼寫好這個查詢嗎?」由於你擅長其餘人不擅長的事情,你就能夠爲他們提供幫助,而當你向他們尋求幫助時,你的生活會變得更輕鬆。

因此,若是你還不精通 SQL,那麼還在等什麼,你想讓本身看起來像一個 SQL 蠢貨嗎?

4 外網網友怎麼看?

網友 slap_shot:

SQL 是我所知道的最神奇的概念之一。它已經有近五十年的歷史,並且沒有被其餘東西替代的跡象。咱們已經建立了無數種技術來存儲和處理數據,但彷佛老是嘗試在這些技術中從新實現 SQL(例如 Hive、Presto、KSQL,等等)。

我經營着一家爲企業構建分析基礎架構的初創公司。咱們很是重視 SQL,也很是贊同 Craigs 的這篇文章,它比以往任什麼時候候都更加真實。

與典型的軟件工程師相比,分析師和數據科學家在企業中編寫的 SQL 代碼愈來愈多。

MMP 數據倉庫(redshift、bigquery、snowflake 等)的出現使得即便是預算最有限的公司也可以使用 SQL 來存儲和查詢大量數據。SQL 比以往任什麼時候候都更強大,更有價值。

若是你仔細研究一家典型的企業,你會發現大多數軟件工程師並不擅長 SQL。他們爲何要擅長 SQL 呢?大多數複雜的查詢都是分析查詢。ORM 已經提供了大多數本來須要經過應用程序代碼來實現的基本函數。

或許與 Craig 的觀點不一致的地方在於咱們已經爲大部分後端工程師、前端和移動端工程師抽象了 SQL。你能夠成爲一名優秀的開發人員,儘管對 SQL 不太瞭解。

另外一方面,大量「數據工程師」擁有初級或中級的 HDFS、流式數據或其餘各類 NoSQL 技術的知識。他們一般比初級工程師對原始 SQL 瞭解得更少,由於 SQL 通常排在他們的大數據工具以後。

如今彷佛精通 SQL 的人很少,若是你真的瞭解 SQL,那麼你就擁有了巨大的力量。

網友 redicalbyte:

若是你能理解 SQL,它會讓你大吃一驚。你須要從多個角度考慮事情,就像函數式編程範式或遞歸,一旦你真正「瞭解它」,你就會以爲本身像個絕地大師。

惋惜的是,絕大多數 SQL 用戶並不那麼精通。要精通 SQL 很難,由於只能經過長時間的實戰才能掌握好它,並且須要應付足夠複雜的數據模型。

若是不是由於在前兩份工做中天天都處理數據模型,我可能永遠不會精通 SQL。

網友 grigjd3:

做爲一名後來纔開始學習 SQL 的軟件工程師,我很是不一樣意這種觀點。在某些方面,SQL 是一門很是好的語言,它比 Python 或 Scala 等工具更容易用來探索和操做數據。但這並不意味着 Python 或 Scala 就很差,但我確實看到有一些問題很是適合使用 SQL 接口來解決。

網友 neokanitian:

「學習 SQL 一次,就能夠在你的職業生涯中重複使用它,不須要再從新學習」。

與其餘抽象概念同樣,SQL 是數學理論的實際表達。SQL 使用 Zermelo-Fränckel(ZF)集合論來推理數據集。

雖然咱們很容易對隨意作的事情(其實是隨意試錯)提出嘗試性的實現,但衆所周知,要開發出 ZF 這樣的系統公理化是很是困難的。數學不會改變,並且很難被戰勝。這就是爲何基於數學的知識和技能能夠跨越整個職業生涯而不須要從新學習。

當 David Child 在 1968 年 3 月的論文「一組理論數據結構的描述」中解釋說程序員可使用集合理論表達式而不是經過導航固定結構來查詢數據時,SQL 邁出了第一步。1968 年 8 月,Childs 發表了「集論數據結構的可行性。一種基於重構集合理論定義的通常性結構」。

1970 年,Ted Codd 在其著名的論文「大型共享數據庫數據的關係模型」(ACM 通信,第 13 期,1970 年 6 月 6 日)中明確提出,依賴集合理論構造的數據獨立性是關係模型的主要目標之一。

基於 Codd 的工做,IBM 的 Donald Chamberlin 和 Raymond Boyce 在 20 世紀 70 年代早期開發了後來成爲 SQL 的東西。

網友 JimmyAustin:

我在大學畢業後加入了一家諮詢公司(這家公司足夠大,大家應該知道它)的分析團隊,他們使用的是 MS SQL Server。

數據清理? 使用 SQL。特徵工程?使用 SQL。

存儲過程管道被存儲在其餘存儲過程當中。其中一些存儲過程太過複雜,以致於它們輸出了包含 700 多個特徵的表,查詢代碼有幾百行那麼長。

每一個輸入、存儲過程和輸出都有時間戳,所以修改一個腳本須要修改其下游的每一個存儲過程。我要求使用 git 的呼聲沒有受到重視(須要提高團隊中每一個人的技能)。

這多是我生命中最糟糕的一年。到最後,我使用 T-SQL 構建了一個能夠生成 T-SQL 腳本的框架。在項目的最後一週(每週 60 到 70 小時),項目的合做夥伴看到使用這個框架編寫的存儲過程,要求將它們所有轉換回原始 SQL。幾個星期後,我換了個團隊。

這件事情的惟一好處是,我如今很擅長 SQL。它確實是一個很是強大的工具,更多的開發者應該使用它。

網友 hardwaresofton:

在我看來,SQL 是有史以來在關係數據庫方面發明和普遍實現的最強大的查詢語言。每當看到有人從新發明本身的查詢語言時,我幾乎老是嗤之以鼻(就像他們要發明本身的配置語言)。

Prometheus 和 GraphQL 是最明顯的例子。

Kafka 意識到了這一點,基於他們本身的東西來提供 SQL 功能,也就是 KSQL。

英文原文:

http://www.craigkerstiens.com/2019/02/12/sql-most-valuable-skill/

 

昊合數據整合平臺HaoheDI(http://www.haohedi.com),會用SQL就能垂手可得搞定ETL。

相關文章
相關標籤/搜索