写在前面:本文作者Øystein Grøvlen,来自挪威,过去的三年中,一直在阿里云PolarDB团队的优化器和执行器团队担任资深技术专家。2018年来到杭州阿里巴巴公司, 一年后,又搬到了加利福尼亚州桑尼维尔的阿里巴巴公司办公室。

我的软件开发之旅始于作为美国的一名交换生,在那里我在APPLE II电脑上接触到了BASIC语言。我发现,我对能够创建自己的程序来解决不同的问题感到非常满足,这激发了我在Norwegian Institute of Technology的学习期间去学习计算机科学,期间发现数据库和信息检索特别有趣,因此我决定在该领域攻读博士学位。我与挪威电信的研究部门取得了联系,最终在他们的研究项目ClustRa上工作了一段时间,同时攻读了基于Compensation-Based Query Processing课题的博士学位。
获得博士学位后,我开始在一家初创公司工作,该公司旨在将ClustRa数据库系统商业化。ClustRa是针对电信运营的高可用数据库系统。Clustra的体系结构与MySQL集群非常相似,你们中的许多人可能听说过。我们的工作重点是事务、分区、复制、故障容错和恢复。那是一段有趣的时光,解决了许多有趣的问题。

不幸的是,当网络泡沫破裂时,我们耗尽了资金,但我们很幸运,Sun Microsystems决定收拾残局。在Sun公司,我继续在Clustra上工作了一段时间,然后开始使用Java实现的数据库Cloudscape的开源版本。当Sun后来购买MySQL时,我切换到MySQL上工作,并且获得了在优化器团队中工作的机会。Sun后来被Oracle收购,我在加入阿里巴巴之前,在Sun/Oracle从事了10年MySQL的工作。

我发现从事查询优化和处理真的很有趣。我最喜欢的部分是研究如何让查询运行得更快。PolarDB基于MySQL代码,因此我可以运用已有的优化器经验来使PolarDB成为更好的产品。

我觉得为PolarDB团队工作特别有意义的是,阿里巴巴愿意为PolarDB投入大量资源。我们有一大群人在改进产品,我认为我在这里工作的这段时间,我们能做的事情是令人惊叹的。我大部分时间都花在支持并行查询处理项目上;而MySQL只能使用一个线程来执行查询,PolarDB可以将查询执行划分为多个线程并行执行。

我会被问到是否可以给其他研发人员提供一些建议,指导和帮助他们实现成为资深技术架构师的职业目标。我认为有许多不同的成功之路,有些人可能会认为,一部分成功者是因为幸运地在正确的时间出现在了正确的地点。但是,根据我的经验,我想讨论一些我认为对于软件架构师角色至关重要的方面。

深入研究

我认为学习一个软件系统是如何工作的唯一方法就是深入代码进行研究。不要假设你理解代码是如何工作的,而是要通过跟踪执行过程或使用调试逐步执行代码来验证它。

我遇到了很多开发人员,当遇到错误时,不去对代码的工作原理有很好的了解,而是尝试不断反复试错来走捷径。他们可能会成功地修复这个BUG,但是他们对代码是如何工作的知之甚少。很多时候,这种方法还导致了似乎可以解决BUG的修复,但是潜在的问题可能仍然存在。不要只是满足于所有的测试成功,而是要通过跟踪/调试验证它是否按预期运行。第一次可能需要更长的时间完成工作,但是当你在同一领域被分配另一项任务时,你就会非常受益。

Optimizer Trace is a great tool to learn about the MySQL Query Optimizer

通过示例学习

每个人是不同的。我发现通过执行一些特定示例来学习新代码更容易,然后推广这种方法。有些人可能仅通过阅读就成功地理解了代码,但是我想我的心智还没有达到这个水平。

我在ClustRa的第一个任务之一是让事务回滚成功。这个任务的大部分代码已经完成了,但是仍然有一小部分缺失了。通过仔细跟踪事务的执行情况,我花了很长时间才发现缺失的部分并使其正常工作。我认为,如果我仅通过阅读代码来识别缺少的部分,那将花费我更长的时间。

不要害怕问

当你偶然被一个问题绊住时,不要害怕问你的同事。分享你对问题的理解,并征求他们的意见。大多数开发人员非常乐意分享他们所知道的。但是,在提出问题之前,请确保你已经付出了一些努力来理解问题。否则,你的同事可能会觉得你只是想让他们做你的工作。

分享你的智慧

与你的同事分享你的知识。欢迎他们提出问题。在这个过程中,你经常会学到一些东西。
另外,在技术文章中记录你的工作内容,并寻求机会在公开场合分享。这是让其他团队或公司以外的人了解你和你的工作的好方法。

了解你的用户

我发现许多开发人员在理解用户需求方面投入的努力太少了。通常开发人员更喜欢要么快速直接的解决方案,要么在技术上更 “有趣”,而不是解决实际问题。可以多问问自己:“这将如何使用?”,“选择的交互对用户实用吗?” 等等。

在开始设计之前,最好指定一些客户场景,来描述将如何使用此新功能以及它将解决什么问题。

保持耐心

成为技术、产品或代码库的专家需要时间。我花了很多年才认为自己是MySQL查询优化器的专家。虽然拥有丰富的经验当然很好,但我认为如果你经常换工作或技术,你将错过获得深刻见解的机会,而这是自己成为专家的必要之路。换句话说,要有耐心,并为自己设定长期目标!(完)
一位挪威博士的PolarDB资深架构师之路

