凌晨两点的城市早已沉睡,小林的房间却还亮着一盏台灯,屏幕上,代码编辑器的光标在闪烁,像一只不肯闭眼的眼睛,旁边散落着三本写满笔记的编程书,半杯冷掉的咖啡,以及一个标注着“第17次重试”的bug记录本,他揉了揉干涩的眼睛,对着麦克风轻声说:“老师,这个接口的异步回调我还是没搞懂,能再讲一遍吗?”

这不是某个培训机构的广告片,而是“网课码农”的日常切片,他们或许是刚毕业的大学生,专业与计算机无关却一头扎进编程世界;或许是职场人,想通过代码敲开职业转型的大门;也可能是偏远地区的学生,网课是唯一能触达优质技术资源的桥梁,没有科班的光环,没有实验室的加持,他们靠着一块屏幕、一堆网课资源,在0和1的数字缝隙里,硬生生“种”出了属于自己的代码树。

从“零”开始的“代码求生”

“网课码农”的起点,往往带着点“孤勇”的味道,28岁的阿杰曾是传统行业的销售,每天在酒桌和报表间周旋,直到一次偶然的机会,他看到朋友用几行代码自动整理Excel数据,“那感觉就像看到了魔法”,他辞掉工作,掏出积蓄买了台二手笔记本,开始在B站、慕课上“扫盲”。

“第一天学Python,连‘变量’和‘字符串’都分不清。”阿杰记得,为了搞懂一个循环嵌套,他把视频暂停、回放了20遍,对着笔记本抄了3页代码,深夜的出租屋里,只有键盘敲击声和偶尔的叹气声,他给自己定下规矩:每天至少学4小时,雷打不动,累了就刷刷技术论坛,看看别人是怎么踩坑的,反而觉得“找到了组织”。

像阿杰这样的“网课码农”不在少数,他们没有系统的课程表,没有老师盯着交作业,学习全靠“自驱力”,有人为了学前端,把“JavaScript高级程序设计”翻得卷了边;有人为了搞懂算法,在LeetCode上刷了500道题,连做梦都在想“这道题的时间复杂度能不能再优化”,他们像在数字荒原上挖矿的人,靠着零散的网课资源,一点点挖出知识的矿藏。

代码世界的“野生玩家”

“网课码农”的学习路径,总是带着点“野生生长”的粗粝感,因为没有科班的系统训练,他们常常陷入“知其然不知其所以然”的困境,小林曾跟着网课做了一个电商网站,能实现基本的购物车功能,却说不清“为什么数据库要用索引”“为什么接口要设计成RESTful风格”。

“最怕的就是被问‘为什么’。”小林苦笑,有次面试,面试官让他讲讲“Vue的响应式原理”,他支支吾吾答不上来,最后只能老实说:“网课里只教了怎么用,没教底层实现。”那次面试失败了,但他没放弃——回去后,他把Vue的源码啃了半个月,又对着技术博客画了十几张思维导图,终于搞懂了“数据劫持”和“依赖收集”。

这种“倒逼式学习”,是“网课码农”的必修课,他们像在迷宫里找路的旅人,撞了墙才知道要回头,摔了跤才学会看路,有人为了搞懂一个bug,连续三天泡在GitHub上翻issue;有人为了提升编程能力,加入线上的开源项目,从“看代码”到“改代码”,再到“提交PR”,他们没有实验室,就把自己的电脑当实验室;没有导师,就把技术社区的网友当导师。

代码里的“人间烟火”

有人说,“网课码农”学的是冰冷的代码,但他们却在代码里种出了温暖的人间烟火,去年疫情期间,小林看到一个求助信息:社区里的独居老人不会用智能手机买菜,他想起自己学过的爬虫技术,花了三天时间写了个“便民菜篮”小程序——自动对接附近超市的库存,用语音导航教老人操作,还支持一键拨打电话求助。

“当第一个老人打电话来说‘小伙子,这个小程序真好用’时,我突然觉得,代码不是冰冷的。”小林说,后来,他把小程序开源了,全国有20多个城市的开发者联系他,一起优化功能,这个小程序已经帮助3000多位老人解决了买菜难题