老码农原创小说《码农故事》 44-45回

《码农故事》第四十四回

第二天,八个人的面试让莫楠和赵川足足忙了一整天。结果还不错,另一位全端工程师各方面情况都比较理想,另外还有三位后端工程师和两位前端工程师也让他们一致觉得比较满意。

那位全端工程师是最后一个来的,赵川面试完觉得他的情况很理想,当场就给出录用通知,希望他尽快到岗。

对方拿到录用信后表示,自己两周之内就能来上班。这令赵川非常高兴,于是把莫楠也叫过来,留他一起多聊了一会儿。

这位工程师叫郭杰,年龄和赵川差不多大,本科毕业于某名校,个子不高,长得白白胖胖的,脸上总是一副笑眯眯的样子。

郭杰刚刚从一家咨询公司辞职,离职手续正在办理中,他表示对创业公司非常感兴趣。

赵川随意聊着说:“我和莫楠以前也做过咨询项目,IT规划之类的。有的人特别喜欢做这种宏观的项目,我自己就不太喜欢。”

郭杰赞同道:“我也不喜欢。做得太虚了,指点客户这么做那么做的,实际上大部分都是空谈。有时候明明给了很好的方案,却眼睁睁地看着客户因为能力不行把东西做走样了,恨不得直接上手去帮他们干活,可是公司不让这么干,这超出项目的范围了。”

莫楠也感叹道:“没错!这就是传说中的武林秘籍:隔靴搔痒,隔山打牛。”

郭杰哈哈笑着说:“这话说的太有才了。另外做咨询最大的问题是天天到处出差,没法顾家。”

听到这一句,赵川不由得想起他当年和孟荷分手的往事,心里有点不是滋味。

莫楠好奇地问道:“你有孩子了么?”

郭杰摇摇头:“还没有呢。根本没有条件要孩子啊。我老婆也是做咨询的,财务顾问。我们俩一年在一起待的时间大概不超过一个月。经常是我回来的时候她正好要出去,或者她回来的时候我又要走。我们俩老约在机场见面,机场里的餐馆我们都吃遍了。”

莫楠听完觉得简直有点匪夷所思,他叹口气说:“两口子都做咨询,这日子简直没法过了!”

郭杰笑着说:“可不是嘛。我老婆打算过一段时间也不干了,做乙方做累了,打算找个财务经理的工作,稳定下来。”

赵川马上提议道:“有兴趣来我们这里做财务经理么?如果投资能进来,还真需要专职财务人员了。财务顾问经验丰富,一般的财务人员还真比不了。”

郭杰想了想说:“谢谢了,这么好的机会。我回去问问她,但估计不一定行。”

莫楠对赵川说:“我看这事老大你就别惦记了。咱们这么小一个公司还招个财务顾问过来?每个月就那么点费用的帐,简直是高射炮打蚊子嘛。”

郭杰赶紧解释:“我可不是这个意思。有投资进来以后那些资金的运作,期权的设计,风险的管理都是很专业的,我说不太行是因为我老婆一直不愿意两口子都在一个单位。我听了赵总的介绍,觉得咱们公司会发展得很快,财务管理还是很关键的,会需要很专业的财务人员。”

赵川微笑着说:“你叫我老赵就行,咱们这儿没人叫什么总什么总,听着像到了官僚机构似的。”

莫楠低声地对郭杰说:“总在我们这儿是骂人的话。不信我给你展示一下。”说完他扭过头对着段倩的座位喊道:“段总,时间不早了,差不多得订餐了吧?”

段倩正在帮莫楠做后端的一个服务接口,听到莫楠这句,她头也不抬地说道:“你才是总呢,你全家都是总。”

莫楠哈哈大笑:“看见了吧?以后千万别乱叫了。”

郭杰也嘿嘿笑着说:“在项目里叫习惯了,客户那边是个人都是总。你们这儿的气氛真好,又轻松又有效率,我都有点等不及想来上班了。”

赵川问道:“你那边的离职手续已经在办理了对吧?那你可以先过来上班。我们小公司规矩少,不需要等拿到离职确认,可以先以兼职方式工作,工资照发。等离职手续办完了再办理正式入职也没关系。”

郭杰点点头说:“好的,我下周上半周还得去公司办一些交接。争取周三周四就过来。”

赵川满意地说:“太好了。我们正缺工程师,你来了能帮上莫楠很大的忙。”