一位挪威博士的PolarDB资深架构师之路相关推荐

  1. 这位挪威博士是如何成为阿里云PolarDB资深架构师的?

    简介:挪威博士倾心传授对于软件架构师角色至关重要的经验,希望能指导和帮助各位技术同学实现成为资深技术架构师. 我叫Øystein Grøvlen,在过去的三年中,我一直在阿里巴巴PolarDB团队的优 ...

  2. python爬虫架构师之路_一位资深 架构师大牛给予Java技术提升的学习路线建议

    一位资深 架构师大牛给予Java技术提升的学习路线建议 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择. 架构师在一家公司有多重要.优秀架构师需要具备怎样的素 ...

  3. 你和阿里资深架构师之间,差的不仅仅是年龄(进阶必看)

    导读:阅读本文需要有足够的时间,笔者会由浅到深带你一步一步了解一个资深架构师所要掌握的各类知识点,你也可以按照文章中所列的知识体系对比自身,对自己进行查漏补缺,觉得本文对你有帮助的话,可以点赞关注一下 ...

  4. 看下资深架构师平时需要解决的问题,对比你离资深架构师还有多少距离——再论技术架构的升级之路...

    我目前奋力在技术架构的路上不断前行,虽然中间遇到很多障碍,目前自己感觉,勉强能达到架构师的级别,所以自己感觉还有底气写这篇文章. 之前,我写过篇博文,架构师更多的是和人打交道,说说我见到和听说到的架构 ...

  5. 你和阿里资深架构师之间,差的不仅仅是年龄(进阶必看) 1

    读:阅读本文需要有足够的时间,笔者会由浅到深带你一步一步了解一个资深架构师所要掌握的各类知识点,你也可以按照文章中所列的知识体系对比自身,对自己进行查漏补缺,觉得本文对你有帮助的话,可以点赞关注一下. ...

  6. 金刀的博客 | 《后端架构师技术图谱》

    <后端架构师技术图谱> 推荐: <Java技术书籍大全> - awesome-java-books 从初级开发者到资深架构师,看这些书就够了 数据结构 队列 集合 链表.数组 ...

  7. 以朋友圈为例,腾讯资深架构师揭秘鹅厂大数据平台是怎样运营的

    导读:本文将从构成运营成本的主要运营资源(设备资源.带宽资源.专线资源)出发,以实际案例分别阐述精细化技术运营实施的要点. 需要提醒注意的是:精细化技术运营的目标是创造价值,而不是为了摧毁价值.精细化 ...

  8. 资深架构师十几年的架构干货经验总结分享!

    图片来源:pexels.com 1 架构师承担什么样的责任 记录片<黑猩猩的守护者>中珍妮·古道尔博士说过:「唯有了解,才會關心,唯有關心,才會採取行動,唯有行動,生命才有希望」,套用到架 ...

  9. 资深架构师谈云原生生态的基石Kubernetes

    谈到Kubernetes就不得不谈到容器.几年前容器技术大热,现在基本归于平淡,之前大家提到的容器通常是指Docker容器,甚至很多人认为容器就等同于Docker,还有很多人像操作虚拟机一样使用容器. ...

  10. 阿里软件资深架构师李战谈:开发者的人品问题

    阿里软件资深架构师李战谈:开发者的人品问题文 / 李战程序员都知道:绝大多数编程中的问题,最终都是自己的人品问题.当遇到奇怪的问题时,我们总是喜欢怀疑系统.怀疑编译器.怀疑网络.怀疑硬件--就是不愿意 ...

最新文章

  1. ehlib 用法记录
  2. 第一百九十四节,jQuery EasyUI,Droppable(放置)组件
  3. Java文件合并变得语义化
  4. [转载] python改写二分搜索算法_二分搜索算法模板python实现
  5. 算法竞赛入门经典(第二版)习题代码语言篇(一)
  6. 2000年建模b题matlab,2013数学建模B题matlab代码
  7. ecshop内页显示最新文章
  8. Silverlight Blend动画设计系列五:故事板(StoryBoards)和动画(Animation)
  9. 美团的2020年:千亿美元帝国的贪吃蛇游戏,气势汹汹也危机重重
  10. python创建一个列表、用于存储同学姓名_python学习日记04,Python
  11. 一种用几何解nonlinear ICA的方法
  12. oracle系统监控工具oswatch简介!
  13. 计算机基础长文档的排版,“WORD长文档排版技术
  14. 数据质量测试:测试数据有效性和准确性的方法
  15. 突击蓝桥杯嵌入式(一)——内容概览
  16. OpenCV + CPP 系列(卌一)图像特征匹配( FLANN 匹配)
  17. android设备绑定微软,Android 7.1.1 手机如何登录微软账号
  18. The type java.lang.String cannot be resolved. It is indirectly referenced from required .class files
  19. php 挂qq,挂QQ的网页源代码[ASP/PHP/JS]
  20. is internal proprietary API and may be removed in a future release

热门文章

  1. AJAX中get与post区别
  2. 制作U盘OS X安装盘
  3. [转]Nginx 502 PHP LNMP 502 终极解决方案 完美解决502 用 upstream 和 fastcgi_next_upstream 可以极大缓解...
  4. [WPF] 动画Completed事件里获取执行该动画的UI对象
  5. Java-抽象类第一篇认识抽象类
  6. bay——RAC_ASM ORA-15001 diskgroup DATA does not exist or is not mounted.docx
  7. C#3 分部方法,简单标记一下
  8. 济南 天然气 暖气 物业费 水费 电费价格
  9. 【读书笔记】2_增强学习中的Q-Learning
  10. MS SQL的某一数据库成了Single User模式