难以置信,我居然工作快两年了。我从入职时,西装革履,到现在,牛仔T恤。
我的工作是IT咨询顾问,但实际做的事情,就和一个程序员差不多。没人把我当成一个顾问。在客户领导和很多同事眼里,我和外包的程序员没有区别。我在一份简历中写道:
顾问的核心价值并不在于他知道什么,做过什么,而在于他强大广泛的知识背景、学习能力、外语能力以及对于计算机的深入理解。只要赋予机会,他能够解决任何问题。这是顾问与专家、程序员等的根本区别。
可是这份简历被同事拒绝了,他说我们自己人都知道是什么,但是给客户看的,要“正式”一些的简历,于是我的简历就成了“有几年Java开发经验,参加过某某项目云云”的样子。
1. 什么是顾问
在我刚入职的时候,我的简历中说自己会20多种编程语言。我其实没仔细想过,因为我感觉研究过的,只会多不会少。后来被挑战了,一个项目的负责人让我说出来20多种语言,这种突然发问,让我慌了,我磕磕绊绊没说够。当然我听他教训了一顿,初始印象很差。这没什么。最后他离开项目的时候,对我的评价是,远远超出一个新人的水平。因为他看到了,随便一个环境,随便哪种语言,我能立马用起来。当他想写个Java程序过滤日志的时候,我用perl写了一个one liner解决,当在AIX上解决网络问题的时候,我写了一个shell脚本解决。当他想用loadrunner压力测试数据库的时候,我用loadrunner的脚本语言写了压力测试的脚本。我并没有用过loadrunner,但是那种和C语言类似的,看一眼文档就能写出来。
我在刚入职的时候,参加一个云测试平台的项目。开发已经接近尾声,他们用的OpenStack作为后台。于是我就成了系统工程师,负责OpenStack的部署和运维。我就经常和华为的工程师打交道(客户的基础云平台是华为负责建设的),处理各种SAN存储、交换机、防火墙和网络的问题,偶尔修修OpenStack的Bug。后来和我一起工作的那个同事离职了,有次问我,现在在做什么,我说Java EE开发。他也是惊讶。在他眼里,我只是个系统工程师。他不把我当作顾问。
我在入职一年后,升为Band6,价格突然高涨,卖身也不好卖。有个同事跟她的项目经理说了不少好话,让我去面试,结果他们问我,做过哪些Java项目,有什么体会,我基本一无所知。其实我工作以前,一直很鄙视Java的,尤其是企业开发,当然也不会研究什么。于是我就被拒绝了。后来幸运的是,另一个项目经理跟我在电话上聊了一下,就很愉快地让我去了他的项目。我在那工作了一个月。我去那个项目一周多的时候,项目经理就换了,项目很危急。新来的项目经理和我没怎么打交道,但是我也很不喜欢。不久就让我出去了,当然那个项目最后黄了。
我在那个项目,和技术负责人学到了很多,尤其是怎么组织一个Java EE项目,怎么管理版本。他是个独立顾问,是我很少佩服的一个人。在这个项目之后,下一个项目我也是救急,我也很感激下个项目的负责人,能够信任一个入职一年的人,让我去负责一个项目。我在上个项目所学,完全派上了用场。我们只有两个月的时间,最后顺利上线。
负责那个项目的partner对我很好,还专门给我老板写了感谢信。于是其他同事就把我看成是“做Java的”。其实我很讨厌别人用一门技术来定义我。因为Java只是需要解决问题的一个工具,我是顾问,项目需要我做这个,我自然会这个,而且会做得很好。如果对计算机有深入的了解,我不需要是一个计算机科学家,我能够做到工程师的水平,解决技术问题就可以了。技术问题,不局限于任何一门特定的语言、框架或者操作系统。
我有一个朋友,专门做外汇。对外汇有了解的读者,可能知道MT4,是使用最广泛的交易终端。他找到我,是因为他想做EA(Exper Advisor,自动化交易程序)。MT4用的语言是MetaQuote4,是个和C++很类似的语言。他找到我的当天下午,在咖啡厅,我就看着MT4的文档,做出了一个可用的简单EA。我没有接触过MT4,也没有做过交易,很多交易的概念,还是他一边解释,我一边看文档了解的。但是我了解计算机,我知道这个程序背后的逻辑和原理,所以我能很快地做出来。后来我逐渐对交易感兴趣,帮助他写了很多的EA、指标和脚本,当然我也从中学习到很多。一定程度上,我是在做一个咨询项目,我用自己的知识帮助客户解决他的问题,帮助他的成长,他的成功就是我的成功,这不就是顾问要做的事么?
之前一个财务顾问同事,群里求助,说求Excel VBA高手,写一个处理数据的脚本。后来我问她的需求,基本是SQL的LEFT JOIN所做的事。很多情况下,客户容易自作聪明,他们不问问题本身,而是把自己的理解说出来,所以根本不着重点。她的问题,如果用VBA写,必然可以,但是会很麻烦。当然一个伴生的问题也是用VBA解决了,因为录个脚本,然后稍作改动很简单。至于她要做的事,我不可能让她去装个MySQL或者SQLite。我说你打开access,我跟你一起做。access我之前没用过,但是我知道它是桌面数据库,和Excel集成很好。很多外行的人根本对access没概念,但是我知道他们装Office都会全部安装的。把Excel的数据导入access,然后一句SQL处理完毕,再复制回去,问题就这么解决了。她说我们半天搞不定的事,你轻松就解决了。我说这就是术业有专攻,IT顾问就是做这些的。
所以我对自己的定位是顾问,是帮助别人解决问题(尤其是计算机相关问题)的人。不是IT专家,不是精通某某技术的牛人,更不是狭义的程序员。
2. IT咨询项目现状
我参与过的项目中,最常见的领导吹嘘自己,就是自己当年在某某大型企业做过某某系统,至今还在用,都推广到全国之类。然后下面的人就说领导你好牛啊。为什么领导都有如此相似的经历?每次听到这些我都想吐。
我参与的某个项目中,领导请大家吃饭,让自我介绍,我说我研究生毕业,在中科院某某所,他们一脸惊讶的表情,不是因为我牛逼,而是因为我居然来码代码。对我来说,这是一种歧视。
我参与的某个项目中,客户知道我是18摸的,也很惊讶,可能我的穿着太随便吧。对他们来说,西装革履的才是18摸的,做技术的,都是下包。
有些人做了业务顾问或者当了项目经理,说起自己当年,也是“我不写代码很多年了”,写代码只是一个值得炫耀的过去,而不是当前的状态。言下之意,现在当然比当年强,只不过当年我也是技术牛人罢了。
GB越来越不重视技术人才。我入职后,面试过我的一个技术牛人不久就离职了,据说去了阿里。公司去年年底进行过一次大的人员变更,很多GB的顾问毫无预兆的情况下被转到了GD,导致很大的不满。
但是现在的项目又都缺乏技术人才。所有的项目都在找人,找开发人员,却很难找到。这就是为什么,我这种入职不久的新人,只能做这种开发的工作,因为项目上急需的都是这种人。而且即便这样,项目也不好找到,因为他们都想要下包公司或者GD的。为什么?便宜啊。GB的人,价格高的离谱(虽然工资不怎么地)。
你能够想想,一群不懂技术的业务顾问,在为一个大型企业设计一个信息系统,他们甚至对计算机都没有什么概念,连Flash都不会装。而只懂听从需求的序程员,根本不考虑业务和设计的合理性,使用各种天真的代码实现不合理的需求,导致代码一团糟,系统稳定性差,简直烂的可以。甚至有的技术负责人连版本管理的常识都没有,用个SVN,基本没用过branches和tags,还煞有介事和我们的负责人(也没有开发经验)讨论怎么管理代码发布问题。殊不知这些早已经是解决的问题,早有现成的方法。有的项目我负责开发,我可以决定怎么办;有的项目只是普通一员,当然没有话语权。
这种情况,导致现在的项目做得很差。毕竟我们是在做信息系统,做软件,你能让一些对计算机没概念的人来设计和管理吗?这就导致了很多不必要的问题,效率底下,系统不人性化,因为设计的人不知道哪些是可以做到的,哪些是不能实现的,哪些是耗时的,哪些是简单的。开发的人只管完成任务,提不出建设性意见。
3. 未来
我对解决问题还是很有激情的。我想用自己的知识和技术,来帮助大量需要帮助的人。程序员可能对计算机了解甚多,但是他们的能力发挥了多少呢,效用有多大呢?计算机作为一个很有效的工具,大多数人都没有把它的潜力发挥出来。不管是用office的人,还是想做信息系统的企业,他们对于计算机的理解,真的是属于“没有概念”的一类。
现在都在谈大数据、云计算,这些都不是什么新东西,也没有对计算机的本质有任何改变。很多人在吹嘘云计算怎样怎样,不过就是个管理个虚拟机而已,大数据怎样怎样,不过是实现一些数据处理的算法而已。细节可能很多,但是绝不是什么突破性的进展。什么时候量子计算机能实用化,才算是计算机本身的突破。什么时候AI能够像人类一样,理解数据,才算是真正的大数据的突破。
大量的互联网企业,声称在做改变世界的事。他们在做牛逼的产品,这个很好。或许有一些能够让所有人受益的技术或者产品出现。但是他们面对的是一般大众,目标是所有的人,而不是针对个人的需求。
很多个人和小企业,他们需要计算机这个工具,不管是掌握Excel技巧,做一个微信公众号后端,自动化交易系统,还是科研单位做一些个性化的绘图程序,很多很多。我想,帮助这些人,为这些人提供咨询服务,是一件很有意义的事情。