5月15日外電頭條:系統(tǒng)管理員與開發(fā)者界限日漸模糊
原創(chuàng)【51CTO.com快譯】我的弟弟在大學(xué)里學(xué)的是計(jì)算機(jī)科學(xué),因此,他理所當(dāng)然應(yīng)該成為一個(gè)程序員,或者說應(yīng)用程序開發(fā)者,這也幾乎是選擇計(jì)算機(jī)科學(xué)的最重要原因。在這一點(diǎn)上,大學(xué)里其他的IT重點(diǎn)專業(yè)學(xué)科也應(yīng)該一樣,比如網(wǎng)絡(luò)、安全和運(yùn)算等等。
但有趣的是,他在大學(xué)里一直在努力的做一名系統(tǒng)管理員,走出校園后的***份工作也是做一名系統(tǒng)管理員。到現(xiàn)在,他兩方面的工作都做過了一些。這和我自己的經(jīng)驗(yàn)也有些相似,我經(jīng)常做著“雙份工作”,有時(shí)是系統(tǒng)管理員,有時(shí)是程序開發(fā)者,具體做什么要看我在哪里工作,還有工作的具體需要。
看看我和我兄弟的經(jīng)驗(yàn),雖然管理員和程序開發(fā)者顯然起著不同的作用,但它們兩個(gè)有著太多的相似之處,也許遠(yuǎn)遠(yuǎn)超出大家的想象。畢竟,如果你是一名程序開發(fā)者,那么公司里的其他人只是不明白你在做什么。但如果你是系統(tǒng)或網(wǎng)絡(luò)管理員,那么他們不僅不明白你在做什么,也不會(huì)了解在剛剛過去的一天中發(fā)生了多少復(fù)雜的事情。企業(yè)的煙囪結(jié)構(gòu)經(jīng)常會(huì)造成“我們”和“他們”之間的對(duì)立。
讓我們仔細(xì)看看傳統(tǒng)的“開發(fā)者”的定義:開發(fā)者指設(shè)計(jì)軟件和編寫程序的個(gè)人或企業(yè)。軟件開發(fā)包括設(shè)計(jì)用戶界面,搭建程序架構(gòu),以及編寫源代碼。
但是,任何一個(gè)做過半分鐘以上的網(wǎng)絡(luò)或系統(tǒng)管理員的人在看到這個(gè)定義時(shí),都會(huì)不由的懷疑這個(gè)“開發(fā)者”是不是在說他自己。
穿越靈魂的腳本
腳本語言在很早以前就誕生了并且一直存在著,有Ruby、PHP、ASP和JSP。命令行腳本語言也比比皆是,從PowerShell到TCL,再到Perl和Python。在51CTO.com推出的09年4月編程語言排行榜中,前十名的榜單內(nèi),腳本語言占據(jù)半壁江山。腳本語言和其他開發(fā)語言比如C/C++和Java的***區(qū)別是,它們很少有一個(gè)明確的“entry point”(切入點(diǎn))。而且因?yàn)闆]有“entry point”,它們也就沒有“main”函數(shù)來啟動(dòng)程序,它們一般會(huì)從上而下的編寫并執(zhí)行。
但也有許多相似之處。不管要不要定義函數(shù),怎樣使用條件語句(if…then, for, while),或者怎樣處理變量(by reference還是by value),在系統(tǒng)管理員和程序開發(fā)者的日常開發(fā)中,腳本語言之間的相似性遠(yuǎn)遠(yuǎn)大于它們之間的分歧。無論你采用什么腳本語言來編程,都需要了解它的語法、函數(shù)、變量、結(jié)構(gòu)和運(yùn)算順序。
網(wǎng)絡(luò)和系統(tǒng)管理員們廣泛的使用腳本語言來自動(dòng)執(zhí)行任務(wù),執(zhí)行特定的“on-demand”函數(shù),甚至用它們來創(chuàng)建清晰的日?qǐng)?bào)表或周報(bào)表。51CTO.com此前曾刊出的Linux系統(tǒng)管理員成長(zhǎng)經(jīng)驗(yàn)一文中介紹,“從命令開始從基礎(chǔ)開始”被作者列為一條重要經(jīng)驗(yàn),而學(xué)習(xí)Shell腳本以及GCC、VI等編譯器也成為學(xué)習(xí)路線圖的重要一環(huán)。一位網(wǎng)絡(luò)或系統(tǒng)管理員和一位應(yīng)用程序開發(fā)者所做的工作之間的唯一差別僅僅在于最終用戶,還有把重點(diǎn)放在哪里。網(wǎng)絡(luò)和系統(tǒng)管理員的目標(biāo)是創(chuàng)建一個(gè)應(yīng)用程序,完成某項(xiàng)運(yùn)算任務(wù),而應(yīng)用程序開發(fā)者的重點(diǎn)是創(chuàng)建一個(gè)應(yīng)用程序,完成某個(gè)業(yè)務(wù)流程。
他們都必須親自設(shè)計(jì)解決方案并編寫程序,當(dāng)然,我說的程序包括腳本。他們需要設(shè)計(jì)用戶界面——即使只是命令行,他們還要編寫程序的源代碼。網(wǎng)絡(luò)和系統(tǒng)管理員所做的一切幾乎和應(yīng)用程序開發(fā)者所做的一模一樣。管理員只是幸運(yùn)地同時(shí)做了最終用戶和程序開發(fā)者,他們一般不用與業(yè)務(wù)分析師或?qū)嶋H客戶打交道。
而應(yīng)用程序開發(fā)者可能需要了解并操作系統(tǒng)配置,以便開發(fā)和測(cè)試他們的應(yīng)用,他們一般不用理會(huì)網(wǎng)絡(luò)硬件或復(fù)雜的底層架構(gòu),而把這些煩心事留給系統(tǒng)管理員。但是,隨著Infrastructure 2.0的到來,以及對(duì)底層架構(gòu)與應(yīng)用程序之間合作的需求越來越強(qiáng)烈,開發(fā)者和管理員之間的分界線越發(fā)變得模糊了。
網(wǎng)絡(luò)作為服務(wù)帶來的影響
“網(wǎng)絡(luò)作為服務(wù)”(network as a service)已經(jīng)開始影響并將不停的改變開發(fā)者和管理員所扮演的角色。它提供了服務(wù)功能的API和腳本功能的API,通過這些API,應(yīng)用和網(wǎng)絡(luò)的底層架構(gòu)可以進(jìn)行控制、配置和管理,這也會(huì)進(jìn)一步推動(dòng)系統(tǒng)和網(wǎng)絡(luò)管理員們向著更加面向應(yīng)用的與業(yè)務(wù)流程型的腳本編程方向前進(jìn)。
如果我們做出這樣的假設(shè),就是已經(jīng)習(xí)慣于在不同環(huán)境下使用各種腳本來完成復(fù)雜任務(wù)的管理員們將會(huì)很快改而使用更集成更協(xié)作的“應(yīng)用程序”,這個(gè)跳躍并不會(huì)太大。同樣的,我們也可以為開發(fā)者們做出類似的假設(shè),認(rèn)為他們將會(huì)更好的去理解網(wǎng)絡(luò)和系統(tǒng),以便在一個(gè)動(dòng)態(tài)的底層架構(gòu)上實(shí)施他們的應(yīng)用。因?yàn)閬碜詰?yīng)用的反饋是動(dòng)態(tài)底層架構(gòu)(比如內(nèi)部云架構(gòu))成功的關(guān)鍵,而精致并且堅(jiān)實(shí)的底層架構(gòu)也是保證這些應(yīng)用的可用性和性能達(dá)到業(yè)務(wù)預(yù)期的關(guān)鍵。為了實(shí)現(xiàn)這一點(diǎn),管理員們可能需要為自己開啟一個(gè)IDE(集成開發(fā)環(huán)境),并拿起傳統(tǒng)的“開發(fā)者”們的工具,來應(yīng)對(duì)Infrastructure 2.0的需要。不斷擴(kuò)展的靈活的Eclipse環(huán)境已經(jīng)用于各種編程語言、管理控制臺(tái)和圖形環(huán)境。管理員們可以使用它,把它安裝在自己的臺(tái)式機(jī)上,它會(huì)很容易讓他們適應(yīng)環(huán)境,完成開發(fā)任務(wù)。
雖然從表面上說這些任務(wù)可以移交給開發(fā)者,但并沒有完整的理由來推給他們,因?yàn)榫W(wǎng)絡(luò)和系統(tǒng)管理員很可能有能力并且已經(jīng)掌握了所需的“編程技術(shù)”,更何況如今的底層架構(gòu)越來越需要多方面的合作,來提供必要的力量實(shí)現(xiàn)更加高效靈活的數(shù)據(jù)中心。
在自己的領(lǐng)域里,管理員們一直在充當(dāng)開發(fā)者的角色,他們只是不一定需要這個(gè)名稱而已。而Infrastructure 2.0和內(nèi)部云架構(gòu)的應(yīng)用將幾乎肯定會(huì)讓管理員們把他們的秘密技能拿出來,他們會(huì)進(jìn)一步被確認(rèn)為開發(fā)者,其實(shí)他們?cè)缫呀?jīng)是了。
【51CTO.com譯稿,非經(jīng)授權(quán)請(qǐng)勿轉(zhuǎn)載。合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com,且不得修改原文內(nèi)容?!?
原文:Are admins developers too?
作者:Lori MacVittie
【編輯推薦】