那些年我玩过的编程语言(二)

在培训班第 2 个月左右开始,陆续就有各种公司来这里招聘。有的是对日方向,有的是对欧美的方向。当时跟几个同学一起看上了一家分公司在上海的 500 强外资企业,这家给的工资待遇在上海来说并没有什么竞争力,主要吸引人的还是以下几点吧:

  1. 工作城市在上海。发展机会多。

  2. 全英文办公环境。可以锻炼自己的英语水平。

  3. 公司比较大,全球好多城市都有分支,有很大机会可以出国工作。

简单的对比了几家公司的情况以后,最终选择参加了这家外企的笔试和面试。笔试其实挺简单的,像是智力测验一样的十几道选择题,只要能看得懂英文题目,基本都能做完,后来的面试也进行的比较顺利,很快就跟另外三个同学一起收到了 offer。没过多久,大家就一起买了去上海的硬座火车票和两副扑克牌,在车上打了一路的扑克,第二天就到了上海。

这是人生第一次来到传说中的魔都,当时自己还没拿到毕业证,说实话对未来怎么选择还有点懵,很多时候就是一拍脑袋,头脑一热就做了决定。多年以后回过头来看,如果再有一次机会的话,还是会让自己做同样的选择。刚毕业的时候不要太在乎每个月能赚多少工资,尽量想办法进到大厂里去锻炼一下,会认识很多优秀的同事,领导,从他们身上学习到很多书本上不教的知识和经验,会有更开阔的视野和思考能力。

到公司报道以后,大家被随机的分配到不同的项目组里。我所在的项目组任务是维护欧美一家大型保险公司的软件系统。整个团队20人左右,其中10几个人在上海,还有6~7个人在美国客户那边驻场。团队的氛围非常好,大家相处融洽,工作上互相帮助。每个新人都会有一到两个老人手把手的带你快速适应,从最简单的需求开始,逐步到你能独立解决越来越复杂的问题。他们还会以实际经验教你很多工作的方法和技巧,比如美国保险行业的相关知识以及如何理解客户需求,如何写设计文档和测试用例;比如如何写英语邮件与同事或客户沟通,如何在电话会议上与大家沟通;如何搜索和利用公司的各种学习资源让自己快速成长等等。这些很多都是书本上或者课堂上没有的东西,但对个人的职业发展却有更加重要的影响。

说回到技术方面,这个项目主要是维护在 HP3000 小型机和 IBM zSeries 大型机上运行着的一些程序。有 JCL + COBOL 的批处理程序,也有 CICS 这种带界面的事务交易处理程序。JCL 有点像 shell 脚本,控制与调度着计算机上批处理程序的运行。COBOL 是一门古老的面向过程的语言,主要应用在银行和保险等行业,如果你用过信用卡或者ATM机,那背后的计算多半会有 COBOL 或者 CICS 的参与。这些都属于比较小众的语言,就业方向和未来发展的圈子都比较固定,就那么有限的几个行业和一些大公司会用到这方面的程序员。印象比较深的是项目中有一个 COBOL 程序,一个源文件将近 3 万行代码,光文件头部的历史修订记录就有上千行,第一次上线是 1980 年。。。比我年龄都大好多。。期间不知道被多少个程序员打过补丁,光是看明白这些代码的逻辑就很让人头疼了,更不用说还得在这上面继续修修补补,把新的需求给叠加进去,还不能影响原有的各种逻辑。。。

HP3000

数据库方面,项目中主要用到的是 IBM 的 DB2。但是也有一个遗留项目用的是自己听都没听过的 IMS 数据库, 存储结构就像一棵树一样,你需要一层一层的去存取想要的数据。

另外还有两个子项目分别是:

  1. JSP 开发的子系统管理界面,maven 用来进行项目依赖管理和打包。

  2. 完全基于 Excel VBA + Access 开发的精算系统,这属于我见过的玩 Excel 玩的最6的一个项目了。

其实工作以后你会发现,真正项目中用到的东西,很多都是之前没有接触过的,所以需要自己有比较强的自学能力和适应能力。刚入职的那段时间,虽然公司是弹性制度,每周打卡超过40小时就算全勤,但是自己每天晚上都会在公司待到比较晚才回家,因为公司的内网上有很多有用的参考资料可以学习。有一次还被项目经理叫过去谈话,说我这段时间在公司加班时间太长了,让我早点回家。就这样通过一段时间的自我充电,快速让自己成长为项目里相关问题的 SME(Subject Matter Expert),能对实际问题提出有效的解决方案,并可以保证交付的时间和质量。

第二年年底的时候,当时在美国那边驻场的一个印度同事要请假回家结婚。公司决定派我过去临时替他一个月,好巧不巧,机票定在农历的大年初一。于是乎,新年的第一天,大家都还在梦乡的时候,我已经动身去浦东机场,踏上了前往异国他乡的航班。没想到人生第一次坐飞机,竟然是国际航班。

