“技术开发最应该做什么?”,聊聊我在服务端开发5年的理解和收获

news2025/6/24 6:10:46

6c180ca96dd3e007661432be347426f0.gif

我们新推出大淘宝技术年度特刊《长期主义,往往从一些小事开始——工程师成长总结专题》,专题收录多位工程师真诚的心路历程与经验思考,覆盖终端、服务端、数据算法、技术质量等7大技术领域,欢迎一起沟通交流。

本文为此系列第二篇内容。

第一篇:负责淘宝业务前端开发9年,聊聊我的心得

本文作者三尽17年本科毕业,兜兜转转做服务端开发5年了,“技术开发最应该做什么事”,这个问题时常在他的脑海回荡。

91940a31d017cd25225b07d26dc28802.png

个人经历简述

我是一个从业经验已有5年的服务端开发,未毕业的时候就经历过创业的艰辛。毕业后,辗转几轮经历过传统互联网的沉寂,体验过直面用户的成熟toC产品,最终来到了阿里大淘宝技术做成熟的toB商家业务。在不同阶段的我,对开发岗位的理解也各不相同,以下是我的成长和收获,希望对你有所帮助。

733e1fdce7e0979d07c611566748788b.png

2015~2016:不成熟的创业团队中,做唯一的技术开发

创业还是忽悠?我选择了退出

这段经历是我大三那年的经历。

在学校自学半年java的我,机缘巧合,“受邀”成为了某不知名“创业团队”的一员,抱着学习+锻炼能力的态度,一个人承担了团队对外的网站全部建设(后来才知道,当时没钱请不起外包做网站),包括前后端开发+买域名租服务器。

当时只学习了后端三板斧的我,每做一小步都得百度很久,依靠碎片线索去学习新的技术,翻CSDN,搜github,无所不用,经常从早忙到晚。幸运的是网站成功上线了,并稳定运行了半年之久,过程收获巨多。

当然散伙的原因也比较突然,某个午后,网站突然被“黑客”攻击无法访问,客户打电话投诉,而我只能频繁的去重启我那可怜的云服务器,非常尴尬(后来才知道是我那天手误开启了云服务器的某个高级安全策略,同一ip多次访问会拉黑半小时...)。

那件事之后,我意识到自身能力欠缺,也明白他们只想“白嫖”我,我立马找了个借口退出,火速散伙。随后在校招尾声中,随便投递了一家北京的公司,就只身飞了过去,进修技术。

  有收获成长的地方

做技术开发,需要有迎难而上的冲劲,遇到不懂的地方,主动找方法去解决。

能够看清自己的缺陷,及时止损。

  值得反思的地方

做决定太盲目,不管是没打听清楚就加入“创业团队”,还是随便找了个公司就奔去北京,都太过于仓促盲目,这样对自己是不负责的表现,需要反思和警惕。

28a0c70ae564260f8d9877b2a5da0cd9.png

2017~2018:传统互联网公司,做后端开发

毕业后第一份工作的无奈,自作自受

由于盲目的决定,导致我毕业后的第一份工作并没有做多久。

主要还是因为传统互联网公司的调性与我心中互联网公司的预期不一致导致的,项目节奏周期长,技术不够新颖,与外界存在明显断层,学不到心中自认为酷炫的技术等。

不过与之相对的是,因为节奏慢,所以能有充分的时间看书,我借着这段时间,慢慢弥补解决了之前碎片化学习技术,导致知识零散不连贯的问题。

  有收获成长的地方

真正意识到了盲目决策的苦果

36931d99b643f7a1ae6908cbe1c48724.png

2018~2020:北京新浪微博,做toC服务端开发

怎样才能保证月活上亿的app服务稳定

2018年的时候去了新浪微博做toC互动业务,想像中从零开始撸高并发高流量系统的愿景并没有实现,原来大家都是从现有的系统架构上添砖加瓦的吗?也是啊,怎么可能每次需求都需要重新撸高可用的架构呢?不现实。

从微博多机房部署,热点事件多级降级,动态扩缩容,热门评论模型,热点微博localcache化等,我开始一点点学会了怎么去保障一个月活上亿的app服务稳定。

此时我对一个成熟稳定的服务心中有了完整的印象,那么就是在设计之初需要考虑周全:存储容量,调用限流,下游依赖,异常兜底,降级预备。

