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