苍何_社区达人页

个人头像照片
苍何
已加入开发者社区1615
勋章 更多
个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
开发者认证勋章
开发者认证勋章
个人头像照片
江湖新秀
江湖新秀
成就
已发布66篇文章
0条评论
已回答2个问题
1条评论
已发布0个视频
我关注的人 更多
技术能力
兴趣领域
  • Linux
  • 数据库
擅长领域
  • Java
    中级

    能力说明:

    掌握封装、继承和多态设计Java类的方法,能够设计较复杂的Java类结构;能够使用泛型与集合的概念与方法,创建泛型类,使用ArrayList,TreeSet,TreeMap等对象掌握Java I/O原理从控制台读取和写入数据,能够使用BufferedReader,BufferedWriter文件创建输出、输入对象。

技术认证

暂时未有相关云产品技术能力~

土木转行Java开发,保持热爱,保持活力
  • 6个月前
    边缘计算与云边协同
    边缘计算是指在靠近物或数据源头的一侧,融合网络、计算、存储、应用核心能力的分布式开放平台,就近提供边缘计算服务,满足应用的实时性和数据保护等方面的需求。
    113
暂无更多
暂无更多信息

2023年09月

  • 09.28 18:37:59
    发表了文章 2023-09-28 18:37:59

    MQTT-轻量级的物联网消息传输协议

    随着 5G 时代的来临,万物互联的伟大构想正在成为现实。联网的 物联网设备 在 2018 年已经达到了 70 亿,在未来两年,仅智能水电气表就将超过10亿。
  • 09.28 18:37:30
    发表了文章 2023-09-28 18:37:30

    C语言入门(2)——数据类型、运算符、类型转换、控制语句

    char short int long flout(默认保存小数点后6位,并且可以四舍五入) double 输出int类型的值%d 输出字符用%c 输出long用%ld 输出float用%f 输出double用%lf
  • 09.28 18:36:55
    发表了文章 2023-09-28 18:36:55

    C语言入门(1)——特点及关键字

    面向过程 一般用于嵌入式开发、编写最底层的程序、操作系统
  • 09.28 18:36:23
    发表了文章 2023-09-28 18:36:23

    边缘计算与云边协同

    边缘计算是指在靠近物或数据源头的一侧,融合网络、计算、存储、应用核心能力的分布式开放平台,就近提供边缘计算服务,满足应用的实时性和数据保护等方面的需求。
  • 09.28 18:35:31
    发表了文章 2023-09-28 18:35:31

    MyBatis常见问题

    Mybatis的核心设计理念是基于原生sql进行的,正是由于这个设计理念使得Mybatis相对于Hibernate框架执行效率更高,但是代码的可移植性差,由于Mybatis是一个轻量级的框架,框架本身提供的功能较少,但是使用的灵活性更高
  • 09.28 18:34:52
    发表了文章 2023-09-28 18:34:52

    最熟悉的陌生人Spring框架

    大家好,我是苍何。最近思考了一个问题,为什么会出现公司面试造火箭,工作扭螺丝的现象,包括各种八股文的连环大绝杀问到你不会为主,其实这是考察你的知识面以及掌握的深度,而为什么需要这样呢?归其原因,无非是通过筛选找到那些会思考的人,他们需要的并不是CRUD的工具人,而是会思考能创新的工程师。
  • 09.28 18:33:41
    发表了文章 2023-09-28 18:33:41

    注解IOC&AOP

    扫描类下的注解,哪些包下的类需要使用IOC注解
  • 09.28 18:32:54
    发表了文章 2023-09-28 18:32:54

    Spring入门与常用配置

    Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是 为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使 用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、 可测试性和松耦合的角度而言,任何 J
  • 09.28 18:32:19
    发表了文章 2023-09-28 18:32:19

    Spring Boot

    Spring Boot 入门
  • 09.28 18:31:25
    发表了文章 2023-09-28 18:31:25

    springboot系列知识

    Spring Boot都很熟悉了,再重新认识学习一遍。
  • 09.28 18:30:41
    发表了文章 2023-09-28 18:30:41

    springboot与缓存(整合redis)

    缓存就是数据交换的缓冲区(称作:Cache),他把一些外存上的数据保存在内存上,为什么保存在内存上,我们运行的所有程序里面的变量都是存放在内存中的,所以如果想将值放入内存上,可以通过变量的方式存储。在JAVA中一些缓存一般都是通过Map集合来实现的。
  • 09.28 18:30:01
    发表了文章 2023-09-28 18:30:01

    SpringMVC重温知识点

    Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
  • 09.28 18:29:22
    发表了文章 2023-09-28 18:29:22

    超全的MySQL核心原理,从底层剖析MySQL

    相信一讲到MySQL,很多的开发人员,印象中好像就是个数据库,用来存数据,每天都打交道,可能往深了想会想到事务、MVCC、索引、锁、sql优化等,其实仔细区剖析MySQL,会发现,还是有很多可以学习的地方,包括我们的分布式事务,很多用的就是MySQL处理分布式事务的原理。这篇文章一起学习。
  • 09.28 18:28:34
    发表了文章 2023-09-28 18:28:34

    DBCP连接池和登录注册按例

    ● 实际上就是存放连接的池子(容器) ● 在开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ● 为了解决此类性能问题,通常情况我们采用连接池技术,来共享连接Connection。 ● 这样我们就不需要每次都创建连接、释放连接了,这些操作都交给了连接池
  • 09.28 18:27:42
    发表了文章 2023-09-28 18:27:42

    DBUtils工具类操作数据库

    DButils工具类介绍
  • 09.28 18:27:08
    发表了文章 2023-09-28 18:27:08

    JDBC操作数据库

    JDBC是实现java程序对各种数据库的访问,是一组类和接口,位于java.sql与javax.sql包
  • 09.28 18:25:53
    发表了文章 2023-09-28 18:25:53

    云服务器安装oracle修改IP地址监听器报错问题

    当在云服务器中安装oracle时,按照一般的安装步骤安装后,需要修改两个文件的iIP地址才可以在本机进行访问,修改注意点: 监听器部分不要改成服务器的公网IP,要改成服务器的计算机名字才可以,两个配置文件夹均要修改
  • 09.28 18:25:14
    发表了文章 2023-09-28 18:25:14

    oracle知识点总结

    oracle数据可系统是美国oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器或B/S体系结构的数据库之一,oracle数据库时目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完善的数据库管理功能,是关系型数据库,比mysql更为庞大,在现行的关系型数据库中排名第一(oracle、mysql、SqlServer),时间是最为精确的。
  • 09.28 18:23:51
    发表了文章 2023-09-28 18:23:51

    我是如何大胆跳槽的

    一场突如其来的疫情打乱了很多人的计划,起初没有人在意,直到这场灾难和每个人息息相关。
  • 09.28 18:22:59
    发表了文章 2023-09-28 18:22:59

    java基础面试题

    可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致。
  • 09.28 18:22:10
    发表了文章 2023-09-28 18:22:10

    JavaSE基础面试题(精简版)

    把CPU处理器与操作系统的整体叫平台
  • 09.28 18:21:22
    发表了文章 2023-09-28 18:21:22

    计算机网络基础概述

    最早的广域网
  • 09.28 18:20:34
    发表了文章 2023-09-28 18:20:34

    java在过滤器中为http请求加请求头header

    现在有一个需求场景是,每一个请求我都需要在请求头里面加上token这个请求头,作为一种校验机制,传统的接口可以通过设置一个全局的变量,然后通过页面携带过来(大概就是先将我们的token放在session中,写一个服务用来获取session中的token,然后主页面用ajax调用接口,将token放在隐藏域中,然后将请求头放进来,用ajax方法,这里不想洗说了),但是有一种情况是通过页面传递的并不一定都会适用所有接口,比如上传和下载的接口有时候头里面就没有token参数,可能是上传和下载是用表单提交的 这个时候如何将请求头通过后台的方法加进来? 想到用过滤器,用后台方法强制加入请求头。
  • 09.28 18:19:39
    发表了文章 2023-09-28 18:19:39

    N个人站圈报数算法问题

    这是一道算法面试题
  • 09.28 18:18:16
    发表了文章 2023-09-28 18:18:16

    多线程

    线程是进程中执行运算的最小单位,是进程内部的一个执行单元 1、多个线程同时进行,采用枪占的机制,单核计算机一个时间只有一个线程执行,采用枪占资源的方式
  • 09.28 18:17:15
    发表了文章 2023-09-28 18:17:15

    网络编程技术

    config查看本机的IP地址 ping命令测试网络是否通畅 网络是连接在一起共享数据和资源的计算机 按照覆盖范围可以分为:局域网、城域网、广域网 ping 127.0.0.1检查TCP/IP协议安装是否正确
  • 09.28 18:16:37
    发表了文章 2023-09-28 18:16:37

    Java中的IO流和反射

    流是指一连串流动的字符,是以先进先出的方式发送信息的通道。程序和数据之间是通过流进行关联的。
  • 09.28 18:15:59
    发表了文章 2023-09-28 18:15:59

    XML技术

    1、XML是可扩展标记语言 2、与操作系统和操作平台均无关 3、规范统一,支持异构系统
  • 09.28 18:14:48
    发表了文章 2023-09-28 18:14:48

    JVM垃圾回收GC

    这是JVM系列知识的最后一篇文章,本文围绕垃圾回收GC,涉及常用的垃圾回收算法,以及几种垃圾回收器。
  • 09.28 18:13:52
    发表了文章 2023-09-28 18:13:52

    JVM运行时数据区

    这是JVM系列文章的第三篇,这篇文章将对整个JVM运行时数据区和GC垃圾回收详细的介绍。这部分也算是JVM的核心内容了。
  • 09.28 18:13:07
    发表了文章 2023-09-28 18:13:07

    JVM执行引擎、对象实例化、String相关知识

    执行引擎就是执行内存中的指令,将字节码指令解释/编译为对应平台上的本地机器指令,充当了将高级语言翻译为机器语言的使者。
  • 09.28 18:12:23
    发表了文章 2023-09-28 18:12:23

    JVM概述和类加载子系统

    我记得当年学java的时候,就很好奇,为什么我在IDEA上写一些代码(其实就是一堆我们人能知道的英文单词的组合加一些运算符),为什么就可以在windows上运行后执行我们的指令,而且还可以打成jar包去linux系统跑起来,为什么一份代码可以在不同平台运行呢?类是如何加载的?对象如何创建的以及都有哪些信息?我创建的对象被分配到哪个内存去了?java是怎么和我们操作系统打交道的又是怎么调用CPU为我们计算的?创建了对象分配了内存,为什么可以不用手动回收就可以自动清理内存等等等,相信你也同样有过这些困惑。
  • 09.28 18:11:30
    发表了文章 2023-09-28 18:11:30

    java多线程以及并发相关知识

    1、进程是操作系统进行资源分配的最小单元 2、线程是执行操作的最小单元
  • 09.28 18:10:41
    发表了文章 2023-09-28 18:10:41

    java基础相关知识

    java语言是面向对象语言,他和面向过程C不同点是,有封装、继承、多态,万物皆是对象,但是执行效率面向过程稍微快些。
  • 09.28 18:08:35
    发表了文章 2023-09-28 18:08:35

    HashMap和ConcurrentHashmap

    大家好,我是苍何。最近思考了一个问题,为什么会出现公司面试造火箭,工作扭螺丝的现象,包括各种八股文的连环大绝杀问到你不会为主,其实这是考察你的知识面以及掌握的深度,而为什么需要这样呢?归其原因,无非是通过筛选找到那些会思考的人,他们需要的并不是CRUD的工具人,而是会思考能创新的工程师。
  • 09.28 18:06:03
    发表了文章 2023-09-28 18:06:03

    设计模式应用之策略模式

    当业务需求涉及到很多的分支逻辑时,过多的if-else或者过多的switch代码显得很不简洁,而且当我们修改某一分支逻辑时,要改动的很多,比如现在某一分支不要了,就要把这个if条件删除掉,这样是很不好的,这个时候,我们想到了策略模式,替换掉过多的if-else或者switch语句。
  • 09.28 18:04:29
    发表了文章 2023-09-28 18:04:29

    我和我的团队使用 Codeup后的体验

    我是公司数据中心负责人,会参与到一些软件开发,架构设计等工作,在团队工具选型时也会亲力亲为,争取为团队能选择效率高、好用的工具。由于我们团队处于前期开发阶段,业务主要是围绕能源互联网,可以想象的未来业务领域及数据量会很多,为了减少运维成本、保障安全性、高可用性、能较好地链接devops,并能很好的自动检测代码(每次对于一些简单的非业务的逻辑错误人为CR效率低下,容易错漏),结合对比使用了开源的gitlab和Codeup后,结合自己和团队的使用体验来做一些测评。
  • 09.28 18:03:05
    发表了文章 2023-09-28 18:03:05

    对比多个笔记软件后,我选择了语雀

    去年开始带团队,在面临团队文档管理共享软件选择时,我毫不犹豫的选择了语雀,语雀的协作功能非常出色。可以邀请团队成员加入我的笔记工作空间,共同协作编辑和维护笔记和文档。通过语雀,可以很方便地进行团队内部的协作和交流,并对笔记进行版本控制,以避免多人编辑时出现不同步的问题。通过团队空间、知识库、目录的层级管理,能很好的将知识做分类。
  • 09.28 17:37:35
    回答了问题 2023-09-28 17:37:35

