在阿里做前端程序员,我是这样规划的

前端程序员常问的几个问题

此文来自一次团队内的分享。我是来自大淘宝技术内容前端团队的胤涧,负责内容中台技术。我的习惯是每个新财年初都会进行一次分享《HOW TO BE AN EMINENT ENGINEER》,聊聊目前团队阵型、OKR、业务和技术大图,聊聊我作为程序员的规划。

此文仅记录【我作为程序员的规划】的内容。

第一,譬如一个校招生在阿里工作了两三年,整体技术能力还保持在一个上升期,但在沟通交流做事上却始终没有脱离“学生气”,似乎还未毕业

第二,技术更新迭代非常快,特别是前端领域,这几年不断都有新技术出来。每每夜深人静的时候,会发现很少有能真正沉淀下来的技术。

第三,关于技术深度。我经历过晋升失败,其中“技术深度不够”这句评语让我印象深刻。当时沟通完,走出会议室我低着头不停地问自己到底技术深度要深入到什么层度才算足够。作为前端,我们在公司更多的是写页面,实现UI的优化,提升页面的性能,即便我们做的产品非常成功,成功点在哪儿?可能是UI设计得漂亮,也可能是推荐算法精确,而前端的产出给产品带来了什么?阿里有健全的体系,有良师益友。离开了这个大平台,我能做什么?

我发展的三个阶段

入职阿里,经历不同的BU和部门,我一直在寻找职业发展的答案。

到目前为止,我把我的职业生涯分为三个阶段:一技之长,独立做事,寻找使命。


一技之长分为:栈内技术、栈外技术、工程经验、带人做事、业内影响。

第一阶段:一技之长

  • 栈内技术


栈内技术是指你的专业领域技术,对于前端来说,就是那些我们熟悉的js等基础,深入了解我们的程序所运行的宿主环境——浏览器 or NODE,能了解v8运行时发生的一切。

前端没有秘密,所有可访问的页面都近似于开源,所以检验栈内技术的标准就是看你是否能最终形成技术上的“白眼”——看到任何前端产品都有看穿它的自信。栈内技术是安身立命的根本,不要轻易“换方向”。

始终不要放弃作为前端的一技之长。遇到一些前端同学工作几年以后前端做得比较熟了,考虑转到其他岗位,去做音视频技术,或者跨度更大的去做产品,运营。但我想说,当你转行那一刻起,就把要转的领域变成你新的“栈内技术”,然后重新走一遍技术沉淀的过程,匆匆几年又过去了。

前端是可以长时间坚持的领域,现在新型的软件生态,例如web3,以太坊,都会首先瞄准JS开发者,因为有庞大的开发者群体,工具链也比较完善,所以长期坚持从事前端工作,在可预见的未来都不会“过时”。

  • 栈外技术

栈外技术是指栈内技术的上下游,领域外的相关专业知识,包括但不限于服务端技术、运维、CDN、测试,甚至UI设计、产品设计等等。扩展你栈内技术的周围领域,充分理解你的工作在整个技术研发体系中处于怎样的环节。工作之余多投入一份精力,把其他栈外技术不断纳入到你的知识体系中来,建立栈外能力。

前端想要做得深入,往往会涉及到服务端、网络、机器学习、用户体验等知识,没有足够的栈外技术积累,你很难为自己的团队争取到足够的话语权。

  • 工程经验

工程经验是指建设专业技术体系的“解决方案”。通俗说,就是做事的方法论,掌握从0到1,1到60,甚至60到100分阶段建设专业技术体系的过程。

工程经验涉及到技术选型、架构设计、性能优化,CI/CD,日志监控、系统测试等,这些是跟工程相关的方法论。
很多同学会说,没有时间去研究新技术,那么多反问一下自己,为什么没有在自己的业务上争取新技术落地。

很多的工程师没有总结自己工程经验的能力,特别是在做业务多年之后,觉得技术能力一直在倒退。决定你比别人更有专业价值的,是领域工程经验。你看过再多的文章,如果没真正实操都不能称之为“掌握”。所以我建议要想掌握足够丰富的工程经验,需要在业务中多争取实践的机会。

  • 带人做事

