聊聊几个阿里 P8、P9 程序员的故事

阿里 P8 程序员年薪百万已经是公开的秘密了,有人关心他们年薪百万,而我更加关注阿里这些 P8、P9 程序员的成长故事,在聊这些大牛的故事之前,跟大家稍微简单聊下阿里技术人等级制度。

P5:校招生为主

P6:独立的执行者,独立完成自己的工作

P7:行业的顾问,能对行业发展做出一定准确的判断

P8:行业的创新者,能结合判断有一定的创新

P9:行业的颠覆者,能使创新对行业产生一定的颠覆

P10:行业的领袖,打造和引领行业

P11:副总裁

P12 、P13:各事业部负责人

P14:阿里CEO

P8 和 P9 这两个档位是阿里整个集团的腰部力量、事业部的脑部力量,一般来说一个应届生 P4、P5 入职,如果工作上足够努力、运气不太差的情况下在 6 到 10 年可以达到 P8 层级,而如果想从 P8 晋升到 P9 就需要超强的能力、担当+全局视野观+异常突出的业绩/贡献+机遇了。

所以此时的你是不是已经对阿里这些 P8、P9 程序员的成长经历充满好奇了呢?来来来,故事要开始了。

1、「非主流」前端工程师清羽

清羽:阿里巴巴集团 P9 级员工,曾负责 Midway 项目开发,在前端架构领域拥有丰富经验,为阿里巴巴服务已超过 9 年。

在加入阿里之前,清羽曾经在一家传统的 IT 小公司参与研发 ERP 工具,那时候清羽公司没有可用的设计师也没有前端工程师的概念,作为公司的 Java 程序员,其实做了很多前端工程师的工作。

尽管过去了11年,清羽对初次接触前端时的强烈兴趣和兴奋感记忆犹新:「那个时候从零开始接触 JavaScript,觉得这门语言相比 Java 更简洁也更酷,后来越做越发现自己对界面的技术、与用户更贴近的技术更感兴趣,才开始逐渐找到自己在技术细分领域的方向。」

第一次转型:

2008 年,做了三年 Java 工程师的清羽几经思考后将自己的简历递交到阿里巴巴的 HR 手中。清羽自身大量使用 Java 和 JavaScript 进行前端开发的经验显然正合阿里的口味,几轮面试下来,他顺利拿到 offer,成为他向往已久的淘宝 UED 中的一员,级别是 P6。

进入 UED 后清羽才发现,淘宝有很多设计出身的前端,而计算机专业出身,拥有后端背景的他,感受到了与同事之间的巨大差异。在短暂的迷茫和沮丧之后,清羽利用自己前后端紧密结合的架构设计方面优势,完成淘宝运营模板的设计建设,在阿里成为一个前端细分领域——模板装修类的技术专家。2010年清羽被晋升为 P7 。

晋升 P7 之后的清羽并没有停止在前端技术上继续前进的脚步,他带领团队为淘宝店铺提供了一个安全的装修模板系统;之后更是参与了 Midway 的项目开发,竭尽脑力去扩大前端技术的应用范围,他和同事们确定了以 Node.js 的方式做一套促进前后端分离的工具,并将项目过程中的一系列思考在淘宝博客上通过技术博文的形式公布,这些文章激起了业内的讨论热潮。

2013 年清羽被晋升为 P8 。

第二次转型:

虽然清羽参与的 Midway 在技术圈引起巨大讨论,但是那阵子脱离前端业务的清羽在职业晋升的路上暂时迷失了方向。他想过基于 Node.js 开始寻找新的技术方向,但又总觉得不甘心。作为前端工程师,他热爱自己的职业,但随着远离过去的工作岗位,改变自己的定位似乎已经成了必要的选择,今后自己的未来到底又将在哪里呢?

直到2014 年 9 月,阿里集团客户体验事业群正在寻找一位前端团队负责人,一位与清羽合作过多次的总监级同事找到清羽,问他有没有兴趣,清羽几乎没有犹豫,一口答应了下来。回忆当年的果断,清羽的答案很简单:「我终于找到了那个我想去的 BU。」

担下负责集团客户体验事业群所有前端工程师的职责后,清羽的工作重心,也开始从前端项目设计逐渐变成了技术管理。在以前的前端团队里,虽然清羽也承担部分管理工作,但是毕竟还有一个前端 leader 帮他处理问题、指引方向。这次清羽的身份却摇身一变成为了那个需要承担整支前端团队的发展规划,指明方向的人。

