第一章 毕业
2015年6月28日,星期日,晴。
陈志远站在学校礼堂门口,手里攥着一张皱巴巴的毕业证书,上面印着他的名字和”计算机科学与技术专业”几个烫金小字。证书是新的,边角还带着油墨的味道,但他觉得这张纸比想象中轻很多——四年光阴,就浓缩成这么一张纸。
礼堂里正在举行毕业典礼,校长在台上念着千篇一律的致辞,台下的学生都在低头看手机——苹果、小米、华为,屏幕的光映在一张张年轻的脸上。有人刷着朋友圈,有人在看直播,有人忙着拍照发微博,配上”毕业了,青春散场”之类的文案。
陈志远没进去。他不喜欢这种场合,觉得矫情。他靠在礼堂门口的石柱上,看着来来往往的人,心里盘算着一件事:去深圳的火车票,高铁二等座,多少钱来着?
“陈志远!”
一个女声从身后传来。他回头,看见林晓芸抱着一束不知道从哪儿弄来的花,正朝他走来。她穿着白色连衣裙,头发披散着,脸上带着那种让陈志远心跳加速的笑容。
“你怎么不去礼堂?”她问。
“太吵了。”陈志远说,”里面哭哭啼啼的,跟生离死别似的。”
“本来就是生离死别啊。”林晓芸把花塞到他怀里,”毕业了,大家各奔东西,可能这辈子都见不到了。”
陈志远低头看了看那束花,是路边的野菊,大概是她在学校花坛里摘的。他笑了笑:”你倒是想得开。”
“我想得开什么呀。”林晓芸白了他一眼,”我爸妈让我回老家考公务员,说女孩子在外面飘着不像话。”
“那你呢?”
“我?”林晓芸看着他,”我想去深圳。”
陈志远心里一热。他张了张嘴,想说点什么,但最后只挤出一句:”那……一起?”
林晓芸笑了,笑得很灿烂:”废话,不然我找你干嘛。”
这是他们第一次谈到未来。其实也不算谈,更像是两个二十二岁的年轻人,在人生路口随便指了一个方向,然后决定一起走过去。那时候他们还不知道,这个”随便”的方向,会把他们带到什么地方。
散伙饭是在学校后门的大排档吃的。三十多个人,拼了四张桌子,点了满满一桌子的菜——水煮鱼、辣子鸡、回锅肉、酸菜鱼,还有一箱又一箱的啤酒。
班长张伟站起来,端着酒杯,眼圈红红的:”兄弟们,姐妹们!今天过后,咱们就各奔东西了!我张伟没什么本事,就祝大家前程似锦,苟富贵,勿相忘!”
“干!”
三十多个杯子碰在一起,啤酒沫溅得到处都是。有人开始哭,有人开始笑,有人抱着手机在录视频——录的是大家碰杯的瞬间,说要发到朋友圈留念。
陈志远坐在角落里,默默地喝酒。他不擅长这种场合,不知道该说什么。林晓芸坐在他旁边,手在桌子底下握住了他的手。
“怎么了?”她凑过来问,”不高兴?”
“没有。”陈志远说,”就是觉得……有点不真实。四年了,说散就散。”
“那你想怎么样?”
“我不知道。”陈志远灌了一口酒,”我爸妈让我回老家,说在县城找个工作,安安稳稳的。但我总觉得,要是就这么回去了,这辈子就那样了。”
“那就别回去。”林晓芸说,”去深圳。咱们一起去,从头开始。”
“你爸妈那边……”
“我来说。”林晓芸打断他,”反正我就告诉他们,我去深圳找工作,不是去玩。他们要是不同意,我就先斩后奏。”
陈志远看着她,心里涌起一股说不清道不明的情绪。他想起大一那年,他在图书馆第一次见到林晓芸——她坐在靠窗的位置,阳光洒在她脸上,她正在看一本《会计学原理》。他鼓起勇气走过去,问她借一支笔,然后就认识了。
四年了。他从来没想过,这个女孩会成为他人生中最重要的人之一。
“好。”他说,”一起去深圳。”
那天晚上,陈志远喝醉了。他记得自己好像抱着谁哭了,又好像跟谁打了一架——第二天醒来,发现自己的左眼眶是青的,嘴角也破了。张伟说是他自己走路撞到电线杆上摔的。
“你丫喝多了非要去抱电线杆,说那是你女朋友。”张伟笑得直不起腰,”拦都拦不住。”
陈志远摸了摸脸上的伤,没说话。他看了一眼手机,有一条林晓芸发来的微信:
“今天下午三点的火车,别迟到。”
时间是早上八点半。他还有六个半小时。
陈志远是从县城火车站上的车。他爸妈来送他,他妈红着眼眶,往他包里塞了一兜子煮鸡蛋,还有五千块钱——那是他们家攒了好久的积蓄。
“到了那边,好好照顾自己。”他妈说,”找不到工作就回来,家里不缺你一口饭。”
“知道了。”陈志远说。
他爸站在旁边,抽着烟,一句话没说。临上车的时候,他爸才开口:”在外面,别做亏心事。”
“嗯。”
火车开动的时候,陈志远透过车窗看见他爸妈的身影越来越小,最后变成两个小黑点,消失在站台的尽头。他把头靠在车窗上,看着窗外的田野和村庄飞快地后退。
他掏出手机,打开微信,给林晓芸发了条消息:”上车了。”
林晓芸秒回:”我也是,你坐高铁还是动车?”
“高铁,二等座。”
“我也是!那咱们差不多同时到。”
陈志远看着手机屏幕,嘴角不自觉地翘了起来。他把手机揣回兜里,看着窗外的风景发呆。
他想起小时候,他爸总是跟他说:”好好读书,考上大学,就能离开这穷地方了。”
现在他考上了,也毕业了,真的要离开了。但他不知道自己要去的地方,是不是就是他们说的那个”好地方”。
高铁开了四个多小时,到深圳北站的时候,已经是傍晚了。
陈志远走出车站,被扑面而来的热浪和嘈杂声淹没了。到处都是人,扛着编织袋的农民工,拖着行李箱的毕业生,举着牌子拉客的黑车司机,还有此起彼伏的喇叭声和吆喝声。
“深圳!深圳!五十一位!上车就走!”
“住宿!住宿!三十一晚,带空调!”
陈志远站在车站广场上,有点懵。他掏出手机——一部小米3,花了1499块,是他大学兼职攒了大半年钱买的——拨通了林晓芸的电话。
“喂,你到了吗?”林晓芸的声音从听筒里传来,带着嘈杂的背景音。
“到了。”陈志远说,”你在哪?”
“我在东广场出口,你过来。”
陈志远拖着行李箱,穿过人群,终于在东广场的出口处看到了林晓芸。她穿着一件白色T恤,牛仔裤,背着一个双肩包,看起来风尘仆仆的,但脸上还是带着笑。
“走,先找个地方住。”她说着,从口袋里掏出一张皱巴巴的纸条,”我同学给我推荐了一个城中村,说那边租房便宜,五百块一个月。”
“五百块?”陈志远有点怀疑,”能住人吗?”
“去看看就知道了。”
他们打了个摩的,穿过一条又一条狭窄的街道,最后在一个叫”白石洲”的地方停了下来。
陈志远永远记得他第一次看到白石洲的感觉——密密麻麻的握手楼,电线像蜘蛛网一样在头顶缠绕,巷子窄得只能容一个人侧身通过,墙壁上贴满了各种小广告:招工、办证、贷款、开锁……
房东是个四十多岁的潮汕女人,操着一口生硬的普通话,带他们看了二楼一间房。
“这间,五百五一个月,押一付一。”她说着,推开那扇锈迹斑斑的铁门,”有空调,有热水器,就是没窗户,但便宜嘛。”
陈志远探头往里看了一眼。房间大概七八平米,一张单人床,一个衣柜,一台挂在墙上的旧空调,角落里有一个小水池。没有窗户,白天也要开灯。
“就这?”陈志远有点犹豫。
“就这。”房东说,”你想住好的,白石洲有的是,但价钱就不是这个数了。年轻人,刚出来都这样的,先住着,以后有钱了再换呗。”
林晓芸拉了拉陈志远的袖子:”要不……先住下?”
陈志远看了看那间逼仄的房间,又看了看林晓芸——她站在走廊里,阳光从楼道尽头的小窗户透进来,照在她脸上,她看起来有点疲惫,但眼睛里还是有光。
“行。”他说,”就这间吧。”
那天晚上,陈志远躺在硬邦邦的床上,听着隔壁传来的电视机声和吵架声,闻着潮湿的霉味和隔壁飘过来的炒菜味,怎么也睡不着。
他掏出手机,给家里发了条微信:”到了,一切都好,别担心。”
然后他翻了个身,看着天花板——天花板上有一块水渍,形状像一只展翅的鸟。
他打开朋友圈,看到张伟发了一条状态:一张毕业照,配文”兄弟们,江湖再见!”下面已经有一堆点赞和评论。
他给张伟点了个赞,然后又翻到林晓芸的朋友圈——她发了一张自拍,背景是深圳的夜景,配文:”新的开始。”
陈志远盯着那张照片看了很久,然后关掉手机,闭上眼睛。
他想起白天在高铁上看到的那片田野,想起他爸站在站台上抽烟的样子,想起他妈往他包里塞鸡蛋时通红的眼眶。
他想起林晓芸在毕业典礼上对他说的那句话:”咱们一起去深圳,从头开始。”
他闭上眼睛,在心里对自己说:陈志远,从今天开始,你就是一个大人了。
他不知道的是,他人生中所有的故事——那些后来的风光、落魄、挣扎、和解——都是从这个没有窗户的出租屋里开始的。
窗外,深圳的夜生活才刚刚开始。霓虹灯在远处闪烁,像一片永不熄灭的星海。
而陈志远,这个来自农村的二十二岁年轻人,正躺在这座城市最底层的一间出租屋里,做着一个关于未来的梦。
那个梦,很长,也很远。他后来用了四十年,才终于看清那个梦的模样。
第二章 求职
陈志远到深圳的第三天,就开始投简历了。
他住在白石洲那间没有窗户的出租屋里,每天早上七点起床,去巷口的早餐摊买两个包子一杯豆浆,然后坐在那台借来的二手台式机前——那是房东的,说是坏了没人修,陈志远花了半天时间把它修好了——开始投简历。
2015年的招聘网站已经比十年前成熟多了,前程无忧、智联招聘、拉勾网、BOSS直聘……页面做得花里胡哨,职位列表密密麻麻。陈志远把简历复制粘贴,一份一份地投出去。他的简历写得很朴实:
姓名:陈志远
性别:男
学历:本科
专业:计算机科学与技术
毕业院校:XX大学(二本)
工作经验:无
技能:Java、C语言、数据结构、数据库原理、Android开发基础……
他投了大约五十份,都是Java开发相关的岗位。投完之后,他坐在椅子上,看着屏幕发呆。
“怎么样?”林晓芸从外面回来,手里提着一袋菜,”有回复吗?”
“哪有那么快。”陈志远说,”刚投出去,怎么也得等一两天。”
林晓芸把菜放在水池边,走过来看了一眼屏幕:”你投的都是什么公司?”
“就随便投的,软件开发、程序员之类的。”
“工资呢?”
“写的面议。”陈志远说,”刚毕业,哪敢谈工资。”
林晓芸没说话,蹲下来开始洗菜。她在一家创业公司找到了会计助理的工作,月薪四千,试用期三个月。陈志远问她工作怎么样,她说还行,就是公司天天开会,老板画饼画得天花乱坠。
“你那个工作……”林晓芸一边洗菜一边说,”要是实在找不到,也别死磕着。”
“我知道。”
但陈志远心里清楚,他必须找到工作。他算过一笔账:房租五百五,水电费大概一百,吃饭一天二十块,一个月下来最少要一千二。他手里有爸妈给的五千块,加上自己大学四年攒的三千多,总共八千多。如果两个月找不到工作,他就得开始借钱了。
他不想借钱。更不想让林晓芸知道他的窘迫。
投简历的第三天,终于有公司打电话来了。
“喂,请问是陈志远吗?”电话那头是一个女声,”我是XX科技有限公司的HR,看了你的简历,想约你明天上午十点来面试。”
“好的好的,没问题!”陈志远差点从椅子上跳起来,”请问地址是?”
“南山区科技园XX路XX号XX大厦18楼。”
“好的,我记下了,谢谢!”
挂了电话,陈志远兴奋地在房间里转了两圈。他给林晓芸发了条微信:”有公司约我面试了!”
林晓芸很快回了一条:”加油!”
那天晚上,陈志远翻遍了衣柜,找出唯一一件还算体面的白衬衫——那是大学时参加辩论赛买的,领子有点发黄,他洗了又洗,晾了一晚上。
第二天早上,他穿好衬衫,把头发梳了又梳,对着那块巴掌大的镜子照了半天,然后出门了。
从白石洲到南山科技园,坐公交车要四十分钟。陈志远在车上挤得满头大汗,衬衫后背湿了一片。他到了那栋写字楼,坐电梯上到18楼,前台小姐看了他一眼,问:”您好,请问找哪位?”
“我是来面试的。”陈志远说,”XX科技有限公司,约了十点。”
“好的,请稍等。”前台打了个电话,然后说,”您先坐一下,面试官马上出来。”
陈志远在沙发上坐下来。他环顾了一下四周——前台、接待区、玻璃隔断的办公区,里面的人都在低头盯着电脑屏幕,偶尔有人站起来接水、上厕所,步履匆匆。
他有点紧张。手心出汗,他悄悄在裤子上蹭了蹭。
等了大概十分钟,一个戴眼镜的中年男人走了出来:”陈志远?”
“是,是我。”陈志远站起来。
“跟我来。”
面试在一个小会议室里进行。中年男人坐在对面,翻了翻他的简历,然后抬起头,打量了他几秒钟。
“说说你的情况。”
“我是XX大学计算机专业的应届毕业生。”陈志远尽量让自己的声音听起来平稳,”学过Java、C语言,做过一些课程设计……”
“课程设计?”中年男人打断他,”什么课程设计?”
“就是……图书管理系统,用Java写的,数据库用的MySQL。”
“独立完成的?”
“是,和同学一起。”
“你负责哪部分?”
“就是……后端,登录、借书、还书那些功能。”
中年男人不置可否地点了点头,又翻了翻简历:”我看你简历上写了’熟悉Java’,你觉得你Java学得怎么样?”
“还行吧。”陈志远说,”基础的知识都掌握得可以。”
“那你说说,HashMap和Hashtable有什么区别?”
陈志远愣了一下。他记得上课的时候老师讲过,但具体内容……他脑子里一片空白。
“嗯……HashMap不是线程安全的,Hashtable是线程安全的。”他努力回忆,”还有……HashMap允许null键和null值,Hashtable不允许。”
“还有呢?”
“还有……”陈志远卡住了,”大概就这些。”
中年男人没有追问,换了个问题:”你了解Spring Boot吗?”
“Spring Boot?”陈志远心里一沉,”听说过,但……还没怎么用过。”
“那微服务呢?”
“也是听说过。”
中年男人放下简历,靠在椅背上,看着他:”陈志远,我跟你说实话吧。你学的这些东西,都是学校里教的那一套,但我们公司要的是能直接上手干活的人。你会用Spring Boot吗?不会。你会用微服务吗?不会。你会用Docker吗?”
“Docker?”陈志远完全没听过这个词。
“那Linux呢?”
“会一点……”
“会一点?”中年男人笑了笑,”那你说说,怎么在Linux下查看一个进程?”
陈志远张了张嘴,半天没说出话来。
“行了。”中年男人站起来,”面试就到这儿吧,有消息我们会通知你。”
陈志远知道,这就是被拒了。他站起来,说了声”谢谢”,然后走出了会议室。
走到电梯口的时候,他听到身后传来两个声音:
“这应届生,什么都不会就来面试,浪费我时间。”
“唉,现在的大学教育就是这样,教的东西跟市场脱节太严重了……”
陈志远站在电梯里,看着电梯门缓缓合上。他低头看着自己那双洗得发白的运动鞋,没有说话。
接下来的两周,他又面试了十来家公司。
有公司让他做笔试,他做了,但分数不理想;有公司问他有没有项目经验,他说没有,对方就说”那等通知吧”;还有一家公司,面试官是个年轻的小伙子,看起来比他还小两岁,问他:”你会写前端吗?”
“前端?”陈志远说,”就是HTML那些?”
“对,HTML、CSS、JavaScript,还有Vue。”
“Vue是什么?”
小伙子摇了摇头:”那不行。我们这儿要全栈的,前后端都得会。”
陈志远走出那家公司的时候,天已经黑了。他站在路边,看着来来往往的车流和人群,忽然觉得这座城市很大,大到他找不到自己的位置。
他掏出手机,给林晓芸打了个电话。
“喂?”
“晓芸,我今天面试了一家,不太行。”
“没事,慢慢来。”林晓芸的声音很温柔,”你才来了半个月,急什么。”
“可是……”
“可是什么呀。”林晓芸打断他,”我今天发工资了,四千。晚上咱们出去吃顿好的,庆祝一下。”
“你发工资了?”
“对啊,转正了。”林晓芸的语气里带着点得意,”老板说我表现不错,提前转正了。”
陈志远站在路边,握着手机,鼻子有点酸。他吸了吸鼻子,说:”好,晚上吃什么?”
“我想吃火锅。”
“行,吃火锅。”
那天晚上,他们在白石洲附近的一家川味火锅店吃了顿火锅。两个人点了三盘肉,两盘菜,加一瓶可乐,一共花了一百二十多块。
林晓芸吃得满头大汗,一边吃一边说:”这家店不错,下次还来。”
陈志远看着她,忽然说:”晓芸,我要是三个月还找不到工作,怎么办?”
林晓芸放下筷子,看着他:”那就不找Java开发了呗。”
“那干什么?”
“什么都能干。”林晓芸说,”实在不行,去当服务员也行,去送外卖也行。先活下去,再说别的。”
陈志远沉默了一会儿,然后笑了:”你说得对。先活下去再说。”
“对啊。”林晓芸给他夹了块肉,”别想那么多,吃饭。”
那天晚上回到出租屋,陈志远躺在床上,看着天花板上的那块水渍。他想起白天面试时那个面试官说的话——“你学的这些东西,都是学校里教的那一套”。
他承认,他确实什么都不会。学校里教的是理论,公司要的是实践。他就像一个刚学会游泳的人,被扔进了大海里,扑腾着,挣扎着,不知道岸在哪里。
但他不想放弃。
他想起他爸说过的那句话:”在外面,别做亏心事。”
他没做亏心事。他只是还不够强。
第二天早上,陈志远又坐在那台二手电脑前,开始投简历。这次他换了个思路,不光是投Java开发的岗位,也投了一些技术支持、实施工程师之类的——这些岗位要求低一些,工资也低一些,但至少能先进去。
他投了三十多份。然后他关掉电脑,站起来,对着那块巴掌大的镜子,整理了一下衬衫的领子。
衬衫已经洗得发白了,但还能穿。
他对自己说:陈志远,你可以的。
然后他走出门,去赶下一场面试。
深圳的七月,太阳毒辣辣的,晒得柏油路都发软。陈志远走在路上,汗水顺着脸颊往下淌。他伸手擦了一把,然后继续往前走。
他没有回头。
第三章 入职
陈志远找到工作,是在他来深圳的第二十三天。
那是一家叫”华信软件”的小公司,在南山科技园的一栋老写字楼里,总共不到二十个人。面试他的是一个姓刘的技术总监,四十来岁,头发有点秃,穿着皱巴巴的格子衬衫,说话带着浓重的湖南口音。
“你会什么?”刘总监问。
“Java、C语言,基本的都会。”陈志远说。
“做过什么项目?”
“课程设计算吗?”
“算。”刘总监点点头,”说说看。”
陈志远把图书管理系统讲了一遍。刘总监听完,没有像之前那些面试官一样露出不耐烦的表情,反而点了点头:”还行,基础的东西知道。”
他顿了顿,又说:”我们公司小,你来了什么都要干。写代码、改bug、测试、部署,甚至客户那边出了问题,你也得跑过去看。工资7000,试用期三个月,转正后看表现。能接受吗?”
“能。”陈志远几乎没有犹豫。
“那行。”刘总监站起来,朝他伸出手,”欢迎加入。明天来上班。”
陈志远握住他的手,感觉那只手粗糙而有力。他后来才知道,刘总监叫刘建国,在这行干了十五年,从程序员做到技术总监,是那种典型的老一代IT人——技术扎实,但不会来事,所以一直待在小公司。
那天晚上,陈志远给林晓芸发了条微信:”找到工作了!月薪7000!”
林晓芸回了一连串的感叹号:”太好了!!!晚上庆祝!!!”
他们又去了那家川味火锅店。这次陈志远主动加了两个菜,还点了一瓶啤酒。他喝了一口,觉得那酒又苦又涩,但他还是喝完了。
“以后我养你。”陈志远说。
林晓芸笑了:”就你那7000块,在深圳能干嘛?”
“慢慢来嘛。”陈志远说,”以后会涨的。”
“行,那我等着。”
第二天早上八点半,陈志远准时到了公司。
华信软件在写字楼的六楼,出了电梯左拐,是一扇半开的玻璃门,门上贴着褪了色的”华信软件科技有限公司”几个字。陈志远推门进去,看到的是一个不大的办公区,摆了十来张办公桌,桌上堆满了电脑、文件、泡面盒子和可乐罐。
“来了?”刘建国从里间走出来,手里端着一杯浓茶,”坐那边,靠窗的位置。”
陈志远走过去坐下。他环顾四周,发现办公室里的人都在忙——有的在敲代码,有的在打电话,有的在激烈地讨论着什么。没有人抬头看他,就像他是一张桌子、一把椅子,是这间办公室里理所当然的一部分。
“这是你的工位。”刘建国指着一台旧电脑说,”配置一般,但够用了。你先看看我们项目的代码,熟悉一下。”
“好的。”
陈志远打开电脑,桌面上有一个文件夹,叫”华信ERP”。他点开一看,里面是密密麻麻的Java文件,大概有几百个。他随便点开一个,看了一会儿,有点懵——代码风格跟他大学里学的不太一样,很多类和方法他看不懂是干什么的。
他深吸一口气,开始一个一个地看。
中午十二点,办公室里的人陆续站起来,有的去楼下吃饭,有的点了外卖。陈志远没有动,他还在看代码。
“喂,新来的。”一个声音从背后传来。
陈志远回头,看到一个二十七八岁的年轻人,戴着黑框眼镜,头发乱糟糟的,嘴里叼着一根烟。
“我叫周斌,你叫我斌哥就行。”年轻人说,”走,吃饭去,楼下有家快餐店,十五块管饱。”
“好。”陈志远站起来,”斌哥。”
他们下了楼,在写字楼旁边的一家快餐店里坐下。周斌要了一份回锅肉饭,陈志远要了一份土豆丝饭。周斌一边吃一边问:”你哪个学校毕业的?”
“XX大学。”
“没听说过。”周斌也不客气,”不过没关系,学校不重要,重要的是能干活。”
“斌哥,你在公司多久了?”
“三年了。”周斌夹了一块回锅肉,”刚来的时候跟你一样,什么都不会。现在嘛,公司核心模块都是我写的。”
“那你工资多少?”
周斌看了他一眼,笑了:”你小子,第一天来就问这个?”
“不好意思,我就随口一问。”
“没事。”周斌说,”告诉你也没关系,我一万二。干了三年,涨了五千。”
陈志远没说话。他算了一下,自己转正后估计也就七千五,跟周斌差了整整四千五。但他没有气馁,反而觉得有盼头——周斌干了三年能拿一万二,那他干三年,应该也能涨。
“好好干。”周斌拍了拍他的肩膀,”这行就是熬,熬出头了就好了。”
陈志远点了点头。他那时候还不知道,周斌说的”熬”,是拿命去熬。
下午两点,陈志远回到工位,继续看代码。
他看了整整一个下午,看到眼睛发酸,看到太阳从窗户外面落下去。他大致摸清了整个项目的结构——这是一个给制造业企业用的ERP系统,功能包括采购、库存、生产、销售、财务等模块。代码量很大,也很乱,很多地方没有注释,只能靠猜。
“看完了?”刘建国走过来,手里拿着一份打印出来的文档,”这是客户报过来的一个bug,你来看看。”
陈志远接过文档,看到上面写着:”库存模块,入库单审核后,库存数量没有变化。”
“这个……”陈志远有点紧张,”我还没完全看懂代码。”
“不用全看懂。”刘建国说,”你就顺着入库单审核的流程,找到对应的代码,看看哪里出了问题。给你一天时间,明天下午给我答复。”
说完,他转身走了。
陈志远看着手里的文档,心跳有点快。他深吸一口气,打开代码,开始找。
他先找到了”入库单”相关的类,然后找到了”审核”方法,然后往里一层一层地追——审核的逻辑、库存更新的逻辑、数据库操作的逻辑。他花了一个多小时,终于找到了问题:审核方法里调用了一个”updateStock”的方法,但那个方法里有一个条件判断写错了,导致库存数量永远不会被更新。
他改了那个判断,又仔细检查了一遍,确认没有其他问题。
“斌哥。”他叫住正在抽烟的周斌,”你看看这个bug,是不是这么改?”
周斌凑过来看了看,点了点头:”行啊,新来的,有两下子。就是这么改的。”
陈志远心里松了一口气。他看了看时间,晚上七点半。办公室里已经没几个人了,大部分人都走了。
“下班了。”周斌站起来,伸了个懒腰,”走吧,明天再干。”
“好。”
陈志远关掉电脑,跟着周斌走出办公室。外面天已经黑了,写字楼下的路灯亮着,街道上行人不多。他掏出手机,给林晓芸发了条微信:”下班了,今天找到那个bug了,感觉还行。”
林晓芸回了一个笑脸:”厉害!回来给你做好吃的!”
陈志远笑了笑,把手机揣回兜里,朝公交站走去。
他那时候觉得,工作好像也没那么难。只要肯学,肯干,总能做好的。
他不知道的是,这只是开始。
接下来的一周,陈志远几乎每天都是晚上九点以后才走。
不是公司要求加班,是他自己不想走。他觉得自己有太多东西要学——Spring Boot、微服务、Docker、Linux命令、数据库优化……这些东西大学里都没教过,他只能自己看书、看代码、问周斌。
周斌倒是不藏私,问他什么答什么。但他也说了:”我教你的都是基础的,高级的我也得现学。这行就是这样,技术更新太快了,你不学就落后。”
陈志远记住了这句话。他每天晚上回到出租屋,还会再看一个小时的书才睡觉。林晓芸有时候等他等到睡着,第二天早上起来,看到他趴在桌子上睡着了,面前摊着一本《Spring Boot实战》。
“你疯了吧?”她把他摇醒,”每天那么晚睡,身体还要不要了?”
“没事。”陈志远揉了揉眼睛,”我年轻,扛得住。”
“年轻也不是这么折腾的。”林晓芸说,”我跟你说,你要是累倒了,我可不管你。”
陈志远笑了:”放心,我命硬。”
他确实命硬。那一年,他二十二岁,身体好得像一头牛。连续加班一个月,每天只睡六个小时,他也没觉得多累。
但他不知道,身体是记着账的。那些他透支的睡眠、消耗的精力,都会在十年后,连本带利地还给他。
那是后话了。
入职一个月后,陈志远转正了。
刘建国找他谈话,说:”你表现不错,比我想象的好。工资给你涨到7500,以后好好干。”
“谢谢刘总。”
“别叫我刘总。”刘建国摆摆手,”叫我刘哥就行。”
“谢谢刘哥。”
从刘建国的办公室出来,陈志远给林晓芸发了条微信:”转正了!工资7500!”
林晓芸很快回了一条:”晚上庆祝!还是那家火锅店!”
陈志远笑了。他觉得,日子好像正在往好的方向走。
那天晚上,他躺在床上,看着天花板上的那块水渍。水渍还是那个形状,像一只展翅的鸟。他盯着它看了很久,然后闭上眼睛,睡着了。
他做了一个梦。
梦里,他站在一栋很高很高的楼上,俯瞰着整个深圳。楼下车水马龙,霓虹闪烁,他看到远处有一片海——那是深圳湾。海风吹过来,带着咸咸的味道。
他觉得自己好像站在了世界的顶端。
但梦醒之后,他还是躺在那间没有窗户的出租屋里,头顶是那块水渍,耳边是隔壁传来的吵架声。
他翻了个身,看了一眼手机。
早上七点。该起床了。
他掀开被子,坐起来,揉了揉脸,然后穿上那双洗得发白的运动鞋,走出了门。
深圳的早晨,太阳已经升起来了。阳光穿过城中村密密的楼缝,落在他身上。他眯起眼睛,看了看天,然后朝公交站走去。
新的一天,又开始了。
第四章 第一个项目
陈志远入职华信软件的第三周,赶上了一个大项目。
说是大项目,其实也就是给一家深圳本地的电子厂做一套生产管理系统——比他们现在维护的那套ERP要小得多,但因为是新项目,要从零开始写。刘建国把陈志远分到了这个项目组,组里一共四个人:周斌、陈志远、一个叫小赵的前端,还有一个叫孙姐的测试。
“这个项目工期紧,客户要求两个月上线。”刘建国开会的时候说,”周斌负责架构和核心模块,陈志远跟着周斌打下手,小赵做前端,孙姐负责测试。有什么问题及时沟通,别拖。”
散会后,周斌把陈志远叫到工位上,扔给他一份文档:”这是需求文档,你先看看。”
陈志远接过来,翻了翻。文档写得不算详细,很多地方就是一页纸带过:”生产计划模块:支持排产、工单下发、进度跟踪。””原料管理模块:支持BOM维护、领料、退料。”……
“看完了?”周斌问。
“差不多了。”陈志远说,”就是……有几个地方不太明白。”
“哪不明白?”
“比如说这个BOM,我理解是物料清单,但具体的层级关系……”
“你以前没做过?”
“没。”陈志远老实说。
周斌叹了口气,从抽屉里翻出一本旧笔记本,扔给他:”这是我以前做类似项目的笔记,你先看看,有不懂的再问我。”
陈志远翻开那本笔记本,里面密密麻麻地记着各种技术要点和业务逻辑,字迹潦草,但很实用。他如获至宝,当天晚上回到出租屋,一口气把整本笔记本看完了。
第二天,他去找周斌:”斌哥,BOM这块我明白了。”
“行。”周斌头也没抬,”那你先把BOM管理这块的代码写了,我看看。”
陈志远愣住了。他以为周斌会先教他怎么做,或者至少给他一个模板。但周斌什么也没说,只是丢给他一句话,然后继续埋头敲自己的代码。
“……好。”
陈志远回到工位,打开编辑器,盯着空白的屏幕发了十分钟的呆。然后他深吸一口气,开始写。
他先设计数据库表,然后写实体类,然后写DAO层,然后写Service层,然后写Controller层——这些都是他在学校里学过的,虽然不熟练,但至少知道该怎么写。
他写了一整天。下班的时候,他把自己写的代码给周斌看。
周斌扫了两眼,皱了皱眉:”你这代码太啰嗦了。”
“啊?”
“你看这里。”周斌指着屏幕上的代码,”一个简单的查询,你写了三层嵌套,其实两行就能搞定。还有这里,你用了for循环去查数据库,应该用批量查询。你这样写,数据量大的时候会卡死的。”
陈志远的脸有点发烫。他以为写得没错就行,没想到还有这么多讲究。
“不过没关系。”周斌说,”第一次写都这样。你回去改改,改完再给我看。”
陈志远点了点头,回到工位,开始改代码。
他改了一遍,周斌说还是不行;他又改了一遍,周斌说勉强能看;他再改了一遍,周斌终于点了点头:”行,这版可以了。”
那天晚上,陈志远回到家已经十一点了。他躺在床上,看着天花板上的水渍,脑子里还在想着那些代码。
他忽然觉得,写代码这件事,比他想象的要难得多。
但难归难,他不想认输。
项目进行到第二周的时候,出了个问题。
客户那边突然提了一个新需求:要在生产计划模块里加一个”急单插单”的功能——就是当客户有紧急订单的时候,可以直接把订单插到排产队列的最前面,优先安排生产。
“这个需求加进去,工期又得延长。”周斌在项目群里发消息。
“客户说了,必须加。”项目经理回,”他们说这是他们的核心竞争力,不加这个功能,他们就不签验收单。”
群里沉默了一会儿。
“那怎么办?”小赵问。
“加班呗。”周斌回,”还能怎么办。”
从那天开始,项目组进入了加班模式。
每天早上八点半到公司,晚上十一点才走。中午吃饭都在工位上,一边扒拉盒饭一边敲代码。周末也不休息,周六周日都来公司。
陈志远第一次感受到什么叫”互联网行业的加班文化”。
他以前在学校的时候,听学长说过IT行业加班严重,但他没想到会严重到这个程度。连续一周,他每天睡眠时间不到五个小时。到了周五晚上,他坐在工位上,眼睛盯着屏幕,感觉屏幕上的字都在飘。
“你没事吧?”周斌路过他工位,看了他一眼。
“没事。”陈志远说,”就是有点困。”
“困就对了。”周斌说,”我当年刚入行的时候,连续加班一个月,瘦了十斤。”
“斌哥,你那时候也这样?”
“谁不是从这时候过来的。”周斌在他旁边的椅子上坐下来,点了一根烟,”这行就是这样,项目来了,就没有白天黑夜。你干得动,就干;干不动,就滚蛋。没人可怜你。”
陈志远没说话。他看了一眼窗外——天已经全黑了,写字楼对面的一栋楼里,也亮着灯,隐约能看到几个人影在电脑前忙碌。
这座城市里,和他一样在加班的人,还有很多。
他低头继续敲代码。
项目进行到第五周的时候,陈志远第一次通宵。
那天下午,测试那边报了一个严重的bug:生产计划模块在特定条件下会死循环,导致整个系统卡死。孙姐把bug截图发到群里,说:”这个不解决,周五没法上线。”
周斌看了一眼,说:”这个应该是陈志远写的排产算法的问题。”
陈志远的脸一下子白了。他赶紧打开代码,开始排查。
他查了一个小时,没找到问题;两个小时,还是没找到;三个小时……他盯着屏幕上密密麻麻的代码,感觉自己的脑子已经变成了一团浆糊。
“你慢慢查。”周斌站起来,”我先走了,明天早上来看结果。”
办公室里只剩下陈志远一个人。他看了一眼时间——晚上十一点半。
他深吸一口气,继续排查。
他一行一行地读代码,一个变量一个变量地跟踪,终于在凌晨两点多的时候,找到了问题所在:他在写排产算法的时候,有一个边界条件没有处理——当订单数量为0的时候,程序会进入一个死循环。
他赶紧修改了代码,又写了一段测试用例验证,确认没问题之后,已经是凌晨四点了。
他靠在椅背上,揉了揉酸胀的眼睛,掏出手机给孙姐发了条消息:”bug修好了,你明天早上验证一下。”
然后他趴在桌子上,闭着眼睛,睡着了。
第二天早上,陈志远是被周斌拍醒的。
“醒醒。”周斌站在他面前,手里端着一杯咖啡,”孙姐验证过了,bug没问题,可以上线了。”
陈志远迷迷糊糊地睁开眼睛,看到窗外已经天亮了。阳光透过窗户照进来,落在他的脸上,有点刺眼。
“几点了?”他问。
“八点半。”周斌把咖啡递给他,”喝点这个,提提神。”
陈志远接过咖啡,喝了一口,苦得他打了个激灵。
“你昨天晚上几点走的?”
“没走。”陈志远说,”通宵了。”
周斌看了他一眼,没说话。过了几秒钟,他才开口:”行,今天上午你休息一下,下午再干活。”
“不用,我没事。”
“我说让你休息就休息。”周斌说,”别逞能。”
陈志远想了想,点了点头。他趴在桌上,又睡了过去。
那天下午,系统上线了。
上线过程还算顺利,除了中间出了几个小问题,但都被周斌和刘建国解决了。下午五点多的时候,刘建国在群里发了一条消息:”系统上线成功,客户验收通过。大家辛苦了!”
群里一片欢呼。
陈志远看着手机屏幕上的那条消息,心里涌起一股说不清道不明的感觉。这是他参与的第一个正式项目,从写代码到改bug到通宵调试到最终上线——他全程参与了。
他忽然觉得,那些加班的夜晚、那些熬过的夜、那些改了一遍又一遍的代码,都值了。
“走,晚上聚餐!”周斌在群里喊,”刘哥请客!”
“好!”
“去哪吃?”
“老地方,川菜馆!”
那天晚上,项目组的五个人——刘建国、周斌、陈志远、小赵、孙姐——在写字楼旁边的一家川菜馆里吃了一顿饭。刘建国点了一桌子菜,还要了一瓶白酒。
“来,敬大家一杯!”刘建国端起酒杯,”这个项目,大家都辛苦了!”
“干!”
陈志远也端起了酒杯。他平时不怎么喝酒,但那天他喝了一口——白酒,辣得他嗓子冒烟。但他还是喝了。
“小陈,你表现不错。”刘建国拍了拍他的肩膀,”第一次做项目,能跟上节奏,不容易。”
“谢谢刘哥。”
“好好干。”刘建国说,”这行有前途的,以后你会明白的。”
陈志远点了点头。他不知道刘建国说的”有前途”是什么意思,但他觉得,至少现在,他找到了一个可以努力的方向。
那天晚上回到家,已经快十二点了。
陈志远洗了个澡,躺在床上,掏出手机。他看到林晓芸发了一条朋友圈:一张照片,是她做的西红柿炒鸡蛋,配文:”一个人吃饭,想念某人。”
他笑了笑,在下面评论:”明天我给你做。”
林晓芸秒回:”你还会做饭?”
“不会,但我可以学。”
“行,等你学会了再说。”
陈志远放下手机,看着天花板上的那块水渍。水渍还是那个形状,像一只展翅的鸟。他盯着它看了很久,然后闭上眼睛。
他想起今天系统上线的那一刻,想起刘建国拍着他肩膀说的那句”好好干”,想起周斌递给他那杯咖啡时的表情。
他忽然觉得,这座城市好像没有那么陌生了。
他在这里有了工作,有了朋友,有了一个可以努力的方向。
也许,他真的能在这座城市里,扎下根来。
他翻了个身,睡着了。
窗外,深圳的夜还在继续。霓虹灯在远处闪烁,像一片永不熄灭的星海。
而陈志远,这个来自农村的二十二岁年轻人,正在他人生中的第一个项目成功之后,沉沉地睡去。
他不知道的是,这只是他漫长职业生涯中的第一个小节点。
后面还有更多的项目、更多的加班、更多的通宵,以及更多的——他此刻还无法想象的——起起落落。
但至少在这一刻,他睡得很安稳。
梦里有风,有海,有阳光。

