我从甘肃农村走到江苏,在代码与江南之间安放人生

2 阅读9分钟

上周,我把父母从甘肃老家接到了江苏。

三月的江南,柳树抽了新芽,玉兰开得正好。母亲站在小区楼下,看着不远处的滑梯和跷跷板,忽然说:“孩子总算能在平地上长大了。”她指的是我三岁的儿子。

我懂她的意思。在我长大的那个陇中山村,唯一的“游乐场”是打谷场边上的土坡。孩子在上面爬上爬下,一身土一身汗,那就是我们的童年。

从甘肃农村到江苏小城,从放羊娃到程序员,这条路我走了三十多年。如今,我终于可以把父母接到身边,让他们看看我生活的地方,看看他们的孙子长大的地方。

01 黄土高原上的第一行“代码”

1989年,我出生在甘肃定西的一个村子。记忆里,父亲总是在地里忙,母亲总是在灶台边忙,而我总是在山坡上放羊。

十岁那年,村里通了电。又过了两年,在外打工的堂叔带回一台淘汰的“小霸王”学习机。我第一次见到键盘——那种硬邦邦的、按下去会弹回来的东西。

堂叔教我们玩超级玛丽,但我更着迷于敲击键盘的声音。一下一下,清脆有力,像极了父亲用镢头刨开黄土时的闷响。

2002年,我去县城读初中。学校有了微机室,我第一次摸到真正的电脑。信息课上,老师讲BASIC语言,全班同学都在偷偷玩扫雷,只有我盯着屏幕上的代码。

PRINT “HELLO WORLD”

按下回车,屏幕上真的出现了那几个字。那一刻我忽然觉得,这东西比放羊有意思多了。

02 从黄土到江南:第一次远行

2008年高考,我填报了江苏一所大学的计算机专业。

班主任问我:“为什么去那么远?”

我说:“想看看不一样的地方。”

父亲在甘肃地图上找了半天,没找到江苏。我指给他看,他沉默半天,说:“远得很。”

那年八月,我坐了二十多个小时的绿皮火车,从兰州到南京,又从南京转车到学校所在的城市。下车时正值黄昏,空气湿漉漉的,带着一股陌生的草木香。我站在出站口,深深吸了一口气——这就是江南。

大学四年,我像一块干涸的黄土拼命吸水。C语言、Java、数据结构、操作系统——每门课都认真学,每次实验都认真做。不是因为我多聪明,而是因为我知道,这可能是改变命运的唯一机会。

2012年毕业,我投了几十份简历,最后留在了江苏,进了一家软件公司,月薪3500。

03 大城市的第一个“Bug”

入职第一天,项目经理给我分配了一个模块,让我三天内写完。我熬了两个通宵,提前一天交上去。他看了代码,说:“格式不规范,逻辑也有问题,但能跑通。不错,继续改。”

第一个Bug让我印象深刻——一个简单的空指针异常,我查了整整三天。最后发现是对象没初始化。同事开玩笑:“新来的就是实在,不知道new一下?”

我没笑。从那天起,我养成了一个习惯:写一行,检查一行。这个习惯让我后来很少出低级错误,但也让我失去了很多“快速迭代”的机会。

那几年,我住在城中村的隔断间里,每天骑自行车上班。公司附近有家面馆,老板娘是甘肃人,做的面有老家的味道。我常去那里吃饭,有时候和她说几句家乡话,心里会暖和一些。

04 买房:人生最大的“重构”

2015年,我和相恋三年的女友准备结婚。她是江苏人,我们是在一次朋友聚会上认识的。

第一次去她家,她妈妈做了满满一桌子菜。饭后她问我:“在江苏还习惯吗?父母身体好吗?以后有什么打算?”我一一回答,心里却有些忐忑。

后来女友告诉我,她妈说:“这小伙子踏实。”

2016年初,我们看中了一套房子,小三居,总价一百多万。首付四十多万,我们俩工作几年攒了十来万,两家父母凑了剩下的。

签合同那天,我给父亲打电话。他在电话那头说:“好,好好过日子。”

我知道,那是他种了半辈子地攒下的钱。他从来没出过远门,最远只到过县城。但为了我在城里有个家,他把那些钱寄到了千里之外。

搬进新家那天晚上,我站在阳台上,看着远处万家灯火。忽然想起小时候放羊,站在山顶上看山下的村庄,那些星星点点的灯火,就是别人家的温暖。现在,我也有一盏属于自己的灯了。

05 结婚生子:人生进入“生产环境”

2016年底我们办了婚礼。在老家摆了流水席,在江苏请同事朋友吃了顿饭。两边风俗不同,但热闹是一样的。