有效的存储容量评估,能极大的减少成本浪费;可靠的调用限流,能保护系统不被打垮;清晰的下游,能在出问题时,随时上下信息串联;异常兜底设置,能让系统时刻在预期内运行;降级预备,任何非核心路径功能时刻都要考虑到为核心路径功能让路,降级掉非核心的请求压力,保障最核心功能的完整性。

  有收获成长的

明白了稳定服务必须具备的条件,同时明白了平台的重要性,我们搭建的服务都是依托当前已经成型的平台进行的,逃脱了平台加成,剩下的才是我们自己,不要生出膨胀的心理。

  需要反思的地方

平时埋头做业务,没做出突破性的技术成果,实属遗憾。

cb3009183b6d7891ea35dd95ec3ffd8d.png

2020~至今:阿里大淘宝技术,做toB服务端开发

正视业务才能打破技术壁垒

2020年的时候来到阿里大淘宝技术,做toB商家千牛业务。

来到阿里后第一次体会到完善且成熟的基础设施有多便利,完整的监控体系,无人值守的发布流程,一键机器置换的便利等,能让技术同学全身心的投入到业务模型的开发设计中,不需要考虑额外的负担。基于此我也开始重新思考作为服务端开发,当运维相关的负担减除后,服务端难道只干好coding就可以了吗?这个疑问在后面的时间里,与同事和TL慢慢交流沟通后有了答案。

“正视业务”是我了解到周围厉害的同事都在做的事情,站在业务的视角去考虑问题,设计方案,评估产品的设计合理性等。说实话在来阿里之前,我的业务意识非常薄弱,每次需求评审只会考虑技术方案的可行性和稳定性,很少能会聚焦到业务本身上,也不过多追究业务的走向,现在细想,这完全是错误的做法,在一步步埋没自己的职业生涯。

举例一个需求例子,业务上需要做一个收集满意度的功能。但是技术上就不能单单只考虑单点,需要多想一些扩展的能力,比如业务上后续是否要在其他场景也支持?支持横向扩展;如果能力做的完整,是否可以对外做开放?普利大众,降低重复编码成本,提高技术影响力。如果在设计之初只考虑到了“点”,没看到延展的“线”和铺开的“面”,只能看到当前的功能点,那么当业务重新提来升级需求的时候,当前的架构就容易抓瞎,只能被迫打补丁,甚至拒绝需求,这完全是不合理的,也不是一个合格的技术人员应该做的事情。

什么是好的技术方案?好的技术方案是能够贴合业务,甚至能驱动业务前进的,技术方案需要在一开始就去考虑业务的未来布局和整体方向,最好是能与业务产品一起去沟通细节,而不是坐等“投喂”。好的方案是沟通出来的,绝对不是闭门造车。

当我有意识的去将业务和技术结合后,设计方案的思路也经常会灵感爆棚,带入业务的视角评估方案,有种重新认识技术开发岗位的感觉,时刻都有收获。

  有收获成长的地方

重新认识了业务和技术的关系,业务是船,技术是帆,顺势而为才能一日千里

  需要反思的地方

能想到,能做到,能做好是各不相同的阶段,还需要更耐心的投入

8e0fdca30411742f00d5f9d79e1598bd.png

个人感悟总述


  代码方面

代码是程序员的灵魂,对代码一定要有追求,任何时刻都要对垃圾代码说拒绝,todo是骗人的鬼,不会有重构的机会的!“屎山”只会让后人反复的念叨自己!

  合作方面

不自我设边界,多做事情少偷懒,不可以耍滑头,多做了一件事不算吃亏,每个人都能看到谁在付出,认可是在平时一点一点积累出来的。

  沟通方面

多和老板聊天,当前如果和老板沟通有距离感,不适应,也可以多和师兄或者组长沟通交流,目的其实就是取经,能做你师兄或者组长的人,绝对有过人之处,向他们学习能少走很多弯路。

  身体方面

健康的身体才是职业生涯的保护伞,每周如果能保持少量的运动,对头发也是极好的。

  总结

17年本科毕业,兜兜转转做服务端开发5年了,“技术开发最应该做什么事”,这个问题时常在我脑海回荡。如果要问我现在有正确答案了吗?我的答案是看当前环境需要什么,永远做当前环境最需要,当前业务最紧迫的事情,满足了这个,那无论做什么都是正确答案。