莫楠马上也热情地说:“老郭,我等着你。欢迎加入咱们丐帮。”

郭杰哈哈笑着直点头。几个人又聊了一会,郭杰就拿着录用信先走了。

郭杰走了以后,赵川和莫楠又拿着当天面试的简历研究了一番,确定了另外5名工程师,加上头一天面试的那位后端工程师,两天就确定了7名人选,进展还真的挺顺利的。

赵川高兴地说:“老大哥的主意真的挺管用。你这边的开发计划可以稍微宽松点了,比预定计划多出2周时间。”

莫楠琢磨了一会说:“不对啊老大。这些人回去辞职一般都还要一个月才能办完离职手续,来上班最快也是一个月以后的事了。来了还得算培训时间。开发计划不但不能宽松,反而还得多挤出两周时间才行。”

赵川一拍脑袋:“啊,这时间还真是没算对。忘了离职手续的事儿了。待会儿你让裴曼给他们都发个通知,如果能比一个月时间更早到岗,提早的那些天都发三倍工资。也许这招能管点用。开发计划看来还得照着一个月之后来做,保守点好,如果早来的人多那就算是意外之喜吧。”

莫楠叹口气:“也只能这样了。我看关键还是高爽那边能出现什么奇迹。这一个月里我是玩不出什么花样了,最好的结果也就是延误没有超出这一个月的基线而已。”

赵川猛然想到,高爽把资料拿去已经一天时间了,有没有什么进展呢?他拍拍莫楠的肩膀,站起身去找段倩。

段倩还在调她的后端程序,完全顾不上理会赵川。赵川也不好打扰她,就轻轻地走到段倩背后,找了把椅子坐下来等着。

看得出来,段倩还不太适应后端的开发方式。前端的效果都是比较直观的,后端就抽象多了,调试代码的技巧也有不小的差别。

过了一会儿,赵川看到段倩的屏幕上一下子冒出几大段的异常,段倩马上凑到屏幕前查看这些异常信息,试图判断问题出现在什么地方。

赵川也从段倩的背后凑过去看着屏幕,扫了几眼看到异常来自一个外部SOAP服务接口的调用格式错误,就指着那条错误信息给段倩看:“这个地方错了,调用外部的接口,参数格式不匹配。这是个天气预报的接口吧?”

段倩转到那段出错的代码看了看,疑惑地说:“没错啊?这个接口的文档说明里就是这些参数嘛。”

赵川又凑近了点看了看文档,确实和段倩的调用代码是一致的。那怎么会报错呢?

他在浏览器里打开wsdl描述仔细看了看,居然和文档里的定义不一致!他再仔细地对比了一下,文档和wsdl上标注的版本号是不同的。

他明白是怎么回事了。看来段倩找到的是老版本的文档,然后根据过时的参数定义写的代码,所以才出错了。原来如此!

他指着wsdl里不一致的那段参数定义,扭头想给段倩解释这个问题,突然发现自己刚才光顾着看屏幕,不知不觉中和段倩凑得已经很近,能闻到段倩头发的香气,感觉段倩的坐姿有点僵硬,看到她脸上却是开心的样子,带着一点若隐若现的笑容。他感觉自己已经陶醉其中,似乎这段代码到底是怎么回事已经无所谓了。

段倩让赵川看得有点不自然,她嘟起嘴轻声地说:“什么原因啊?你说啊。”

赵川猛然醒过神来,他干咳了几声说:“哦,对对,那个啊,是这样,你看的文档是老版本的,和wsdl定义不一致。下次调用外部接口记得要以wsdl的定义为准。”

段倩咬着嘴唇忍着笑,仔细看了看wsdl的定义,恍然大悟地说:“哦,真的呢,我知道是怎么回事了。”

赵川趁着这个机会又问:“对了,高爽那边有什么进展吗?我看最好还是我过去找他讨论一下。他这部分非常关键,如果能调整出时间来,我们开发计划的可行性就大有希望了。”

段倩边往代码里粘贴wsdl里的参数定义,边回答说:“忘了告诉你,他中午给我发了条短信,说有可能在开发计划里调整出一些时间,不过对整个开发框架要做很大的调整,底层架构都需要修改,会用到一些新的技术。但是他现在还不能十分确定可行。”