带人做事之前三项都是个人专业技能方面的深度要求,带人做事是对团队协作能力的要求。我第一次带师弟的时候经常有这种感觉:需要多次沟通需求,对焦技术方案。我跟他沟通花的时间都能把代码写好了。

带人做事,是把自己擅长的事情,沉淀下来的思考方式传递给他人,实现1+1>2的生产力提升,让整个团队的产出高于自己。

这个阶段大家要特别注意“管”与“带”的区别。以我的愚见:所谓“管”是我不懂某个领域,但我知道你懂,所以我安排你去做;而“带”则是"我特别懂这个领域,我知道你不懂,我会教你做得更好",有点授之以渔,成就他人的意思。带好一个人或者带起一支有战斗力的团队,是做人做事成熟的表现。

这两年我也在思考如何能激发他人的能力。我想起我的老板们及和我1v1沟通的同事们对我的帮助,他们都非常善于用反问来引导我。提问的深度特别能体现一个人的能力水平,任何用于提要求的陈述句,都能转换成疑问句,在启发萌新的过程中植入对结果的约束。

当你让一个人做A的时候,他提出了方案B。你不要强行扭转对方的思路提出A,因为对于新人来讲,或许确实不能一步到位理解A方案,在他的能力约束下,只能想到B。要尽量尝试把A和B之间有差异的地方转换成提问,你问他遇到这个问题怎么解决,遇到那个问题怎么解决,一直问到形成A,他会带着思考去做事情。如果没有这个过程,没有让他思维演化的过程,虽然他收到了A的指令,但是他不理解,他会用别的方式做出来,最后得出来一个C,然后你又重构一遍,陷入一个怪圈不能自拔,这就是我以前的误区,

所以我现在特别注重提问的艺术。但是一切的前提是:你需要对事情有好的认知。按照张一鸣的观点就是:对一件事情认知决定了一件事情的高度。

  • 业内发声

如果你前面做得非常好,那把自己的工作经验总结对外发布,与他人交流,碰撞思想,看到更高的山峰,然后修正自己的想法,日益完善,是能走得更远的一种方式。

有的时候需要把自己的思想放到业界的层面验证,大家好才是真的好。如果别人不认可你的这套思路,基本上你也可以判定自己没有达到一个更高的水平。

对外分享的目的不是为了show quali,而是为了听取别人的意见,达到自我成长。永远不要放弃一技之长,没有所谓的转行或者转型,永远坚持你最初的领域,扩充你的外延,最终达成比较全面的能力,坚持是成功ROI最高的一种方式。

第二阶段:独立做事

第二个阶段是独立做事,也是我这一两年的命题。在我不断试错的过程中,我把他分为了:独立交付,独立带人,独立带团队,独立做业务,独立活下来。独立不等于独自,独立是指今天公司给你配套的资源,你能完成公司给你的项目,且拿下好结果,俗称“带团队”。

  • 独立交付

独立交付是指给你一个项目能自己完成推进且上线,不让别人给你擦屁股就可以了。更加强调整体项目管理上的能力,拿结果的能力。

  • 独立带人/带团队

进入到独立带人/带团队这个阶段,要关注的更多,整个团队的氛围、工作效率,运用你一技之长的工程经验带领团队高效优质的产出成果,实现1+1>2。做好团队的两张大图,业务大图&技术大图。让团队的同学知道自身的发展主线。工作开心了,团队稳定性才高。

  • 独立做业务&独立生存

团队稳定之后,开始关注所做的业务,行业的发展,理解你的用户,他们是谁,他们在哪,他们为什么使用你的产品,为团队指引下一步的产研方向。最高境界就是能带领一群人养活自己,独立生存下来。这里面至少要有商业眼光,深知你所处的行业的商业玩法,还要能玩得转。如果能很好的解决这个问题,我相信各位都混的挺好的。

独立做事每个阶段,都是一次比较大的跨越,需要思想和多种软素质发生较大的变化,抛开技术人的身份不讲,独立做事的几个阶段,也是一个人逐渐成熟的过程。如果有扎实的一技之长,又能独立活下来,我肤浅的认为程序员35的危机应该不再有。

