2014年第一次实习时,我留下了一份很长的学习笔记。
里面有 Linux 命令、Nginx 配置、PHP 框架用法,也有版本管理、项目流程和数据库操作。许多内容只是从网页上复制下来的说明,有些命令今天已经不会再用。
当时并不知道什么最重要,所以几乎把遇到的一切都记了下来。
先让电脑能够工作
实习开始后的第一批任务,不是设计功能,而是安装系统、配置开发环境、拉取代码和启动项目。
这些事情在学校里很少被单独讨论。写程序时,环境通常已经准备好;到了公司,才知道代码能够运行依赖许多前置条件:软件版本、配置文件、数据库、域名解析和文件权限,任何一处不一致都可能让项目无法启动。
我在笔记里详细记录每一步操作。现在看起来有些机械,但它提供了一种确定感。第一次进入陌生环境,能够按照自己的记录再次把服务启动起来,就意味着开始具备独立工作的可能。
会写代码只是其中一部分
真正参与开发以后,我接触到需求、任务拆分、测试和上线。一个功能不再是写完能够运行就算结束,还需要符合团队规范,与已有代码协作,通过测试,并按约定流程发布。
我也是在那时第一次具体理解“软件工程”与个人编程的区别。
学校作业的边界通常很清楚,程序主要由自己负责。公司里的一个小改动,却可能依赖前端、数据库和其他接口,也可能影响已经在线使用的功能。代码质量不只是写得是否漂亮,还包括别人能否理解、出错后是否容易定位,以及修改时会不会破坏原有行为。
什么都记,是因为还没有判断标准
早期笔记里既有重要原理,也有随手就能查到的语法。它们没有清楚层级,基本按照遇到的顺序排列。
这不是一种高效的知识结构,却是初学阶段的真实状态。只有接触过足够多的问题,才逐渐知道哪些属于基础规律,哪些只是工具细节,哪些需要长期记住,哪些临时查询即可。
后来我的笔记开始按主题整理,也越来越少记录具体命令。不是记忆力变好了,而是判断发生了变化:能够知道一个问题大致位于哪里,需要时再找到资料。
第一份工作教会我的事
那段实习没有留下什么值得公开的复杂项目。更重要的变化是,我第一次知道职业开发者每天具体在做什么。
工作并不是不断写出新的程序。更多时候是在理解已有系统,按照团队方式完成有限改动,再确认改动没有带来额外问题。
这听起来并不特别,却构成了后来很多工作的基础。
如今再看那份笔记,我不会把其中的大部分技术内容迁入博客。它真正值得保留的,不是十年前某个框架的用法,而是一个刚进入行业的人,怎样从不会工作开始,逐渐找到自己的位置。