热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我在阿里是怎么工作的——写在阿里入职两周年

作者:这是你的玩具车吗juejin.cnpost6973483540906246152周年总结的方式不错——除了自身的思考总结以外,去年写的阿里入职一

作者:这是你的玩具车吗

juejin.cn/post/6973483540906246152

周年总结的方式不错——除了自身的思考总结以外,去年写的阿里入职一周年总结,到现在都还会时不时有同学点赞,这给这件事增添了不小的附加值。而今,我已经入职两周年啦!在过去的一年里,得益于公司的熏陶和自己职责的变化(从自己干到实线带人干),我总结和沉淀了对我影响最大的几条Tips,在这里分享给大家,希望也能给大家带来帮助。


1. 明确自身的定位

我记得刚进入公司的时候,有小伙伴告诉我一个故事:一个P8大佬在升级为P9之后,第一次绩效考核被打了325,原因是他没有无中生有。我当时听到这个故事之后脑袋都是???,疑惑公司不应该持续培养优秀的人才吗,为什么会刚给人晋升就给人打325?后来我自己也承担了一定的管理责任,最初我自己一直在“自己干”和“带人干”中反复横跳——核心问题是:自己都干了兄弟们就闲着了,而都给兄弟们干了我干啥?

那段时间我很痛苦,现在回想起来,原因就是没有明确自身的定位。定位分为两种:

  • 自己给自己设定的人设

  • 公司对你的要求

在我的这个例子里,我给自己的人设是技术核心开发,冲在一线的那种,我也很享受这种问题到我而止的状态。而公司对我的要求是带着一个小团队一起成长,在这个定位中,带领团队成长的优先级>>>自身冲锋在前的优先级。所以,如果我持续自己干,那么就不符合公司对我的定位,也就得不到认可。那么这个时候只能积极调整自己的定位,使自身和公司给你的定位match。

有趣的是,在整个职业生涯中,这样短时间内阶段性不match的情况可能会出现很多次。比如说:

自己的定位是否match公司对你的定位
P5完成任务+持续进步Y基础扎实、高质完成
P5->P6完成任务+持续进步N独挡一面、辅助团队
P6/P7单打独斗技术核心+问题终结者Y独挡一面、辅助团队
单打独斗->带团队技术核心+问题终结者N深入研究、促进成功、领域规划
P7带团队技术PM+技术核心Y深入研究、促进成功、领域规划
P7->P8技术PM+技术核心N体系构建、共赢、系统规划
P8架构师+技术PMY体系构建、共赢、系统规划

每次的晋升或者组织安排都代表着一次新的挑战,必将打破你当前赖以生存的经验方法论,只有主动调整才能让自己持续match。所以现在在回头看开始那个例子,如果那个大佬是被公正对待而不是PUA的话,那么他大概率是没有明确好自己的定位。

明确不好自身定位当然是有原因的,而原因我认为主要有两个:

一是没有认识到,还停留在过去的工作方法论中不可自拔。是的,过去的工作方法论成就了当时的你,但是如果不持续更新的话,最终也会限制你,成也萧何,败也萧何。

另外一个更重要的原因是,不清楚新定位的衡量标准和行为准则。还是以我为例,理智上告诉我要放手,但是都放手之后公司会如何考核我呢,如何考核我的小团队呢,东西都给兄弟们干我就合格了?大概率不是的。**可是我该干什么呢?抛弃代码,改为制订流程规范、需求评审鉴别风险、多社交多寻求合作、和团队谈话多招聘吗?**这当然是重新定位后必须干的,但不是我想要的。还是说我自己也领一块,半个技术核心+半个管理的方式?貌似也很别扭,我自己如果领的是核心的部分,但是我又不能做到全人力投入;而如果不核心,我又领它干嘛。我一直在反复纠结,反复痛苦,直到有一天,我突然悟了,那就是向前兼容。

2. 向前兼容


向前兼容:软件、规范升级时需要尽可能遵循的一个规范。本意是新版本还继续兼容老版本,在这里指的是在晋升到下一个阶段之后,持续保持上一个阶段的能力。

但凡是志在要走管理路线的程序员,我想到一定阶段总会遇到这样的困惑——公司明面上对你的要求是管理,实际上的要求是有产出,有产出的必要条件是团队持续进步,但是管理是团队进步的必要不充分条件。不管肯定不行,而只管不干不仅伤害自己,也会逐渐丧失技术视野,最终丧失团队的管控能力,也会影响团队的产出。我认为,在当前激烈竞争,而且未来还将更激烈的竞争环境中,基层单纯的管理不会令公司满意,也不会有核心竞争力。

那么,问题来了,如何持续保持自己竞争力的情况下,让团队持续进步,从而做到有产出?

向前兼容是我给出的答案。在每个阶段,都保持上一个或者上几个阶段的能力。如下图:

Image

尽管可以看到,从灰区到橙区,技术实现+技术架构的总体占比一直在减少,软性实力(沟通、管理等)的占比一直在增加,但是技术实现+技术架构一直没有消亡。另外,技术架构在总体的占比中还有增长。技术实现上,可以逐步从主PM->核心开发,内容上可以更偏全局设计一点,把自己当成一块万能砖,哪里需要往哪搬。相信我,万能砖不可能都被安排增删改查的,除非都是增删改查,或者这砖根本就不是万能砖。

这样,一旦事有不谐,进可架构调整快速调整,退可果断下沉撑起业务,完美。

说到这里,有同学可能又会说了,这不就是一半技术一半管理吗?换汤不换药啊。其实,向前兼容的本质是绝不放弃技术,有甘当万能砖的心态。一直保持警惕,保持压力,通过万能砖(亲身体会)+项目整体规划(总体管控),来保证团队活力和自身的技术敏锐度。说到这里,是不是感觉到这和公司要求高年级的同学写代码不谋而合。

