研发的立足之本到底是啥?
0 你的问题,我知道!
本文深入T型图“竖线”的立足之本:专业技术 + 技术赋能业务能力。研发在学习投入精力最多,也误区最多。
某粉丝感发展遇到瓶颈,项目都会做,但觉无提升,想跳槽。于是,梳理过往经历。
他觉得业务小,阻其技术发展。但细问,这系统用户量百万级,一点不小,只是淡季、旺季明显。旺季时常卡死、提交延迟。
你这核心系统主程,咋看待这问题,啥优化思路?他皱眉说不出。我看他还做过重构
Q:系统为啥重构?
A:原框架太老,现在大家都用新框架。而重构的收益,说不透……
这是典型只看到技术能力最表层技能,觉得会编程,做需求开发上线就够。但研发硬技能不止于此。
1 专业技术能力
如用冰山模型形容,更多藏在冰山下“看不见能力”。如Javaer日常Java编程,会用编程工具如IDEA,还会Linux命令,知道后端必备MySQL、Redis、MQ的API咋调,还能遵循编码规范和稳定性要求……看得见能力。
但更多看不见能力藏在山下。很多 JVM 原理,数据库原理等很多知识和能力需具备。

若研发仅注意力放在冰山上,大概率会:
- 很快沉溺瓶颈。觉得每天就CURD,没成长。若研发完全不懂设计原理,不懂咋写好代码,其环境也无好设计和CR机制,长久以往,系统成“垃圾山”,技术债越垒越高,完全无法维护。《代码整洁之道》说“不管你多敬业加班,面对烂系统,仍寸步难行,因你大多精力不在开发需求,而是应对混乱”。
- 变成定制螺丝钉。若你在大厂,会发现大部分底层服务如Redis、MQ有专人维护,他们还在上面定制开发。如把它们全当黑盒,出问题就找接口人,也非不可。但硬伤是协作成本高,而且你真变“螺丝钉”,“定制的螺丝钉”,只能在特定体系下生存,换个系统可能就“拧不上”
个人职业发展角度,若研发专业技术能力仅专注“山上”,就真是个“搬砖”。越在冰山之上的能力越简单、门槛低,越底层能力,鲁棒性越强:
- 曾经团队技术栈更换,从PHP全部重构为Java。之前PHP技术栈不错的,几月语言熟悉,在 Java技术栈仍不错。作为后端开发,难在网络通讯、存储、MQ、系统设计、故障排查等更底层经验积累。语言学不难,智商正常2周入门,后续只是需熟悉
- 前端常抱怨前端技术更新迭代太快,学不过来。而从业15年前端大佬指出前端工作本质:前端交付用户使用体验,而使用体验核心在交互。前端要多花时间了解交互及背后渲染,理解底层CPU、GPU渲染原理,弄清标准化端容器(如浏览器)工作原理。
因此,为让技术成长之道更长,让“兼容性”更高,能解决更复杂问题,适配更多样环境,要更关注冰山下技术,“往下沉”。
下沉方向
Javaer往3方向,可大提升技术深度。
语言深钻
底层及高级玩法。
能日常基础需求开发后,再深入掌握更高级使用。如了解JVM原理,知道Java系统调优方法,让服务更轻盈。
99%程序员一辈子没机会写JVM代码,但研发仍需了解技术底层实现原理,因为这是你解决难题、为企业创造价值前提。也是延长职业赛道的唯一有效途径;更是面试必问!
周边服务
与你日常工作息息相关的底层服务原理。
如:
- MySQL了解透彻数据库引擎、事务、索引等底层原理
- MQ清楚底层实现,了解常用MQ,技术选型时知啥场景选啥
熟悉这些最基础内容,是为日常工作出现问题、故障时可高效应对,更重要的是你的工作域变大,不再一群黑盒。
系统设计
常见设计原理、应用、经典场景的设计。
研发专业能力的成长:刚开始仅开发小功能,到维护模块,再到子系统,甚至一个业务域系统。系统设计能力就关键了。需将相应设计原理,具体应用方法,还有经典场景设计思路都搞透。
如了解高可用系统架构设计原理和实践,你就对公司这样那样“稳定性红线要求”更深理解,甚至主动思考自己做的模块强依赖、弱依赖啥服务?如需降级,咋设计?
当你了解语言底层、底层服务原理及系统设计,你就把自己“技术世界”撑大,也给自己发展打下更坚实基础。若很有技术热情,愿研究新技术,地盘稳定后,学习速度也会加快。
2 技术赋能业务能力
专业技术往下渗透,了解底层原理相当于研发工作的“微观环境”撑大,进一步,就要去理解技术周围系统。技术作为工具要回到真实场景衡量价值。
2.1 技术和业务啥关系?
技术技能好比一个锤或锯,业务好比要做一张桌。做张桌很多工序,需设计,需锯木,需锤钉,需打磨,需抛光,可能还需营销推广……
若看不到桌全貌,就难知啥时需用锤,要锤几次,咋锤才更精准。即业务研发价值绝不仅代码写多好、无Bug、接口TPS多厉害,还看到底用技术解决多少业务问题,带来多少业务增量,给客户创造啥价值。完全不了解业务时,空谈技术就耍流氓,空中楼阁不长久。
很多研发把自己发展只定义在专业技术能力,这是惯性。职场初期,工作要求被定义很清晰,这是公司高层和各级管理者定义。如电商商家端团队要找个Javaer,那电商系统划分,如用户、交易、商家端等框架划分,还有整系统具体要承接功能、解决问题,甚至解决问题方式及对这岗位考核,都是提前定义好,只是需人“填坑”。
我们要做的,就是从“坑”走出。到一定年龄,给企业的价值更多是在一些不确定、不清晰事,去定义啥是有价值,从而定义自己的工作。就像刚开始有锯、有锤,那做桌时咋用这些工具?
就是“咋用”,去定义这些事,是更大价值所在。研发想发挥更大价值,追求自身长远发展,除技术本身技能,须懂技术赋能业务。
2.2 咋技术赋能业务?
① 了解业务
要理解商业价值,如清楚当前业务重要指标,要达成需解决啥问题,啥可技术手段解决?如企业用OKR做技术管理,那就是业务重要的O。
② 定义问题
当你找到要解决的问题,就要把这业务问题转为技术问题。
③ 解决问题
研发最擅长,技术手段解决问题。
④ 数据回证
提前做好数据埋点,通过数据统计论证最开始设想,检验是否真正解决问题?啥收益?
2.3 实战
他客户端研发,所在部门负责外卖物流配送系统,即管理和调度外卖配送员。随外卖发达,公司越重视骑手安全,今年业务有考核指标关于骑手配送过程事故率。如配送1万个订单,出现交通事故率控制多少。你会咋做?
① 了解业务
想想骑手配送事故,和啥相关?
可能跟对骑手考核相关,如:
- 要求30min送达,不过这是业务运营规则,跟市场环境相关,技术干预少
- 可能和调度系统相关,如给骑手派太多单或不顺路,导致骑手赶时间,不得不超速,甚至闯红灯,造成交通事故。这是调度算法团队解决议题,客户端研发参与感少
没法了?但他线下调研骑手配送。发现很多骑手送餐过程,一只扶把手,一只刷手机,因为可能来新订单,而骑手要抢单。这过程增加事故发生率。可用技术解决?可!用语音交互,这就是技术助业务提升点。
② 定义问题
将业务问题转化为技术问题。刚才就是语音交互系统问题。但回到业务场景,不够精准:
- 骑手配送在户外,快速移动、无稳定电源,耗电量是问题
- 配送过程环境声音嘈杂,有的地方可能网络环境还差
所以,问题进步精准定义为需低功耗,弱网、噪音环境可用语音交互系统。
精准定义问题后,技术手段解决问题的第三步就不难。
最后,第四步数据回证。可能AB测试,对比上线前后期骑手事故率的变化,用数据证明收益。
这就是技术赋能业务的完整闭环。
3 总结
本文讨论研发硬技能。专业技术能力,不仅得编程,排查问题,更需深钻,知其然,知其所以然,不断打磨技术。还不够,还得把技术放现实去用,历练不同场合“炫技”能力,即用技术赋能业务。
职业发展角度,专业技术能力、技术赋能业务能力是研发岗的根本,是更好发展的基础。抛开这些,技术能力还帮历练好的抽象能力和务实精神。
互联网是把现实搬到线上,那这“搬”就是靠研发把现实抽象成线上的数据结构、对象、模块和系统来实现。系统设计、编码过程,就是历练从现实的“现象”抽丝剥茧,提炼本质的能力。
代码界不容虚头巴脑,手抖写错字符,就能让庞大系统轰然倒塌。要求极度精准工作磨炼下,大多研发就很务实,能静下和深扎,能啃硬骨头。这种抽象复杂事物本质的能力以及极其务实的精神,都是职业发展能航行更远的燃料。
4 FAQ
Q:研发咋在专和通之间保持合理平衡?
A:无比例,个人经验根据自己工作阶段、当下工作需要和兴趣综合判断。
如工作前几年,定以专为主,至少一个技术栈做到熟悉,解决工作中大部分问题,当你在一个领域深钻后,深度会帮助更好做广度。
而当你工作五六年,很多基本面技术已掌握,可适当拓展广度。同时结合当前工作需要,这里面最基础逻辑是技术所有的东西光学很难掌握,要有好的历练场所。如根据工作的需要,针对性拓展广度和精钻深度,又能回到工作中运用是最好的闭环。
最后是兴趣,如对某方向感兴趣,也会帮助你在广度或深度拓展。 所以无绝对比例,或者这个平衡,是根据你工作的阶段、工作场景的需要和你自己的兴趣来动态调整的。
本文由博客一文多发平台 OpenWrite 发布!
相关文章:
研发的立足之本到底是啥?
0 你的问题,我知道! 本文深入T型图“竖线”的立足之本:专业技术 技术赋能业务能力。研发在学习投入精力最多,也误区最多。 某粉丝感发展遇到瓶颈,项目都会做,但觉无提升,想跳槽。于是&#x…...
Baklib揭示内容中台与人工智能技术的创新协同效应
内容概要 在当今信息爆炸的时代,内容的高效生产与分发已成为各行业竞争的关键。内容中台与人工智能技术的结合,为企业提供了一种新颖的解决方案,使得内容创造的流程更加智能化和高效化。 内容中台作为信息流动的核心,能够集中管…...
智慧消防营区一体化安全管控 2024 年度深度剖析与展望
在 2024 年,智慧消防营区一体化安全管控领域取得了令人瞩目的进展,成为保障营区安全稳定运行的关键力量。这一年,行业在政策驱动、技术创新应用、实践成果及合作交流等方面呈现出多元且深刻的发展态势,同时也面临着一系列亟待解决…...
自定义数据集,使用 PyTorch 框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
在本文中,我们将展示如何使用 NumPy 创建自定义数据集,利用 PyTorch 实现一个简单的逻辑回归模型,并在训练完成后保存该模型,最后加载模型并用它进行预测。 1. 创建自定义数据集 首先,我们使用 NumPy 创建一个简单的…...
UE5 特效
能帮到你的话,就给个赞吧 😘 文章目录 post processexposurebloomvignettesaturationunbound material材质蓝图alt z base colorconstant3Vector roughnessconstant metallicconstant pbrroughnessmetallicmake more realmake some areas rougher than o…...
CMAKE工程编译好后自动把可执行文件传输到远程开发板
# 设置 CMake 最低版本要求 cmake_minimum_required(VERSION 3.10)# 设置项目名称 project(MyProject)# 添加可执行文件,这里以项目名作为可执行文件的名称 add_executable(${PROJECT_NAME} main.cpp)# 设置开发板信息 set(DEVELOPMENT_BOARD_IP "192.168.1.10…...
Windows 程序设计7:文件的创建、打开与关闭
文章目录 前言一、文件的创建与打开CreateFile1. 创建新的空白文件2. 打开已存在文件3. 打开一个文件时,如果文件存在则打开,如果文件不存在则新创建文件4.打开一个文件,如果文件存在则打开文件并清空内容,文件不存在则 新创建文件…...
策略模式 - 策略模式的使用
引言 在软件开发中,设计模式是解决常见问题的经典解决方案。策略模式(Strategy Pattern)是行为型设计模式之一,它允许在运行时选择算法的行为。通过将算法封装在独立的类中,策略模式使得算法可以独立于使用它的客户端…...
具身智能研究报告
参考: (1)GTC大会&Figure:“具身智能”奇点已至 (2)2024中国具身智能创投报告 (3)2024年具身智能产业发展研究报告 (4)具身智能行业深度:发展…...
Windows安装Milvus
安装Milvus 安装Docker前置条件: 安装Mlivus方案一方案二 Attu管理端 安装Docker 系统:Windows 11 家庭中文版 Mlivus:V2.3.0 Attu: V2.3.10 前置条件: 启用“适用于 Linux 的 Windows 子系统”可选功能,才能在 Win…...
Excel分区间统计分析(等步长、不等步长、多维度)
在数据分析过程中,可能会需要统计不同数据区间的人数、某个数据区间的平均值或者进行分组区间统计,本文从excel函数到数据透视表的方法,从简单需求到复杂需求,采用不同的方法进行讲解,尤其是通过数据透视表的强大功能大…...
宝塔mysql数据库容量限制_宝塔数据库mysql-bin.000001占用磁盘空间过大
磁盘空间占用过多,排查后发现网站/www/wwwroot只占用7G,/www/server占用却高达8G,再深入排查发现/www/server/data目录下的mysql-bin.000001和mysql-bin.000002两个日志文件占去了1.5G空间。 百度后学到以下知识,做个记录。 mysql…...
LeetCode 2412.完成所有交易的初始最少钱数:【年度巨献】举例说明(讲明白),由难至简(手脚不乱),附Python一行版
【LetMeFly】2412.完成所有交易的初始最少钱数:【年度巨献】举例说明(讲明白),由难至简(手脚不乱),附Python一行版 文章目录 【LetMeFly】2412.完成所有交易的初始最少钱数:【年度巨献】举例说明(讲明白),由难至简(手脚…...
多人-多agent协同可能会挑战维纳的反馈
在多人-多Agent协同系统中,维纳的经典反馈机制将面临新的挑战,而协同过程中的“算计”(策略性决策与协调)成为实现高效协作的核心。 1、非线性与动态性 维纳的反馈理论(尤其是在控制理论中)通常假设系统的动…...
Go学习:类型转换需注意的点 以及 类型别名
目录 1. 类型转换 2. 类型别名 1. 类型转换 在从前的学习中,知道布尔bool类型变量只有两种值true或false,C/C、Python、JAVA等编程语言中,如果将布尔类型bool变量转换为整型int变量,通常采用 “0为假,非0为真”的方…...
C语言中的局部变量和全局变量有什么区别?
在C语言中,局部变量和全局变量是两种具有不同作用域和存储期的变量。以下是它们之间的主要区别: 作用域 局部变量: 局部变量是在函数内部声明的变量。它们的作用域仅限于声明它们的函数内部。一旦函数执行完毕,局部变量就会超出…...
价值交换到底在交换什么
有人十多岁就很清醒,知道自己想要什么,要付出什么。有人20多岁清醒了,有人30多岁都不一定明白。 价值交换,四个字其实就可以解释大部分事情。价值交换和努力工作,勤劳没有任何关系。甚至努力和成功都不存在关系。 价值…...
C++传送锚点的内存寻址:内存管理
文章目录 1.C/C内存分布回顾2.C内存管理2.1 内存申请2.2 operator new与operator delete函数2.3 定位new表达式 3.关于内存管理的常见知识点3.1 malloc/free和new/delete的区别3.2 内存泄漏 希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力! 继C语…...
Prompt提示词完整案例:让chatGPT成为“书单推荐”的高手
大家好,我是老六哥,我正在共享使用AI提高工作效率的技巧。欢迎关注我,共同提高使用AI的技能,让AI成功你的个人助理。 许多人可能会跟老六哥一样,有过这样的体验:当我们遇到一个能力出众或对事物有独到见解的…...
基于django的智能停车场车辆管理深度学习车牌识别系统
完整源码项目包获取→点击文章末尾名片!...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...
CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...
Spring是如何实现无代理对象的循环依赖
无代理对象的循环依赖 什么是循环依赖解决方案实现方式测试验证 引入代理对象的影响创建代理对象问题分析 源码见:mini-spring 什么是循环依赖 循环依赖是指在对象创建过程中,两个或多个对象相互依赖,导致创建过程陷入死循环。以下通过一个简…...
多模态大语言模型arxiv论文略读(112)
Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文标题:Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文作者:Jea…...
开源 vGPU 方案:HAMi,实现细粒度 GPU 切分
本文主要分享一个开源的 GPU 虚拟化方案:HAMi,包括如何安装、配置以及使用。 相比于上一篇分享的 TimeSlicing 方案,HAMi 除了 GPU 共享之外还可以实现 GPU core、memory 得限制,保证共享同一 GPU 的各个 Pod 都能拿到足够的资源。…...