2023年05月

  • 05.19 22:50:33
    发表了文章 2023-05-19 22:50:33

    phind——无需注册专为开发者而生的 AI 搜索引擎

    phind 是一个为开发人员设计的 AI 搜索引擎,可以帮助工程师更快地找到他们所需的信息
  • 05.19 22:49:31
    发表了文章 2023-05-19 22:49:31

    如何利用 AI 工具高效玩转工厂模式

    在编程世界中,设计模式是一套经过验证的解决方案,用于解决软件设计中的常见问题。作为一名 Java 程序员,掌握设计模式无疑是提升开发技能的关键。那么,有没有什么方法可以让我们更轻松地掌握和应用 Java 设计模式呢?答案是肯定的!本文将为您揭示如何利用 AI 工具高效玩转 Java 设计模式,我们以工厂模式为例,让 AI 辅助我们更好的理解和应用设计模式!
  • 05.19 22:46:38
    发表了文章 2023-05-19 22:46:38

    ChatGPT:我的生活工作“解忧公主”

    在这个充满活力与挑战的时代,我们的生活和工作总是充满了各种问题。幸运的是,有了 ChatGPT 这位“解忧公主”,我们能轻松应对这些问题,高效地度过每一天!本文将分享 ChatGPT 如何成为我们生活工作中的万能钥匙。

