Linux運維人員需要掌握一門程式語言嗎?

白吃白菜發表於2016-06-20

最近經常有同行的朋友或者Linux初學者問我:運維人員是否需要學一門語言,那麼該學哪種語言呢?

對於這個問題,我分兩個方面回答:

首先,在大資料、雲端計算發展迅猛的今天,系統運維人員如果不懂一點開發語言的話,確實會舉步維艱。因為在運維工作中,業務系統的繁多,線上伺服器規模很大時,只能透過寫指令碼的方式(自動化也是指令碼一種哦)自動化完成,不然,如此重複和繁瑣的工作,靠人力是無法負擔的。所以,學習一門可以讓運維工作批次完成的語言,就顯得很重要了。

那麼,應該學習一門什麼語言呢?

對於Linux系統運維人員來說,答案就比較複雜,因為有很多的選擇。shell、perl、python、ruby等等。

我認為,每一個Linux系統運維人員都應該知道Linux外殼程式(sh或bash),另外還要知道Perl、Ruby或Python當中的某一門語言。至於學哪一門語言,並不重要。

在我看來,任何語言都是為運維工作服務的,只要能完成運維工作,你喜歡哪種語言,那麼你就用哪種語言吧!當然,對於初學者會有一些不同的選擇,如果你是初學者,推薦當下比較流行或者企業應用比較多的語言來學的話,對以後的工作會有很大幫助,畢竟沒有哪個公司願意接受一種陌生的語言。

那麼,是否初學者一開始就要馬上學習一門運維語言呢?我覺得這個為時過早了,因為任何語言,特別是shell、python等這些語言,與Linux聯絡很緊密,如果對Linux一無所知的時候,就茫然的去學語言,那無異於盲人摸象。所以,我建議學習系統語言,一定要有Linux基礎後再去學習,你會發現,語言也變得容易多了。

shell作為一門通用的系統語言,是所有運維人員都必須要了解和掌握的,透過shell能幫助我們解決日常工作中很多重複、繁瑣的工作,但是shell的基礎就是系統命令,因此,只有掌握了系統命令的原理和使用方法,shell才能執行起來。我見過很多學Linux的朋友,他們也接觸運維多年,但是對於如何執行for迴圈、while迴圈、if with [[或[、$1、$2、$3... $*和 $@ 以及case語句的使用都不會,他們遲早會為沒有儘早學習bash而自責不已。

那麼,又有人問我,我對shell已經非常熟悉了,但還是找不到工作,很多單位都要求會python或ruby等語言,我是否還要學這些語言呢?

這個問題分為兩個方面,首先從員工角度來講,企業招聘員工是為自身服務的,交給員工的任務只要能按質保量的完成,其實已經足夠了,至於透過什麼語言來實現的,並不重要。可能有些企業出於習慣或傳統的目的,強制要求要透過一種語言去完成所有工作,這是企業環境問題。如果每個員工都有完全依賴於企業的這種習慣,豈不是要學會所有的語言嗎?顯然,這並不是一種常態。

很多朋友都看過招聘資訊,對語言的要求基本都是shell、python、perl等任意一個熟悉,那麼也就說明對運維工作的語言要求是相對較寬泛的,我曾就職多家大型公司,對於運維的工作都有專業的任務排程管理平臺,而排程管理平臺上,可以支援任何語言編寫的運維排程任務。因此,你無需為學習哪個語言而發愁。

然後,從職業管理的角度來看,我認為真正擅長其中一門語言,對另外其他語言有所涉獵,這是最大的競爭力。哪怕這意味著僅僅閱讀介紹這些語言的書籍的頭幾個章節。真正擅長其中一門語言意味著,你深入瞭解如何運用該語言,深入瞭解該語言在“底層”是怎麼一回事,那樣你在設計更大型的程式時,就能作出更合理的決策。我之所以把這個問題上升到職業管理問題的層面來討論,原因在於,如果你想受僱於一家使用不同語言的公司,“成為願意學習不同語言的專家”遠比“成為只想學習大有潛力的語言”或“對這門或那門語言一知半解,但是從來沒有耐心把某一門語言學好的人”來得重要。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31088174/viewspace-2120443/,如需轉載,請註明出處,否則將追究法律責任。

相關文章