The Explanation Company 正在招聘一名首席工程师,在我们聘请专门的 SRE 之前,他也可以担任站点可靠性工程师。我们是一个小团队,所以我们聘请可以扮演多个角色的人很重要。我们正在寻找在规模规划、诊断性能问题和站点安全方面具有丰富经验的人,同时仍然能够为新功能和新功能贡献代码。在适当的时候进行重构。我们的后端语言是 Ruby on Rails,因此我们正在寻找具有这种经验的人,但部分扩展可能是用其他语言实现关键功能。这是加入完全远程团队的远程角色。
我们正在为儿童构建一个互联网应用程序,使他们能够与朋友进行视频通话和搜索网络。世界上有十亿儿童现在拥有互联网设备和现有的通信和网络。浏览器应用程序不适合孩子。这是一个与经验丰富的团队一起从头开始扩展新视频通话应用程序的机会,他们知道如何构建令人惊叹的产品。您将在我们的产品越来越受到用户欢迎的有趣时刻加入,随着规模的扩大,我们开始经历成长的痛苦。
关于工作
在此职位上,您将与其他三位高级工程师一起使用 React Native 构建一个移动应用程序,其中包含一个重型服务器组件(在轨)。这三位工程师都拥有丰富的全栈产品工程师经验,从事 Web 和移动开发工作。我们的工程师拥有组织良好的代码、稳固的持续集成管道,并且注意缓慢的查询和过多的 API 调用。您不会陷入需要清理的混乱之中。相反,我们正在寻求向团队中添加可以帮助进行下一层性能优化和可靠性的人。在此职位上,您将带头诊断数据库中的争用问题,优化 HTTP 请求路由以避免请求排队,并制定故障转移策略以避免可用性区域出现故障时停机。
您工作的很大一部分是考虑并减轻所有可能出错的事情,以便我们的系统操作尽可能保持无聊。我们知道,让系统正常运行是一项具有挑战性的工作,可以从该领域的深厚经验中受益。
部分工作包括随时待命,对于那些我们没有预料到的事情发生的时候。通过良好的计划,您很少会在半夜醒来。但是我们产品的使用高峰期是在晚上和周末,所以当我们确实遇到问题时,它们通常会在这些时间出现。对于这个角色,重要的是你的工作时间可以根据我们正在发生的事情灵活调整,并且你可以经常关注事情,即使在下班时也是如此。对于需要高度规律的工作时间并且想在下班时完全拔掉电源的人来说,这不是一个好角色。我们将努力保持领先一步,但如果一切顺利,就会有忙碌的时候。
让您更清楚地了解这份工作可能需要做什么,我们的服务器后端是一个使用 Rails 的纯 API Ruby 应用程序。我们的前端是使用 Typescript 和 Expo 库的 React Native。我们目前使用 Postgres 和 Redis 托管在 Heroku 上。我们将 Docker 用于关键系统,例如我们的 GitHub Actions CI 管道。
以下是我们在不久的将来优先处理的工作的真实示例:
- 深入研究 NewRelic(或你的首选工具)来制定一个计划,将 95% 的 API 调用保持在 500 毫秒以内,并将我们 99% 的 API 调用保持在 1 秒以内。此外,深入了解异常值及其发生原因。
- 弄清楚为什么我们的一些查询偶尔需要很长时间才能返回,即使它们在 99% 的时间里都很快并且我们已经涵盖了所有基础知识(例如用于确认索引的 SQL EXPLAIN、确认索引已加载到 ram 中以及没有表锁)。
- 评估我们的视频通话和短信 API 提供商的能力以确认他们可以满足我们的容量需求、可靠性目标,并且我们开始将它们纳入我们的容量规划。
- 制定一个计划,将我们的流量分散到多个区域,例如考虑主-主 Postgresql 设置。
- 决定何时迁移到我们控制的本地服务器以避免在云中构建的一些复杂性。
- 重构我们的移动推送通知以包含有效负载数据以减少 API我们对服务器的调用。目前,我们向用户发送推送通知,他们打开我们的应用程序,我们查询我们的服务器以检索数据。这是一个任务示例,它会涉及后端 Rails、前端 React Native 代码以接收推送有效负载并主动更新前端数据存储。
- 设计并实施用于发送批次的内部库SMS 消息。我们需要定期向大量人群发送群发消息。这将在 Rails 中实现,最有可能在用于队列的 Sidekiq 和用于消息历史记录的 Postgresql 之上。我们还需要一个内部接口供应用程序的其他部分发送 &启用对一次性短信的回复作为一种交互式体验。例如,孩子们可能会在应用程序中采取行动,我们给他们的父母发短信说,“Jonny 想进行视频通话 X,如果可以,请回复是吗?”
关于您
您从事这项工作已有一段时间了。在您多年的职业生涯中,您一直专注于编程,负责将新产品付诸实践的各个方面。您熟悉 Rails 框架、Ruby 以及全栈 Web 开发的各个层次:HTTP、HTML、JavaScript 和 CSS。您还对几个数据存储有很多经验。我们使用 Postgresql 和 Redis,但如果您的经验不同也没关系。您是善于使用新工具的人。
在您的职业生涯中,您也有多年主要专注于扩展系统并弄清楚如何解决旧的架构决策,这些决策是很难撤消。您已经完成了基本的负载测试和安全审计,并且知道何时引入更有经验的人员。您可以轻松地从头开始设置专用服务器并在生产环境中对其进行管理。
您可以轻松地进行远程工作,因为这是一个远程角色。我们的六人团队分布在美国和加拿大的 4 个时区。为了确保时区与我们的团队重叠,我们正在寻找在美国大陆或加拿大工作的人。
你是一个善于沟通的人。你擅长与队友口头讨论问题,解释一个复杂的想法。您还是一位清晰简洁的作者,无论是在长篇提案还是在代码中。
公司
The Explanation Company 着手应对一项重大挑战:我们正在为儿童构建缺失的互联网工具。作为一个成年人,很容易理所当然地认为,每当你想知道某事或想问朋友一个问题时,你都会拿出手机并在几秒钟内得到答案。 10 岁及以下的儿童已被此问题抛在后面,我们将解决此问题。我们让孩子们能够独立查找他们感兴趣的任何内容并独立地与朋友交流。
我们是一家资金雄厚的初创公司,由最好的投资基金之一,所以我们有足够的跑道来实现这一目标,但我们在建立团队和塑造我们的文化方面处于早期阶段。
我们的文化节奏很快,专注于把事情做好。我们制定大计划,确定这些计划中的核心假设,然后迅速采取小步骤来尝试和验证这些假设。我们拥有的小团队需要完成的工作量有点疯狂,所以我们必须找到聪明的捷径来完成这项工作。如果您正在寻找工作与生活的平衡,那么这里不合适。在这个早期阶段,您的责任范围很大,但这也意味着事情会在零星时间出现,而您将成为这些事情的首选人选。
在我们的文化中,工作的乐趣来自于与才华横溢的同事一起解决难题。如果您的核心动机是“致力于对世界有益的事情”,那么这里不适合您。那不是我们的镜头,所以最好找一家教育或医疗保健初创公司。我们是一家引以为豪的营利性公司,但我们的心态非常长远。我们的目标是尽可能多地接触儿童,同时在此过程中产生稳健的收入并建立伟大的业务,这是我们实现影响最大化的手段。
您可以希望找到信任你和支持你的队友,这样你才能把工作做到最好。无论是专注于长期项目还是出现临时请求,您都将获得高度自主权,并有望解决问题。
As一个团队,我们渴望了解我们不了解的事情。我们挑战彼此的想法,但我们这样做是恭敬的。我们倾向于采取行动,所以我们会很快尝试一个想法,而不是花太多时间抽象地讨论它。我们感谢有强烈意见并分享这些意见的人,但我们也承诺在做出决定后继续前进,即使每个人都不同意。作为一家公司,我们避免在内部进行政治对话,也不公开参与政治,除非与我们的业务直接相关。我们正在寻找团队成员,他们在这里致力于为孩子们打造出色的产品,并且在工作场所之外倡导社会变革。
< strong>团队
一些重要同事的背景介绍:
Keith Schacht,我们的首席执行官
Keith 是 Mystery Science 的联合创始人兼首席执行官,该公司于 2020 年出售给 Discovery Education。在此之前,他是一名产品经理在 Facebook,首先领导 News Feed,然后领导 Messenger。 Keith 是一位经验丰富的企业家,曾为多家公司创办和退出。作为同事,他是一名参与许多关键架构决策的工程师,偶尔也会以设计师和增长黑客的身份介入。
David Vinca,我们的总裁< /em>
David 领导公司的运营。他之前是 eSpark Learning 的创始人兼首席执行官,这是一家帮助小学生学习阅读和数学的软件公司。 eSpark 发展到为美国每 4 所小学中的 1 所提供服务。在此之前,他是一名管理顾问。 David 有两个孩子,Devin 和 Nyla,他们热衷于使用公司的产品。
Anand Chhatpar,我们的创始工程师
< div>Anand 是一名全栈产品工程师。他之前在 Mystery Science 担任增长负责人。在那里,他在制定公司获取客户战略的核心方面发挥了重要作用,这有助于它成为全国学校使用最广泛的科学资源。在加入 Mystery 之前,Anand 创立了三家公司,其中包括一家拥有 2000 万用户的消费者应用程序公司。他是一名多面手工程师,具有快速解决问题和寻找创新产品传播方式的特殊才能。
Nick也是一名全栈产品工程师,专攻移动端。他之前创立了一家公司,开发了一系列 iOS 和 Android 应用程序,获得了超过一百万的安装量。他还是 Brightcove 的早期工程师,具有视频和音频方面的经验。 Nick 有很强的产品意识,并且有自己的小孩,他对孩子有很好的校准。