“他们没有教我们这一点”:您的第一份软件速成班

发布于:2020-12-31 11:44:00

0

94

0

编程 初学者 职业建议 第一份工作

当新的Web开发人员开始他们的第一份工作时,会发生一种奇怪的现象。您刚刚获得CS学位或从训练营毕业,并且花了数月或数年的时间学习编写高效的代码,练习面试和构建项目组合项目。最终,您接受了一个要约,并感到很兴奋⁠–您现在是一名Software Engineer™。您在第一天就进去了,抬起头来。然后,在您工作的第一周,对您的了解就变得微乎其微。

在寻求成为开发人员的过程中,您已经学会编写高性能,优雅的代码,可以解决任何定义明确的问题。但是,为了有效地支持和扩展Web应用程序,您需要了解工具,框架和工作流,这些文件,框架和工作流使您的团队可以协作并部署实时(“生产”)应用程序。

在学习或从事个人项目时,这些技能很难掌握,并且在训练营或CS程序中通常不会扩展。不用担心!本文将作为速成课程,内容涉及您在成为第一份工作以成功成为一名开发人员时需要知道的许多事情-除了实际编写代码之外。

原因:从个人项目到产品代码

在处理个人或项目组合项目时,您可能已经部署并维护了代码。那么,推动更改您的个人项目与为DoLitter(您刚刚加入的快速增长的新小猫垃圾交付启动公司)的代码库做出贡献之间有什么区别?

用户负载:来自世界各地的数百甚至数千用户都可以同时访问DoLitter。停机可能会使公司每分钟损失数百美元的订单,破坏品牌并激怒现有客户。

规模:DoLitter是一项强大的服务,提供面向消费者的应用程序,用于移动和本地应用程序的API,以及与行业中其他主要参与者的集成。随着团队和代码库的增长,需要对代码进行良好的结构化和文档化,以便其他开发人员能够有效地做出贡献。在对用户进行任何更改之前,需要在尽可能接近生产的环境中对其进行全面测试,以确保它不会妨碍现有功能并可以在多个设备上正常工作。

安全性: DoLitter是受惠于国际隐私法像GDPR,并与大型企业的合作伙伴,其遵循的作品严格的规则如何围绕他们的用户数据必须被处理。如果有任何问题,您将需要监视软件以尽快发现漏洞或数据泄露,并需要强大的服务器日志记录以准确地查明出了什么问题。

辅助功能:并非所有DoLitter用户都具有相同的视觉,听觉和运动能力,并且可以将DoLitter与屏幕阅读器等辅助设备一起使用。遵循诸如Web内容可访问性指南之类的标准,所有用户都可以平等地访问该应用程序,这一点至关重要。

可靠性:用户-尤其是付费用户-始终希望网站正常运行,可访问且安全。DoLitter需要安全地存储业务数据并定期对其进行备份,以便例如在一台数据库服务器崩溃时,您可以从另一台数据库服务器快速恢复数据。

沟通:要实现我们到目前为止概述的目标,需要与其他开发人员,设计师和产品经理合作。您可以自己设计,编码和支持个人项目。但是,在DoLitter,您不能独自完成所有事情⁠,而您的同事是您的最佳支持!学会与其他开发人员进行有效沟通,如何寻求和提供帮助以及如何委派工作,这些都是与一个大型团队合作的必不可少的(也是最有意义的)方面。这是构成整个基础的关键主题其他文章!

方法:通过流程旅行

那么开发团队如何满足所有这些崇高要求?拥有大量的工具和流程!让我们讨论一下如何对个人项目进行更改与将项目推送到DoLitter代码库所涉及的所有过程之间的区别。

根据团队和代码库的规模,您的工作场所可能不会使用所有这些工具,或者可能会使用更多的细分工具。不必担心记住所有名称和缩写。关注每个工具试图解决的问题,如果您经常看到该工具,请确保对其进行进一步研究。

Git工作流程

如果代码是您对软件进行更改的方式,那么如何跟踪和共享您的工作就可以使用git之类的版本控制系统(以及诸如Mercurial和SVN等不太受欢迎的替代品)。当您处理自己的项目时,git可以是一个有用的工具,可以还原到以前的代码版本或与他人共享您的代码。但是,在DoLitter,其功率得到了极大的放大。

使用git(及其紧密相关的Web界面,如GitHub和GitLab),您可以共享部分工作,检查代码,查看其他开发人员正在从事的工作,将您的工作与其他开发人员合并,甚至查看个人提交。当多个人处理(并提交)同一文件时,Git还可以帮助合并更改并解决冲突。所有这些都有助于DoLitter确保您贡献从同事环境中受益的高质量代码。 

