对程序员来说,技术能力和业务逻辑哪个更重要?

news2024/11/17 23:37:01

2023-10-02-技术or业务.png

一、前言

大家好,我是苍何。话说,小明和小华都是程序员,小明今年刚毕业在一家小金融公司实习,小华是工作了 8 年的 Java 开发,他们两最近都面临同样的问题「技术能力和业务逻辑哪个更重要?」,于是他们都向大师求道。

程序员小明:“大师,我们公司的技术太 low 了,我感觉学不到东西,技术能力和业务逻辑哪个更重要?”
程序员小华:“大师,我感觉学不动了,年龄大了加班也加不动,35 岁危机快来了,技术能力和业务逻辑哪个更重要?”
大师:“提早理清业务和技术的重要性,早做规划!”
程序员小明/小华:“大师,此话怎讲?”
大师:“说来话长…,你还是直接去看苍何文章吧…”

在 IT 圈子有一个有趣的现象,一面是供给市场的饱和,一面又是需求市场的一岗难求。仿佛对于 5 年以内的程序员,市场总是供大于求,找工作不大容易,今年的互联网更是成了小金融圈子,拼学历拼背景,而对于 5 年以上或 10 年以上的业务专家的需求,需求企业又是在猎头和招聘平台间不断抢人,不是技术不足就是经验不够。 不知道大家是否有想过,为什么会出现这样的情况?

经常看到大家关于技术能力和业务逻辑哪个更重要的问题争论不休,如果你对此话题感兴趣,不妨继续往下看看。

文章大约 6000 字,预计阅读需要 15 分钟,如果想看结论可直接看第四部分。

二、技术能力的重要性

2.1、技术能力的定义

我们在谈技术和业务谁更重要之前,先理清一点是不管怎么说,技术能力是我们作为程序员这个职业的根基,基础扎实是积累经验和进一步成长的基石。技术能力确保我们有能力构建、优化和维护软件,使其具有高性能、高可用性和可扩展性。

技术能力的定义

  • 编程技能

包括编程语言、算法、数据结构以及编写高质量、可维护代码的能力。编程技能是技术能力的核心,涵盖了各种编程语言和开发范畴。具备了编程技能才能有的放矢,能看得懂代码,理解编程原理是程序员的核心技能。

  • 开发工具和框架

涵盖了使用开发工具、集成开发环境(IDE)、版本控制系统、测试框架以及各种开发框架和库的能力。这有助于提高开发效率和质量。通过高效的工具进行高效编码,并将编写好的应用程序进行部署发布也是核心掌握的技能。

  • 系统架构

包括对操作系统、网络原理、数据库设计和系统架构的理解。这方面的知识使得我们能够构建稳健、可扩展的应用程序和系统。这是技术能力的进阶部分,需要对系统做全盘的技术了解以及需要掌握设计模式。

  • 问题解决和学习能力

技术能力的第四大体现就是问题解决和学习能力,能不能通过上面说的三大能力,即编程技能,开发工具和框架、系统架构去实际解决业务的问题也是技术能力的体现之一,另外新技术迭代很快,学习能力也是技术能力的体现之一,有些人学习能力强,一项新的技术花费的学习时间甚至比别人更短,掌握也更高效,这就是学习能力的体现。

2.2、技术强的优势

技术强的优势

李白的 “兴酣落笔摇五岳,诗成笑傲凌沧州” 正表明技术强走遍天南地北都不怕,于我们程序员来说,也有一定的适用性。技术强不仅受人尊重而且往往能独当一面,成为某个系统的 owner,独立负责某系统,往往也能得到领导公司的喜欢,在公司内部的晋升很多都是技术实力表现非凡并做出突出贡献者。

技术强还有个最大的优势就是能让我们顺利的通过面试,有竞争力,拿到高薪的工作。比如同等学历背景下,如果 A 的技术实力远超 B,考虑岗位需求,大部分会选择 A,即使 A 要价高于 B,对企业来说,与其多招几个要价低但技术一般的人,倒不如招一个技术强的实力派,往往能达到「一个诸葛亮,胜过三个臭皮匠」的效果。

