受到疫情影响,很多人仍然在家办公。这对于大家来说可能是新体验,而对于 Parity 员工来说,远程办公却是一个 “默认设定”。在这篇专访中,除了分享开发经验以外,开发者 Tomasz Drwięga 也分享了他远程办公的高效 “秘诀”。
Parity 老炮儿、核心开发者 Tomasz Drwięga 在 2016 年 1 月加入了 Parity ,他是 Parity 第 7 号员工(他指出是 007 号),见证了公司从 4 个在 Airbnb 写代码的开发者,迅速成长为今天拥有 78 人和多间办公室的公司。
Tomasz 最初致力于 EVM 实现,后来专注于 JSON-RPC 接口,用他的话说,就是 “将核心客户端、dapp 和外部开发人员粘合在一起的部分”。他还负责以太坊(Parity Ethereum)的交易池及其大部分出块代码。他目前正在指导新的以太坊(Parity Ethereum)贡献者和编写 Substrate,包括实现 RPC、交易池和链下工作机(off-chain workers)。
Tomasz 一直以来都是一个非常善良和乐于助人的人,因此我很高兴与他聊天,并了解他的更多故事。
你是怎么加入 Parity 的?
我在弗罗茨瓦夫(Wrocław)的联合办公空间里遇到了 Marek Kotewicz,那时一个共同朋友正在向我们俩介绍比特币。Marek 邀请我加入最初的开发团队,团队里只有 Gav、Arkadiy 和他。对我来说,这是改变生活的绝佳时机,用 Rust 来编写区块链听起来是一个了不起的机会。我们没有办公室,所以工作是在随便一家咖啡馆或静修期间进行的,这对我来说也是一种全新的体验。那是一段好玩的时光。
公司是如何发展的?
它成长了,成长了很多,而且成长得非常快。最初我们只有由 4 个开发者组成的团队,在随便找的 Airbnb 里开发以太坊客户端。而我们现在是一家拥有 75 名员工的公司,有很棒的办公室,同时做着着许多个区块链项目。然而(坦率地讲,这让我挺惊讶的)我们的文化至今还很相似 —— 我们仍然是一群极客,可以自由地以不受管理的方式,从事任何听起来有趣的事情。被公司吸引的人员的素质和专业水平,也是我从未见过的。
你将 Clint Eastwood 的照片用作头像。有什么故事吗?
好吧,我喜欢镖客三部曲和这位演员。而且这个角色也符合我的生活理念。我没那么多话,更喜欢采取行动,而且我不是那种很自负的人。我完全能接受当一个 “籍籍无名的人” ,但我仍在努力当个 “好人”。:)
你之前是 JavaScript 的背景,来 Parity 后才学习了 Rust,对吧?这个过渡感觉如何?
很难。即使我有其他语言和范例的经验(我之前学过 C ++ 、Prolog 和 Erlang,后来作为 Java 开发者开始了职业生涯),但学习 Rust 还是很困难的。最初,我的任务并不需要那么多 Rust 特有的功能,所以我感觉自己效率很高。但是,当我开始处理涉及更多线程的更多技术问题时,我陷入了危机时刻。我记得花了三周的时间为 Parity Ethereum 的第一个多线程版本的交易池工作,让 Rust 编译器教我编写并行程序代码。虽然当时我觉得自己效率低下,感到非常沮丧,但从长远的角度来看,这确实是一个很好的体验。
你讨论了以太坊的零知识新交易队列。能不能简要解释一下它是如何工作的?
当然可以。交易队列(或池)是我在 Parity Ethereum 代码库中的第一个任务,我感到非常惊讶,它是如此复杂,需要处理很多模棱两可的情况。
我们首先定义问题:网络中漂浮着大量交易云,而区块容量有限。任务是确定来自云的哪些交易可以放到区块中,又该以何种顺序排列。这听起来很简单,但我们还有其他目标和约束条件:我们希望最大化区块中的交易总费用,同时保留来自单个发件人(nonce)的交易顺序并避免 DoS 向量。此类问题的专业术语是 “多重约束背包问题”,众所周知,是很难找到最佳解决方案。幸运的是,我们可以使用一些简化的启发法,但是仍然有很多注意事项。
目前它在 Parity Ethereum 中是如何工作的:
我们维护每个发送者的预验证交易的现时顺序列表(因此我们知道每个发件人的优缺点);
我们维护每个发送者的最佳交易的 gas 价格排序列表;
每次我们要计算一个块中的交易顺序时,我们都通过从列表 2 中选取最佳交易,并将来自同一发送者的次佳交易添加到列表中来得出它。
这种动态构造使我们在插入时间(几乎恒定)与待定集合构造(发送者数量的对数)之间进行了很好的权衡。
鉴于以太坊网络的发展,以及我们过去观察到的大量交易,交易池的这些新属性变得尤为重要。
你希望更多人了解 Parity Ethereum 的哪方面?
我希望大家知道可以使用哪种日志记录来报告问题 :)。在大多数情况下,重现问题确实非常困难且耗时,并且带有(至少是部分)日志的错误报告对于识别问题有极大的帮助。(日志记录准则发布在新的模板 issue 中。)
在 Parity 远程工作是什么感觉?
远程工作可能会很困难,尤其是如果团队中的大多数人都集中在一个地方,而你被视为二等公民时。另外,如果沟通不畅,远程工作人员可能会一直感觉不到成就感,如果长期坚持下去,可能会感到沮丧和失去动力。
不过在 Parity 不是这种情况。由于我们有很多远程工作人员,因此远程工作基本上是默认设定。甚至柏林的人也可以在家中或在咖啡馆工作,而不愿意去办公室。无论我身在何处,我都可以找到工作所需的一切:Rust 编译器、GitHub 和 Riot。
远程办公环境是什么样的?当你不在办公室时,如何进行沟通呢?
Parity 的所有沟通都在 repositories (issue 和 pull requests)上或 Riot(公开和内部频道)上进行。对于更长的讨论,我们更喜欢内部讨论论坛,有时我们也打短电话来快速讨论一些主题。我是在弗罗茨瓦夫(Wrocław)工作的,它离柏林非常近,所以我也试着每月至少去一次办公室并待上几天。每当我在柏林办公室时,我总是有这样的感觉:“噢,现在我要赶上大家,他们在办公室时,肯定面对面讲了很多东西”。但事实总是证明,我在那儿了解到的东西,无非就是我已经知道的。实际上,有时候我比其他人知道更多,因为我习惯于仔细阅读聊天记录。不过,可以亲自和同事一起出去玩还是很高兴的。:)
你还想和大家分享什么?
如果你是开发者,请学习 Rust,这会让你成为能更好地使用其他任意一种语言的程序员。如果你不是开发者,那么 Rust 可能是一个艰难而良好的开端。:)
原文:https://www.parity.io/people-of-parity-tomasz-drwiega/
翻译:PolkaWorld 社区
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。