【51CTO.com快译】我的弟弟在大学里学的是计算机科学,因此,他理所当然应该成为一个程序员,或者说应用程序开发者,这也几乎是选择计算机科学的最重要原因。在这一点上,大学里其他的IT重点专业学科也应该一样,比如网络、安全和运算等等。
但有趣的是,他在大学里一直在努力的做一名系统管理员,走出校园后的***份工作也是做一名系统管理员。到现在,他两方面的工作都做过了一些。这和我自己的经验也有些相似,我经常做着“双份工作”,有时是系统管理员,有时是程序开发者,具体做什么要看我在哪里工作,还有工作的具体需要。
看看我和我兄弟的经验,虽然管理员和程序开发者显然起着不同的作用,但它们两个有着太多的相似之处,也许远远超出大家的想象。毕竟,如果你是一名程序开发者,那么公司里的其他人只是不明白你在做什么。但如果你是系统或网络管理员,那么他们不仅不明白你在做什么,也不会了解在刚刚过去的一天中发生了多少复杂的事情。企业的烟囱结构经常会造成“我们”和“他们”之间的对立。
让我们仔细看看传统的“开发者”的定义:开发者指设计软件和编写程序的个人或企业。软件开发包括设计用户界面,搭建程序架构,以及编写源代码。
但是,任何一个做过半分钟以上的网络或系统管理员的人在看到这个定义时,都会不由的怀疑这个“开发者”是不是在说他自己。
穿越灵魂的脚本
脚本语言在很早以前就诞生了并且一直存在着,有Ruby、PHP、ASP和JSP。命令行脚本语言也比比皆是,从PowerShell到TCL,再到Perl和Python。在51CTO.com推出的09年4月编程语言排行榜中,前十名的榜单内,脚本语言占据半壁江山。脚本语言和其他开发语言比如C/C++和Java的***区别是,它们很少有一个明确的“entry point”(切入点)。而且因为没有“entry point”,它们也就没有“main”函数来启动程序,它们一般会从上而下的编写并执行。
但也有许多相似之处。不管要不要定义函数,怎样使用条件语句(if…then, for, while),或者怎样处理变量(by reference还是by value),在系统管理员和程序开发者的日常开发中,脚本语言之间的相似性远远大于它们之间的分歧。无论你采用什么脚本语言来编程,都需要了解它的语法、函数、变量、结构和运算顺序。
网络和系统管理员们广泛的使用脚本语言来自动执行任务,执行特定的“on-demand”函数,甚至用它们来创建清晰的日报表或周报表。51CTO.com此前曾刊出的Linux系统管理员成长经验一文中介绍,“从命令开始从基础开始”被作者列为一条重要经验,而学习Shell脚本以及GCC、VI等编译器也成为学习路线图的重要一环。一位网络或系统管理员和一位应用程序开发者所做的工作之间的唯一差别仅仅在于最终用户,还有把重点放在哪里。网络和系统管理员的目标是创建一个应用程序,完成某项运算任务,而应用程序开发者的重点是创建一个应用程序,完成某个业务流程。
他们都必须亲自设计解决方案并编写程序,当然,我说的程序包括脚本。他们需要设计用户界面——即使只是命令行,他们还要编写程序的源代码。网络和系统管理员所做的一切几乎和应用程序开发者所做的一模一样。管理员只是幸运地同时做了最终用户和程序开发者,他们一般不用与业务分析师或实际客户打交道。
而应用程序开发者可能需要了解并操作系统配置,以便开发和测试他们的应用,他们一般不用理会网络硬件或复杂的底层架构,而把这些烦心事留给系统管理员。但是,随着Infrastructure 2.0的到来,以及对底层架构与应用程序之间合作的需求越来越强烈,开发者和管理员之间的分界线越发变得模糊了。
网络作为服务带来的影响
“网络作为服务”(network as a service)已经开始影响并将不停的改变开发者和管理员所扮演的角色。它提供了服务功能的API和脚本功能的API,通过这些API,应用和网络的底层架构可以进行控制、配置和管理,这也会进一步推动系统和网络管理员们向着更加面向应用的与业务流程型的脚本编程方向前进。
如果我们做出这样的假设,就是已经习惯于在不同环境下使用各种脚本来完成复杂任务的管理员们将会很快改而使用更集成更协作的“应用程序”,这个跳跃并不会太大。同样的,我们也可以为开发者们做出类似的假设,认为他们将会更好的去理解网络和系统,以便在一个动态的底层架构上实施他们的应用。因为来自应用的反馈是动态底层架构(比如内部云架构)成功的关键,而精致并且坚实的底层架构也是保证这些应用的可用性和性能达到业务预期的关键。为了实现这一点,管理员们可能需要为自己开启一个IDE(集成开发环境),并拿起传统的“开发者”们的工具,来应对Infrastructure 2.0的需要。不断扩展的灵活的Eclipse环境已经用于各种编程语言、管理控制台和图形环境。管理员们可以使用它,把它安装在自己的台式机上,它会很容易让他们适应环境,完成开发任务。
虽然从表面上说这些任务可以移交给开发者,但并没有完整的理由来推给他们,因为网络和系统管理员很可能有能力并且已经掌握了所需的“编程技术”,更何况如今的底层架构越来越需要多方面的合作,来提供必要的力量实现更加高效灵活的数据中心。
在自己的领域里,管理员们一直在充当开发者的角色,他们只是不一定需要这个名称而已。而Infrastructure 2.0和内部云架构的应用将几乎肯定会让管理员们把他们的秘密技能拿出来,他们会进一步被确认为开发者,其实他们早已经是了。
【51CTO.com译稿,非经授权请勿转载。合作站点转载请注明原文译者和出处为51CTO.com,且不得修改原文内容。】
原文:Are admins developers too?
作者:Lori MacVittie
【编辑推荐】