另外一点可以靠技术能力吃技术的红利,什么意思呢?我们知道现在是知识付费时代,想通过免费能获取到优质的知识是比较难的,很多技术大佬都开了公众号以及知识星球,并做成了类似于《掘金小册》这样的付费产品,通过卖技术形成产品的前提是要有好的技术,这也造就了很多的「财富自由」。

2.3、如何从写业务代码中跳出来,有效提升个人技术能力?

平常业务开发的绝大多数时候,我们做的都是 CRUD 的工作,久而久之,发现吃老本行技术也能足够支撑,不愿意去投入学习,导致技术能力永远停留在开始的水平,等换工作或者运气不好被裁准备简历面试的时候,才发现,**自己好像除了 CRUD 也没其他好讲的了。这种情况该如何破局呢?**我认为可以从以下几个方面从写业务代码中跳出来,有效提升个人技术能力。

2.3.1、持续学习新技术

**计算机技术日新月异,保持持续学习才能不被时代抛弃。**印象比较深刻的是,以前比较火的 java SSH 框架风靡一时,很多企业都在使用,后面由于漏洞以及模块化 SQL 的兴起,又开始流行 SSM 框架,随着发展 SpringBoot、SpringCloud 又成为了主流,JDK21 都发布了,而你连 Java8 的 Stream 还没玩明白,这就是落后于时代,落后于技术,是很危险的。

很多人说,平时工作忙,加班多,CRUD 就已经耗费了绝大部分精力,想说「时间挤挤总是有的」,但还是想举个一位阿里朋友的例子,平常工作基本都需要加班,晚上回家还得带娃,但依旧挤出时间来学习,写了书、每周至少 2 篇高质量文章的输出。所以,没时间不是接口,从内心愿意去学习并规划好时间,持续学习。

2.3.2、开展个人项目并参与开源社区

GitHub 开源社区

**开发自己的个人项目或者参与到开源项目的共建上。**开发一个自己的个人项目可以把学到的新的或者你认为比较有创新的技术框架、设计模式运用到你自己项目中,可以的话发布到开源社区,让全世界的开发者来检验你的项目,是提升技术能力的一个重要手段。

我们平时工作中的业务代码可能没法使用到新学的技术或者因为企业追求稳定的原因并不能应用,那我们自己开源的项目完全可以,而且开源项目也可反映我们的技术能力和水平,在找工作面试也有一定帮助。

除了自己整开源项目,也可参与到熟知的开源项目中来。有个学弟在大学期间就参与到著名的开源项目的建设中,贡献了一些不错的 Feature 后,成为了 MVP ,校招找工作具有极大的优势,最终也轻松收获多个大厂 Offer。

2.3.3、参加技术研讨会

周末把用来打游戏的时间多去参加一些技术沙龙、研讨会,能够掌握最新技术的发展动向,并有机会结识大佬。每年许多大厂和社区论坛都会举办很多的线下会议,比如今年阿里举办的「云原生会议」,如果离你所在的城市不远,可以去听一听,对技术的提高和敏锐是有很大帮助的。

2.3.4、尝试输出

**你学习到的知识不是你的,只有真正会用的知识才属于你。**学以致用另一种比较好的方式是,把你对技术的理解,形成自己的文章或架构图,并整理尝试输出到互联网,接受批评和指正。就拿 java 领域来说,我们可以看到很多的技术博文,很多你可能看了觉得也就那样,自己也能写甚至能写的比他好,但相信我,你一旦尝试去输出,就会发现优秀的文章绝不是一朝一夕形成的,一定有个过程,从量变到质变的过程。

多输出,加强对技术的理解,对技术的提高会有意想不到的帮助。

三、业务逻辑的重要性

我花了大量的篇幅讲述技术的重要性并对如何从写业务代码中跳出来,有效提升个人技术能力做了一些个人建议,并不是想说技术一定比业务更重要, 在权衡哪个更重要前,我们需要理清两者之间各自的定义及优势。

3.1、业务逻辑的定义

