Introduction to imparting experience that is crucial to the role of software architect, hoping to guide and help technical students to become senior technical architects.

My name is Øystein Grøvlen. For the past three years, I have been a senior technical expert in the optimizer and actuator team of Alibaba PolarDB team. I am from Norway, but came to Alibaba in Hangzhou, China in 2018. One year later, I moved to the Alibaba office in Sunnyvale, California.

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. 

My software development journey began as an exchange student in the United States, where I was exposed to the BASIC language on the APPLE II computer. I found that I was very satisfied with being able to create my own programs to solve different problems. This inspired me to study computer science during my studies at the Norwegian Institute of Technology. I found database and information retrieval particularly interesting, so I decided to work in this field. PhD. I got in touch with the research department of Norwegian Telecom, and finally worked on their research project ClustRa for a while, and at the same time studied for a PhD based on 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

After getting my PhD, I started working in a start-up company that aimed to commercialize the ClustRa database system. ClustRa is a highly available database system for telecom operations. Clustra's architecture is very similar to MySQL cluster, and many of you may have heard of it. Our focus is on transactions, partitioning, replication, fault tolerance and recovery. It was an interesting time, and many interesting problems were solved. Unfortunately, when the dot-com bubble burst, we ran out of funds, but we were lucky that Sun Microsystems decided to clean up the mess. At Sun, I continued to work on Clustra for a while, and then I started using the open source version of the database Cloudscape implemented in Java. When Sun later bought MySQL, I switched to work on MySQL and got the opportunity to work on the optimizer team. Sun was later acquired by Oracle. Before joining Alibaba, I worked at Sun/Oracle for 10 years in 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. 

I find it really interesting to be engaged in query optimization and processing. My favorite part is researching how to make queries run faster. PolarDB is based on MySQL code, so I can use my existing optimizer experience to make PolarDB a better product. I think it is particularly meaningful to work for the PolarDB team because Alibaba is willing to invest a lot of resources in PolarDB. We have a large group of people improving the product, and I think the things we can do during the time I have been working here are amazing. I spend most of my time on supporting parallel query processing projects; while MySQL can only use one thread to execute queries, PolarDB can divide query execution into multiple threads for parallel execution.

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 will be asked if I can provide other R&D personnel with some advice, guide and help them achieve their career goals of becoming a senior technical architect.

I think there are many different paths to success, and some people may think that part of it may be because of being lucky to be in the right place at the right time. However, Based on my experience, I want to discuss some aspects that I think are crucial to the role of software architect.

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.

In-depth study of Make deep dives

I think the only way to learn how a software system works is to delve into the code. Don't assume you understand how the code works, but verify it by tracing the execution process or using debugging to step through the code.

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. 

I have met many developers. When they encounter errors, they do not have a good understanding of the working principle of the code, but try to take shortcuts through repeated trial and error. They may successfully fix this bug, but they don't know much about how the code works. In many cases, this method also leads to fixes that seem to solve the BUG, but potential problems may still exist. Don't just be satisfied that all the tests are successful, use trace/debug to verify that it works as expected. It may take longer to complete the work the first time, but when you are assigned another task in the same area, you will benefit greatly.

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

Everyone is different. I find it easier to learn new code by executing some specific examples, and then promote this method. Some people may successfully understand the code just by reading it, but I don't think my mind has reached this level.

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.

One of my first tasks in ClustRa was to make the transaction roll back successfully. Most of the code for this task has been completed, but a small part is still missing. By carefully tracking the execution of the transaction, it took me a long time to find the missing part and make it work. I think if I only read the code to identify the missing parts, it will take me longer.

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.

Don't be afraid to ask

Don’t be afraid to ask your coworkers when you stumble on a question by accident. Share your understanding of the problem and seek their opinions. Most developers are happy to share what they know. However, before asking the question, make sure you have put in some effort to understand the problem. Otherwise, your colleagues may feel that you just want them to do your job.

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 colleagues. They are welcome to ask questions; you will often learn something in the process.

Share your knowledge with your co-workers. Welcome their questions; you will often learn something yourself in the process。

In addition, record your work in technical articles and seek opportunities to share them in public. This is a great way to let other teams or people outside the company know about you and your work.

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 found that many developers put too little effort into understanding user needs. Often developers prefer either a quick and straightforward solution, or technically more "interesting", rather than solving actual problems. Ask yourself: "How will this be used?", "Is the chosen interaction practical for the user?", etc.

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 best to specify some customer scenarios to describe how this new feature will be used and what problems it will solve.

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

It takes time to become an expert in a technology, product, or code base. It took me many years to consider myself an expert in the MySQL query optimizer. Although having a wealth of experience is certainly good, I think if you change jobs or skills frequently, you will miss the opportunity to gain insights, and this is a necessary way to become an expert yourself. In other words, be patient and set long-term goals for yourself!

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! 

Related Reading:

Delete library and run away? Don't be afraid! PolarDB-X can easily save you

13 papers were selected into the database top conference, PolarDB's innovative technology architecture was recognized

Shanghai ACE City Meeting Speech Record | Cloud Native Distributed Database PolarDB-X

How does PolarDB-X run 1G TPCH with 15M memory?

will like it! What breakthroughs has PolarDB Serverless achieved?

Cloud native distributed database PolarDB technology deep decryption

Copyright Statement: content of this article is contributed spontaneously by Alibaba Cloud real-name registered users. The copyright belongs to the original author. The Alibaba Cloud Developer Community does not own its copyright and does not assume corresponding legal responsibilities. For specific rules, please refer to the "Alibaba Cloud Developer Community User Service Agreement" and the "Alibaba Cloud Developer Community Intellectual Property Protection Guidelines". If you find suspected plagiarism in this community, fill in the infringement complaint form to report it. Once verified, the community will immediately delete the suspected infringing content.

阿里云开发者
3.2k 声望6.3k 粉丝

阿里巴巴官方技术号,关于阿里巴巴经济体的技术创新、实战经验、技术人的成长心得均呈现于此。


引用和评论

0 条评论