01.精彩节选
周中午,学校南门外的咖啡厅。
这家店开在巷子深处,门面不大,装修也简单,但胜在安静。老板是个三十多岁的文艺青年,墙上挂着他自己拍的照片,角落里摆着一把落了灰的木吉他。
林讯到的时候,李浩然已经在了。
他坐在靠墙的位置,面前摆着一杯美式,正低头看手机。听到脚步声,抬起头来,脸上的表情有点复杂。
“讯哥,你确定苏晚宁会来?”李浩然压低声音问。
“我跟她说了两点。”
“她会不会放鸽子?”
“不会。”
李浩然不太信,但没再说什么。
他端起咖啡喝了一口,眉头皱成一团:“这玩意儿真苦,为什么要喝这个?”
“因为你是成年人了,”林讯说,“成年人喝咖啡不加糖。”
“那我宁愿当小孩。”
两个人等了几分钟,咖啡厅的门被推开了。
苏晚宁走了进来。
她今天穿了一件白色的短袖,外面套了一件浅灰色的薄外套,下面是深蓝色的牛仔裤和白色帆布鞋。头发扎成了低马尾,脸上没有化妆,但皮肤好得发光。
她扫了一眼店里,看到林讯,走了过来。
“不好意思,来晚了,”她在林讯旁边坐下,“宿舍有点事耽搁了。”
“没事,我们也刚到,”林讯说,“这是李浩然,我室友。”
苏晚宁看了李浩然一眼,点了点头:“你好。”
李浩然愣了一下,然后猛地站起来,伸出手:“你……你好你好,我叫李浩然,计算机科学与技术专业大二,老家山东,单身。”
苏晚宁被他这阵仗弄得有点懵,但还是礼貌地握了一下手:“苏晚宁。”
“我知道我知道,”李浩然坐下,表情激动,“计算机系的系花嘛,全校都知道。”
苏晚宁看了林讯一眼,眼神里带着一点无奈。
林讯咳了一声:“老李,别贫了,说正事。”
他从背包里拿出一沓打印好的材料,分给苏晚宁和李浩然各一份。
“这是讯聊的产品文档和技术方案,昨天又改了一版。你们先看看,然后我们讨论分工。”
苏晚宁接过材料,低头看了起来。
李浩然也拿起来看,但翻了没两页就开始皱眉。
“讯哥,这里面好多字我都不认识。”
“哪些?”
“这个,‘高并发’是什么意思?”
“就是很多人同时用的时候,系统不崩。”
“那这个‘负载均衡’呢?”
“就是把流量分摊到多个服务器上,不让某一台服务器累死。”
李浩然似懂非懂地点了点头,继续往下看。
苏晚宁看得很认真,一页一页地翻,偶尔拿笔在纸上做标记。
大概过了二十分钟,她把材料看完,抬起头来。
“整体框架没问题,”她说,“但我有几个问题。”
“说。”
“第一,你说的这个‘匿名树洞’,用户的真实身份怎么验证?”
“用学号加教务系统密码验证,”林讯说,“只验证一次,验证通过后生成一个匿名ID,后续所有作都用匿名ID完成。”
“那后台能不能查到匿名ID对应的真实身份?”
“理论上可以,但我们设计的时候不做这个关联。验证完成后就删除映射关系,只保留匿名ID。”
苏晚宁想了想,点点头:“这样设计可以,用户会更放心。”
“第二点呢?”
“第二,数据库设计我看了,用户表、消息表、群组表这些都没问题,但消息表的索引设计得不够好。如果消息量大了,查询效率会很低。”
林讯愣了一下。
他上辈子做过后端开发,知道索引的重要性,但这一次确实疏忽了。
“你觉得应该怎么改?”
苏晚宁拿过一张纸,在上面画了一个表格,把消息表的结构重新梳理了一遍,然后在几个关键字段下面画了横线。
“这里、这里、还有这里,这三个字段要建联合索引。消息ID是主键,单独建索引就行。”
林讯看着那张纸,沉默了两秒。
“你什么时候学的数据库?”
“这周看的,”苏晚宁说,“你的产品文档里提到了数据库设计,我就去图书馆借了一本书,《MySQL必知必会》,三天看完了。”
林讯张了张嘴,没说出话来。
三天,一本书。
这个学习速度,放在他上辈子带过的那些实习生里,能排前三。
“好,按你说的改,”林讯说,“第三点呢?”
“第三点不是技术问题,”苏晚宁放下笔,看着林讯,“你打算什么时候开始写代码?”
这个问题,林讯这几天一直在想。
“下周吧,”他说,“这周先把基础打好,下周开始搭框架。”
“我来写iOS端的框架,”苏晚宁说,“Web端呢?”
两个人同时看向李浩然。
李浩然正在喝咖啡,被两个人盯着,差点呛到。
“我……我写Web端?”他指了指自己。
“对,”林讯说,“你负责Web端的管理后台。”
“可我只会HTML和CSS啊。”
“JavaScript呢?”
“会一点,但不多。”
“那就边学边写,”林讯说,“我教你。”
李浩然张了张嘴,想说什么,又咽了回去。
他低头看了看手里的材料,又看了看林讯和苏晚宁。
这两个人,一个是产品+后端,一个是iOS端。
他是Web端。
三个人,刚好凑齐了一条完整的产品线。
“行吧,”李浩然深吸一口气,“我试试。”
“不是试试,”林讯看着他的眼睛,“是一定要做到。”
李浩然被他这眼神看得有点发毛。
“讯哥,你今天怎么回事?跟换了个人似的。”
林讯没回答这个问题。
“好,分工明确了,”他翻开笔记本,在上面写了几行字,“苏晚宁负责iOS端,李浩然负责Web端,我负责后端和产品。下周开始正式写代码,这周大家各自准备。”
“等一下,”苏晚宁说,“我们用什么做版本控制?”
“Git,代码托管在GitHub上。”
“你会用Git吗?”
“会。”
“教我们。”
“好。”
苏晚宁点点头,在纸上记下了“学Git”三个字。
李浩然看着这两个人一来一回地讨论,突然有一种很奇怪的感觉。
他认识林讯两年了,从来没见他这么认真过。
以前的林讯,上课坐最后一排,作业靠抄,考试靠突击,什么事都是“差不多就行”。
但现在的林讯,像是换了一个人。
说话的方式不一样了,看问题的角度不一样了,连走路的气场都不一样了。
李浩然说不上来具体哪里变了,但他能感觉到,林讯是真的在认真做这件事。
三个人在咖啡厅坐了两个多小时。
苏晚宁把技术方案从头到尾过了一遍,提了十几个问题,大部分林讯都能当场回答,少数几个要回去查资料。
李浩然在旁边听着,虽然很多地方听不懂,但他把不懂的地方都记了下来,准备回去自己查。
下午四点多,苏晚宁看了看手表。
“我得走了,晚上还有个小组讨论。”
“我送你,”林讯说。
“不用,很近。”
“我知道很近,但我送你。”
苏晚宁看了他一眼,没有拒绝。
两个人站起来,往门口走。
李浩然坐在位置上,看着两个人的背影,嘴角抽了抽。
“喂,你们就这样把我一个人扔这儿了?”
“你把咖啡喝完再走,”林讯头也没回。
“这咖啡苦得要死!”
“那就加点糖。”
门关上了。
李浩然一个人坐在咖啡厅里,面前摆着一杯苦咖啡和一堆看不懂的材料。
他叹了口气,拿起手机,搜了一下“JavaScript教程”。
“讯哥这个狗东西,”他小声嘀咕,“把我拉下水,自己跑去谈恋爱了。”
但嘀咕归嘀咕,他还是打开了第一个视频,开始看。
咖啡厅外面,林讯和苏晚宁走在巷子里。
四月的阳光很好,照在两个人身上,暖洋洋的。
“李浩然这个人挺有意思的,”苏晚宁说。
“他就是话多,但人靠谱。”
“你跟他关系很好?”
“嗯,宿舍里就跟他最铁。”
苏晚宁点点头,没再说什么。
两个人走出巷子,到了路口。
“送到这儿就行了,”苏晚宁停下来,“前面就是女生宿舍区,你进不去。”
“好。”
“那下周见?”
“下周见。”
苏晚宁转身走了两步,又回过头来。
“林讯。”
“嗯?”
“今天下午我很开心,”她说,“不是因为学到了东西,是因为……你在。”
她说完这句话,转身走了,步子很快。
林讯站在原地,看着她的背影消失在路口。
阳光落在他的脸上,有点刺眼,但他不想闭眼。
他拿出手机,给苏晚宁发了一条消息:
“我也是。”
几秒钟后,苏晚宁回了一个表情:
林讯把手机放进口袋,转身往回走。
路过咖啡厅的时候,他透过窗户看了一眼。
李浩然还坐在里面,面前摊着笔记本电脑,屏幕上是一个JavaScript教程的视频。
他一边看一边皱眉,嘴里念念有词。
林讯笑了一下,推门进去。
“老李,走,回宿舍。”
“等一下,这个变量作用域我没搞懂。”
“回去我教你。”
“真的?”
“真的。”
李浩然合上电脑,端起咖啡一口闷了,苦得龇牙咧嘴。
“这玩意儿我以后再也不喝了。”
“你每次喝都这么说。”
“这次是真的。”
两个人出了咖啡厅,往学校走。
四月的风吹过来,带着花香和青草的味道。
李浩然走在林讯旁边,突然问了一句:“讯哥,你说咱们这个,能成吗?”
林讯想了想,说:“不知道。”
“那你还这么拼?”
“因为不拼一下,永远不知道能不能成。”
李浩然沉默了几秒,然后点了点头。
“行,那我陪你拼。”
两个人在夕阳下走着,影子被拉得很长。
远处是学校的钟楼,钟声正好敲响了五下。
新的一周,就要开始了。