f8ed9439c8c19653c2e1c55b95ec9db1.png

团队介绍

我们是大淘宝-商家技术团队,用技术和产品能力,构建支撑商家持续经营的基础设施,数据化的为商家带来新的增长。
在技术上,我们精益求精,用端到端的技术平台,直面百万级别的QPS,为商家生意的爆发保驾护航。
在业务上,我们勇于突破,带领和支撑集团战略级的战役,从而推动整个淘宝天猫的增长。
在人才上,我们渴望怀揣着有技术梦想的同学加入我们团队,一起为阿里巴巴零售体系的未来布局。

¤ 拓展阅读 ¤

3DXR技术 | 终端技术 | 音视频技术

服务端技术 | 技术质量 | 数据算法

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

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

相关文章

我的.net视频课程

https://edu.csdn.net/lecturer/222?spm1002.2001.3001.4144

9.并发基础与CAS基本原理

线程的状态/线程的生命周期 初始化 Thread thread new Thread();运行 thread.start(); 运行中状态 ——> 调用yeild进入就绪状态就绪状态 ——> 通过系统调度(获取到cpu时间片),又会进入到运行中状态 等待 调用如下方法就从运行进入到等待状态: Object.wait()、Object.…

2360. 图中的最长环

方法一&#xff1a;拓扑排序加搜索 class Solution { public:bool vis[100005];vector<int>v[100005];int dfs(vector<int> &dist,int st,int step){vis[st]true; // cout<<st<<endl;int res0;for(int i0;i<v[st].size();i){int xv[st][i];if(…

Angular开发之——Angular项目介绍(03)

一 概述 Angular项目目录介绍Angular程序如何启动 二 Angular项目目录介绍 2.1 项目目录 2.2 目录结构说明 工作区配置文件 node_modules &#xff1a;第三方依赖包存放的目录src&#xff1a;应用源代码目录angular-cli.json&#xff1a; Angular命令行工具的配置文件&…

设计模式之桥接模式释义与举例剖析

文章目录 一、前言二、模式定义三、模式结构四、案例具体实现五、 模式优缺点六、 模式使用场景七、 模式总结 一、前言 开始学Java讲继承的时候&#xff0c;总喜欢用一个例子来讲解&#xff0c;那就是画图形。这里有一个画笔&#xff0c;可以画正方形、长方形、圆形。除了画出…

OpenCV-答题卡识别-四点透视变换

目录 答题卡识别图片读取四点透视变换 划出区域处理选择题区域处理准考证号区域处理科目区域得分导出结果 封装成品 答题卡识别 使用opencv技术&#xff0c;实现对答题卡的自动识别&#xff0c;并进行答题结果的统计 技术目的&#xff1a; 能够捕获答题卡中的每个填涂选项;将…

【新星计划-2023】TCP三次握手和四次挥手讲解

关于TCP三次握手和四次挥手&#xff0c;各位想必在读大学的时候或者是在面试的时候一定遇到过&#xff0c;三次握手和四次挥手本身是不是太难的&#xff0c;但它容易忘&#x1f61e;&#xff0c;今天我就在这里给大家讲解一下三次握手与四次挥手。 一、三次挥手 TCP三次握手建…

我,大厂P9,找不到工作

作者| 老W 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) K哥写在前面的话&#xff1a;这是一位读者投稿&#xff0c;读者老W讲述了自己从大厂P9失业后、再就业的故事&#xff0c;并总结了自己的心路历程&#xff0c;很真实的记录与思考&#xff0c;值得大家借…

SensorX2car:在道路场景下的完成传感器到车体坐标系标定

文章&#xff1a;SensorX2car: Sensors-to-car calibration for autonomous driving in road scenarios 作者&#xff1a;Guohang Yan, Zhaotong Luo, Zhuochun Liu and Yikang Li 编辑&#xff1a;点云PCL 代码&#xff1a;https://github.com/OpenCalib/SensorX2car 作者单位…

IDEA+maven+Springboot工程创建超详细过程示例

