从码农到CTO——一个优+程序员的自述

编者按:

李小明是我们推出“优+程序员”服务的原型人物,2007年加入盛安德,担任高级Java工程师,也担任过项目leader。了解他的人都知道他低调、谨慎、话不多,老实厚道,是个挺典型的程序员。之前一直服务于国外客户,大部分是比较大型的客户业务信息系统,涉及的行业有化工,物流, 银行等,主要的开发语言为Java。两年前接手的一个国内项目,让他从一个普通的“码农”变身为实际上具备敏捷特质的私企CTO。

他的经历给我们很大的启发——具有敏捷精神的程序员,也就是我们提供的优+程序员,对于IT实力相对薄弱但有持续改进的IT需求的传统企业提供贴身服务,和客户一起面对问题,解决企业信息化的难题,为企业IT赋能,正是很多中小型企业所需要的服务。。。

以下是李小明与客户的合作历程

客户背景

E客户是国内第一家专业从事液态储运周转箱(简称周转箱)租赁业务的企业, 专门用于运输一些液体货物。这种箱体和传统的运输液体货物的铁制吨桶相比,不仅成本低很多,而且体积小、可折叠,运输效率也高很多,更环保。因为国家对环保要求越来越高,传统的吨桶不仅使用不便,其清洗成本也在逐年增加。因此,客户的业务逐年增长,像中石油、中石化这样经常要进行液态货品运输的企业都是E的客户。

 

客户的问题

客户的主要业务承载体就是大量的周转箱,其核心业务就是管理周转箱的调度及物流等状况。每天都要做计划,进出库的管理和调配运输车辆,这就涉及与仓库和运输的合作方的协调。但传统管理存在很多“不透明”的环节,有一些管理“盲点”:如箱子在周转和运输过程中是否有遗失?任何一个箱子的物流状态如何查找……以前都是人工记录,电话里口头说一下或纸笔记录,查找效率很低,更不要谈什么业务数据和分析了。

客户的管理层IT意识很强,都有留学背景,他们想把所有的业务都上系统,全部信息化管理,做到任何一个箱子,任何一个客户的任何一笔交易都可以在系统里查寻。

然而,尽管早在多年前就开始了信息化的改造,但因为没有自己的IT人员,管理层本身也不懂技术,他们在IT系统开发方面走了一些弯路。

 

建立合作

客户在信息化改造方面的需求非常迫切,找了一家开发团队合作,但客户自己不懂技术,希望有人能帮他们掌控整个开发的情况,于是想找一个项目监理,帮助他们监督开发团队的工作。客户联系到了北京总部,由于我的经验比较匹配,简单面谈后与客户的合作正式开始了。

客户团队开始有些排斥,经过一段时间的磨合后,基本没什么大问题,大家目标一致,都是为了对客户负责,把系统做好。真正的挑战是深入了解和理清客户的业务流程,只有这样,才能确保开发工作是沿着帮客户解决问题的方向正确运行的。由于客户的业务涉及的流程比较多,很复杂,我花了一两个月,几乎天天泡在他们公司。与各个业务部门的人员沟通,梳理他们真正的需求。为了更贴近用户,有时候会跟着E公司的业务人员去见客户,或者去工厂,熟悉整个业务的上下游关系及需求。经过不断的学习和与客户方各岗位的人员沟通,终于理顺了整个业务流程。

“监理之外”

去之前我以为不需要我写代码的,后来随着工作的深入,我做的远不止写代码了

第一个“分外”的活儿就是部署OA系统。

因为客户公司没有IT人员,我去之后他们想上一个办公OA系统,征求我的意见,看是自己开发还是采购现成的产品。我们一起选了一个产品。然后我发现他们也没有自己的服务器,我又帮他们买了服务器,申请了域名,包括产品买来以后,也是我帮他们部署和配置的,没用卖家那边派技术人员。这些本不属于“项目监理”工作范畴,但我想能帮就帮吧,能替他们省一些成本。OA流程里面他们涉及审批的环节比较多,需要特别设计,这我也都帮他们做了,现在他们一直用着呢。

第二个“分外”的活儿——做数据分析报表。

主数据模块完成后,当客户可以看到主要业务数据的时候,就向我提了新的需求——根据这些数据做一些分析图表,有助管理层了解业务的态势和细节,如销售额、销售指标、新增客户等。我也二话没说先帮他们做了,客户看了挺满意,然后我就告诉开发团队如何做这些分析图表,后来他们做了十几个图表吧。

第三,应用产品选型,写核心接口代码。

开发半年之后,系统开始做库存管理和财务管理,客户的业务特点要求财务和业务必须要一体化,原来用的系统可定制化的功能比较少,当初选型比较仓促,系统并不能完全满足他们的需求。于是我和客户一起找更适用的产品,后来选了另外一家供应商的系统,比较灵活,可定制化的功能多。最终我们决定使用该系统做库存和财务管理,其他用自己开发的。

