GOD从小就害怕看到父母失落的眼神,从山路十八弯的家乡走向繁华的厦大,这一砖一瓦都是父母用血汗堆砌起来的,从祖上几辈子下来,面朝黄土背朝天,做了一生的农民,到了GOD这代,好不容易出了个像样的大学生,GOD被寄托于无限的希望和期待。
GOD父母对他的期待永远是中国人传统公家体制的那套,毕业后考个公务员或者事业单位,占个坑,旱涝保收,一生无忧。
GOD了解自己,执拗、直男的性格真的不适合公家体制,捧不动这个铁饭碗,一开始GOD就是这么给自己贴标签的。
GOD每次对于家里都是报喜不报忧,甚至开始撒谎:找了一份工作了,同事相处得不错,薪资也不错,工作顺利,工作时间不算长,晚上有时间在备考公务员……
谎言的背后,需要GOD自己去默默承受着一切。GOD不想让家人失望,也需要对自己的人生有规划,有自己的想法,既然自己无法走上体制“权”的道路,那就努力赚钱,赚得足足的、够够的,用“有钱”来弥补“没权”的人生!哪一天,自己身家有了,父母或许就慢慢改变了传统的那套思想。所谓的“旱涝保收,一生无忧”,图的不就是金钱和收入吗?换句话说,人只要有钱,烦恼就会减掉90%以上,这是鲁迅先生说的。
GOD要创业,GOD要卖仿牌,GOD不想打工,但这一次,GOD创业失败了。
GOD不得不重新规划自己的职业生涯。
自从厦大毕业后,因为没有了同学和朋友的资源介绍,我能接到的网站建设外单几乎没有了,靠的都是一些已经在服务的老客户,平时帮他们做点额外的开发,赚个饭钱。虽然我还有存款,但我明白“坐吃山空”的道理,无业游民、无所事事也不是我自己能忍受的,所以,第一次创业失败后,我不得不找一份工作来养活自己。
有软件工程专业的科班背景,我投简历、笔试加面试,前后不超过5天就找到了一份厦门雅迅网络公司的“嵌入式Linux开发工程师”工作,这是我的第一份工作。当时面试我的是许宁组长(现在应该是技术部门的老大了),在诸多的求职者中,他对我很是满意,因为在厦大的时候,我其实是有单片机、嵌入式和ARM的项目经验,不仅熟悉底层驱动开发,也对顶层应用熟悉,比如,那会使用最多的是MFC(微软基础类库),玩得非常溜;而且,通过笔试,我C/C++语言扎实基础的功底一看便知,所以,毫无悬念,许宁给我开出的工资不低,试用4000元/月,转正4800元/月,这个薪资水平在当时厦门的一年毕业生中算是很高的,属于中级软件工程师的薪资标准。
这里大致介绍一下厦门雅迅这家公司,这是一家很不错的物联网公司,国企背景,背后的老大是中国电子四十三所。我在雅迅的时候,公司主要是从事车载相关的产品,比如:出租车计价器、车载信息娱乐交互、GPS定位与导航、行车记录仪等,贯穿出租车、私家车、物流货车等,做得很大,员工一千多个,在全国各地的办事处遍布,几乎垄断了车载市场。
打开他们的官网看了一下,发现这10年他们发展得更好,几乎渗透了整个网联市场。浏览了一下产品,我那会负责开发的产品还挂在上面,
还有开发最多的车载终端设备,
现在看到这些产品,依然是那么的熟悉,有一种难以言状的感觉,那些年,为了这些产品,自己也曾付出了太多的心血和感情。
许宁当时把我分配到车载终端组,这个是雅迅的核心技术小组,车载终端是当时公司的核心拳头产品,在东北、京津冀、西北、江苏、浙江、山东等地都有大量的客户,很多客户都是当地的交通局或者出租公司,雅迅对车载终端产品始终高度重视。
进公司熟悉了两周的代码库,我基本上对项目了解了,开始着手编写代码。通过公司的OA系统,许宁一开始给我分配的是一些修复BUG或者小功能开发,按照他的话说:不急着做项目,先练练手。雅迅对于新入职的员工其实挺有耐心的,有两个月的适应期和试用期,换句话说,两个月后,你能上手就可以转正。管理层不会像有些私企老板为了节约成本死命地给员工施加压力,巴不得一个员工干两个人的活,越快越好,越多越善,这一点,也让我觉得雅迅真的是一个有温度的公司,离开了十几年了,对他的印象一直保持良好。
我上手得比较快,一个月后,许宁就帮我向技术中心的老大申请正式转正,开始领4800的工资。我这个人有个习惯,就是一旦做起事情来,就会负责到底,雷厉风行!不管是自己的事情还是公司的事情,责任与义务拎得很清,从来不会“身在曹营心在汉”;加上有点急性子,哪怕加班加点,我都要把自己该做的事情第一时间做好,保质保量,实际上,这个工作方式贯穿了我的整个人生,这也是为什么后期我自己开公司的时候,我的那些客户非常认同我的原因之一(当然,这是后话)。两个月后,随着我开发的熟练程度越来越高,许宁开始让我参与核心业务的开发,这也是我一直所期待的,这个时候,我开始和公司的一些核心部门人员以及客户进行联调开发,
下面是当初大量的需求沟通邮件之一,
因为做事认真负责,编码和开发效率高,解决问题及时,许宁开始放手让我负责车载终端的核心独立模块,这是一个非常具有挑战性的工作,既要解决核心技术问题,又要和客户、公司其他开发小组协调好。为什么说这个有挑战性?大家可以把车载终端理解为一台电脑的cpu,是最核心的大脑部位,所有的车载信息交互和业务逻辑都在这里实现,模块错综复杂,线程非常多,协同起来非常头疼,这不仅仅涉及到不同进程间通讯,更涉及到同一进程间线程与线程之间的大量同步、异步协调。技术之外的工作也不好做,有些客户很急也很冲、加之我性子有时候也冲,沟通起来就不好协调;另外,很多程序员有个毛病,就是对自己的编码能力盲目自信,一出现BUG,不会先从自己身上找原因,以为是对方的模块出了问题,当时和我联合开发的是另外一个部门的程序员,每次对于BUG都非常排斥,弄得我每次都要把日志清清楚楚地打出来,放到他面前,他才接受自己的代码出了BUG的现实,非常耗时间。
经过大半年的沉淀,雅迅的那套技术我已经轻车熟路了,几乎可以解决技术上的99%问题。这期间,也继续维护以前我的那些仿牌建站客户,因为服务良好,给这些早期的客户留下了良好的口碑印象,他们偶尔也会介绍一些朋友或者亲戚过来找我帮忙搭站,赚取工作外的一些外快,因此,从本质上讲,自从厦大毕业后,我从来就没有离开过仿牌独立站这个行业。
雅迅的开发和协同工作很锻炼人,我解决问题的综合能力有上了一个很大的台阶,我自己都能感觉得到,这不仅仅是技术上的突破,也包括和客户的协同沟通技巧等,许宁组长的信任以及雅迅网络提供的平台,让我成长了很多,我打从心底感激自己的这一份工作。
2011年,我几乎有一整年的时间在全国各地飞,出差到客户现场处理各种各种的技术问题,山东、河北、江苏、北京、东北、四川、青海、西安等,雅迅业务有触及的地方,很多都有我的影子。
因为单身,我享受着一边工作一边旅行的感觉,一度爱上了这种充实和忙碌的生活,一直在旅途中。
翻开QQ空间,很多足迹都留在在腾讯的服务器上,
雅迅打工的日子,其实是快乐并痛着。
秋天的时候,我北上济南,去处理山东航天九通的车载GPS偶然性离线问题。
在厦门的时候,我与九通的技术人员进行大量的沟通无果后,始终无法定位问题方向,我决定来一个全过程模拟:我拿着一台车载终端设备,通过串口数据线连接到笔记本电脑,上了一辆从厦门到济南的大巴,通过在关键代码处打印日志的方式,全过程监控设备在不同的时候的状态。有做过嵌入式开发的朋友们应该对如下的串口调试工具不陌生,
红色方框的十六进制编码就是设备的状态,我需要从不断打出的这些状态编码中揪出某个异常编码,然后通过代码打印出诊断日志。我白天坐着,晚上卧着,累的时候睡会,两天两夜,从厦门一路跟车到九通,却始终没有发现异常。对于BUG,程序员最怕的是“偶然性”这三个字,偶然意味着随机,不是必然事件,也就是说问题无法模拟重现,给排查带来极大的困难。从厦门到山东九通,我遭受了车载终端偶然性掉线问题,心态开始有点蹦!
我不甘心,继续来!!!
这一次我打算从济南坐大巴跟车到福州,大巴傍晚出发,在凌晨1点多的时候我的日志检测到了串口数据异常,4点多的时候看到, 我如获至宝,整个人清醒了一大把再无睡意,我大致定位到可能出现问题的代码段,我反复核实代码的逻辑,但始终无法找出不合理之处,看着框架底层的东西,我无法质疑他的权威性。我只能祈祷串口再次检测到异常数据,但却让我失望了,直到福州北站下车的时候 ,我依然没有检测到异常!
许宁给我打电话,让我不要压力这么大,不然就先回来,因为这个问题之前好几波同事都没有解决,属于公司的历史性遗留问题,虽然九通那边一直在反馈,但似乎从来就没有被解决过。我不甘心,我跟许宁说:领导,我试一趟,实在不行再回来。许宁拗不过我,只能任由我去处理。
因为我不甘心,继续来!!!
这一次,我从福州跟车到九通,结果依然是一无所谓……
前后折腾了一周,我的心态依然还没有崩!我不甘心,继续来!!!
有之前自己的代码监控,这一次,我开始质疑公司的底层框架代码,一般来说,一个公司的底层框架代码都是早期沉淀下来的,属于非常成熟稳定的东西,很少人会质疑他的严密性,这道理好比你使用windows操作系统,你无法质疑他的权威性一般。我对底层框架代码产生了质疑,于是,在底层加了监控日志,再次从济南跟车回福州,车子刚驶出山东地界不久,异常再次被检测到,这一次,真的捕捉到了:车辆从山东地界驶入江苏, 信号基站发生了切换导致GSM模块短暂性离线,程序没有做异常处理,从而引发了后续一系列的通讯协议校准核验问题。找到了问题点,解决问题就是几行代码的事儿了。
解决了公司历史遗留问题,回到厦门,雅迅一次性奖励了我5000元,还专门为我开了一个总结会,我在会上分享了自己的解决问题过程与方法,并呼吁大家要敢于质疑,不要向权威妥协,有时候,权威也不一定权威,也有错的地方,这是我们研发人该有的质疑精神。
许宁开始帮我向部门老大提职,提升我为小组车载组副组长,不过,我似乎没有太期待,我喜欢技术,也喜欢旅行,我的人生应该有一段一直在旅途中的经历。
秋末冬初,我继续北上哈尔滨,
对方客户是哈尔滨市交通运输局,当时,主导和负责哈市这个项目的是刘达(哈尔滨市交通运输局信息中心技术总监),为人谦卑有礼,完全没有一点官架子,还有一个是姓张的,应该是副局长级别,张副局长身高一米八多,典型的东北大汉,高大肥胖,脾气有点暴,虎虎生威,让人看了不寒而栗。
雅迅在哈尔滨的车载产品是运用在出租车和哈市公交车上。12月的哈尔滨开始下雪了,对于来自南方的我来说有点不太适应,加之东北的菜肴不是辣就是烈,街道上到处挂满了酒旗,
俨然东北人的酷寒生活方式。
在暖气里适应了两天我就开始上阵了,考虑到公交车白天人多的缘故,我和负责的加班司机白天睡觉,晚上在寒冬腊月的哈尔滨街道上测试每一个车载功能点,比如:GPS定位、自动报站、里程表等,从道外测到道里,再回公交车场,冷得连抱笔记本的手都颤抖不已。交通局的官爷们晚上都回去睡觉了,只有刘达还有雅迅哈尔滨市的办事处人员刘冰,一大早就会过来给我们带早餐,并不断地安慰我和司机。公交车项目测得很顺利,连续加班几天下来就走完了流程,交通局那边请了一些专家,开了个评审会,到场的自然还有甲、乙方,一个上午就验收了。
接下来是出租车项目,总体来说,车载在哈市出租车的部署也算顺利,但在计价器的环节却出现了问题。当时,哈市的出租车只用到雅迅的车载核心终端,其他的外设,比如计价器、广告LED屏、服务评价器、驾驶员认证系统、报警模块等都不是雅迅的,都是南京的一些厂家。多个厂家根据雅迅提供的接口协议,对号入座测试都正常,但计价器模块一直有问题:一直无法精准计价,而且还会产生偶尔中断的事件,似乎计价器模块是否能正常取决于计价器的心情。
很快,计价器厂方给出的串口数据证明他的传输内容是没有问题的,外设没有问题,自然就是车载终端的问题了。因为车载是核心,需要综合处理外设传送过来的各种数据,并根据业务逻辑进行处理,是很复杂的。这个问题非常难排查,我花了两天两夜加点加班都没有解决……项目等待验收,各个外设厂家都滞留在哈尔滨,还有交通局的人都在等着我解决掉最后的一个问题就完事了,刘冰半天就会问我一句:“怎么样了?”,多重压力之下,心态有点兜不住。到了第三天,交通局的人开始急了,张副局长来到现场,眼见验收无望就开始对我咆哮了:你到底行不行?能不能解决?你要是不行就赶紧回去让雅迅换个行的人来解决问题……说了一大串非常难听的话,搞得我心态非常崩,几乎要放弃和缴械投降了。
刘冰把情况反馈回雅迅总部,厦门那边又派了个经验丰富的老技术人员过来支援我,我们两个开始理清思路,一步一步共同调试,通过大量的串口数据和日志记录,花了一天一夜才把问题定位到:原来是计价的时候,车载终端的录音进程打断造成的!非常细的一个点,加了一句 if 判断语句就解决了。
2011年,这一年,我一直在旅途中。
离开东北,我坐上和谐号,带着120T导航屏走向北京。
火车一路呼啸北去,一马平川,很快就过了北戴河。河北之境,在河间与河内的平原上,刺桐花谢了,雨槐木也要凋零了,关外的秋天已经过去很久了,冬天也快过到了头。清晨醒来的时候,和谐号进入了山海关,窗外下了场细雨,但北方的空气还是不够潮,夹杂着重机械的气息。轻轻拉开窗帘,远远地看到冬天的飞鸟在歌唱。
在北京,和奇华、智源的工程师联调产品,在北京现代车场,为北京金建、银建出租车公司部署导航屏。
因为120T只是一个外接设备,而且,整个导航屏的代码是我架设的,非常熟悉,所以,在北京几乎就是畅通无阻,很顺利就部署上去了。今天,大家如果有在北京乘坐金、银建的部分出租车,兴许还能看到导航屏120T,那是我做的,据说,这个屏在当时还是算比较先进很前沿的,上次听雅迅的前同事说,这个屏还没有被市场淘汰。
2011年,我一直在旅途中,山东、河北、江苏、北京、东北、四川、青海、西安等,雅迅业务有触及的地方,很多都有我的影子。
年轻无极限,无限动力,无限可能。时过十多年,我已步入中年,早已没有当初的激情和动力,但回首往事,回首那段激情燃烧的岁月,不免感慨时光蹉跎,光阴流逝,写下了这段一生难忘的打工经历。
后续
2012年春节后的上班第一周,我向许宁提交了辞职信,我在众人一片惊愕和惋惜中,离开了厦门雅迅网络……
(后续有空再更)