IDEAmavenSpringboot工程创建超详细过程示例 1、IDEA、Maven下载安装及IDEA配置Maven教程2、IDEAmavenSpringboot的web工程创建示例2.1 SpringBoot简介2.2 maven形式创建sprintboot工程2.3 导入相关依赖2.4 创建SpringBoot启动类2.5 创建 Controller2.6 启动项目2.7 配置端口信…

springboot第22集:security,Lombok,token,redis

Spring Security是一个基于Spring框架的权限管理框架&#xff0c;用于帮助应用程序实现身份验证和授权功能。它可以为Web应用程序、REST API和方法级安全性提供支持&#xff0c;并支持各种认证方式。 Spring Security最初是Acegi Security的前身&#xff0c;但由于其配置繁琐而…

【第六期】Apache DolphinScheduler 每周 FAQ 集锦

点击蓝字 关注我们 摘要 为了让 Apache DolphinScheduler 的广大用户和爱好者对于此项目的疑问得到及时快速的解答&#xff0c;社区特发起此次【每周 FAQ】栏目&#xff0c;希望可以解决大家的实际问题。 关于本栏目的要点&#xff1a; 本栏目每周将通过腾讯文档&#xff08;每…

用排列组合来编码通信(六)——魔术《5张牌的预言》的魔术拓展之《My Fitch Four Glory》...

早点关注我&#xff0c;精彩不错过&#xff01; 在上一篇中&#xff0c;我们介绍了《5张牌的预言》这个魔术的一个精彩的扩展表演《Eigens Value》&#xff0c;把这个魔术和数学性质的结合做到了极致&#xff0c;相关内容请戳&#xff1a; 用排列组合来编码通信&#xff08;五&…

第二十二章 Unity 光照贴图

光照贴图过程将预先计算场景中静态物体表面的亮度&#xff0c;并将结果存储在称为“光照贴图”的纹理中供以后使用。光照贴图可以包含直接光照和间接光照&#xff0c;以及阴影效果。但是&#xff0c;烘焙到光照贴图中的数据无法在运行时更改&#xff0c;这就是为什么移动静态物…

Angular开发之——Angular介绍(01)

一 概述 Angular是什么AngularJS和Angular关系Angular特性Angular的发展历史Angular学习建议 二 Angular是什么 Angular(读音[ˈŋɡjələr])是一套用于构建用户界面的javaScript框架。由Google开发和维护&#xff0c;主要被用来开发单页面应用程序类似于Vue.js(MVVM数据驱动…

视觉检测技术在图书生产缺陷控制中的应用

在过去我们一直向大家展示的是视觉检测应用在重工业制造之上&#xff0c;让很多人误以为这种新兴的检测技术更加倾向于重工业&#xff0c;或者说因为成本因素&#xff0c;这项技术对目前的轻工业来说更加的不友好&#xff0c;其实并不是这样的。 轻工业我们之所以很少的提机器…

docker入门和docker应用场景,镜像制作,服务编排,docker私服

一、简介 docker解决了什么问题docker和虚拟机的区别在CentOS7里安装docker 1. docker简介 我们写的代码会接触到好几个环境&#xff1a;开发环境、测试环境以及生产环境等等。多种环境去部署同一份代码&#xff0c;由于环境原因往往会出现软件跨环境迁移的问题&#xff08;也就…

黏包和半包

黏包和半包 黏包&#xff1a; Slf4j public class HelloWorldServer {public static void main(String[] args) {NioEventLoopGroup boss new NioEventLoopGroup();NioEventLoopGroup worker new NioEventLoopGroup();try {ServerBootstrap serverBootstrap new ServerBoo…

open3d教程(二):可视化三维模型,并转换成点云(Python版本)

1、三维模型获取 可以自己用建模软件建立一个模型从free3d免费下载 2、关键函数 open3d.visualization.draw_geometries 参数&#xff1a; geometry_list(List[open3d.geometry.Geometry])&#xff1a;要可视化的几何体列表.window_name(str, optional, defaultOpen3D)&…

Linux环境下编程遇到“fatal error:stdio.h:没有那个文件或目录”错误解决办法

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天总结一下linux环境下如何解决一个常见的问题&#xff0c;也就是“fatal error:stdio.h:没有那个文件或目录”错误。 不少初学者在linux环境下用gcc编译C语言时&#xff0c;经常会遇到这个问题。 比如当…