今年夏天,我开始了我的第一个实习。从学校过渡到工作场所肯定是一种文化冲击,但我通常以自己是一个快速学习者而自豪。在红帽公司,作为一名系统管理实习生,我在第一周就学到了很多东西。
我了解到开源不仅仅是一个用来描述某些模糊的编码社区的词汇。我学会了如何正确使用 git,如何编写 Go 代码,以及如何高效地浏览 Linux 开发环境。我了解到软件工程师喜欢从什锦好时巧克力袋子里挑出黑巧克力棒,只留下不太受欢迎的好时先生和克拉克巧克力棒。
我学到了很多东西,以至于我有点不好意思回顾我在工作第一周时在 Google 上的一些搜索记录
- vi 如何使用
- linux control r
- curl 命令
- 如何使用指针
- chattr
- git rebase
但是,我们都从某个地方开始。
今年夏天,我所在的团队开发了 Project Atomic,这是一个旨在运行容器的轻量级操作系统。Atomic 由一个名为 OSTree 的强大工具驱动,OSTree 由我的导师 Colin Walters 开发,并被描述为“操作系统的 git”,因为它本质上允许操作系统部署之间的原子升级和回滚。在最初的几周内,我为 rpm-ostree 开发了一个新命令,该程序将 OSTree 与 rpm 处理集成在一起。在为每个 OSTree 命令编写了手册页之后,我对该结构有了足够的理解,可以开始新的项目,为系统管理员的这些程序添加功能。
随着每个新项目、每个推送到 git 的新补丁,都有一种压倒性的满足感。我已经看到我的三个功能被合并到程序中,准备用于下一个版本。做一些我知道会产生真正影响的事情感觉很棒。我从很多朋友那里听到了关于他们(技术)实习的不同故事;他们感到沮丧,因为他们没有被当作真正的员工对待,他们没有得到任何责任,或者他们觉得自己的意见没有被听到。我在红帽公司从未有过这种感觉。我在我们的冲刺团队中拥有发言权,开源的美妙之处在于,如果你认为有什么需要改变,你就有权力和自由去改变它。
我的两个补丁实际上从未分配给我;我只是开始做它们,因为我正在使用该系统并思考:“伙计,如果我有一个工具来做……,这会容易得多。”那里的文化支持和鼓励这种行为,允许自主性并信任你对你认为可能有用或必要的事情的判断。红帽公司是一个实习的好地方,因为我对软件工程工作真正像什么有了很多了解,包括好的方面和坏的方面。
我感受到了代码最终运行的胜利,补丁被合并到上游的自豪感,以及知道我在为有意义的事情做出贡献的简单快乐。另一方面,我感受到了等待代码编译的疲惫,代码明明什么都没改却停止运行的挫败感,以及突然意识到你追踪了两个小时的错误是由使用“==”比较两个字符串引起的,那种无法抑制的悲伤。
我确信的是,秋天回到学校后,我会变成一个不一样的人。我会成为那个用 Emacs 而不是 MS Word 做笔记的人。我会成为那个重新教同学们如何正确使用 git 进行协作项目的人。我会成为那个尽可能多地使用我的 Fedora 机器而不是学校发放的 Windows 构建版本的人。我会成为那个在那里倡导 F/OSS(自由及开源软件)的人。
1 条评论