「每个项目阶段的初期,我的压力都很大。」清羽坦言,头一回成为一个项目团队的领导者,这让他在观察业务时有了全新的角度。他需要判断未来有哪些技术点需要投入人力,并为其寻找技术框架,最终推动业务的完成。

随着工作的缓慢改变,清羽对自己的看法也正在改变,就在几年前,他还不认为自己适合成为一个管理者。「我原先认为我比较合适做专家岗,因为我的性格偏内向。当初之所以要来前端团队,也是为了多和设计师们接触接触。」他主动离开淘宝网,前往集团客户服务部带团队时,连他的前领导也表达过担忧。但最终,对职业未来的追求压倒了人际交往的恐惧,清羽觉得,这次怎么也得放手一搏了。

放手一搏的结果让所有人惊讶:短暂的团队磨合后,清羽迅速适应了集团客户服务部的技术管理工作,与人沟通并未成为他的阻碍。清羽在技术管理的岗位上越来越感到游刃有余,他甚至在 2016 年拿到了一个年度奖项,以表彰他在员工招聘上取得的突出成就。

就连清羽也对自己的这段改变感到惊讶,他反思说:「之前因为潜意识里觉得自己不擅长做管理,所以表现为不愿意做这块的工作。」但事实证明,一个人无论如何都不应限制自己的想象力,尤其是自我想象。

有时候,不逼自己一把,不会发现你对自己误解有多深。」清羽说。

2、阿里 AI 领域最年轻的 P9 之一海青

2017 年年初,海青被阿里巴巴集团提拔为 P9 级员工。这也让他成为阿里在人工智能领域最年轻的 P9 之一,到今天为止他在阿里服务已经超过 9 年。从一名刚走出象牙塔的大学生,到通过刻苦自学成功转型算法的研发人员,到带领团队投身支付宝项目的技术 leader,再到如今能够独立负责阿里小蜜整条业务线的 P9 工程师,9 年来,海青在阿里的成长速度之快令人惊叹。

初入阿里:

2008年,正在杭州某大学读大三的海青从两百多位应试者里脱颖而出,进入了阿里巴巴,成为集团旗下"阿里软件"的实习生,这曾一度让他对自己的编程能力颇为自信。

但真正开始实习,海青才发现自己低估了工作的难度。每天背着书包,进出公司,跟着那些在 IT 行业资历匪浅的大牛们干活,海青第一次感受到了校园与职场的差距——自己的编程知识不是太皮毛就是太过时,几乎派不上用场。

海青为此感到难堪,他甚至对未来产生了一丝惶恐:「当时明显感觉到自己知识的不足,学校和工业界的知识差距太大了。」为了弥补自身不足,海青开始废寝忘食地恶补编程技能,每个工作日大清早来到公司,直到夜深人静才离开。除了跟随项目团队参与系统的研发与维护工作,剩下的精力都被海青用来阅读集团的代码文档和框架。

转眼一年过去,大学毕业后海青毫不犹豫选择了留在阿里。2009年7月,海青成为阿里巴巴的正式员工,职级 P4。

在阿里,遍地都是浑身充满干劲的年轻人,受大环境影响,海青也丝毫不敢懈怠。最初的两年里,他在日落前离开公司的日子屈指可数,而在公司度过周末对他也是家常便饭。海青觉得这种节奏很自然,那些大牛都这么勤奋,自己又有什么理由不努力?

第一次转型:

2010年4月,原本从事平台系统研发的技术团队被授意执行一项新的任务——聊天机器人(chatbot),这正是海青所在的团队。

开发聊天机器人的工作不同于此前海青接触到的任何一个团队任务,研发人员几乎都没有算法背景,学会算法成了海青同事们的工作重心。虽然海青本身的工作职责并不涉及算法,但他敏感地意识到,算法的强大功能正在各个业务领域逐渐渗透延展,不久之后,将是一项抢手的技能。

「转型是很痛苦和漫长的过程,你从我的经历里也可以看出,我之前并没有算法相关的背景,怎样从一个算法领域完全的小白,成长为一个能够在算法项目中发挥作用、解决问题的人,是我当时想得最多的事情。」 刚刚升为 P5 不久的海青下定决心,要把算法吃透。

海青似乎又回到了学生时代苦读备考的日子,他买下一本厚厚的《统计自然语言处理》,每天利用闲暇时间大量阅读算法的相关知识。同时,阿里内部完善的文档共享渠道和社区也帮了海青很大的忙。

