查看原文
其他

从 ByteDance 到 Bytebase

Zilong Bytebase 2022-05-27

笔者今年大四,有幸于今年分别在两家以 Byte 开头的「字节系」公司实习。由于学校需要开始准备毕设,不得不从深圳返回上海,也正是因为这个契机,让我发现了 Bytebase,一个不到 10 人的精品团队。



面试


和很多小伙伴一样,我经历了无敌多的面试才最终收获到了来自 ByteDance(下面就叫字节好了)的 offer。面试流程也基本上是老三样,上来先讲讲 CV,然后问问一些计算机「知识」,最后手刷一道 leetcode。字节我一共面了 2 个岗位,第一次很不幸倒在了第三轮,第二次总算是被 Tiktok 收了。
相较于华为,腾讯和阿里,字节算是给我的面试体验最好的一家公司,这可能得益于他们年轻化的团队和扁平化的管理模式。至少每一个节点我都能清楚知道我的流程,面试也会提前预约时间,我感觉我受到了对于被面试者基本的尊重。不像某些公司明显的 KPI 流程化的面试。


Bytebase 的面试比较清奇,上来先做一个时长约为一周小项目,面试就完全围绕这个项目进行,主要是问问你的设计,实现。完全不会涉及到任何具体的「知识」,比如 MySQL 中的 InnoDB 和 MyISAM 有什么区别,或者是如何实现行级锁。
第二轮面试更加清奇,在简单寒暄后,面试官:“要不你**************?”(为了避免泄题,此处省略 N 个字,想了解真相的小伙伴可以发送简历到 hr@bytebase.com 进行进一步探索)
虽然我不太清楚具体被考察了什么😂,但是感觉 Bytebase 的面试其实更贴合于一个本科实习生的真实水平,而并没有过分的要求一些与实际经验不符合,基本靠死记硬背能够完成的「知识」点。




工作氛围


字节的工作氛围其实是比较轻松的,这可能也得益于所在的团队刚成立不久。但是我个人感觉可能团队会有意识地把相对不太重要的工作放到实习生上做,导致我其实花了挺久才彻底弄懂业务上的整套代码框架以及具体的业务场景。
Bytebase 的氛围其实更加轻松,完全没有任何 gap,有什么问题可以随时提出来。在这里我分配到了一些涉及到比较核心的功能,实际上对理解整个项目和框架有很大帮助。
更重要的是,在字节几乎没有 code review,或者形同虚设,是要基本功能实现了,并且通过了自测,大概率就可以直接合码。但在 Bytebase,code review 十分重要,我们有清晰的 code review guide,可以看到每一条 PR 平均都有十几条从代码风格,功能实现,设计上各个维度的 comments。




团队文化


我觉得有一点是字节和 Bytebase 同样看中的,那就是扁平,和提倡自驱。作为开发Bug 实习生,在两边我都被给予了最大程度的宽容。
但就观察而言,虽然不太清楚 Bytebase 远程同学的工作状态,但是整体而言没有 996,会根据能力来制定合理的计划。在字节实习的几个月里,除了做核酸和偶尔几次家里有点事情,下班基本已是月黑风高。并且正式员工基本上没有早于10点离开的(虽然第二天也基本上没有早于10点到的)。




开发生态



字节拥有一套高度自研的系统,涵盖了几乎开发的全部流程。在日常的开发中,大多数时间其实是和自己人打交道,比如要对接某某系统,可以很快捷地直接从飞书上找到该项目的对接人。
在 Bytebase,由于我们是一个在 GitHub 上的开源项目,日常开发中便免不了和开源社区打交道,比如我们利用了 Render 来实现自动化部署和 PR 级别的预发,接入了 GitPod 来实现在线预览,免除了本地环境的苦恼,还和 GitLab 进行了深度集成。不过 Bytebase 有一样和字节是相同的,用的也是字节出品的飞书。




工作内容


在字节,虽然有一个 mentor 进行指导,但我个人感觉大部分时间还是自闭的。主要是闷头实现分配的功能,然后在线下环境测试,测试完如果涉及到对接其他的同学,则可能进行联调,最后没问题发起一个 PR。
Bytebase 的话,这个可就说来话长了,可能得分日常开发和写作两个方面来讲一讲...


日常开发

事情起源于 GitHub 上的一个 Issue,有人希望能够通过 GitLab 账号进行无缝登录。于是便开始了漫长的 PR 之旅 ... (help wanted 的标签是后加的,是不是透出了那一丝丝的绝望)


首先自然是阅读 GitLab 给出的官方文档。在了解了 GitLab 支持的能力后,我采取的整合方式很简单:
  1. Bytebase 提供相关跳转界面,并通过 window event 拿到相关的返回值
  2. 利用上一步拿到的 Access Tocken 向用户配置的 GitLab Instance 直接拿当前用户的信息
  3. 将该信息和 Bytebase 用户表进行比较,若不存在则创建,存在则直接登录
虽然好像看起来很简单,只有三步。但是事后看了看,改的文件竟然有 22 个之多!收到了 50 余条comments!于是,虽然一两天就实现了这个主要流程,各个细节的不断打磨让这个功能足足一周才正式上线。

猜猜这个界面被改了几次才上线

在做完了登录后,下一步是进一步关联 GitLab 中的 Role 权限,这个功能也还没有正式上线,虽然已经基本开发完毕,目前 PR 正在被惨烈毒打的阶段中(wish me luck)。

文章写作

在 Bytebase 还有一个与众不同的地方,就是鼓励技术写作。
我们也利用了飞书的订阅号功能,在入职时会给每人开一个个人号,大家都会分享各种内容,比如有的同学分享了从北京到大理的工作变化,或者是 vue 国际化的相关知识。


除此之外,在完成一些大的功能,特别是整合了一些第三方服务后,一篇文章自然是少不了的。比如我在把我们的自动化部署接入 Render 后,便写了一篇 《How Bytebase uses render》 。
随后,这篇文章被我们的社区同学转给了 Render,Render 那边受到了启发,计划要加开一个新的板块。


结语


十分幸运,人生的的第一份工作来自于字节,为一款深入人心的产品做出了一些微小的贡献。在这里,我体会到了企业级的开发平台,相较而言,在学校写的课程项目就像是过家家。

更幸运的是,人生的第二份工作来自于 Bytebase,让我对开源社区有了进一步了解。每一次代码的编写都像是对一件艺术品的打磨。

字节在为每个员工准备的入职礼包里有一个小本子,封面上有一个大大的 Day 1,翻开来的第一页有一个醒目的标语:Always Day 1。其实,从 Bytebase 的第一行代码到现在也已近一年。但每一次 PR ,每一次功能的实现并没有因时间和工程量的日益增长而忽视了质量,想必也正是为着 Bytebase 的 Day 1:一个开源的开发者工具而努力。


希望我也能常怀 Day 1 去迎接未来的每一件事,无论大小。




Bytebase.com 是一款聚焦在团队协作场景下数据库结构变更和版本管理(database schema change and version control for teams)的开源工具,主要解决研发工程师和 DBA(数据库管理员)在变更数据库结构时的协同问题


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存