Coding五年,我在阿里“啃”了块硬骨头

简介: 记五年的成长

image.png
作者| 李靖(阎王)
出品|阿里巴巴新零售淘系技术部

导读:在阿里的日子过得太快,转瞬间已在指尖和键盘的 Coding 声中溜走了五年,这五年,我从青涩的小伙转身成为一个女娃娃的爹,也从略带内向的毕业生进化成了既能码又能撕的“胡子大叔”。

人可以累,心不能累

刚入职时,作为一名技术新人,负责 PC 版的淘宝首页,这块业务很特殊,它的受众很多,每天都有上亿的流量,系统的复杂度虽不是很高,但是风险特别大,而且需要与很多很多很多人交涉,我接手之时业务发生了一些变化,作业量很大,压力也很大,有来自业务方的压力,也有技术上的挑战,那段时间,连续一两个月,加班到晚上 1 点左右回家,而且 1 点以后还有可能收到业务方的电话。

有一天晚上,大概 11 点钟,整层楼只剩下我和我的主管,在优化一个技术细节问题,他其实已经陪我快一个星期了。多日的疲惫感让我一下子爆发了出来,那天晚上,我哽咽了,哭了,最后泣不成声,主管在旁边,他话不多,等我哭的差不多的时候,他告诉我,“成长是很累,但是人可以累,心不能累”。

这几年,我一直记着这段往事,也把那句话深深地刻在了心里。从那以后,不管是工作,还是生活,我都会尽量保持良好的心态,每每感觉心累的时候,都会想办法调节自己。

当工作和生活交织在一起的时候,也很容易把生活中的情绪带到工作上来,心中的不如意会像病毒一样占据大脑,压垮我们的心理防线。学会站得远一点来看待眼前,其实一切都会消逝,生活和工作都不会因为一点小事而变得黯淡无光,远方的路还很长。

你自信吗?

看不清前路的时候,鞭策自己的就是“相信”二字。

依稀记得刚来阿里的一两年,前头总有个师兄领着,完全不用担心迷路的事情,可不知道从什么时候开始,师兄好像成为了一团烟雾,弥散在了眼前,这才意识到,前方的路,需要自己去走。需要思考的问题越来越多,能得到的输入越来越少,我已经数不清自己有多少回看不清前路了,但每每看到一丝希望,都会紧紧地抓住,走下去。

做店铺业务的那年,我们团队人少事多,我负责的是 ISV 开放相关的技术支撑,旧的技术体系要过渡,新的方向要探索。在做规划的那段时间,我连闭上眼睛都能看到一堆让人头疼的问题在脑子里转来转去,后来我们决定把开发者的体验做上去,选择了一个非常难啃的技术领域——IDE 编辑器。当初我的内心是拒绝的,我认为自己搞不定,可实在也没有太多的路可以选择。

转岗吧,但回头一想,如果这块骨头不啃碎,ISV 技术支撑的体验很难有质的突破,团队的压力也会更大;另外再想一想,其实“好做”的事情都已经做得差不多了,大家都进入了深水区,没有那么多好啃的骨头。几个深呼吸以后,我决定,提起勇气,扎扎实实地干它一场。

那半年,时而痛苦,时而兴奋。庆幸的是,如期地帮助 ISV 解决了一些实际场景的问题。

当然,相信也是有条件的,当我把事情列清楚了,我多了一份相信;当我做出了一点点效果,又多了一份相信;当我得到了兄弟团队的关注和寻求合作的意向,我知道,当初的坚守是对的。大胆思考,小心求证,稳步向前地相信,前路才会越来越清晰。

赋予工作多一点意义

一线的研发工作,并不是每时每刻都充满着趣味和挑战,可以说日常的大部分时间都在处理琐碎的看似不起眼的脏活、苦活、累活。思维没打开,就好像囚禁在笼子里,看不清上下游关系,也看不到做这件事情的价值和意义。

工作的意义从来都不是别人赋予的,而是自我赋予。内心被人说服了,所以去做;看到了问题,所以去做;经历过痛苦产生了共情,所以去做。每一行代码、每一次优化、每一个变更,都期望能够让我们的用户更爽一点,用户爽了,我们的心里也就爽了。

近期的工作是解决前端工程相关的研发体验和效率问题,几乎每天都会听到来自不同 bu 的研发同学的声音,听到了他们的抱怨,也听到了他们的赞许,很多心声他们并不会全部吐露出来,但顺着反馈去看看是什么让他们爱不释手,是什么让他们痛不欲生,进而做出一些改变,这或许就是我给工作赋予的更多意义;而不是像不是一颗螺丝钉般,成天机械地解决来自用户、主管、合作伙伴提过来的各种需求。

世界没有太多的变化,但是用不一样的眼光去看待这个世界,可能会大大的不一样。

五年,五味杂陈