2023年02月

2021年09月

2021年08月

  • 发表了文章 2023-09-28

    MQTT-轻量级的物联网消息传输协议

  • 发表了文章 2023-09-28

    C语言入门(2)——数据类型、运算符、类型转换、控制语句

  • 发表了文章 2023-09-28

    C语言入门(1)——特点及关键字

  • 发表了文章 2023-09-28

    边缘计算与云边协同

  • 发表了文章 2023-09-28

    MyBatis常见问题

  • 发表了文章 2023-09-28

    最熟悉的陌生人Spring框架

  • 发表了文章 2023-09-28

    注解IOC&AOP

  • 发表了文章 2023-09-28

    Spring入门与常用配置

  • 发表了文章 2023-09-28

    Spring Boot

  • 发表了文章 2023-09-28

    springboot系列知识

  • 发表了文章 2023-09-28

    springboot与缓存(整合redis)

  • 发表了文章 2023-09-28

    SpringMVC重温知识点

  • 发表了文章 2023-09-28

    超全的MySQL核心原理,从底层剖析MySQL

  • 发表了文章 2023-09-28

    DBCP连接池和登录注册按例

  • 发表了文章 2023-09-28

    DBUtils工具类操作数据库

  • 发表了文章 2023-09-28

    JDBC操作数据库

  • 发表了文章 2023-09-28

    云服务器安装oracle修改IP地址监听器报错问题

  • 发表了文章 2023-09-28

    oracle知识点总结

  • 发表了文章 2023-09-28

    我是如何大胆跳槽的

  • 发表了文章 2023-09-28

    java基础面试题

