成就系统工程师的职业生涯
题外话
从家长到老师、从学生到职场精英,每个人都在说中国是应试教育,不是素质教育;中国是发展中国家,没有职业市场,一个人能成就什么,靠的是运气、胆量而不是技能、创造力。是这样么?历史有惊人的相似性,一句最具代表性的名言是:这个世界最不可思议的事情是它能够被人理解。同样的事情,在世界上的发达国家、在地球的其他角落,曾经发生或者正在发生,也可能即将发生。作为一名中国人,非常骄傲于中国近三十年来取得的成绩,中国成功地实施了经济转型,国家的角色从生存向发展转变,尽管这个时间看起来迟到了整整20年,但似乎是必不可少的经历,让人再一次感到“天地不仁,视万物为绉狗”的无奈。希望信息技术可以超越于历史上曾经出现的其他革命,最终成就一个新的时代。我曾经写过另一段文字,闲聊IT是否需要职业人士,可以把本人算作一个续篇吧。另外本文缘起于有感另一篇网络文章:成就DBA的职业生涯。在此感谢原作者的思想,尽管我无意抄袭,可是不知不觉被文章的思路所左右,希望作者原谅,原文讲述已经非常全面、透彻,尽管我们方向不同,一软一硬,却依然隐隐有些遗憾,该说的都已经说了,那么,只好继续说那些不太该说的。
我应该成为一名系统工程师么?
我曾问过许多人,也曾经被许多人询问:我应该从事系统工程师这样的职业么?我学习什么有更好的发展机会?甚至是如何学习?为什么学了很久没有丝毫进展?这几个问题确实不容易回答,或者根本就没有正确答案,甚至最佳答案也没有。因为它不仅因人而异,因时而异,而且因境遇而异。每个人有不同的秉性,有不同的天赋;在他人生最有价值的一段时间之内,有许多重要事情,执业发展只是其中一件“比较重要”的事情;他所生活的环境也对他的人生观、价值观有着潜移默化的影响,在不知不觉中,左右着他的行为。所有这一切,最终要由一个问题的答案所反映出来,甚至答案只是是、否两个选择之一!如果能认识到这些,大概就不会有人再提这个问题了。不过,即便不提这个问题,疑惑还是存在的。授业有先后,术业有专攻。每个人都有自己的超越于别人的天性,只是是否选择了正确的方向将蛰伏在体内潜质激发出来而已。疑可以答,惑却需要自己解,作者则希望本文能帮助你早日解惑。由于这个原因,本文中处处都是问题,而没有直接答案,毕竟疑惑需要你自己领悟,别人的答案不但不一定适合你,甚至可能会误导你,所以希望你自己能早日找到自己的职业之路。
从事IT职业的原因几乎相同:薪水高,充满新挑战,而且可以有一个舒适的办公环境,不同于出租车“禁闭室”,不同于噪音轰鸣的厂房,每天坐在冬暖夏凉的机房、办公室内,好不惬意。更重要的是职业名望,想起一则笑话:蚊子妈妈问蚊子女儿,为什么要嫁给蜘蛛。蚊子女儿说:蜘蛛丑是丑一点,可他是搞网络的啊!由此可见IT业界在世人眼中的“名望”。IT行业有很多职业可以选择,如何选择也是一个大问题!但不是本文要讨论的内容,如果希望对此有了解,只能等待以后的文章。简要来说,系统工程师是个“纯粹”的技术职业,而且需要脚踏实地地工作,能够亲自动手进行软件、硬件操作,对于那些充满激情,喜欢了解新技术,既不甘于象程序员一样进行千篇一律的工作(实际并非如此),也不想如同IT咨询、架构师总是“玩虚的”(实际并不是如此,我们以后再谈罗这个话题),那么系统工程师正是你的最佳选择。单凭这一句解释,还不足以让你作出终生无悔的最后选择,而且也绝对不希望你现在就做出选择,为什么在这一个关系到你从此之后半生幸福快乐的重要问题面前如此草率?想起了莎翁借哈姆雷特名句:To be or not to be, this is the question! 我喜欢这句话,也一直在找这句话的答案。下面让我们一起来找到内心深处的答案,如何?
什么是系统工程师?
说了好久,你应当提出了第一个伟大的问题了:什么是系统工程师?对于这个问题,有多种答案。你可以认为系统工程师是一个大杂烩:一点服务器技术、一点操作系统知识、一点数据库概念、一点中间件结构、一点编程能力、一点网络基础、一点存储原理,还要一点IT素质和经验积累。从这些名词你就能预感到系统工程师职业道路上充满了挫折和令人头痛的问题(似乎所有的职业都是如此)。
系统工程师要解决所有的“系统”问题,是的,所有的问题。对于一个IT系统,什么不是系统问题呢?如果一个报表程序,计算的结果冲突,数据不平,似乎这是一个“非系统”的问题,但你依然要小心,如果这个程序是由于某些数据无法获取而因此得到了错误的结果,作为“系统工程师”的你依然逃脱不了干系。当然,你不需要知道所有的“系统”知识,但是知道得越多,显然对你越有帮助,也会帮助你成为更成功的系统工程师。作为一个IT系统,各方面紧密耦合,而你需要在这错综复杂的关系中理清头绪,抓住核心点,并为其他人提供技术支持。
记住,别人是使用工具的力工,而你,是系统工程师,是制造、维护工具的技师。在IT系统中,每个人所处的层面不同,关注的细节不同。系统工程师所要关注的是洗去铅华的赤裸裸的肉身,如同外科手术大夫,他的刀下可能是燕语莺声的超级女声,可能是拔山举鼎的动作明星,但现在,都不过是肝胆脾肺肾的组合。声带,不过是短短的一条肌肉,鬼才知道它震动起来会如何涅人心魄;胸大肌,就是那么两团红肉,止血钳一上,立刻是惨白一片。这既是系统工程师的成就,也是系统工程师涅磐之前的坟场。在后面,你会了解到具体原因,在这里简单的一个解释是如果在咽喉发现了癌变,你因为切除它,使这个人技术上能多活20年,但也可能会使她在手术清醒后就立刻自杀。作为系统工程师如果没有能超越于系统工程师的角色看待这个系统,你永远只能是一个系统工程师,也许这样就足够了,但至少我不这么认为,为什么不在成为一名合格的系统工程师后再向前一步,成为出色的系统工程师,或者是系统架构师呢?当然,你也要为此付出代价,你是否已经做好准备开始学习直到你感到已经无法再学下去了?
作系统工程师并不是一件复杂的事情,但绝对不简单,特别是想作为出色的系统工程师。诚然,如果你在一个大公司里,你可以庸庸碌碌,按照手册或者前人的指点,每天做一些机械的工作,可是作为中国的杰出青年,你当然不像如此终了此生,你想有所作为,你在寻找“芝麻,开门!”。如果你在一个发展中的企业,你的机会就来了,你会深陷老板的威逼、业务部门的重压之下,自己殚精竭虑又身处求学无门的困顿之中,如果你能坚持过去,并经常保持思考的好习惯,成为资深的系统工程是指日可待,只是作为一个过来人,建议你今后小心太过于拘泥细节,缺乏全局和战略眼光,这会限制你进一步发展,更重要的是使你的工资止步不前。如果你是幸运儿,刚入道就混进IT名企,你可能在短短的几个月的时间内被(需要)填鸭进一堆产品、技术、Best Practice、认证,这些是你的幸运,也是你的不幸,能否消化得了,是不是造成你“消化不良”暂且不说,眼高手低、下盘发虚,或者被锁事缠身,每天搞那些看似高深,其实毫无独创价值,仅仅follow执行指令是一定的结局,而在繁忙的工作和同僚的敬仰中,你意识不到这一点,这是最大的遗憾。经过多年以后,当你青春不再,想再追寻回你的人生价值的时候,你还能自由驾驭你的人生么?
我们暂且抛开10年之后的话题,先看看眼下的艰难困苦。每个新人遇到的困难,往往都是在尝试着吸收大量系统工程师信息的时候发生的,而这也是必然的结果。系统工程师需要至少了解一种硬件平台,如果你供职于原厂商,你懂得某一种产品线就好了。实际上,即使这样,你也需要了解高、中、低端十几种产品、管理平台、配置设备接口卡、操作系统、群集管理软件。对,没错,是软件,在现在的Unix平台,还没有如同Mainframe那样进行透彻的专业化分工,你需要身兼数职,不过,这种专业分工现象正在加剧。如果你不幸身处集成厂商,你要做的事情更复杂。不同的产品线包括从服务器到存储,甚至不同厂商的产品都需要你一一精通。如果更加不幸,你任职于甲方,也就是IT产品的用户,别期望什么系统工程师、网络工程师、DBA、Helpdesk的区分,从你领导的理解,这些都被称为“搞计算机的”,而你,就是被聘用来“搞计算机”。无论怎样,做系统工程师绝对是个挑战。你是喜欢挑战的人么?
做系统工程师也需要随时待命。他们会在白天去安装设备,晚上去对生产系统进行调整,24小时随时准备着收到应急维修电话去修复致命的系统崩溃(术语叫做System Down——宕机)。计算机系统是为了支持业务运转,随着IT技术的普及和深入,IT系统提供了业务运转的动力和效率,同时也造成了IT系统中断,业务随之中断的事实。想象一下,你刷卡的时候被告知系统不能使用;你的手机欠费之后无法交费;你在网上浏览本文的时候,忽然收到“网络页面无法找到”的信息。这些都是作为系统工程师需要去解决的问题。你需要7天x24小时随时待命,你会在凌晨3点接到请求应急支持的电话,你会“一饭三吐哺,一沐三渥发”,不定时的饮食,饕餮快餐盒饭等垃圾食品,没有锻炼的时间,焦虑的心情会让你或者体重暴增,或者身形憔悴,总之,你俊朗的体形伴随着你的青春一起消逝在无限的为系统服务之中。你能容忍这样的生活么?
系统工程师的职责包括安装、调整、维修(其实是查找故障,更换部件)硬件设备,为硬件升级微码,为操作系统打补丁。通常,这些操作不能在公司正常营业的时候进行,因为以上这些操作或者必须要中断设备服务,或者可能造成服务中断的风险,因此你有机会见习一下(也许是长期体验)吧台女郎的生活方式,午夜、凌晨、周末是你法定工作时段。如果你向往朝九晚五的生活方式,至少你要有充足的心理准备,在短时间内你不得不向你的理想说再见了,或者短期(这个时间根据你成长的速度不同,可能两三年,也可能要十年)接受它,或者换个朝九晚五的工作,但千万别去抱怨它,生活就是如此,no pain, no gain,不是么?
对系统工程师而言,在初级阶段,你会被资深人士指使来指使去,做一些令人刺激的工作——轰轰作响的风扇,闪烁迷离的指示灯,拿着几张光盘,一把螺丝刀,一个烂笔记本电脑装载着一堆PDF文件就冲向了一个完全未知的世界。你不得不坐在计算机前面一次又一次敲着似乎相同的命令,确惊异于得到了不同的结果。你完全没有准备好就被拉上了前台,还要面无惧色,试图让领导、客户、同事认为你具有足够的能力去战胜任何困难,一本红皮书,一把螺丝刀可以搞定任何问题。也许你比较谦逊,总是站在老鸟身后,拿着厚厚的笔记本,记录着屏幕上快速闪现的字符,回家整理天书一般的笔记。你还需要与业务人员、网络管理员、DBA、应用程序开发人员、项目经理和最重要的人物:你的领导配合。理解别人要你做的事情,也要让别人理解你需要他们做或者配合的事情,最重要的是,你需要向别人解释发生了什么,即将要发生什么,还有这些事情会对他们造成什么影响。沟通技巧,当然还有所谓的谈判技巧,这些都被称为专业技能(Professional Skills),你的这些专业技能如何?
以法律语言来说,系统工程师的工作“包含但不限于”下面的列表,不过这也是系统工程师的典型职责:
· 每天检查系统运行情况,及时发现系统的报警信息,并进行处理。
· 收集系统统计和性能数据,进行分析。
· 配置和调整数系统参数,以便实现应用程序的特定要求和最佳性能。
· 分析和管理系统安全,控制和监视用户对系统的访问、资源使用。
· 定期对系统进行备份,在必要时提供恢复。测试备份与恢复是否正常。
· 升级操作系统软件(补丁)和硬件微码,必要时升级或者迁移系统、数据(物理层面迁移)。
· 对应用程序开发人员、数据库管理人员、网络管理人员提供支持。。
· 评估产品和技术,为IT管理、规划者提供有效的数据。
· 实现系统规划、设计,均衡设计问题以优化性能。
· 逐步提高系统可用性,降低管理复杂性(这一条对于甲方人员,纯粹是自宫的条款,但却有助于你升级,实际你主动,则可以是操刀手,而不被动等待成为别人的鱼肉)。
· 诊断、定位故障,执行故障检测检测,解决任何系统相关问题。必要时联系厂商支持人员以便使问题得到较好的解决。
. 参与制定、执行系统管理流程、系统设计规划/实施方案。
现在你是否对系统工程师的职位有了深入地了解?以上信息尽管不是业界的标准,只是我个人杜撰,但无论你身处甲方还是乙方,无论你是招聘者还是应聘者,还是恳请您的首肯和认可,我也相信这些介绍至少能涵盖80%的内容,如果你心中的目标据此只是有少量偏差,这个无关紧要,哪有那么严格的定义呢?都是先有了生物,才有对此类和类似生物的物种定义。如果你心目中的要求严重与此内容相背离,那么我劝您最好改个方向或者描述,否则招聘者可能招不到人,应聘者可能觉得与心中的理想大相径庭。但这些目标也仅仅是告诉你作为一个“系统工程师”通常会发生什么,别人是怎么要求你的,你需要为别人做什么而换取赏识(更重要的是工资),你自己来决定这是不是适合你的职业。我个人也认为这个职业非常有价值,至少作为一个前期的基础工作非常有价值,他是进入IT行业的三大基础工作之一:系统工程师(服务器、网络、存储、操作系统)、数据库管理员(数据库、中间件、Web Service)、程序员(编程语言、业务逻辑)。如同戏班学徒,一切要从0开始,而今后的路很长,也很惊险。以上这一段帮助你决定这是不是你希望从事的职业(至少在现阶段),假如它是,那么尽你所有去得到它!
所有的失败千差万别,所有的成功都一样:你需要掌握很多硬技术、软技术以及更重要的——运气。当然,你的技能越强,软技术越高,你的运气也就越好。你的软技术怎么样?
我怎样得到第一份系统工程师工作?
相信你已经阅读了前面的文字,并且认为系统工程师是一个很好的职业,祝贺你!我希望你能从中受益,并感受到工作的乐趣。那么,你如何找到第一份系统工程师工作?这个问题我已经听别人问了许多许多遍,这是一个众所周知的鸡和蛋的问题。
即使经过了Internet泡沫爆裂,IT技术依然没有停滞其在世界各个角落渗透的步伐,大量的IT投入需要众多的IT技术人员,包括各种硬件、软件工程师、架构师,咨询专家,其中系统工程师就是其中重要的一个角色。系统工程师在规划、建设、维护阶段,都处于重要的位置。能真正“精修电脑,专业架设网络”的人其实并不多,真正合格的系统工程师更少。早些时候,也许由于你在学校的实验室用过2天Sun/Solaris,或者知道IBM除了个人计算机(已经卖给了Lenovo),更大的业务在于大型主机(Mainframe/zSeries),集成的应用服务器(AS/400 iSeries),小型机(RS/6000 pSeries),当然也有PC服务器(xSeries),以及软件、服务、芯片制造、专利等,甚至对于这些你一无所知,但可以说流利的洋文,也可以作为potential的种子堂而皇之地进入到IT领域,那个时候,你所要做的是选择去那一家公司,而不用考虑哪一家会接受你。现在,各个公司都开始谨慎起来,大量的真假系统工程师都下岗了,主动的或者被动的,原因千奇百怪,有不合格开除的,有公司倒闭的,有机构精简的,有小庙养不起大神的,当然也有换个活法的。众多的劳动力大军在人力市场上一个造成了一个奇怪的现象:想找工作的找不到,想招人的招不到。
从绝对数量来看,IT人才市场是一个买方市场,一个还算像样的公司发出招聘需信息后,简历将会如同雪片一样纷纷而至,从诺大一个人力资源库中筛选出合适的人选:即能满足工作有求,又不会发生狗窝领养了狮子仔的情况,这对于人力资源和IT领导都是个难题。得到第一份系统工程师工作的最艰难的部分在于每一个职位都要求有一些工作经验。除了几家大公司,希望从小用公司文化同化刚入职的大学生,其它公司都希望找一个熟手。从公司角度考虑,这点很容易理解:假如一个新人没有一点经验,公司会付给这个人高工资,让他去操作、维护和运行你IT基础组织的最大最重要的一部分么?并且,在等待他成长起来的过程中,可能会损失上百万的收入(付给他的工资、付给支持人员的工资、付给他学习的费用、一旦他误操作的损失补偿,还有新业务的损失)。对大多数公司而言,这些问题的答案肯定是‘不’。所以,没有经验,获得你的第一份系统工程师工作是很困难的。
关于这个鸡和蛋问题的难度我们不再讨论,落到实处,这是必须要战胜的障碍,对别人,不过是个难题,对你,这是你的未来。下面将针对实现你第一个系统工程师工作的目标给你一些建议。
提示#1:接受培训。--尽可能多的学习有关系统硬件、软件的知识。这很可能将占用你正常工作以外的时间、精力和Money。许多培训机构都举办专业的培训班,唯一遗憾的是中国的职业教育还不够专业,仅仅能把国外某个专题的内容照搬过来,可以说理论有余,实践不足。理论是非常重要的,可以让你夸夸其谈的时候言之有物;实践同样重要,即使你骗过了面试考官,真的到现场去干活的时候,都不知道白颜色的是HP、黑颜色的是IBM、紫色的是SUN,你就糗大了。假如你现有的老板不资助你的学习(特别是一些小公司),那么你可能不得不自己支付这笔费用。这笔投资从长远来讲是值得的,但是短期内,特别是对于一个刚毕业的学生,4位数的投资还真要好好考虑一下。选择口碑不错的培训班,在参加之前,多问问“过来人”。另外,许多系统工程师职业要求至少为计算机科学或相关专业本科以上学历,因此你必须至少有那样的文凭。我也遇到了很多由于小时贪玩、大器晚成、经济拮据等原因,没能混到这样学历的朋友,这很遗憾,但并不是斯芬克斯的难题,只是需要你在别的方面更加努力,现在到了证明你自己的时候了。
提示#2:锻炼成为系统工程师。--许多操作系统都有可以在PC上可以运行的版本或者模拟器,例如Solaris 10, Windows NT,还有一些有网上可以Telnet(尽管不是root用户)练手的地方,对于AIX系统有一点遗憾,还没有合适的模拟器,刚刚发布的Full SystemSimulator PowerPC 970似乎可以做到,但还没有得到验证,不过买一台二手的小机器,也就一台PC的价格,还算公道。在自己的机器上练习使用操作系统,履行你所能想到的系统工程师的职责,了解硬件、软件的搭配,故意破坏系统,并且尝试修复它。这样既可以提高你的技能,也可以证明你的能力。
提示#3:获得认证。--许多服务器厂商都提供自己的产品的认证,而聘用公司也会把认证看作是一种support document,只是仅获得认证是不够的,但有认证总比没有好。通过产品认证测试并不意味着你知道如何管理一个大型系统。它只是告诉你以后可能的老板,现在你拥有了一定的技术。它还告诉你的老板你对这个工作的态度是很认真的,并且已经有了自己的投资去提升技能。我看到许多人抱怨他们已经得到了认证但是没有经验,甚至仅仅是靠背考题得到的Paper认证,这当然对帮助他得到第一份系统工程师工作没有十足的把握,并且这种走捷径的能力说明你不太适合做系统工程师,而更适合做一个销售,为什么去应聘系统工程师呢?再次强调,认证本身并不能使你得到工作,但它可以督促你学习,可以让你了解到许多不注意的细节,可以让你得到一个更加可判定你自己能力的证明。即使你没有考过,你同样获得了许多。不要依赖认证来给你带来你要找的工作,你需要的比这还要多,并且认证在最后会帮助你的。
提示#4:利用你现有的技能。--许多系统工程师都具有网管背景,其他的有应用程序开发背景。假如可能,查看你能否利用现有的技能来得到工作,即使你仅仅是一个网吧的管理员。现在的目标就是为你和你的老板创造一个双赢的局面。例如,让我们假设你已经是一名网管,而想进入Unix领域。新工作完全可以用到你的系统管理技能,你不会迷惑于DNS, FTP, Web Service,知道组、用户、安全控制的概念,了解IP地址和掩码,拆过机器知道硬盘、CPU、内存,具有丰富的故障诊断经验,等等,虽然这些并不足以让你成为经验丰富的系统工程师,但这些技能对于成为优秀系统工程师很重要。假如你已经了解某个产品平台,但你希望转到其他产品平台,那么看看你能否找到一份同时接触两个产品平台的工作。这样,公司和你都得到了想要的。在你定位到某个平台后,你可以试着得到一个能让你全职作它的职位,也许还可以在同一个公司中。实际上,以我自己的经验来看,在初级的时候,涉及太多的平台固然会让你觉得很辛苦,甚至感觉样样稀松,没有专精,但这些经验在你的今后非常重要,这是让你能超越于普通的系统工程师的宝贵财富。
提示#5:利用现在的机会。--有时候,一个人进入系统工程师领域仅仅需要选择正确的地方和正确的时机。假如你现在的老板有一个机会让你进行任何系统建设的项目,抓住这个机会!任何经验比没有经验要好。让你的管理者知道你十分积极的在寻找任何可能的机会,你的能力和态度能让他们在下次机会到来的时候想到你。当你具有足够超越于周围的人的技能的时候,他们可能会决定培训你,提拔你。许多许多人都是以这种方式获得他的第一个真正的系统工程师工作,在进行了一些相关的项目后不知不觉的成为一名较低级的系统工程师。另外当一名系统工程师离开公司后,公司将在内部寻找一个候选人,假如他们认为这名候选人是有培养前途的话(更重要的是听话、好用)。你的道路可能从做网线开始,也可能从搬设备、拆箱子开始。抓住机会!
提示#6:寻找一个引荐人。--这是一个关系社会,酒香也怕巷子深。简历仅仅是第一个广告途径,而圈子里相互之间的推荐是更快捷的途径。同时,你的引荐人会帮助聘用单位更快速地定位你的能力,减少考察期,而且如果你的引荐人具有足够的资历,可以成为你的导师,那么你就赚大了。当然,找合适的引荐人不比找到合适的工作容易,而且往往你已经具有了一定的实力之后,才会为人所知,才会有人愿意推荐你,而这时,其实你已经不需要引荐了。无论怎样,如果你恰好可以有人帮你推荐,对你找到合适的职位非常有帮助。
提示#7:寻找较低级的系统工程师职位。--假如你自知技能不足,看到职位的需求描述说他们正在寻找高级系统工程师,那么就要谨慎些,不用去浪费时间,你并没有一个高级经验。他们要求找一个第一天上班就可以干活的人,而不是第一天上班就进培训教师的人。但是他们会在低级的职位上考虑你,因为你具有“培养潜力”,更重要的是你很“廉价”。低级的系统工程师在高级专家指导下完成工作。他们对系统建设、维护承担责任,同时也获得所有的荣誉。但是不要着急,你是真正的操刀手,所有的键盘字母都是你敲得,只是你不知道那是为什么,所有的电缆都是你连接的,只是同样也不是到谁应该连谁。而你要记住这些,并回去研究这是为什么。随着你的事业发展,你将会有越来越多的责任和得到越来越多的信任,以及越来越多的荣誉,最后是越来越多的钱(如果你只得到了前者,当你无法忍受的时候,你可以决定换个更“均衡”的公司)。现在,因为你没有任何经验,你应该从这里启航,并接受一切“不公正”待遇,你所能做的最好的选择,就是尽快可以说“不”,在此之前,你的反抗精神不会对你的环境有任何帮助。
有很多公司都“声明”寻找一名高级系统工程师,但是到最后,他们实际想要雇一名低级的系统工程师,虽然看到JD上满是吓人的要求,你也许没有资格,但他们可能还是会决定雇佣你。但是提前说明你仍然在摸索阶段并且已经是较低级的系统工程师水平。不要试图欺骗他们让他们认为你是高级专家。这只会降低你得到这项工作的机会。公司就是赌场的庄家,任何人都可以加入,只要给出合适的赔率。实际上,大部分公司都不会有不需要的员工,只会觉得你的能力与你的开价不匹配。
以上这些提示将帮助你得到第一份系统工程师的工作。祝你在寻找工作时有好运气。当你已经找到了第一份系统工程师工作后,继续下面的部分来学习如何往下走下去。