用维度概念来定义初级、中级、高级程序员

news2025/1/16 6:02:16

网络上众说纷纭,大都站立在对某一技术的知识掌握量上来界定,或者有些人说着说着,发现无法自圆其说,然后就说这三种人就是一种叫法,你觉得你是高级你就高级了,从概念上讲,这三者之间必然有质的区别,单纯以量是无法划分的,为此,我来定义这三个边界。

初级程序员(一维知识积累)

我以PHP的知识树来举例,这个知识树在其他语言也是通用的,按照这个知识树掌握完,则对一门语言就可以熟练使用,一个初级程序员要对一种语言达到全面掌握,不求深度,但求广度,用刀的人只需要把刀法练到极致,不必说需要去学怎么打铁,以及用什么铁质打得刀更硬,所以很多人硬要让新人去研究底层实现,看源码,都不是解决初级程序员的问题。

1. 一门知识的全貌,要通学三遍,将该门知识的任何一个细微的知识点都搞清楚,搞明白,记得清清楚楚,有案例,有对应,有实现,弄得明明白白,能随手写出来,背出来,才是对这门知识的一种切实掌握,这种牢固的基础,将在后期耍刀时,能耍的刚劲有力,垒墙垒得健壮;

2. 对于该门知识的相关配套,能干什么,做什么,都清清楚楚。一门语言就是一种粘合剂,负责将各种功能的东西粘合在一起。

 中级程序员(二维知识组合应用)

针对每一种学习到的基础知识的组合应用,这是维度层面的上升,A+B+C 会组合出来各种灵活巧妙的解决方案,大量的组合并非赤裸裸单个出现,往往会结合大量的应用场景,所以一般中级程序员就是在公司内,经过常年累月的历练,积累了大量可操作性的方式,这些方式的集中体现就是工作经验。

1. 一种知识出现的必要性,要能有实际场景进行对应,如果一种知识对你来说可有可无,你没找到它的必然性或者替代品,那么这就是中级程序员需要关心的问题,如果你轻易的忽略了,久而久之,只会继续停留在初级程序员的知识积累过程,不能提升到组合式解决问题的能力上,也就只会垒砖,垒出来的墙还是经不起风吹的,新需求来了拆了重搞,下次再到一个新公司,再从零开发一套代码。

2. 中级程序员不可能在自己的公司中得到充足的经验,组合应用场景太多,太杂,而公司的工作单一重复,今天你写了一个函数,明天再写一个函数,这种重复工作不能助长你的能力,只是在消耗你的时间,就如你每天吃饭一样,并不会形成新的突破点。所以要通过大量的借鉴其他项目,其他教程,其他人的代码来提升自己对不同技术的组合能力 。

高级程序员(三维现实建模)

高级程序员,我也想了很久,如何给人一种高级程序员的感觉?后来还是从维度上继续突破,中级程序员经过大量的经验积累,不但对一门知识的基础掌握比较深,此外,对于知识的组合应用,以及场景应用也比较有经验,在处理常规工作和现有业务上都能得心应手,那么他还缺什么呢?

把现实写成代码。

一个中级程序员会模仿,模仿的好,已是佼佼者了,而在模仿的基础上能实现将现实中逻辑变成紧密连接的代码逻辑?这就是到了中级和高级的临界点了。

很多情况下,如果将一个业务高度浓缩之后,变成一套可协同运作的代码体系,这就不是一个熟练工能解决的问题,很多人称这个人为架构师,但是架构师只是技术的一种职业称谓,往往架构师也只不过是中级程序员的学了很多现有的架构知识,考虑性能,考虑存储等等,而拼凑的一套已成熟的技术架构体系,这种体系往往是死的。

举个例子,在2020年疫情刚爆发期间,公司就立马想到了社区团购的业务体系,该体系与传统电商和外卖不太像,但又有继承关系,下单过程也不相同,下单之后的任务分发也不同,采购的,分拣的,送货的,处理订单的,结算货款的,仓储管控的等等都需要实时获取自己需要的数据来进一步判断自己需要做的事情,这个体系当时是不存在的,如何将整个复杂的体系代码化,将公众号客服下单,客服体系,维护订单,自动退款,超时退款,退款审核,客服交接,推广人员佣金结算等各种环节都打通在一起,就需要一颗大脑在多线模拟,单线调度中运转,相当于这个人就是一台总控中的电脑。把整个过程归纳为一套Saas系统来处理,这种能力就是高级程序员,这个过程比传统的纯技术架构师更进一步,因为在还没有考虑性能的前提下,就要把现实形成代码,进而再思考负载均衡,服务拆分等。