正在加载, 请稍后...
滑动查看更多
  • 回答了问题 2023-09-28

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

    一、前言

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

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

    二、技术能力的重要性

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

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

    除了自己整开源项目,也可参与到熟知的开源项目中来。有个学弟在大学期间就参与到著名的开源项目的建设中,贡献了一些不错的 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 年以上招聘要求中就列明了「有相关经验者优先」。业务能力强在某一领域更有权威性,经常我们出去开会,看到演讲的嘉宾张口闭口都是,我在这个行业干了 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,做业务专家。这个时候不管是做了架构师,还是做了技术管理,亦或是还在一线奋斗,最重要的是要从代码中抽离出来,形成自己的业务闭环。需要把积累的业务知识通过互联网分享出来,多参加行业论坛和会议,并能作为嘉宾发言,多分享行业认知,积累行业人脉和资源。

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

    五、总结

    总而言之,在工作起步阶段,我们应更关注技术的提升,越往后,越需要多关注业务,形成技术和业务的双护城河,在职场中,做到有的放矢。

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

    踩0 评论0
  • 回答了问题 2023-02-28

    写code还是做管理,开发者如何进行职业规划?

    做了五年开发,现在正在做技术部门的负责人,带领几个小伙伴,刚接触管理,才发现管理没想象的那么简单,管理也并非是不用code或者并非是不懂技术,一个好的管理一定是对技术广度或者某一领域的深度比只code的程序员是要更懂一些的,我就目前做管理和code的一些感受分享给大家,希望能给大家一定的帮助: 1、管理事情会比较杂,各种会议、各种对接,都需要参与 2、code只需要关注需求,将需求用code落地即可,有时甚至都不需要过多关注产品,因为会有产品经理帮我们规划好了,只需要去执行 3、管理需要更多领域业务知识,在布置任务时要有自己的规划 4、管理有时会比code更迷茫,在这家公司能做到这个级别,如果换了一家,怎么能做到这个级别呢?而且每个公司对管理要求也不一样 5、code技术比较纯粹,没有太多的人情世故,管理大部分时间需要跨部门协助,组织间的沟通需要管理沟通表达和情商都要高一些 6、管理比code能掌握公司或者行业更多的信息,接触到更多优秀的领导,对拓宽自己人脉和业务知识有很大帮助 7、一个管理岗位的机会的获得也不是那么简单的,需要机遇,如果有这个机会,我觉得可以让自己尝试一下,没做过就没办法评价,也没法知道自己适不适合。

    踩0 评论1
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息