共计 7889 个字符,预计需要花费 20 分钟才能阅读完成。
简介: 挪威博士倾心传授对于软件架构师角色至关重要的教训,心愿能领导和帮忙各位技术同学实现成为资深技术架构师。
我叫Øystein Grøvlen,在过来的三年中,我始终在阿里巴巴 PolarDB 团队的优化器和执行器团队负责资深技术专家。我来自挪威,但在 2018 年来到中国杭州阿里巴巴公司, 一年后,我搬到了加利福尼亚州桑尼维尔的阿里巴巴公司办公室。
My name is Øystein Grøvlen, and for the last 3 years I have been working as a Senior Staff Engineer in the MySQL Optimizer & SQL group of the POLARDB team at Alibaba. I am originally from Norway, but moved to China to work for Alibaba in 2018. After living one year in Hangzhou, I relocated to Alibaba’s office in Sunnyvale, California.
我的软件开发之旅始于作为美国的一名替换生,在那里我在 APPLE II 电脑上接触到了 BASIC 语言。我发现我对可能创立本人的程序来解决不同的问题感到十分满足,这激发了我在 Norwegian Institute of Technology 的学习期间去学习计算机科学,我发现数据库和信息检索特地乏味,因而我决定在该畛域攻读博士学位。我与挪威电信的钻研部门获得了分割,最终在他们的钻研我的项目 ClustRa 上工作了一段时间,同时攻读了基于 Compensation-Based Query Processing 课题的博士学位。
My journey as a software developer started as an exchange student in the US where I was introduced to programming in BASIC on APPLE II computers. I found it very satisfying to be able to create my own programs in order to solve different kind of problems, and this inspired me to study computer science at the Norwegian Institute of Technology. During my studies, I found databases and information retrieval particularly interesting, and I decided to pursue a PhD in that area. I came in contact with the research department at the Norwegian Telecom, and I ended up working part-time on their research project, ClustRa, while working on my PhD on Compensation-Based Query Processing.
取得博士学位后,我开始在一家初创公司工作,该公司旨在将 ClustRa 数据库系统商业化。ClustRa 是针对电信经营的高可用数据库系统。Clustra 的体系结构与 MySQL 集群十分类似,你们中的许多人可能据说过。咱们的工作重点是事务、分区、复制、故障容错和复原。那是一段乏味的时光,解决了许多乏味的问题。可怜的是,当网络泡沫破裂时,咱们耗尽了资金,但咱们很侥幸,Sun Microsystems 决定收拾残局。在 Sun 公司,我持续在 Clustra 上工作了一段时间,而后开始应用 Java 实现的数据库 Cloudscape 的开源版本。当 Sun 起初购买 MySQL 时,我切换到 MySQL 上工作,并且取得了在优化器团队中工作的机会。Sun 起初被 Oracle 收买,我在退出阿里巴巴之前,在 Sun/Oracle 从事了 10 年 MySQL 的工作。
After my PhD, I started working at a start-up that was set up to commercialize the ClustRa database system. ClustRa was a highly available database system targeted at Telecom operations. The architecture of Clustra was pretty similar to MySQL Cluster, which many of you may have heard about. The focus of our work was on transactions, partitioning, replication, fail-over, and recovery. It was a fun time, solving a lot of interesting problems. Unfortunately, we ran out of funding when the dot-com bubble burst, but we were lucky that Sun Microsystems decided to pick up the pieces. At Sun, I continued to work on Clustra for while, before starting to work on Derby, the open-source version of the Cloudscape, a database implemented in Java. When Sun later bought MySQL, I switch to work on MySQL, and I got the opportunity to work in the Optimizer team. Sun was later bought by Oracle, and I worked on MySQL at Sun/Oracle for 10 years before joining Alibaba.
我发现从事查问优化和解决真的很乏味。我最喜爱的局部是钻研如何让查问运行得更快。PolarDB 基于 MySQL 代码,因而我能够使用已有的优化器的教训来使 PolarDB 成为更好的产品。我感觉为 PolarDB 团队工作特地有意义的是,阿里巴巴违心为 PolarDB 投入大量资源。咱们有一大群人在改良产品,我认为我在这里工作的这段时间,咱们能做的事件是令人惊叹的。我大部分工夫都花在反对并行查询处理我的项目上; 而 MySQL 只能应用一个线程来执行查问,PolarDB 能够将查问执行划分为多个线程并行执行。
I find it really interesting to work on query optimization and query processing. My favorite part is investigating how we can get queries to run faster. POLARDB is based on MySQL code, so I can use my knowledge about the MySQL optimizer to make POLARDB a better product. What I find particularly rewarding about working for the POLARDB team, is that Alibaba is willing to put a lot of resources into POLARDB. We have a large group of people working on improving the product, and I think it is amazing what we have been able to do while I have been here. Most of my time I have spent on the project to support parallel query processing; while MySQL can only use one thread to execute a query, POLARDB can partition the query execution across multiple parallel threads.
我会被问到是否能够给其余研发人员提供一些倡议,领导和帮忙他们实现成为资深技术架构师的职业指标。
我认为有许多不同的成功之路,有些人可能会认为,一部分可能是因为幸运地在正确的工夫呈现在正确的地点。然而, 依据我的教训,我想探讨一些我认为对于软件架构师的角色至关重要的方面。
I have been asked to give some advice to other developers on what it takes to make a career as a senior architect. I think there are many different paths to success, and some may claim that part of it may be the luck of being at the right place at the right time. However, based on my experience, I will discuss a few aspects that I feel has been essential to prepare myself for the role of software architect.
深入研究 Make deep dives
我认为学习一个软件系统是如何工作的惟一办法就是深刻代码进行钻研。不要假如你了解代码是如何工作的,而是要通过跟踪执行过程或应用调试逐渐执行代码来验证它。
I think the only way to learn how a software system works, is to deep dive into the code. Do not just assume that you understand how the code is working, verify it by tracing the execution or stepping through the code with a debugger.
我遇到了很多开发人员,当遇到谬误时,不去对代码的工作原理有很好的理解,而是尝试一直重复试错来走捷径。他们可能会胜利地修复这个 BUG,然而他们对代码是如何工作的知之甚少。很多时候,这种办法还导致了仿佛能够解决 BUG 的修复,然而潜在的问题可能依然存在。不要只是满足于所有测试胜利,要通过跟踪 / 调试验证它是否按预期运行。第一次可能须要更长的工夫实现工作,然而当你在同一畛域被调配另一项工作时,你就会十分受害。
I have met quite a few developers that when faced with a bug, instead of getting a good understanding of how the code works, try to take short-cuts based on trial and error. They may succeed in fixing the bug, but they have learned very little about how the code works. Many times this approach also leads to bug fixes that seems to solve the problem, but the underlying problem may still exist. Do not just be satisfied when all your tests succeed, verify by trace/debugger that it runs as expected! It may take a bit longer to get the job done the first time, but you will get the reward later when you are assigned another task in the same area.
Optimizer Trace is a great tool to learn about the MySQL Query Optimizer
通过示例学习 Learn by example
每个人是不同的。我发现通过执行一些特定示例来学习新代码更容易,而后推广这种办法。有些人可能仅通过浏览就胜利地了解了代码,然而我想我的心智还没有达到这个程度。
People are different. I find it easier to learn new code by following the execution of some specific examples, and then generalize from that. Other people may be successful in understanding the code just from reading it, but I guess my mental capacity is not at that level.
我在 ClustRa 的第一个工作之一是让事务回滚胜利。这个工作的大部分代码曾经实现了,然而依然有一小部分缺失了。通过认真跟踪事务的执行状况,我花了很长时间才发现缺失的局部并使其失常工作。我认为,如果我仅通过浏览代码来辨认短少的局部,那将破费我更长的工夫。
One of my first tasks at ClustRa was to make transaction rollback work. Much of the code was already prepared for the task, but there was still some missing pieces. By carefully tracing the execution of a transaction, it did not take me long to identify the missing pieces and make it work. I think it would have taken me much longer if I were to identify what was missing just by reading the code.
不要胆怯问 Be not afraid to ask
当你偶尔被一个问题绊住时,不要胆怯问你的共事。分享你对问题的了解,并征求他们的意见。大多数开发人员十分乐意分享他们所晓得的。然而,在提出问题之前,请确保你曾经付出了一些致力来了解问题。否则,你的共事可能会感觉你只是想让他们做你的工作。
When you stumbled on a problem, do not be afraid to ask your co-workers. Share your understanding of the problem and ask for their advice. Most developers are more than happy to share what they know. However, make sure you have put some effort into understanding the problem before you ask. Otherwise, your co-workers may feel you are just trying to make them do your job.
分享你的智慧 Share your wisdom
与你的共事分享你的常识。欢送他们提出问题; 在这个过程中,你常常会学到一些货色。
Share your knowledge with your co-workers. Welcome their questions; you will often learn something yourself in the process。
另外,在技术文章中记录你的工作内容,并寻求机会在公开场合分享。这是让其余团队或公司以外的人理解你和你的工作的好办法。
Also, write about your work in articles and blog posts, and seek for opportunities to talk about it in public. This is a good way to make people outside your team or company aware of you and your work.
理解你的用户 Understand your users
我发现许多开发人员在了解用户需要方面投入的致力太少了。通常开发人员更喜爱要么疾速间接的解决方案,要么在技术上更“乏味”,而不是解决理论问题。问问本人:“这将如何应用?”,“抉择的交互对用户实用吗?”,等等。
I feel many developers put too little effort into understanding the needs of their users. Often the developer prefer solutions that are either more straight-foward to implement, or more technically “interesting”, over solving the real problem. Ask yourself: “How will this be used?”, “Will the chosen interface be practical to the users?”, and so on.
在开始设计之前,最好指定一些客户场景,来形容将如何应用此新性能以及它将解决什么问题。
Before starting the design, it is a good idea to specify a few uses cases that describes how this new feature will be used, and what problem it will solve.
放弃急躁 Stay around
成为技术、产品或代码库的专家须要工夫。我花了很多年才认为本人是 MySQL 查问优化器的专家。尽管领有丰盛的教训当然很好,但我认为如果你常常换工作或技术,你将错过取得粗浅见解的机会,而这是本人成为专家的必要之路。换句话说,要有急躁,并为本人设定长期指标!
It takes time to become an expert on a technology, a product, or a code base. It took me several years before I could consider myself an expert on the MySQL query optimizer. While it is certainly good to have a wide experience, I think that if you change jobs or technologies too often, you will miss the opportunity to get the deep insights that will be necessary to establish yourself as an expert. In other words, be patient, and set long-term goals for yourself!
相干浏览:
删库跑路?别怕!PolarDB-X 轻松援救误删数据的你
阿里 13 篇论文入选数据库顶会 PolarDB 翻新技术架构获认可
上海 ACE 同城会演讲实录 | 云原生分布式数据库 PolarDB-X
PolarDB-X 是如何用 15M 内存跑 1G 的 TPCH
顶会点赞!PolarDB Serverless 实现了哪些冲破?
云原生分布式数据库 PolarDB 技术深度解密
版权申明: 本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。