**业务泛指一切组织或公司所从事的各种商业活动和运营工作,通常是和行业领域有强相关性。**通常我们将业务分为经营性业务和非经营性业务,经营性业务通常是指和公司运营盈利所挂钩的业务,如抖音这个产品里面的抖音电商就属于经营性业务,公司需要靠这个来盈利;非经营性业务指和公司运营盈利无关的业务,如企业内部系统,仅仅需要满足内部的使用,即使不盈利也要展开的业务。

另外我们也可以把业务按照行业的属性来划分,如房地产业务、经融业务、互联网业务。不管如何对业务进行划分,我们能知道业务是种类繁多的,而且大部分业务都有自己特殊性,从一个业务转到另一个业务,是需要一定的学习成本的,这也是通常人们所说的「隔行如隔山」。

隔行如隔山

3.2、业务逻辑强的优势

**业务逻辑强,也即在一个行业领域有丰富的经验。**优势很明显,在一个行业领域的经验越足,在该行业领域的不可替代性越强,越容易成为业务专家。我们知道对于有些业务没有沉淀个几年,是不能说了解该业务。最具代表性的是阿里的 「5 年陈」文化,我们在阿里的时候,入职阿里一年的叫“一年香”,入职 5 年的叫“5 年陈”,当入职满了5年的时候,会收到一枚刻有工号和花名的戒指,同时 5 年才是马云所认可的阿里人。所谓被认可,其实除了文化价值观认可外,最重要的还是认可你对阿里公司及业务在 5 年时间里有了认知,从了解到熟悉的 5 年,是阿里人的荣耀。

为什么我们经常在很多招聘的 JD 上看到岗位描述时候会带上「有 xxx 经验者优先」,特别是招聘的职级越高,这种现象越明显。

1-3年经验要求

10年经验要求

可以看到招聘上对于 1-3 年的开发并未要求有业务经验,而对于 10 年以上招聘要求中就列明了「有相关经验者优先」。业务能力强在某一领域更有权威性,经常我们出去开会,看到演讲的嘉宾张口闭口都是,我在这个行业干了 10 年 ,意思是恕我直言,在座的各位,你们没人比我更了解这个行业,开始听我吹逼吧…

不过想想也是,一个人在一个行业深耕了 10 年,确实对该行业熟知。那对技术人来说,熟悉业务有什么优势呢?

业务强的优势

  • 更好的问题理解和解决能力

熟悉业务流程,对开发和系统设计有很大的帮助,我们的很多系统为什么觉得不好用,最大的原因还是没有深入到业务场景中去。比如,让一个在地产领域工作的开发去研发医疗程序,在系统设计的时候,会自然而然的用房地产程序设计的思想应用到医疗行业,会发现根本不适用,虽然功能看似暂时可用,但长期一定会出现架构和稳定等各种问题,业务理解的深浅,直接影响系统可用和稳定。

  • 更高的创新能力

创新一定是能在一个领域有非常深的认知后才去做创新,比如设计一个高可用的创新型电池系统,如果你连电池最基本的 SOC、SOC 以及充放电特性都不清楚,上来就直接搞一个可无限充电可折叠的电池系统,那就贻笑大方了。

  • 更好的沟通和合作

我们经常听到客户反馈,和我们的有些开发沟通起来比较费劲,抛去个别同事性格因素外,还有一点比较重要的是,客户关心的还是聚焦在具体的业务上,而开发更关注与技术,在探讨同一个问题的时候,就会出现「公说公有理婆说婆有理」的尴尬画面。掌握业务,能更好的和客户沟通。

  • 更多的职业发展机会

我们经常看到很多程序员转行做了产品经理、项目经理、市场、客户服务,甚至有些出来自己经营公司,这都需要归功于对业务的深入理解,能为我们更多的职业发展机会,面对 35 岁危机的时候,也能在职场中占据一席之地。

3.3、如何避免过度关注技术,而忽视业务理解?

**技术能力很重要,但过度关注技术而忽视对业务的积累,会降低我们的职场竞争力。**我们经常会陷入另外一个误区,认为只要我技术足够强,就能走遍天南海北,就能一直能找到好工作。在工作前几年这条规则适用,但越往后,特别是到了 35+ 的年龄,加班加不动,技术学不动的时候,我们缺少业务沉淀,是很危险的事情。

