字节97年前端:大四接触开源,毕业即成框架核心开发者
类型系统在前端领域曾经是存在感很低的概念,而随着 TypeScript 语言的兴起和流行,类型系统逐步进入前端开发者的视野,它所带来的错误检测能力、抽象能力和安全方面的提升正是现代 Web 开发所迫切需要的。
然而 TypeScript 的出现并没有解决所有场景下的类型安全问题,在 HTTP 请求、RPC、跨端接口调用等等场景中,依然会遇到无法做到类型安全的情况。
为此,知乎知名前端专家工业聚开发了一个类型友好的函数式风格 Node.js Web 框架 Farrow。该框架致力于解决服务器端开发时的类型安全问题和客户端与服务器端的类型同步问题,提供一种基于 TypeScript 实现端到端类型安全的方案。
来自字节跳动 Web Infra 团队的前端工程师马天琦是 Farrow 项目的核心贡献者之一,97 年出生的他在校园时期就开始关注开源社区,通过为开源项目贡献代码来提升自己的开发技能,并在毕业后不久就成为了 Farrow 框架的核心贡献者。我们联系到了这位年轻有为的开源贡献者,希望能从他的身上找到一些适合年轻人学习的成长经验。
01
请给大家尽量详细地介绍一下自己吧!
答:我叫马天琦,毕业于东北大学软件工程专业,目前在字节跳动 Web Infra 团队。平时的话,碎片时间可能会打打游戏、听听歌、看看电影,然后如果有比较长的空闲时间,会出门拍拍照。
02
国内像你这个年纪就成为开源项目核心开发者的人并不多见,尤其是这种底层项目,您是从什么时候开始接触开源社区并参与开源贡献的?又是如何一步步成为 Farrow 框架的核心开发者的呢?
答:开始接触开源社区的话,应该是大四的时候,也是工业聚大大带入门,当时是用 TS 重构了 react-imvc,之后才开始关注开源社区,然后做一些小的贡献。
Farrow 的出现其实是我们团队在 TypeScript + GraphQL 实践中遇到了一些问题,但发现 GraphQL 除了带来了一些好处,也带来了一些问题,之后我们结合当前有的 Node.js Web 框架和相关技术栈,想去探索一个基于 TypeScript 的最佳实践,但在当时的状态下没有找到,然后工业聚大大就开始了 Farrow 的探索。在探索 Farrow 的过程中,我是最开始使用它,然后向工业聚反馈使用体验,在使用过程中遇到了问题,有时候我尝试自己去解决它们,从而参与了 Farrow 的开发。
03
结合你自身的经验来看,对于在校学生或刚刚毕业不久的年轻开发者来说,可以通过哪些方式来提升自己的编程技术,才能达到能够为重要开源项目贡献代码的程度?
答:结合我的个人经历来看,如果想为开源项目贡献代码,最好的是伴随开源项目一起成长,当然这样的机会不是很多。其他的方式的话,我觉得“以点破面”会是比较好的方式,找到自己喜欢的开源项目,然后从中找到不是主要维护者关注的但你比较感兴趣地方,然后去研究、提升它,这是需要耐心的,次数多了之后就有机会了解到这个项目的其他方面,从而有机会参与更多的贡献。
04
如何看待 TypeScript 的发展趋势,它已经成为前端开发者必须掌握的语言了吗?
答:目前看来,至少在开源社区使用的项目应该会越来越多,如果比较关注开源项目的同学,是很有必要掌握的,毕竟学习成本也不会很大。
05
最后不妨再给大家介绍一下 Farrow 吧。
答:大家是否尝试过使用 TypeScript 开发 Node.js Web 应用,相同的类型需要在多个地方定义和丑陋的 as 会困扰着你,这也失去了 TypeScript 类型系统的优势。Farrow 致力于解决服务器端开发时的类型安全问题和客户端和服务器端的类型同步问题,提供一种基于 TypeScript 实现端到端类型安全的方案。
今年 7 月,马天琦将作为全球开源技术峰会 GOTC 的“大前端”分论坛演讲嘉宾,为大家带来主题为“探索类型友好的 Node.js Web 框架”的演讲。作为该分论坛出品人贺师俊老师力荐的前端新星,马天琦将为大家分享 Farrow 框架的技术理念与 TypeScript 语言在前端领域的发展趋势。
全球开源技术峰会(the global opensource technology conference, GOTC)是由开源中国社区联合 Linux 基金会发起的,面向全球开发者的一场盛大开源技术盛宴。峰会将携头部开源公司和顶级开源项目一起亮相,覆盖云原生、人工智能、物联网、区块链、大前端、音视频、安全、操作系统、数据库、开源治理等多个技术领域,在为期 2 天的时间里,为开发者带来全球最新、最纯粹的开源技术,同时传播开源文化和理念,推动开源生态的发展和建设。
GOTC 全程聚焦“开源”,主办方联合国际知名开源软件基金会,致力于将其打造为一年一度的世界级开源技术盛会。
详情请查看 GOTC 官方网站:
2021-05-29
2021-05-28
2021-05-27