经过两次转机,20多个小时飞行以后,终于在 EWR 机场降落。印度同事接到我的时候已经晚上10点多了。接下来的一个星期,他带着我熟悉了驻场的办公环境,办好交接,认识了一些客户那边的经理和技术Leader,还有一些业务相关的对接人。然后他就飞回印度忙着结婚去了。

这是自己第一次在一个完全陌生的环境下开展工作,周围全是外国人,很少看到华人面孔。工作内容和重点也跟之前在国内不一样。之前主要是开发为主,也负责带一下比我新的新人。但是到了客户那边驻场以后,主要的工作就变成每天跟客户开会讨论需求,然后整理成文档和邮件跟国内的团队确定周期,协调两边团队的进度,协调客户这边其他开发团队进行系统集成和上线部署,协调业务负责人进行验收等等。驻场这边的经理会跟我说让我尽量不要自己写代码,把写代码这些基础的活交给国内团队去做。自己主要负责发掘客户需求,提供解决方案并保证顺利交付。

每天的会议几乎都是电话会议,来自不同的团队,不同的角色大家一起在电话上进行讨论。经常见面的只有几个人,其中一个是客户那边的技术Leader,50多岁了还在技术岗位上。他每周到公司一两次,其他时间大部分都是在家办公。在公司的时候,我们经常会一起吃午饭,顺便交流交流。他跟我讲他已经在这家公司干了快30年了,他最开始的时候还用打孔机写过程序。我当时还挺惊讶的,感觉这些是在计算机历史书上才能看到的东西,如今就在自己眼前。

最开始的一个礼拜是比较难熬的,陌生的环境,陌生的人,交流上的障碍等等对于自己都是不小的挑战,但是坚持过来以后,就会慢慢适应这种节奏,到后来就会驾轻就熟,知道在电话会议上哪些是跟自己相关的重点,需要认真听,哪些是无关紧要的事,可以把麦克风 mute 掉然后摸会儿鱼。

一个月很快就到了,印度同事结完婚度完假回来以后,我也就回国了,但是这一个月的表现还不错,也得到了客户的认可。所以一段时间以后,我又被正式外派到同样的地方,开始了长期的 onsite 生活。由于这次待的时间比较长,所以期间经历了几次角色的变化,自己承担的责任越来越大,但是相应的回报也越来越多。也开始理解当时经理跟我说要尽量少写具体代码的意思,算是自己思想上的一种转变吧。

类比一下,这就好比是要盖一个万达广场:

  1. 最差的工作就是工地上的搬运工,工头让你每天九点钟到工地来搬砖,每个小时付给你200块工资。这种情况下,你的收入没有任何杠杆,你也不需要负很多的责任,因为你只要把工头交代的事情做好就行了,并不需要为背后的客户负责。也不存在什么真正的专业门槛,因为你能做的事情很多人都可以做。这种情况下,你的收入不会很高,因为工头只会付给你最基本的工资。

  2. 再往上一个层级就像是工头,你承包了一小块工程。比如说 10 万块钱负责铺一下广场的地板。于是你找来5个小工,你给他们每人发1000块钱一天让他们干活,你负责管理和监督。这种情况下就会比工地上的工人收入高很多,因为工头对整个地板工程的工期和质量负责。工头的收入也有了杠杆,因为那些工人在为他干活。工头身上也有了一定的专业门槛,他需要懂得如何招募和管理工人团队,如果计算工程的造价等。

  3. 再往上一个层级就好比是开发商。开发商需要懂得如何把好的地皮买来,然后雇佣一批工头把这块地皮转化成更高价值的万达广场。开发商可能还需要贷款或者融资来做成这个事情。一旦成功了,开发商将会获得几百上千万甚至更高的收益。但是相应的,开发商也会承担更多的责任和风险。因为开发商承担了更多的责任,更高的杠杆和风险,因此也需要有更专业的技能。他们需要懂得融资,城建规划,房产销售等等更加复杂的领域。

  4. 再往上一个层级就好比是一个房地产基金的管理者,他拥有巨大的资金杠杆,可以跟许多开发商同时合作。。。

总而言之,这些类比也可以映射于我们这些程序员出身的人,努力掌握更多特定技能(绝不单纯是编程的能力),承担更大的责任,你才有能力撬动更大的杠杆,获得更多的回报。

这也是在那边工作了将近两年以后,自己决定回来尝试创业的原因。不想这么快就在舒适区里躺平养老,也不想每天就只能做工地里的搬运工。于是最终跟公司提出了几乎等于是裸辞的申请,回国来开始了自己的创业生涯。

离开前的最后一天拍照留念。
离开的那一天

本作品采用《CC 协议》,转载必须注明作者和本文链接
You can’t use an old map to explore a new world.
讨论数量: 1

:cow: :cow: :+1: :+1:

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!