特别是对于刚毕业的同学来说,去了一家公司发现技术落后,于是想换工作,想找个高并发的项目,换来换去发现,为什么现实中和我想象中差距这么大?不是现在都人手微服务分布式了吗?我这样怎么提升?

如何避免过度关注技术

  • 没有业务的技术不是好技术

任何一门技术一定是服务于业务的,如果没有业务场景的技术,那这个技术是个空的技术,技术的诞生本来就是用来解决实际问题的,要用好的技术来服务于业务,在我们过度关注技术精进时,静下心来,把手头的业务逻辑梳理清楚,想清楚哪些可用技术优化的点,而非单纯的考虑技术先进性而不考虑适应性。就比如,不是每个系统上来就得分布式微服务的,一个简单的内部系统,QPS 不到 40,你说整个微服务上去有什么用?

  • 平常工作多画业务流程图

我们接手一个项目业务时,最先做的不是上来就去撸代码,而是要根据 BRD、PRD 去梳理业务流程,争取用我们自己的逻辑画出业务流程图,并和 PD 业务方做 check,之后对着代码逻辑再次梳理一遍业务流程图,加深对业务的理解。

  • 多参与业务讨论和方案设计

经常很多开发参加 BRD 或 PRD 评审时,总觉得这是业务方和产品对齐的事情,和开发没关系,不会到时候问产品就行了。大家有没有想过,为什么我们需要开发这个功能,这个产品或功能能实际为用户带来什么价值,我们的工作一定是要有价值的才不会觉得卷和累,所以多参与业务的讨论和方案设计,站在开发的角度去理解业务和产品。

  • 去关注行业知识和行业峰会

每年我领导都会去参加行业的峰会,在峰会上,像个学生似的学习最新的行业知识,所以现在他是行业技术专家,在公司没人比他更了解业务。在行业峰会上,这些最前沿的业务知识,行业动态能够最先知道,每一个行业都有一些论坛和社群,比如公众号,我们可以多关注一些行业的。

四、业务和技术如何权衡?

既然业务和技术都如此重要,那到底该如何权衡呢。

4.1、初期以技术提升为主

初期以提升技术为主

**在我们刚开始工作 1-3 年,我觉得还是以技术提升为主。**因为学校学的知识和企业实际项目会有一定不同,将学习知识落地项目的过程是需要技术的提升的,除了平时的项目开发,需要打牢技术基础。

**所谓:“基础不牢,地动山摇。” **初期需要打牢基础,越往后越发现,很多新的框架技术的底层一定来源于专业基础,比如计算机原理及网络,操作系统、数据结构和算法。包括经典的中间件,如果能掌握他们的设计思想,如 Redis、Hbase、EleasticSearch、RocketMQ 等,也会对技术能力提升有个质的飞跃。我建议新技术以视频切入后,往深的理解,需反复阅读经典图书,比如《Redis 深度历险》、《深入理解 Kafka 核心设计与实践原理》、《ElasticSearch 实战》、《深入理解 Java 虚拟机》等等。

4.2、中期注重技术和业务积累

中期注重技术和业务积累

**在工作 3-5 年阶段,除了技术的积累,还需要做业务的沉淀。**这个时候找工作往往是不关注行业的,但在 CRUD 的同时,需要积累业务知识,换工作也尽量往相同或相似领域倾斜,比如在电商领域就不要一下子 360°大转弯换到房地产领域去了。

这个时候还不需要做细分领域的切入,做大致行业的协同即可。技术上需要开始形成产品化,将积累的技术知识通过传授分享形成自己的技术产品,多参与开源建设,多在技术社区活跃,多链接一些技术大牛。

4.3、后期注重业务深耕和沉淀

后期注重业务深耕和沉淀