在这些社区里,海青搜罗着关于算法的所有文档,遇到看不懂的内容,他会在线上不厌其烦地和这些文档的作者沟通。沟通的次数多了,海青还会尝试与对方线下见面,通过这些途径,海青结识了一批阿里内部的技术大牛,他们将自己的算法经验贡献给了这个对技术死磕的年轻人。

久而久之,海青最初对算法的生疏感,在日复一日的钻研打磨中被无形化解。最终,在海青和团队的共同努力下,聊天机器人被顺利研发成功。差不多同一时期,海青升为 P6。

遭遇瓶颈期:

每个人的职场经历中总会有那么一段瓶颈期,对于海青来说也一样。人工智能的未来并没有来得太快,反而是海青的职业瓶颈期先来了。

首先是智能客服业务已经趋于稳固,尽管海青和他同事的工作为阿里 B2B 带来了全新的技术支持,但智能客服没有成为核心业务,而在客服体系搭建完成以后,海青只剩下维护的工作,从2011年开始,这样的状态持续了一年多。

日子长了,海青觉得有点失去了最初的激情,同时他隐隐担心,自己团队的业务场景始终比较单一,长此以往,个人的职业发展与技术积累会不会陷入停滞?那段时间,海青思考得最多的就是还有哪些潜在的业务场景可供他施展拳脚。

新的机会:

2012年,集团旗下知名的第三方支付平台「支付宝」在整个集团范围内寻找能够为其搭建智能客服系统的团队。

这时的海青在 2B 业务上已经积累了丰富的智能化经验,但始终没能尝试过在 2C 环境下落实智能解决方案。拥有超大流量的支付宝是一个近于完美的实验场。更关键的是,这将为智能客服团队的研发能力提供新的场景。经过三个月的反复沟通,凭借过硬的项目经验,海青所在的团队最终争取到了这份邀约。

为了配合开发,海青所在的智能客服团队整体搬迁到支付宝大楼办公。在支付宝大楼,海青前后待了一年半之久,正是在这里,他被任命为团队的负责人,并做出了第一款面向消费者的智能客服产品「智能小宝」。

谈到为何会被选为技术负责人,海青回答这得益于自己早期研发出身的背景和成功转型算法的经历,在团队中,同时兼具这两种技能的员工并不多见,而他在产品商业方面的见解历来受到团队的认可。新的职责让海青从单纯的技术研发工作里抽身出来,如何带领团队成为了这个 26 岁小伙子的新挑战——除了研发架构之外,海青开始更多从团队整体人员的配置出发,考虑每一个团队成员的职业规划和技术成长。

2012年的「双十一」被视为一次成绩验收,当晚,海青心里虽有些忐忑,但对自己经手的项目和团队成员信心十足。现实没有辜负海青的付出,他的团队和产品在这个夜晚经受住了极端环境的考验,顺利完成了任务。

至此,阿里的高层开始注意到这位 AI 技术负责人——虽是半路出家,海青已经承担了从支付宝到几乎所有 B 类业务智能客服需求的支持任务。

2013年,海青带领团队整体加入了新成立的淘宝技术部,这一年他的职级被提升为 P7,这意味着他已在自己所在的领域达成了一些系统建树 ,成为了集团AI领域的核心负责人之一。

深入前沿,成为 AI 领域最年轻的 P9 之一:

同样在 2013 年,深度学习与知识图谱被权威机构宣布为本年度改变世界的新技术。此时,已然身为人工智能专家的海青早已不满足于为业务提供技术支持。他开始将注意力转移到前沿技术领域。

在 PHD 头衔扎堆的前沿技术领域,本科生出身的海青至今仍经常意识到自己的学术短板。他的应对方法依然是通过自学和邀请技术大咖授课的方式为自己充电,从实习生一路走来,海青早已习惯了应对来自技术各方面的挑战。

其实,早在接手此前的诸多业务时,海青已经在有意识地进行技术积累,他有条不紊地为团队增加在这些场景上的技术投入,并关注着 Google、Facebook这些 AI 领域的佼佼者们的研究方向。所缺乏的,是一个能够对技术进行实际检验的平台。

2015年,机会终于来了,阿里决定在这年夏天推出一款智能助理及平台产品,它将集合淘宝、天猫等平台日常数据,向阿里服务的所有消费者提供智能服务。海青所带领的团队责无旁贷地承担了这项任务,新的产品被命名为「阿里小蜜」。

初始阶段,相关领导特地找来海青,要他谈谈对新产品的看法。海青将自己的思考和盘托出,当场勾勒了这款产品的大致框架,两个小时的聊天结束后,二人对新项目的前景已经有了底。