在我们的人生中,有好多个五年,不长也不短。在这里,我度过了工作后的第一个五年,内容很丰富,这也让我意识到,未来需要以更长的跨度来规划阶段性的人生。

感谢这五年,感谢身边的人,也感谢阿里巴巴,让我受益良多~

关注「淘系技术」微信公众号,获取更多技术干货

image.png

相关文章
|
SQL 缓存 Java
殷浩详解DDD系列 第三讲 - Repository模式
# 第三讲 - Repository模式 **写在前面** 这篇文章和上一篇隔了比较久,一方面是工作比较忙,另一方面是在讲Repository之前其实应该先讲Entity(实体)、Aggregate Root(聚合根)、Bounded Context(限界上下文)等概念。但在实际写的过程中,发现单纯讲Entity相关的东西会比较抽象,很难落地。所以本文被推倒重来,从Repository
38029 8
|
微服务 测试技术 Java
阿里技术专家详解 DDD 系列- Domain Primitive
关于DDD的一系列文章,希望能继续在总结前人的基础上发扬光大DDD的思想,但是通过一套我认为合理的代码结构、框架和约束,来降低DDD的实践门槛,提升代码质量、可测试性、安全性、健壮性。
62255 17
阿里技术专家详解 DDD 系列- Domain Primitive
|
设计模式 弹性计算 人工智能
阿里技术专家详解DDD系列 第四讲 - 领域层设计规范
在一个DDD架构设计中,领域层的设计合理性会直接影响整个架构的代码结构以及应用层、基础设施层的设计。但是领域层设计又是有挑战的任务,特别是在一个业务逻辑相对复杂应用中,每一个业务规则是应该放在Entity、ValueObject 还是 DomainService是值得用心思考的,既要避免未来的扩展性差,又要确保不会过度设计导致复杂性。
|
消息中间件 网络协议 前端开发
殷浩详解DDD:如何避免写流水账代码?
在日常工作中我观察到,面对老系统重构和迁移场景,有大量代码属于流水账代码,通常能看到开发在对外的API接口里直接写业务逻辑代码,或者在一个服务里大量的堆接口,导致业务逻辑实际无法收敛,接口复用性比较差。所以本文主要想系统性的解释一下如何通过DDD的重构,将原有的流水账代码改造为逻辑清晰、职责分明的模块。
殷浩详解DDD:如何避免写流水账代码?
|
前端开发 Java 数据库连接
领域驱动设计(DDD):分层架构
在应用系统开发中,采用严格的、单一的、真正的的分层架构是可以的,但实际上我们已经采用了多种架构模式设计系统。当多种不同范式的架构混合在一起,你会不会出现“指鹿为马”的现象呢?
领域驱动设计(DDD):分层架构
|
前端开发 JavaScript 开发者
javascript实现黑客帝国代码雨特效背景效果
javascript实现黑客帝国代码雨特效背景
352 0
javascript实现黑客帝国代码雨特效背景效果
|
存储 JSON Java
mapstruct最佳实践
当两个对象属性不一致时,比如User对象中某个字段不存在与UserVo当中时,在编译时会有警告提示,可以在@Mapping中配置 ignore = true,当字段较多时,可以直接在@Mapper中设置unmappedTargetPolicy属性或者unmappedSourcePolicy属性为 ReportingPolicy.IGNORE即可。 如果项目中也同时使用到了 Lombok,一定要注意 Lombok的版本要等于或者高于1.18.10,否则会有
327 0
|
设计模式 消息中间件 缓存
DDD系列第五讲:聊聊如何避免写流水账代码
在过去一年里我们团队做了大量的老系统重构和迁移,其中有大量的代码属于流水账代码,通常能看到是开发在对外的API接口里直接写业务逻辑代码,或者在一个服务里大量的堆接口,导致业务逻辑实际无法收敛,接口复用性比较差。所以这讲主要想系统性的解释一下如何通过DDD的重构,将原有的流水账代码改造为逻辑清晰、职责分明的模块。
11384 3
DDD系列第五讲:聊聊如何避免写流水账代码
|
数据库 测试技术 Java
阿里技术专家详解DDD系列 第二弹 - 应用架构
应用架构,指软件系统中固定不变的代码结构、设计模式、规范和组件间的通信方式。在应用开发中架构之所以是最重要的第一步,因为一个好的架构能让系统安全、稳定、快速迭代。但是今天我们在做业务研发时,更多会关注一些宏观的架构,而忽略了应用内部的架构设计,希望能通过案例分析和重构,推演出一套高质量的DDD架构。
58311 24
阿里技术专家详解DDD系列 第二弹 - 应用架构
|
存储 前端开发 关系型数据库
浅谈DDD中的聚合
在我看来并不是MVC的基础上增加领域层,使用充血模型,解耦基础服务,我的代码就符合DDD了。
浅谈DDD中的聚合