**在工作 5 年之后,我们积累了一定的技术能力和项目经验,这个时候需要更关注业务。**我们在换工作的时候,可选择性就不很多了,最好是切合该领域的选择跳槽。在某一个细分领域去沉淀,打造该领域下的 IP,做业务专家。这个时候不管是做了架构师,还是做了技术管理,亦或是还在一线奋斗,最重要的是要从代码中抽离出来,形成自己的业务闭环。需要把积累的业务知识通过互联网分享出来,多参加行业论坛和会议,并能作为嘉宾发言,多分享行业认知,积累行业人脉和资源。

只有当业务知识积累到一定程度,才有可能突破职业瓶颈,过了四十岁写不动代码了,我们至少不用仅在送外卖和摆地摊之间做选择,大不了我们可以做项目管理、做市场、做产品经理,给自己未来多一份选择,从现在开始做起、

五、总结

经常有人告诉你技术更重要或业务更重要,我觉得都是片面的,对于不同阶段,两者的侧重点各不同,在工作起步阶段,我们应更关注技术的提升,越往后,越需要多关注业务。我们需要在职场中形成技术和业务的双护城河,在不同的阶段坚持做正确的事。

对于技术和业务哪个更重要,评论区大家可以发表自己的观点呀。


苍何个人介绍.png

创作不易,如果本文对你有帮助,欢迎点赞、收藏加关注,你的支持和鼓励,是我创作的最大动力。
文章最下方关注图片.gif

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

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

相关文章

【数据结构】手撕归并排序(含非递归)

目录 一,归并排序(递归) 1,基本思想 2,思路实现 二,归并排序(非递归) 1,思路实现 2,归并排序的特性总结: 一,归并排序&#xff0…

七、Thymeleaf对象的访问

7.1、实体对象属性的访问 使用变量表达式访问对象属性时,可以使用"对象.属性名"的语法。注意此处的属性名是对象属性getter方法的名称。 示例 在项目包下添加domain包,在包中创建“User”类,添加userId和userName属性 import jav…

极验文字点选验证

测试网址: 验证码验证形式展示-滑动图片验证-点选验证-极验交互安全极验GEETEST提供丰富多样的行为验证形式来应对网络攻击,如滑动拼图验证,智能无感验证,文字/图标/语序点选验证和空间推理验证等……这些验证形式在PC端和移动端…

跨境电商建站:选择域名需要注意什么?

在跨境电商建站过程中,选择一个合适的域名是至关重要的。本文将介绍域名和网址的区别,解释域名选择的重要性,并提供一些关于如何选择域名的建议。同时,还会涉及到老域名的优势和注意事项。内容并不复杂,希望对大家有所…

Java基于SpringBoot的车辆充电桩

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1、效果演示效果图 技术栈2、 前言介绍(完整源码请私聊)3、主要技术3.4.1…

面试题:在大型分布式系统中,给你一条 SQL,让你优化,你会怎么做?

亲爱的小伙伴们,大家好呀!我是小米,一个热爱技术、乐于分享的90后程序猿。今天,我要和大家聊聊一个在大型分布式系统中非常有趣和挑战性的话题——如何优化 SQL 查询! 这个问题可不简单,但不要担心&#x…

[发现了好东西] MS teams 使用-表情小窗口

在是有MS teams时,对话框里的每一条消息,当鼠标游离其上时,都会出现一个表情小窗口。其实这个小窗口非常的烦人,尤其是需要复制消息内容时。这个小窗口容易导致误操作,所以非常的非常烦人。 从微软的主页上搜&#xff…

昨天面试一个武大的,10年经验,薪资只要1万二!

昨天面试了一个武大的,10年经验,只要一万二,虽然是二线城市,但是这个学历和工作经验,我还是比较震惊的。 和他聊了一番,他回答地比较真诚,但是最后我不得不拒绝他。 首先他有大厂的经历。 我…

电容笔有必要买苹果原装的吗?ipad第三方电容笔了解下

在当今世界,高科技已经成为推动电子产品迅速发展的一股重要力量。无论是在工作上,还是在学习上,都很方便。iPad会和我们的生活联系在一起,不管是现在还是未来。iPad配上一支简单的电容笔,可以提高工作和学习的效率&…

springboot+jsp+ssm高校图书馆图书借阅收藏评论管理系统617w1

