作为首批受益于新加坡政府科技局(GovTech)与新加坡理工学院(SP)合作的学生之一,我在最后一年的学习中,参与了为期一年的实习项目。回顾我的第一次实习经历,我很高兴地说这是一次非常有益的实习经历。

经历了一系列面试之后,我有幸成为我们年级中三位参与此实习项目的学生之一。作为受益于该项目的首批学生,我们被邀请参加在新加坡理工学院毕业生公会举行的签署仪式。

https://cdn.sanity.io/images/9poqf6md/production/f8010b9201d8127c6be322a33d4676ff84c57334-900x501.jpg

实习开始

我实习的第一天恰好是在世界卫生组织宣布新冠疫情为全球大流行病后的第五天。由于疫情,许多公司转向远程工作,包括GovTech。因此我在第一天与我的上司见面领取公司笔记本并进行简短介绍后,就开始了为期一年的远程实习。

主要收获

在实习期间,我有幸全面了解了软件工程的各个环节,包括基础设施和服务器管理,以及编写客户端和服务器端代码。

敏捷开发实践

我深入学习了项目管理和软件开发的“敏捷”方法,特别是Scrum框架。我参与并成功在“Sprints”中按时交付功能,同时从Scrum Master那里学习了如何主持“Sprint仪式”,如站立会议、Sprint计划、Sprint评审和Sprint回顾。

Gitflow与CI/CD流程

面对项目有计划的发布周期和DevOps的持续交付最佳实践,我熟悉了Gitflow工作流,它为不同的分支设定了明确的角色。此外,我学习了如何利用Teamcity实施CI/CD流程,包括设置自动化测试和合并分支的流水线。只有当开发分支通过所有测试后,它才会被自动合并到主分支,进行进一步的质量保证测试。

自动化工具应用

在实习期间,我掌握了Ansible和Terraform等软件和基础设施配置工具的使用。我利用Ansible自动化了开发者的入职安装和配置过程,显著减轻了团队对新入职开发者的支持负担。此外,我还结合了Ansible和Packer,自动化了TeamCity代理的Amazon Machine Image创建过程。我也利用Terraform来管理用于开发、持续集成和质量保证(QA)的服务器群,确保基础设施代码得到妥善管理。

DevOps

尽管我的主要身份是软件工程实习生,但我对DevOps领域的兴趣促使我深入参与其中。我参与了服务器的配置、Nginx和Apache等网络服务器的设置、服务器的补丁更新以及部署问题的解决。这些经验不仅增强了我的技能,还让我能够指导新开发者执行类似任务,并在日常工作中协助解决如SSH登录错误和TeamCity构建问题等技术难题。

https://cdn.sanity.io/images/9poqf6md/production/3327a8b8405d04e776175ebbab8a28e1f5b2d678-1785x1010.svg

回首整个实习过程,我深感这是一段充实而宝贵的经历。尽管突如其来的疫情打乱了我原本在办公室工作的计划,但我并未因此懈怠,而是积极寻找工作的机会,并不断在职学习,以充实自己的知识储备。这次实习让我深刻体会到,无论在何种环境下,保持学习和进取的心态都是至关重要的。

同时,这次经历也让我更加意识到紧跟行业趋势的重要性。在这个日新月异的时代,只有不断学习、掌握新的工具和技术,才能在竞争激烈的职场中立于不败之地。因此,我将继续努力学习,不断装备自己,以应对未来的挑战。

最重要的是,我能够参与服务公民的有意义的项目,这不仅让我感受到了自己的价值所在,也让我更加坚定了在软件工程和DevOps领域发展的决心。在实习期间,我积累了大量相关工作经验,不仅提升了自己的专业技能,也锻炼了团队协作和解决问题的能力。这些宝贵的经验将成为我未来职业生涯中不可或缺的财富。

展望未来,我将带着这次实习的收获和感悟,继续前行,不断探索、学习和成长。我相信,在不久的将来,我一定能够在软件工程和DevOps领域取得更加优异的成绩。