负责阿里小蜜之前,海青已经完成过多个聊天机器人和应用场景的设计开发,但没有一个产品的复杂程度比得上阿里小蜜。「很多人问我,为什么不把以前的技术直接拿出来用就好了?」遇到这类问题时,海青总是耐心地向对方解释这个项目的技术难点:阿里小蜜将传统客服所不涉及的售前服务、客服助理等泛客服内容也囊括进服务范畴,这使得其对场景和语料的需求变得前所未有的复杂。

在他的看法里,只有最前沿的技术,才能够支撑这款构思宏大的智能产品,反过来,也只有这样的产品,才具备检验这些前沿技术的实力。在"阿里小蜜"这款产品里,海青最终如愿以偿加入了自己多年来在深度学习、知识图谱领域积累下来的技术和想法。

2015年 7 月,阿里小蜜上线,获得了成功。这款产品最大的作用,是将智能服务赋能给了使用阿里旗下产品的所有商户们,甚至阿里以外的企业也将受益。阿里小蜜项目后不久,海青就在集团内被晋升为 P8。

此后,海青开始设法将已实现的智能客服技术进一步拓展到阿里小蜜平台以外,赋能给使用阿里产品的商家,以及外部的企业。他们从一个需求点出发,为阿里开辟出了一块存在高成长潜力的空间。海青认为,这也许是他的团队为阿里带来的最大的价值。

2017年6月,海青受到提名作为 P9 级员工的候选人接受答辩,在阿里,从P8 到 P9 的跃升被视为难度最大的晋升之一,这意味着候选人不仅在集团内部主持过重大项目,其技术经验的积累在行业内也需要拥有相当的影响力。员工在接受 P9 提名后必须通过相关答辩,晋升才会被通过。

对这场答辩的难度,海青心知肚明,「我年纪还轻,所以当时心态上就把答辩当成一次比较难得的体验吧。」主持答辩的五位评委均在 P10 级,其中恰好有人工智能领域的专家。进场前,海青捏了一把汗。

但答辩一旦开始,紧张感便不复存在,海青恢复了投入工作时的沉着与敏锐,面对专家评委们略显刁钻的拷问,一条条技术脉络与细节被海青缜密地梳理出来,专家抛出的质疑,被海青逐一化解。最终,评委们对他在深度学习领域的经验积累和业务头脑投出了赞成票。海青幸运地通过答辩,正式升为阿里 AI 领域最年轻的 P9 级员工之一

故事结尾,拥抱变化才是未来

最近阿里一个 P8 的 iOS 工程师在群聊的时候说到最近因为工作需要在学习 AI,我知道他的技术打怪之路已经悄然走上了新的征程,期待一年半载之后能够看到他用 AI 技术给 iOS 技术圈带来新的技术实践

这个世上唯一不变的就是变化,几乎每隔3年,就会有一波技术革新,而我们要么抓住变化的机遇向上升级,要么无视技术河流蹦腾而下,最终被大浪冲到沙滩上。

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总

2022届互联网求职现状,金9银10快变成铜9铁10!!

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

5dfa8d7f1500650a3d75a8f4c1dfdd09.png

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)

发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在STM32F103芯片上使用定时器输出PWM信号的示例代码,使用了P3、P4、P5、P6、P7、P8P9端口: ```c #include "stm32f10x.h" void GPIO_Configuration(void); void TIM_Configuration(void); int main(void) { GPIO_Configuration(); TIM_Configuration(); while (1) { } } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } void TIM_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_TimeBaseStructure.TIM_Period = 1999; // 1 kHz PWM frequency TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1; // 72 MHz / 72 = 1 MHz TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM3, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_OC3Init(TIM3, &TIM_OCInitStructure); TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_OC4Init(TIM3, &TIM_OCInitStructure); TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM_OC5Init(TIM3, &TIM_OCInitStructure); TIM_OC5PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OC6Init(TIM3, &TIM_OCInitStructure); TIM_OC6PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_Cmd(TIM3, ENABLE); } ``` 这段代码使用了定时器 TIM3 来输出 PWM 信号,其频率为 1 kHz,占空比可以通过修改 `TIM_OCInitStructure.TIM_Pulse` 来调整。同时,定时器的时钟源使用的是 APB1 总线,其时钟频率为 72 MHz,因此需要将 `TIM_TimeBaseStructure.TIM_Prescaler` 设为 72-1,以得到 1 MHz 的时钟信号。输出端口使用的是 GPIOB 3~9 口,使用复用功能输出 PWM 信号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值