当前位置: 技术文章>> 我作为软件开发人员的前几个月心得与体会

文章标题:我作为软件开发人员的前几个月心得与体会
  • 文章分类: 后端
  • 11477 阅读

我决定写的大部分内容都是由我认为我想阅读或被告知的内容驱动的。反思和收获是本博客所有内容的共同主题。这篇文章也不例外,也是我一直在考虑的事情。

挑选一些课程并将它们标记为最重要的课程并不容易,尤其是当您的第一份工作每天都会向您抛出新东西时。尽管如此,这是我试图浓缩所有这些信息,并提供我们在开始第一个软件角色之前不太可能听到的事情的一瞥。

测试:单元、集成和数以百万计的其他

编写代码只是冰山一角。还有很多其他的东西伴随着它。在DevOps和越来越多的跨职能角色和团队的世界里,你将花费大量时间(有时是令人讨厌的大量时间)来监控构建、应用程序运行状况以及本节的主题:编写测试。

并不是说我们中的许多人不知道这个概念,或者我们没想到会这样做;我们只是没有意识到这是一个多么恒定的过程,以及它有时是多么令人惊讶的混乱。

以下是您应该知道的一些事项

有许多不同类型的测试,但每个软件开发人员最终可能会编写一些常见的测试,包括单元测试、集成测试和验收测试。在不赘述细节的情况下,每个类分别测试一个类、多个类和完整的端到端应用程序。过度简化:您单独测试应用程序的每个部分,然后将它们放在一起并确保它也能正常工作。

理想情况下,编写测试本身并不是一项任务;相反,它是每项任务的关键部分。当你编写一段代码时,你也应该为它编写测试。

代码库质量的一个重要衡量标准是测试“覆盖率”。它表示至少一个测试覆盖了代码库的百分比。如果测试未涵盖您引入的新代码段,则您的拉取请求 (PR) 可能不会合并。或者,如果总体覆盖率低于阈值。这种检查大多是自动化的,例如以声纳门的形式。底线:这不是你通常可以扭动的东西!

撇开所有笑话不谈,测试在一天结束时确实起到了重要的作用,这解释了对它们的重视。特别是从初学者软件开发人员的角度来看,它让你重新思考你编写的代码,它应该让你评估诸如

这个功能的核心目的是什么

有没有更好的方法可以做到这一点

如何处理和测试边缘情况?

对于那些在大学里来自非 CS 背景的人,或者没有将其作为课程的一部分,您可能想阅读基础知识。

Git:不熟悉的部分

Git 和 VCS(版本控制系统)是不费吹灰之力的。每个人都知道这一点,与编写测试不同,这是我们大多数人在大学或从事个人项目时都接触过的东西。

不过,本节重点介绍在小型团队中工作时较少使用的 Git 部分,但在作为大型组织的一部分工作时,这些部分会成为日常工作中必不可少的方面。但是,请注意,这些是我的首选,最能帮助您进入第一个角色,并且您可以学到更多。

藏匿

当你意识到你需要对另一个分支的 PR 进行一两个快速评论时,你正在对一个分支进行更改。那么,如何在切换分支之前按下暂停键并保存更改呢?到目前为止,提交更改可能不是最佳选择,因为您不希望在提交历史记录中显示半成品代码存根。这很简单:只需隐藏您的更改即可。

git stash

当你想把它拿回来时

git stash pop

创建/应用修补程序

这个相当常见,但仍然值得一提。如果您要复制粘贴整个文件以与队友共享最新更改,请不要这样做。有一个概念是为此创建一个 Git 补丁。它会捕获您的更改。

不要让你对键盘和终端的热爱阻止你使用 IDE 的 UI(尤其是 IntelliJ)提供的快速 Git 操作。有时,这可能是完成某事的最快、最干净的方式。

cherry-pick

假设您想有选择地选择不同分支上的提交,并将它们应用于另一个分支。拉取更改并不是 git 提供的全部!

虽然期望使用和熟悉所有这些功能是不合理的,但至少将 Git 用于一些项目(您与团队的宠物项目,或者更好的是,在黑客马拉松中),并尝试它的许多功能可能会很好。

历史

唾手可得的果实,但尝试检查分支上的 git 历史记录/日志,并可能跟踪提交。

git log

CI/CD、生命周期和部署工具

正如我之前提到的,编码只是你最终必须做的事情的一部分。人们非常重视编写代码,大多数人都在DSA上狂热地在编码面试中取得好成绩。虽然这没关系,但我认为了解实际软件开发所需的其他事情也很好:一个主要主题是 CI/CD(持续集成、持续交付和部署)和常用工具。同样,没有必要使用这些来积累经验,但最好阅读一下它们。

说到实际的开发,没有什么比黑客马拉松更能让我做好准备的了。我鼓励每个有抱负的开发人员,或者任何想从事技术工作的人,在大学期间至少参加一次。(不同帖子的素材?

建立人脉,寻求帮助

与我之前谈到的技术部分不同,但我只需要把它放在这里。

这不仅仅是霍格沃茨,在大多数地方都是如此。大声说出来,不要回避问你可能有的问题——你应该有很多问题。这是学习和融入文化的最简单方法。如果您担心被评判,请不要这样做。大多数人都非常乐于助人,坐着妈妈比问很多问题要多得多。话虽如此,自学和探索内部文档和内容同样重要。

寻求帮助,但也要求指向文档/有用的存储库/内部网站和内容的方向,这样您就可以继续自己学习,这是一种两全其美的方法。

网络,你可能已经读过很多遍了。我了解到,有效的网络可以改变你在公司内如何看待自己,以及其他人如何看待你。

在软件工程这样的角色中,很容易错过 Scrum 团队之外的互动,但通过这些互动可以获得很多好处。

与来自不同角色、经验水平和地区的不同人谈。

活动和比赛是一个很好的起点。(此外,它们很有趣;加上谁不喜欢在:)中奖)

如果有机会进行面对面的互动,请抓住它。我自己就是一个双面性格的人,很多社交互动并不是我一直喜欢的事情,但每隔一段时间就会有很多有趣的对话,错过会很可惜。