第三阶段:寻找使命

寻找使命,实现自我价值。是创业还是跳槽?是要生活还是工作?该如何平衡?我现在还是云里雾里的,还在探索,留一个开放的问题让感兴趣的同学讨论。

最后用莫泊桑的话来结尾:“生活不可能像你想象得那么好,但也不会像你想象得那么糟。我觉得人的脆弱和坚强都超乎自己的想象。有时,我可能脆弱得一句话就泪流满面,有时,也发现自己咬着牙走了很长的路”。在这里工作就是这样,但我坚信明天会更好。

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++堆栈中 top() pop()的具体作用是什么

top()是取栈顶元素pop()是弹出栈顶元素stack<int> a;a.push(1); // 1a.push(2); // 1 2a.push(3); // 1 2 3int c a.top(); // c 3a.pop(); // 1 2a.push(4); // 1 2 4c a.top(); // c 4

如何可视化编写和编排你的 K8s 任务

简介 K8s Job 是 Kubernetes 中的一种资源&#xff0c;用来处理短周期的 Pod&#xff0c;相当于一次性任务&#xff0c;跑完就会把 Pod 销毁&#xff0c;不会一直占用资源&#xff0c;可以节省成本&#xff0c;提高资源利用率。 阿里任务调度 SchedulerX 和云原生结合&#x…

前端智能化实践——可微编程

什么是可微编程 通过动画、动效增加 UI 表现力&#xff0c;作为前端或多或少都做过。这里以弹性阻尼动画的函数为例&#xff1a; 函数在 时是效果最好的。最终&#xff0c;实现成 JavaScript 代码&#xff1a; function damping(x, max) {let y Math.abs(x);// 下面的参数都是…

HDU 1495(非常可乐)

Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事情&#xff0c;但是seeyou却不这么认为。因为每次当seeyou买了可乐以后&#xff0c;阿牛就要求和seeyou一起分享这一瓶可乐&#xff0c;而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子&#xff0c…

解析 RocketMQ 业务消息——“事务消息”

引言&#xff1a;在分布式系统调用场景中存在这样一个通用问题&#xff0c;即在执行一个核心业务逻辑的同时&#xff0c;还需要调用多个下游做业务处理&#xff0c;而且要求多个下游业务和当前核心业务必须同时成功或者同时失败&#xff0c;进而避免部分成功和失败的不一致情况…

模型代码联动难? BizWorks 来助力

业务模型设计和沉淀是企业数字化转型过程中非常重要的一个环节, 日趋复杂的业务场景和协作模式给建模的有效性以及模型作为业务资产如何持续发挥价值带来了新的挑战: 设计完成的业务模型是否被合理实现了?经过数月、半年、1年迭代后&#xff0c;模型设计还能否对业务系统的演…

EasyNLP 集成 K-BERT 算法,借助知识图谱实现更优 Finetune

导读 知识图谱&#xff08;Knowledge Graph&#xff09;的概念⾸次出现2012年&#xff0c;由Google提出&#xff0c;它作为⼀种⼤规模语义⽹络&#xff0c; 准确地描述了实体以及实体之间的关系。知识图谱最早应⽤于搜索引擎&#xff0c;⽤于准备返回⽤户所需的知识。随着预训…

一种关于低代码平台(LCDP)建设实践与设计思路

背景 负责菜鸟商业中心CRM系统开发已经有1年多时间&#xff0c;过程中发现有一个痛点&#xff1a;业务线特别多&#xff0c;每个业务线对同一个页面都有个性化布局和不同的字段需求&#xff0c;而我所在的团队就3个人&#xff0c;在资源有限的情况下如何支撑好呢&#xff1f;刚…

(cosψ)的三次方怎么积分

cosψ^3cosψ(1-sinψ^2)cosψ-cosψsinψ^2;之后积分∫&#xff08;cosψ-sinψ^2&#xff09;dψ∫ cosψdψ-∫ cosψsinψ^2dψ&#xff1b;∫ cosψdψsinψ,由分部积分法可得&#xff1a;∫ cosψsinψ^2dψ∫ sinψ^2 d&#xff08;sinψ)&#xff1b;令sinψu,则∫ cos…