另外一个例子就是微服务。

微服务架构可以想想成一个人进入政府办公大楼,从进门登记,鉴权,然后分配科室,科室间帮你处理任务,实现并发并行处理你的任务等各种环节,都与微服务完全类似,如果你想通了现实中可能遇到的问题,那么微服务中也会有同样的问题等待解决,借用这种归纳能力,你可以在不学习微服务具体知识的情况,就预测到一些问题的发生,比如一旦最终的结果是错的,那么到底是那个科室审核没有通过,导致了整个结果出错呢?或者你一旦等了2个小时之后,还没有结果,你要怎么追溯这个任务状态呢?如何找到具体的科室,让其发起重试?

对于软硬件的结合例子。

一颗炸弹无论软件方面做得多花哨,最终炸弹能扎的根本在于火线的电压增加,造成熔断,产生火花,火花引起火药爆炸。复杂点,就是有多个线路可以引发火药爆炸,让你找起来很崩溃,短时间内无法找全所有的点火开关。所以软件体系操控硬件,只需要搞清楚硬件和软件之间的通信机制即可,熟练掌握硬件的指令和通信机制,软件能发送信息过去,硬件跟着做,理论上就能实现复杂的机器运动,至于机器的运行速度的微调,就是考验算法的正负反馈的灵敏性问题了。在此基础上,一个程序员实现智能家装,只不过就是借助一些传感器控制电源开关,通过操作遥控器,或者在同一wifi下,调用硬件暴露的服务端口,按照协议发送指令就实现了所有的硬件系统的通信交互和连结。能想到这种程度,都不是中级程序员能达到的,因为全部过程都是高度归纳性的,对现实世界的理解与认识。

高级程序员,就不是对同类知识的组合了,而是对跨类知识的学习和补充,不再局限于某一门知识,而在于多门知识连结上多实践多思考。从现实入手,再进行代码层面的对应,实现对现实到代码层面的归纳。在更高维度上形成新产物,这就是高级程序员。

以上是以知识维度作为划分分界线,如果按照人数占比来说,你掌握的知识超过整体程序员80%的知识量,你也能成为高级程序员,这是一种相对性叫法,也比较简单,本来社会也是以资源稀有性作为划分标准,你变成了少数人,则就自带了稀有属性,稀有就是高级。

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

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

相关文章

Apache Karaf 存在远程代码执行漏洞

漏洞描述 Apache Karaf 是一个用于部署业务代码或应用程​​序的 modulith 运行时环境。 Apache Karaf 的受影响版本中由于 jaas.modules.src.main.java.porg.apache.karaf.jass.modules.jdbc.JDBCUtils#doCreateDatasourceuse 中的 lookup 方法没有对 jndiName 有效过滤从而…

疫情感染开始,大多居家办公

健康无价,有人卖掉了

docker 安装 mysql

一、下载安装MySQL镜像 sudo docker pull mysql:5.7 【注】docker pull mysql 如果不指定版本,默认安装最新版本。 sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。不想用sudo,使用命令su root&…

一款强大的免费开源的基于流量分析的扫描器结合不同场景的实际使用与漏-洞及木-马发现实践

一款强大的免费开源的基于流量分析的扫描器结合不同场景的实际使用与漏-洞及木-马发现实践。 关于安全领域内漏-洞的发现,技术手段非常多,工具也非常多,大致阶段可分为事前、事中、事后来处理。事前大多采用SDL、白盒扫描等;事中、事后有NIDS及漏-洞感知,甚至还有WAF来拦…

借力 StarRocks,“陆战之王“ 大润发如何在零售业数字化转型中抢占先机?

作者:大润发大数据团队 自 1998 年在上海开设第一家大型超市以来,大润发已在中国大陆地区成功开设近 500 家综合性大型超市,覆盖全国 29 个省市及自治区达 230 多个城市,年销售额过千亿。大润发优鲜、淘鲜达、饿了么、天猫超市线…

四、网络层(二)路由算法与路由选择协议

目录 2.1 静态路由与动态路由 2.2 层次路由与自治系统 2.3 距离-向量路由算法之路由信息协议(RIP) 2.3.1 RIP的基本特点 2.3.2 距离向量算法 2.4 链路状态路由算法之开放最短路径优先(OSPF)协议 2.4.1 OSPF协议的基本特点…