对代码更改有信心后,您可以提交拉取请求(您希望对代码库做出的更改),新代码将由团队的几位成员进行审核。⁠有时,同事们具有特定的领域知识或重点,有时还会有人愿意看看。

在学习时,您可能已经在git中遇到了三个主要活动:推送,拉动和提交代码。在工作中,您需要适应以下情况:

  • 创建描述新功能或工作范围的分支

  • 提交引入请求(“永久居民”),为你的本地修改被拉到到中央,或“主”资源库

  • 解决几个工程师对同一代码进行更改时的合并冲突

  • 通过确保描述性和准确的提交来维护干净的git历史 

  • 重订,以合并是一个常见的替代有助于保持清洁,线性项目历史

  • cherry-picking,它允许您在分支之间移动提交

  • blaming,它显示了您之前接触过您正在使用的代码的人。听起来可能是指责,但事实并非如此。它在那里,所以您知道谁在请求上下文,而不是指责。

了解git将使您更轻松地保存,操作,共享和查看所编写的代码。适应它,您会发现它更容易协作。

测试,分期和制作,哦,天哪!

在个人项目上,您通常可以将代码直接投入生产中-您的七个用户非常容忍错误(谢谢,妈妈!)。但是,DoLitter使用几种不同的编程环境来帮助您快速编写代码,有效测试并自信地部署代码。例如,在代码上线之前,最好在与用户看到的环境相似的环境中使用它。

您可以通过推送到“暂存环境”来完成此操作。生产环境的仅供内部使用的克隆,用于复制用户将获得的体验。然后,如果您的代码已通过自动化测试和内部审核,则可以将其合并到生产中。为了跟踪不同环境的不同需求,DoLitter具有显式配置,存储在配置文件中。

在将代码上传到生产服务器后,通常会对其进行最后的构建过程。然后,瞧瞧!您的更改已生效。但是,您是否想知道在部署过程中到底会发生什么?

部署过程

尽管您仍然可以在Firebase上部署 您的个人项目,但DoLitter需要确保推送到生产中的更改(“产品”)是铁定的,并且不会破坏任何内容。您的团队一天可能部署几次,或者每当将新更改合并到master分支中之后,就按照称为“持续集成”的过程进行部署。该过程可由CircleCI等持续集成工具管理。

那么,在部署期间究竟发生了什么?首先,您一直在本地“开发”环境中工作,这使您能够几乎立即看到更改。但是,部署到生产环境的文件通常不是您在本地计算机上使用的确切文件。

  1. 您使用的文件被捆绑在一起,被编译为另一种语言,并通过去除空格和缩短变量名来缩小它们。

  2. 一套单一单元测试和复合集成测试会在您的代码上运行,以确保没有明显的语法或逻辑错误。

  3. 诸如CodeClimate之类的其他工具可以衡量您的代码质量(通过分析语法以获取最佳实践),而其他工具则可以检查外观变化,对构建进行负载测试以确保它能够处理大量用户,甚至衡量性能。

  4. 如果您的代码通过了所有测试,则构建成功,并且您可以向用户显示该应用程序的版本。

错误监控

您的代码是实时的。是时候看看它在生产中的表现了。代码投入生产后,将有许多平台可以告诉您代码的运行情况。诸如Airbrake或Sentry之类的工具可帮助您发现应用程序在生产中遇到的错误,这些错误可能由于以下原因而发生:

  • 错误的第三方连接,例如与您交谈的API超时

  • 数据不一致 

  • 测试未发现的极端情况下的逻辑错误

此外,诸如Datadog和NewRelic之类的监控工具还专注于实时应用程序性能。他们跟踪您的网站需要多长时间来响应请求,甚至跟踪代码中需要加载最长时间的区域。有时,代码不会引发任何错误,但是运行缓慢。性能监视可以帮助您找出问题所在。最后,如果确实出现错误,则诸如PaperTrail之类的服务器日志记录工具可以帮助您查找错误。

哇,好多!

当您开始在生产规模的Web应用程序上工作时,您意识到作为一名开发人员,不仅要编写代码还有很多。学习新的代码库可能是一个挑战,但是学习行业工具和工作流程可能会令人生畏。许多新开发者觉得他们从了解某件事变成一无所知。这种经验很普遍,而且完全正常,但是随着您习惯公司使用的工具和工作流程,它会变得更加容易。

您的第一份工作可能涉及大量工具和过程,这些过程和过程使编写代码像是事后的想法。请记住,您不仅被雇用来编写代码,还被雇用来维护和构建应用程序⁠。而有效地做到这一点涉及到掌握工具并学会理解他们所解决的问题。随着时间的流逝,您会发现自己编写了更健壮和有效的代码,并帮助DoLitter在世界各地可靠地运送小猫咪。