这个过程中,我们遭遇了最大的一个难点。因为客户的系统是用JAVA开发的,而新系统用的是microsoft.net,两个核心业务系统要通过接口对接,可客户请的开发团队中并没有会使用microsoft.net的程序员。然后客户就问我能不能做,我平时其实也是用JAVA的,microsoft.net很早以前接触过,我咬牙应下来,跟系统供应商那边要了一些资料,自学了一下,最后独立完成了接口的全部代码。

在不知不觉中,我从一个普通程序员,变成了客户公司的IT负责人(CTO)。

最开始并没说这工作需要onsite,但因为要了解客户的业务,熟悉他们的工作场景和环节,还要跟开发团队协调,所以我几乎一直是在他们公司上班的,现在依然是在他们公司上班的时间多,有时候还陪他们一起见客户。因为总在一些工作,大家都混得很熟了,都是同事关系,有些甚至比我跟我们公司的同事关系都近。

正因为有了这层关系和情感,我对这个系统的责任感又加深了一个层次。刚来的时候,我也是一门心思就想着对客户负责,把工作做到位。无论是熟悉业务,监督开发团队的工作,修改和完善之前团队没完成的工作,调研各业务部门的需求,甚至客户后来追加给我的那些“监理”之外的工作:部署OA及运维、写关键接口的代码等等,我都一一接下来,努力做好。

现在这种心情比当初更为迫切,觉得这就是我自己的事情。6月份的时候,新系统测试上线,我和项目成员同事忙了差不多一个月,有时候连续N个小时几乎不眠不休,时间太晚了,我干脆就睡在客户公司了。

到目前为止,系统基本上运行良好,每日线上和线下数据都吻合。各地仓库和运输的合作伙伴都可以看到系统里相关部分的实时情况。新旧系统还在并行。目标是到今年年底,主要业务功能都在新系统里实现,替换掉老系统。

其实能做到今天,我特别感恩遇到这么好的客户——我的主要联系人是E的销售经理,可以说是他们公司的管理骨干,他对IT系统特别重视,一直都是他在内部主推。整个系统的每一个业务模块的功能,几乎都是他先整理需求之后和我讨论,然后再请相关业务部门人来磋商、确认,之后才着手做。开发过程中和测试阶段,如果需要也会请相关业务部门的人进行试用或确认。有我协调不了的问题,他就会亲自协调解决。可以说整个项目推进顺利,跟他个人的能力和在公司的影响力直接的关系。

● 管理层的重视

● 懂业务,熟悉所有业务环节

● 执行力强(内部执行效率高)

到后来,我和客户之间有了稳定互信的关系,因为他经常出差,他就把整个IT系统和所有跟IT相关的工作大部分交给我负责了。所以从最初的项目监理,到现在,服务了快两年,我几乎相当于他们公司的IT负责人了。

从被动到主动,无声的“巨变”, 是我自己都没想到的。

整个过程对我自己来说除了责任心和成就感之外,我还学到很更多东西:比如,项目管理、进度掌控、需求调研……甚至要捡起microsoft.net,这些在以前都没有机会真正接触。

以前做过一些项目,需求都是客户给定好的,很多项目都做完了,我都不知道系统的整体流程和业务背景。其实了解实际的业务流程和需求,对程序员写代码是很有帮助的,非常重要,但有的项目里,供需双方对此都不够重视。

这个项目对我个人的影响是巨大的,过程是潜移默化的。我虽然以“项目监理”的身份“入戏”,但从一开始,就是独立承担全部的责任——要负责项目管理,协调监督开发团队工作,要跟客户密切沟通,还要跟各个部门交流,了解他们的业务需求,理解他们的意图,再转化成技术需求,还要自己写代码,甚至用不熟悉的语言写代码,还要扮演“甲方、乙方”双重的角色,在帮客户选择OA和ERP产品的时候,我就是甲方了……

总之,不知不觉中,我从原来单纯的程序员、码农,变身成了一家民营企业实际的IT负责人,我的视野更开阔了,专业能力及职业素养都得到了综合的锻炼和提高,对客户所在行业的业务理解也在不断积累和深化。这都使我对自己更有信心,对工作的主动性、积极性及认同感更强了。

编后记:

回顾本文,你会发现,李小明从一个普通的程序员,变身为客户公司实际意义上的CTO,正是遵从了上述“敏捷思路”。无论他自身是否意识到,无论这个过程是主动还是被动,无论是出于朴素的责任心还是混合了其他个人情感,总之他做到了,破茧成蝶,身价倍增,找到了信心和方向。而对于客户而言,无需建立自己的开发团队,专注于自己擅长的业务领域,把项目交到专业的人员手上,用最小的成本实现了信息化变革的最大利益,这应该就是优+程序员的最大价值。

Categories: 
up
0 users have voted.

Add new comment