Redis 数据类型 list 以及使用场景

数据存储需求&#xff1a;存储多个数据&#xff0c;并对数据进入存储空间的顺序进行区分 需要的存储结构&#xff1a;一个存储空间保存多个数据&#xff0c;且通过数据可以体现进入顺序 list类型&#xff1a;保存多个数据&#xff0c;底层使用双向链表存储结构实现 list 类型数…

TairSearch:加速多列索引查询

互联网及传统行业应用服务的关键数据一般存储在MySQL这类的关系型数据库中。如需缓解数据库访问压力&#xff0c;可引入Redis等缓存系统承担热数据的查询&#xff0c;以此提升查询效能。然而业务场景如果是在数据库上做随意多列组合索引查询或者like模糊匹配查询&#xff0c;使…

qsort函数用法

qsort   功 能: 使用快速排序例程进行排序    用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));    各参数&#xff1a;1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针 用于确定排序…

如何在 Anolis 8上部署 Nydus 镜像加速方案?

在上一篇文章中详细介绍Anolis OS 是首个原生支持镜像加速 Linux 内核&#xff0c;Nydus 镜像加速服务重新优化了现有的 OCIv1 容器镜像格式&#xff0c;重新定义镜像的文件系统&#xff0c;数据与元数据分离&#xff0c;实现按需加载&#xff0c;本文作为使用 Nydus 的教程将详…

机器学习访存密集计算编译优化框架AStitch,大幅提升任务执行效率

近日&#xff0c;关于机器学习访存密集计算编译优化框架的论文《AStitch: Enabling A New Multi-Dimensional Optimization Space for Memory-Intensive ML Training and Inference on Modern SIMT Architectures》被系统领域顶会ASPLOS 2022接收。 AStitch通过编译优化的手段来…

微前端架构的几种技术选型

背景 随着SPA大规模的应用&#xff0c;紧接着就带来一个新问题&#xff1a;一个规模化应用需要拆分。 一方面功能快速增加导致打包时间成比例上升&#xff0c;而紧急发布时要求是越短越好&#xff0c;这是矛盾的。另一方面当一个代码库集成了所有功能时&#xff0c;日常协作绝…

真正的 HTAP 对用户和开发者意味着什么?

数据库的全称是 DBMS&#xff08;Database Management System&#xff09;&#xff0c;早期是不区分 OLTP 与 OLAP 的&#xff0c;E.F.Codd 在 1970 年就提出了关系模型&#xff0c;Jim Gray 在 1976 年提出了事务模型。随着数据库的应用场景越来越丰富&#xff0c;单一数据库的…

const常见用法

const用法主要是防止定义的对象再次被修改,定义对象变量时要初始化变量 下面我就介绍一下几种常见的用法 1.用于定义常量变量,这样这个变量在后面就不可以再被修改 const int Val 10; //Val 20; //错误,不可被修改 2. 保护传参时参数不被修改,如果使用引用传递参数或按地址传…

微服务治理热门技术揭秘:无损上线

为什么有了无损下线&#xff0c;还需要无损上线&#xff1f;无损上线可以解决哪些问题&#xff1f; 本篇文章将一一回答这些问题。 无损上线功能不得不说是一个客户打磨出来的功能我们将从一次发布问题的排查与解决的过程说起。 背景 阿里云内部某应用中心服务在发布过程中出…

深度强化学习技术概述

深度强化学习介绍 强化学习主要用来学习一种最大化智能体与环境交互获得的长期奖惩值的策略&#xff0c;其常用来处理状态空间和动作空间小的任务&#xff0c;在如今大数据和深度学习快速发展的时代下&#xff0c;针对传统强化学习无法解决高维数据输入的问题&#xff0c;2013…

大屏小程序探索实践 | Cube 技术解读

所谓大屏小程序&#xff0c;是以 Cube 小程序技术栈 为载体&#xff0c;运行在智能电视或智能机顶盒等设备上的一种小程序形态。这些设备的主要特点是&#xff1a; 以 Android 系统为主&#xff0c;系统版本普遍较低&#xff0c;有些设备依然停留在 Android 4.2&#xff0c;An…