赵川疑惑地问:“不确定是否可行是什么意思?那我们到底用不用他的方案呢?我觉得高爽不是那种夸夸其谈的人啊,应该给个靠谱的方案才对。”

段倩答道:“是啊,他的意思就是他要先搭个模拟环境测试一下,然后才能告诉我们结论。”

赵川明白了。他想,自己对高爽的估计是正确的,一旦他答应了帮忙,肯定会把事情做好。既然如此那还有什么不放心的,就耐心等待高爽给出的结果好了。

赵川想到这儿,就叮嘱段倩说:“那你有空去看看他,提醒他注意身体,不要太赶进度了。我们正好这一个月忙招聘和培训的事儿,他可以慢慢来。写代码的事情可以交给我们来做,他给出设计就行了。”

段倩边改着代码边嗯了一声。她慢慢地体会到了做后端的乐趣,虽然是抽象了一点,但是能做的事情却是浩如烟海,这多好玩啊。<待续>

 

《码农故事》第四十五回

过完了周末,段倩还是没有报告高爽工作进度的最新消息。赵川越想越觉得有点不放心。现在整个开发进度的希望都寄托在高爽身上了,自己不闻不问的光是等结果,总归有点不踏实,再加上听段倩说他要对底层架构做伤筋动骨的改造,他就更觉得风险不小。

他还想到另外一个问题。虽然高爽同意来公司做顾问了,可是和他的联系都要通过段倩进行,这也非常不妥。并不是说自己信不过段倩,而是这样不符合常规。他觉得自己应该和高爽建立直接的联系,但是也不能给他太大压力,过两天再看看吧。

他又等了两天,高爽那边似乎还是没有什么进展。他决定尽快亲自去看看。

这两天也有好消息,面试进展得比较顺利,他和莫楠又敲定了两名运维工程师和两名后端工程师,面试工作基本可以告一段落了。另外,裴曼的通知发出去以后,有四位候选人可以在两周内到位,加上郭杰就是五个人,让他感觉压力稍微减轻了一点。

段倩对于后端代码的维护工作也慢慢上手了,居然挑出了莫楠以前写的代码中一个线程不安全的漏洞,在某个极少会出现的边界上会导致系统崩溃。

莫楠开始还百般抵赖,段倩就把赵川叫过去,当着他的面把自己写的单元测试跑了一遍,重现了bug,把莫楠弄得灰头土脸的。

赵川看了测试结果很高兴:“段倩你真行。这个隐患虽然出现的概率比较低,但是一旦碰上了咱们就死了,幸好你发现得早。”

莫楠挠着头:“这个条件也太奇怪了,我觉得正常人都不会考虑到吧。段倩你怎么发现的?”

赵川思索着说:“前端思维运用到后端,还真能出现奇效。这个思路我也想不出来,很偏门。”

段倩得意地说:“我当时做的查询功能用到了这个服务,有条测试数据出来的结果不对,就到你的代码里看了半天,结果偶然发现了这个bug。怎么样?你说,你服不服?”

莫楠叹了口气:“哎,什么叫乱拳打死老师傅,我今天懂了。。。”

看着莫楠憋屈的样子,赵川和凑过来看热闹的裴曼都忍不住笑了。

等赵川忙完手头的事情,又快到了下班时间。他没和段倩打招呼,就直接出门去找高爽。

到了高爽家,天色已经快要暗下来了,院子里静悄悄的。他走到高爽的屋子门口,里面亮着灯,很安静。

赵川轻轻地敲了敲门,一会儿门开了,站在门口的正是高爽。

他赶紧和高爽打招呼:“老高,我今天正好有空,过来看看你。”

高爽看到他先是愣了一下,然后笑着说:“赵兄啊,进来吧。我还以为是宋琳回来了呢。”

赵川跟着高爽进屋一看,整个房间也就不到20平米,显得很简陋,除了一张双人床和一个旧沙发,还有角落里的一台旧冰箱,屋里还有一个写字台。

写字台上放着一台笔记本电脑,旁边凌乱地摆着一些打印纸,写字台旁边的地上还有一台很旧的台式机。赵川走过去一看,这些打印纸正是陈呆子做的PPT,看上去高爽正在研究这些PPT里的内容。

高爽走过来拿起其中的两张纸,招呼赵川到沙发上坐下。他把其中一张纸递给赵川说:“赵兄你来得正好。模拟环境下面分布式数据库的构建这几天我已经做好了,还自己做了个cache层,速度很快。就是剩下一个问题,对这张数据表关系图我有点不太明白的,想请教一下。”