2019年,儿子出生。

那天我在产房外等了五个小时,听到哭声的那一刻,腿软得差点站不住。护士抱着他出来,说:“恭喜,是个大胖小子。”

我接过那个小小的包裹,看着他皱巴巴的小脸,眼泪忽然就下来了。那一刻我明白了什么叫血脉相连,也明白了父母当年为什么那么拼命供我读书。

儿子一天天长大。他说的第一句话是“爸爸”,会走的第一步是朝着我跑过来。他不知道甘肃在哪里,不知道黄土高原什么样,不知道爸爸小时候放羊的山坡是什么颜色。

有一次我教他说家乡话,他学得磕磕巴巴,“大”说成“爸”,“回来”说成“回回”。岳母在旁边笑:“还是说普通话吧,以后上学方便。”我说:“也行,但得知道爸爸老家的话。”

有些东西,不需要教,自然会传下去。

06 程序员的中年:在变与不变之间

儿子三岁了,我也三十三了。

从毕业到现在,在这家公司干了整整十年。从初级程序员到技术骨干,从写代码到带团队,从单枪匹马到协同作战。工资涨了,职位升了,但焦虑也来了。

互联网行业变化太快。新技术层出不穷,年轻人一茬接一茬。我也听到过“35岁危机”的说法,也担心过自己会不会被淘汰。

但后来我想通了。

焦虑没有用,能做的就是保持学习。我利用业余时间学新框架、新语言,也学管理、学沟通。技术不会淘汰愿意学习的人,年龄也不会成为真正的障碍——只要你还在进步。

更重要的是,我开始重新理解“程序员”这三个字。

代码不只是谋生的工具,也是我和世界对话的方式。每一行代码都像当年种下的庄稼,播种、浇水、除草,最后才能收获。只是庄稼一年一熟,代码可以持续迭代。

07 把父母接来,让根扎得更深

上个月,父母第一次来江苏长住。

我去火车站接他们。出站时,母亲背着一个大包袱,父亲拎着两个编织袋。包袱里是老家蒸的馒头、炸的油果子、晒的干豆角。编织袋里是两只活鸡,用绳子绑着脚。

父亲说:“自家养的,给孙子吃。”

我说:“爸,城里不让养鸡。”

他说:“吃了就没了,又不养。”

我哭笑不得,但还是把鸡带回了家。在阳台上养了三天,杀了炖汤。儿子喝了一口,说:“好喝!”父亲笑了,皱纹挤在一起。

那几天,我带他们逛公园、逛商场、逛景区。母亲看着湖里的游船,说这水真清。父亲看着高楼大厦,说这楼真高。他们很少评价什么,只是看,只是点头。

有一天傍晚,我们一家五口在小区散步。儿子跑在前面,回头喊:“爷爷奶奶快点!”母亲笑着加快脚步,夕阳把她的影子拉得很长。

我忽然想起三十年前,她也是这样追着我跑——只不过那时候是在黄土坡上,追的是一个满身泥土的放羊娃。

写在最后

昨天,儿子问我:“爸爸,老家好玩吗?”

我说:“好玩。有山,有羊,有爷爷小时候走过的路。”

“那我们去玩吧。”

“好,等放假就去。”

他满意地跑开了,去找奶奶要饼干。

我坐在沙发上,看着这个小小的身影,忽然觉得一切都值得。

从甘肃农村到江苏,从放羊娃到程序员,这条路我走了三十多年。有人问我后不后悔,我说不后悔。就像代码总要部署到生产环境,人也总要找到属于自己的位置。

在这里,我终于找到了。

代码会过时,技术会迭代,但有些东西会一直留在生命里。比如父母的白发,比如儿子的笑脸,比如那个遥远的、叫故乡的地方。

它们共同构成了我的人生系统——稳定运行,持续迭代,永不宕机。


后记:

写完这篇文章,儿子跑过来问我在写什么。

我说:“写爸爸小时候的故事。”

他说:“讲给我听。”

于是我把三岁的他抱到腿上,给他讲那个放羊的孩子,讲那个第一次见到键盘的下午,讲那列开了二十多个小时的绿皮火车。

他听着听着,睡着了。

窗外,江南的春天正浓。 有人说,程序员是新时代的农民工。我不这么看。农民工离乡是为了谋生,而我们这代从农村出来的程序员,离乡是为了让下一代不必再离乡。

这是我们的选择,也是我们的宿命。

就像写代码一样,选择了这条路,就要一行一行敲下去。敲对了,系统就能跑起来;敲错了,大不了回滚重来。

但人生不能回滚,只能提交。