刚才本文用了1、2两个部分描述我面对定位变化是如何改变的,3、4、5是我在这一年日常工作中感受最深的3点。


3. 复杂的方案往往来自于错误的设计

当你遇到一个代码逻辑巨复杂的时候,请一定静下心来来想一想自己的方案是否有问题。极有可能是

  • 定了错误的方案

  • 忽略了核心的链路节点

  • 没有使用相对应的技术

导致的。这一条箴言是有位同学告诉我的,在我过去的一年中反复被验证。举个简单的例子,在一个弱性能的webview上不要期望用JS实现复杂的动画,可能你辛苦调了N久都有性能问题或者bug,改用CSS动画,大概率能流畅丝滑。

而避免错误设计的本质是平时多看多想多摄入,关键时刻才能手里有枪,心中不慌。

4. 让专业的人去干专业的事

去年因为一个技术项目需要写SQL,因为数据是脏的,SQL又复杂,我们写的贼痛苦,耽误了很多时间,最终导致产出不够。但是类似的事情其实给DA(数据分析),三下五除二就干完了。类似的,DA对于端侧的打点可能很痛苦,但是对于端侧开发,也是分分钟的事情。术业有专攻,不要轻易挑战非自己的领域——这不是勇敢,是拿自己的弱点去迎敌,还妄图以弱克强。如果真的有需要,请拉上相关的专业帮手。

另外一个感慨来自于我们的一位离职同学,他落寞的离开了搜索,但是在PDD干的风生水起。有个成语叫因人善用,没有人是完美无缺的,都有各自的毛病。代码能力强的同学就应该被多安排去coding和做技术方案,推动能力强的同学就应该被安排去横向联通。带人绝不应该只盯着别人的缺点,却看不到别人的闪光点,良将无劣兵。

5. 控制边界,追求合作

在当前的前端领域,已经从蓝海变成红海。想要靠自己,做出一个类似于React, Weex的流行框架已经不太可能了。表层的业务价值也被攫取殆尽,前端想抛弃其他端,独自做一件事的价值也非常有限。随着一大批轮子的诞生,再想靠单打独斗做一个轮子,取得正向结果的情况会越来越少。

换言之,前端已经

  • 从群雄逐鹿划地盘的时代变成了多端合作深耕的时代

  • 从自己一肩挑时代变成了专业领域分工合作时代

  • 从单纯的技术项目时代变成了针对特定业务的技术项目时代

在这样的时代,需要以把蛋糕做出来、做大为目的,需要控制好自己的边界和欲望;同其他前端组合作,同其他技术侧合作,同业务侧合作,同运营侧合作,将所有能团结的力量团结在自己身边,做好口碑,有限度的收获自己的那一部分,这样的开发才有出路。

未来,能做出来的轮子一定是复杂的、符合特定业务场景的轮子,包层皮党,捡果子党都将不复存在;而在这一个转换浪潮中,转换的越快越好的人,才能成长和收获。

总结

以上就是我在阿里第二年的5点感悟,有关于自身成长的、有关于日常工作的、还有关于前端领域发展方向的,可能你也遇到过我的痛苦,可能你还没有遇到过,更有可能的你已经成功跨越。希望这些经验能对你有所帮助。

-END-


推荐阅读
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 利用 JavaScript 和 Node.js 验证时间的有效性
    本文探讨了如何使用 JavaScript 和 Node.js 验证时间的有效性。通过编写一个 `isTime` 函数,我们可以确保输入的时间格式正确且有效。该函数利用正则表达式匹配时间字符串,检查其是否符合常见的日期时间格式,如 `YYYY-MM-DD` 或 `HH:MM:SS`。此外,我们还介绍了如何处理不同时间格式的转换和验证,以提高代码的健壮性和可靠性。 ... [详细]
  • 本文详细解析了 Yii2 框架中视图和布局的各种函数,并综述了它们在实际开发中的应用场景。通过深入探讨每个函数的功能和用法,为开发者提供了全面的参考,帮助他们在项目中更高效地利用这些工具。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 计算机视觉领域介绍 | 自然语言驱动的跨模态行人重识别前沿技术综述(上篇)
    本文介绍了计算机视觉领域的最新进展,特别是自然语言驱动的跨模态行人重识别技术。上篇内容详细探讨了该领域的基础理论、关键技术及当前的研究热点,为读者提供了全面的概述。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • MongoDB核心概念与基础知识解析
    MongoDB 是一种基于分布式文件存储的非关系型数据库系统,主要采用 C++ 语言开发。本文将详细介绍 MongoDB 的核心概念和基础知识,包括其与传统 SQL 数据库的区别,数据库及集合的基本操作,如数据的插入、更新、删除和查询等。通过本文,读者可以全面了解 MongoDB 的基本功能及其应用场景。 ... [详细]
  • Android常见漏洞漏洞名称:Log敏感信息泄露漏洞描述: 程序运行期间打印了用户的敏感信息,造成泄露修改建议: 建议禁止隐私信息的log  ... [详细]
  • 微信小程序官方组件展示之表单组件input源码
    以下将展示微信小程序之表单组件input源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档。功能描述:输入框。该组件是原生组件, ... [详细]
  • 前言作为一个移动端初学者、爱好者,能使用前端技术开发原生游戏一直是一件渴望而不可及的事情,暂且不说游戏逻辑的复杂度,算法的健壮性ÿ ... [详细]
  • webui之常用js操作(webui界面是什么)
    本文目录一览:1、web前端开发需要掌握的几个必备技术 ... [详细]
author-avatar
mobiledu2502882465
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有