赵川接过那张纸说:“老高你太客气了,请教两个字我可当不起,你有什么疑问就直接说吧。”

高爽指着其中一张表说:“这里面有一张数据表的内容似乎都是一些索引,有关联到用户的id,其他索引的又关联到很多其他的数据表,而且这些数据表似乎也是动态生成的。这些表的用途是什么呢?”

赵川看了一眼就解释说:“这些表是用户自定义的健康数据,所以是动态生成的,每个用户生成的表结构都不一样,所以需要一张大索引表把用户和他们自定义的表格关联起来。”

高爽看着数据关系图哦了一声:“我明白了。这里面除了用户表和这张大的索引表,其他的数据结构都是动态产生的,通过这种方式来实现用户自定义数据表的功能。但是这就意味着你们的系统要在运行时进行创建数据表、修改表结构、创建索引之类的操作,考虑到并发的情况,还需要加锁避免冲突。”

赵川连连点头:“没错!你说的完全正确。另外涉及到写数据的交易逻辑也很复杂。我们也知道这样做不好,其实后端管理这些动态数据表的代码很乱,我们一直苦于无法把它做得更有条理,但是也想不出其他的办法。现在最麻烦的就是把它做成分布式数据,工作量非常大。”

高爽一边听着他说话,一边又拿起另外一张纸看着,偶尔用笔在纸上画着标记。赵川说完后,看他在思考问题,就安静地坐在旁边等着。

过了一会,高爽似乎考虑清楚了,站起身来向写字台走去。走到一半他才注意到赵川还坐在沙发上,于是回头对赵川说:“赵兄,你先坐一会,冰箱里有饮料你自己拿。我先改一下我的程序。”

赵川答应着:“没事,你忙你的,不用管我。”

高爽坐在他的写字台前,打开笔记本开始修改代码。屋里又恢复了安静的状态,只能听见他敲击键盘的声音。

赵川站起身,去冰箱里拿了一听可乐,站在高爽背后,边喝着边看高爽调试代码。他发现高爽写代码的特点是一段一段的写,中间会停下来思考一会。一旦他想清楚了,输入代码就会很连贯,速度很快,中间基本不停顿,直到把这一段代码输入完为止。

赵川不由得心里暗暗佩服。一个方法的编写居然可以做到一气呵成,可见高爽可以在开始写代码之前把整个方法的逻辑、细节、边界条件都能考虑得非常清晰。而他和莫楠都是习惯于先写主干部分,然后再逐步完善内部逻辑。相比之下,真是高下立判啊。

赵川的可乐还没喝完,高爽已经完成了代码的修改。他打开终端窗口,很快地输入了几个命令,然后打开浏览器输入一个地址,开始给赵川演示他做的功能。

赵川看了一会就彻底懵了。高爽给他做的演示已经基本涵盖了他们负担最重的那两个月计划实现的核心功能,也就是从单数据库服务器扩展为分布式服务器的动态数据管理,以及相应的合并查询统计等辅助特性。他心想,这不可能啊?从技术角度来说,修改数据库表结构这些操作是不可能这么快完成的。

他呆在原地,简直不敢相信自己的眼睛。虽然这个演示并不是直接能用的功能,但是从技术实现角度它已经解决了最关键最复杂的问题。高爽做到这一步也就花了四五天时间。剩下的大量细节问题也会需要不少时间,但是两个月的计划时间显然已经够用了。

赵川突然想到,也许高爽实现的并不是分布式环境下的功能,如果是这样,通过重用一部分现有代码倒也不难做到。可这样的用处就不大了,毕竟在Tony的投资进来以后,希望很快看到用户数爆炸性的增长,因此数据从集中走向分布是必需的。

他小心地问道:“老高,你是如何模拟分布式数据存储环境的呢?”

高爽打开一个远程桌面,对赵川解释道:“你看,这个窗口是我桌子下面的台式机,我开了三个数据库服务器,每个服务器对应一批用户,特定用户的数据会根据某些规则优先保存到对应的服务器里,另外还有一个服务器是用来和其他服务器同步的。”

赵川盯着屏幕仔细地看了一会,的确,不同用户的读写操作会导向不同的服务器。但是这个数据库管理窗口他从来没有见过,他问:“这是什么数据库?我好像没见过。”