本图书管理系统系统采用B/S架构,数据库是MySQL,网站的搭建与开发采用了先进的Java进行编写,使用了SSM(Spring、SpringMVC、Mybits)框架。该系统从两个对象:由管理员和用户来对系统进行设计构建。前台主要功…

Flexmonster Pivot Table 2.9.1 Crack

Flexmonster Pivot Table & Charts 2.9.X 是一个专门为实时可视化复杂业务数据而设计的组件。该实用程序是用JavaScript编写的,不需要额外的插件,也不受运行的服务器类型的限制。事实上,它的设计可以轻松地与当今大多数可用的开发框架集成…

拓世AI|中秋节营销攻略,创意文案和海报一键生成

秋风意境多诗情,中秋月圆思最浓。又是一年中秋节,作为中国传统的重要节日之一,中秋节的意义早已不再仅仅是一家团圆的节日,更是一场商业盛宴。品牌方们纷纷加入其中,希望能够借助这一节日为自己的产品赢得更多的关注和…

物流批量查询:一键查询全部物流信息,高效管理快递

你是否曾经为了查询快递信息而感到困扰?特别是当你需要查询多个快递单号时,重复的输入和查询不仅耗时,还容易出错。为了解决这个问题,我们找到了一个名为“固乔快递查询助手”的软件,它能够让你一次性查询所有需要的快…

报错处理:MySQL报错解决:连接失败原因与解决方案

大家好,今天我来分享一下在Linux上遇到的一个MySQL连接失败的报错以及解决方法。如果你在尝试连接MySQL数据库时遇到以下报错信息:“Can’t connect to MySQL server on ‘localhost’ (111)”,那么请接着往下看,我会帮你找到可能…

安卓 Android 终端接入阿里云 IoT 物联网平台

在全球智能手机市场里,谷歌开发的安卓(Android)移动操作系统市场占有率已经高达90%。随着物联网智能硬件升级,安卓(Android)也逐渐成为智能摄像头,智能对讲门禁,人脸识别闸机,智能电视,智能广告屏等带屏 Io…

Vulnhub_driftingblues1靶机渗透测试

driftingblues1靶机 信息收集 使用nmap扫描得到目标靶机ip为192.168.78.166,开放80和22端口 web渗透 访问目标网站,在查看网站源代码的时候发现了一条注释的base64加密字符串 对其解密得到了一个目录文件 访问文件发现是一串ook加密的字符串&#xf…

云原生监控系统Prometheus:基于Prometheus构建智能化监控告警系统

目录 一、理论 1.Promethues简介 2.监控告警系统设计思路 3.Prometheus监控体系 4.Prometheus时间序列数据 5.Prometheus的生态组件 6.Prometheus工作原理 7.Prometheus监控内容 8.部署Prometheus 9.部署Exporters 10.部署Grafana进行展示 二、实验 1.部署Prometh…

电源升压模块dc/dc直流低压升高压隔离电压变换器5v12v24v48v转50v70v80v100v110v200v250v300v500v600v微功率

特点 效率高达 80%以上1*1英寸标准封装电源正负双输出稳压输出工作温度: -40℃~85℃阻燃封装,满足UL94-V0 要求温度特性好可直接焊在PCB 上 应用 HRA 0.2~8W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9V、9~18V、及18~36V、36…

工信部教考中心:什么是《研发效能(DevOps)工程师》认证,拿到证书之后有什么作用!(下篇)丨IDCF

拿到证书有什么用? 提高职业竞争力:通过学习认证培训课程可以提升专业技能,了解项目或产品研发全生命周期的核心原则,掌握端到端的研发效能提升方法与实践,包括组织与协作、产品设计与运营、开发与交付、测试与安全、…

220V转18V非隔离降压芯片:满足多种应用需求

220V转18V非隔离降压芯片:满足多种应用需求 现如今,随着无线通信技术的迅猛发展,越来越多的设备需要稳定的低压电源供应。为了满足这一需求,AH8696-220V转18V非隔离降压芯片应运而生。该芯片具备许多令人瞩目的特性,能…