DELL Precison 7670 不能加载系统固态硬盘

xiaokcehui: 电脑无法开机 戴尔技术支持: 诸葛小戴检测到您这是台笔记本电脑,小戴会带着您做4个操作尝试帮您解决问题: 戴尔技术支持: [1/4] 请您参考小戴发给您的图片做一下重置RTC的操作 ✅RTC是集成电路,通常称为时钟芯片,如…

React基础知识(事件处理、受控组件与非受控组件、高阶函数、组件的生命周期)(三)

系列文章目录 第一章:React基础知识(React基本使用、JSX语法、React模块化与组件化)(一) 第二章:React基础知识(组件实例三大核心属性state、props、refs)(二&#xff0…

使用 Pygame Zero 构建一个捕捉游戏(详细步骤含源码)

Pygame zero 是一个用于教育的工具,适合任何开始学习使用 Python 创建游戏的人。那么让我们从制作一个小的捕捉游戏开始吧:) 您可以使用 pip 安装 pygame 零,如图所示 pip install pgzero你好 Pygamezero! 要开始使用 pygamezero,请将以下代码复制到文件catching_game.py…

Word处理控件Aspose.Words功能演示:在 Java 中将 DOC 或 DOCX 转换为 JPG

Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处…

GEO芯片数据基本分析

GEO数据挖掘,表达芯片分析 举例:王同学近期拟通过生物信息学相关软件与数据库来探讨女性非抽烟者的非小细胞肺癌预后相关的显著性基因及潜在的治疗靶点,他在NCBI上查询到了1套芯片数据GSE19804。请帮助他完成该项目的设计与分析。 一、一般…

基于Redis实现登录

1.发送短信验证码 Overridepublic Result sendCode(String phone, HttpSession session) {//校验手机号if(RegexUtils.isPhoneInvalid(phone)){//如果不符合,返回错误信息。return Result.fail("手机号格式错误!");}//生成验证码String code …

Codeforces Round #699 (Div. 2) C. Fence Painting

翻译: You finally woke up after this crazy dream and decided to walk around to clear your head. Outside you saw your houses fence — so plain and boring, that youd like to repaint it. You have a fence consisting of 𝑛n planks, where …

网络实验之VTP协议

一、VTP协议简介 VLAN中继协议,VTP,VLAN TRUNKING PROTOCOL,是CISCO专用协议,大多数交换机都支持该协议。VTP负责在VTP域内同步VLAN信息,这样就不必在每个交换上配置相同的VLAN信息。如协议名称,VTP协议需要…

“世界上最鸽派”的央行转鹰,透露了什么信号?

​当地时间周二,日本中央银行结束货币政策会议后宣布,部分调整当前超宽松货币政策,将长期利率波动幅度由正负0.25%扩展至正负0.5%。这一“黑天鹅”令全球投资者感到大为震惊。长期以来,投资者将日本央行看作是最后一家尚未放弃其长…

【Linux】---文件基础I/O(上)

文章目录回顾C语言文件操作接口文件相关的系统调用接口打开和关闭文件文件的打开方式文件描述符文件描述符的分配规则write、read重定向dup2mysell回顾C语言文件操作接口 在C语言中对于文件的操作有着几个常用的接口可以调用 fopen//打开文件 fclose//关闭文件 fprintf//输出…

L1-070 吃火锅(分数 15)

以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”,那就厉害了,我们的故事就开始了。 本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 chi1 huo3 guo1。 输入格式&#x…

即时通讯音视频开发数字视频介绍

数字视频就是先用摄像机之类的视频捕捉设备,将外界影像的颜色和亮度信息转变为电信号,再记录到储存介质(如录像带)。 图像: 是人对视觉感知的物质再现。三维自然场景的对象包括:深度,纹理和亮度…

InnoDB详解2

文章目录InnoDB详解21 行格式1 Compact行格式详解1 变长字段长度列表(两个字节)2 NULL值列表(1个字节)3 记录头信息 (重点)2 Dynamic行格式2 页的上层结构InnoDB详解2 1 行格式 规定每条记录是怎么存储的…

汽车租赁服务小程序开发, 新时代下的行业商机

随着我国经济水平的提升,群众生活水平不断改善,人们的出行方式也发生了非常大的变化,不再依赖传统的出行方式,而是将目光转移到汽车上,作为当下便捷的出行方式之一,在面对远程旅游时却显得有些吃力&#xf…