高爽回答说:“哦,这是MDB,一个树形结构数据库,我用它的原因就是它的非结构化特性,这样每个用户的数据可以保存到一个文档记录里,层次还可以嵌套,这样动态数据的管理就不需要去创建和修改表结构了。而且原子级操作可以同时修改多个分枝上的数据节点,所以也不需要做交易管理。”

赵川恍然大悟:难怪数据库访问的速度这么快。他又问道:“那整个群组的统计分析怎么实现呢?”

高爽在浏览器点击了几下,再打开数据库窗口,指着主服务器的窗口说:“分布式的统计可以用MapReduce的方法来并行,每个服务器统计自己这里的数据,然后同时汇总到主服务器合并,这样速度很快。你看,结果已经出来了。”

赵川彻底打心眼里服了。他对高爽说:“听段倩说,你计划对底层架构做很大的调整,我有点担心整个系统返工的工作量太大。”

高爽摇摇头:“我只是建议在用户自定义数据表这部分进行修改。其他部分我看你们都已经做成独立的接口了,完全没有必要去动。比如用户基本信息,相对比较固定,移植到新数据库里暂时还没有这个必要吧。”

赵川赞同地说:“没错。那就是说,把动态数据部分替换成你实现的这套架构,其他的都不需要修改,对吧?”

高爽笑了:“那些可以以后慢慢改。我看你们的计划里还有很多任务要做,我只是针对工作量最集中的那部分做了一些优化。希望对你们有帮助。我这些代码一会会发到小倩的邮箱,你们可以在这个基础上扩展。另外MDB的文档需要仔细研究一下。”

赵川又问道:“非结构化数据库我们以前没接触过,现学要花的时间多吗?”

高爽凑到电脑前打开了一个文档,然后指着电脑对赵川说:“嗯,学习曲线的问题我在一开始选择数据库的时候也比较了几个平台,MDB在这方面还不错。它的接口语言是javascript,学起来挺快的。我也是上个周末花了一整天时间现学的,关键是要理解它的树形结构。”

赵川心里踏实了点,他心想,高爽花一天时间,我们花一周怎么也够了。他说:“非常感谢,我马上回去好好研究一下。哦对了,代码和文档可以直接发给我,省得段倩来回转。这次你又帮了我们大忙了。”

高爽正要客气,就听见房门被推开的声音。两个男人扭头一看,原来是宋琳回来了。

宋琳看见赵川也有点惊讶,赵川赶紧打招呼:“嫂子好。我今天过来看看老高,打扰了。”

宋琳热情地说:“您坐啊,既然来了,就在我们家吃个饭吧?我这就做饭去。”

赵川客气道:“不用了不用了,我还有事,一会就走了。改天,等忙完这一段我请你们吃饭。”

宋琳也是个不善于客套的人,一看赵川真的不打算留下来吃饭,也就不再坚持,和赵川寒暄了几句,自己去厨房做饭了。

高爽微笑着看着宋琳的背影,然后想起赵川刚说的话,答复说:“那好,我马上把代码发给你。明天我也可以去公司一趟,和你们讨论一下这部分的设计。”

赵川有点感动。高爽做事果然是相当敬业。他想,能不麻烦他就还是尽量不麻烦他吧,好钢要用在刀刃上,不到万不得已的时候尽量自己想办法解决问题。

他对高爽说:“先不用。我们先照猫画虎试试,遇到问题我再请教你。时候不早了,你也别太劳累,要多注意休息。”

高爽点点头:“我会注意的。谢谢你来看我。”

赵川觉得跑这一趟真是不虚此行,现在心里对这套架构的可行性已经有了底。他现在急着想赶紧回到公司和莫楠一起分析一遍代码,好基于新的架构对开发计划进行调整。

想到这儿,他和高爽又简单聊了几句,就以最快的速度回到了公司。<待续>

打赏支持我写出更多好文章,谢谢!

打赏作者

打赏支持我写出更多好文章,谢谢!

任选一种支付方式

1 收藏 6 评论

关于作者:老码农

搞得定代码,罩得住娃;治得好跟腱,踢得了球。Hi,我是老码农,蜀黍有练过,小盆友们不要随便模仿喔。(新浪微博:@老码农的自留地) 个人主页 · 我的文章 · 122 ·    

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部