优秀程序员的5个特征,你在第几层?
每个人程序员都对未来的职业发展有着憧憬和规划,要做架构师、要做技术总监、要做CTO。但现实总是复杂的,日复一日的工作与生活总能让人一次又一次地陷入迷茫。大部分原因就是对职业发展轨迹和自我能力提升的一般规律缺乏认识,做事找不到方向或是操之过急。
程序员的二八定律
19世纪末20世纪被发现的二八定律,如今在各行各业的影响越来越来明显。程序员行业也不例外。
全世界从事软件开发的技术人员大约有几千万,有序稳定的组织方式总是金字塔结构,按照每个人的影响力和技能水平,80%的工程师处在这个金字塔最底层,全世界绝大多数的代码出自这一层的工程师之手,但是他们却没有任何技术决策能力和技术影响力。用什么编程语言、用什么数据库、用什么编程框架、日志规范与代码规范如何制定,统统不由他们决定。大多数情况下,一个10人的团队中,有8个人是这样的。
在这一层之上,剩下的20%的技术人员中的80%,也就是总数的16%的工程师被称为团队影响者。他们是项目架构师、技术经理、技术骨干,撑起了项目的技术核心,在项目范围内决定着各种技术方向,核心代码由他们开发,出了重要的问题也要找他们解决。在一个10人的团队中,大约有1~2位这样的人。
团队影响者之上是公司影响者,大约占总数的3.2%,他们决定整个公司的技术方向,比如,用Java还是用PHP?用MySQL还是SQLServer?微服务用Dubbo还是Spring Cloud?在一个有300名技术人员的公司中,这样的人大约有10人。他们通常是公司的技术元老,是公司的技术团队中拥有较大知名度的技术专家。
团队影响者和公司影响者又如何做出技术判断和决策呢?他们的技术从何而来?通常他们会关注国内最新的技术风向,参加各种技术峰会,阅读各种技术图书,通过这些信息获取知识并做出自己的技术判断和决策。而向他们传播这些最新技术动向的人,就是全国影响者。这些人通常来自知名腾讯、阿里、百度、字节等国内知名互联网公司。
这些全国影响者通常是通过关注国外的技术动向来获取信息的,比如Google、Facebook、微软这些公司的工程师。在这个技术影响力体系里,越往高处背景越重要。你是谁不重要,你代表谁更重要,人们关注的不是你叫什么名字,而是你来自哪个公司,这也是很多人想要加入Google、阿里巴巴的原因。
有趣的是,来自知名大厂的一些工程师常常忘记这一点,觉得自己得到的关注和掌声是来自自己的成就和能力,结果导致对自己的职业发展产生重大误判。
这些人作为技术影响力,通过影响力决定使用何种技术进行软件开发。在这个金字塔的最顶层,正是这些知名软件的开发者,或行业的开创者。
他们有的开发了一些关键性的技术产品,比如广为使用的JSON解析器、单元测试框架、分布式缓存系统。还有一些人则开创了一个领域,如Spring,构建了一个完整的Java web开发技术栈。Hadoop成就了大数据行业,Linux引领了操作系统行业。
事实上,正是领域开创者推动了一次又一次软件编程的革命,领导了一次又一次技术进步,他们带领软件技术行业不断前进。
但越来越多的事实表明,越是顶尖的人,对天赋的要求也越高,而且还要加上一点点运气。
如何成为顶级程序员
如何完成技术层级的跃迁,成为顶级的程序员呢?先来听听ChatGPT的建议:
你需要精通一门或多门编程语言,这是成为顶级程序员的基础。深入学习语言的特性、语法和使用场景,掌握常用的算法和数据结构等。
深入理解计算机科学基础知识,包括计算机体系结构、操作系统、数据结构和算法等。不断学习和实践新技术和工具,掌握最新的编程语言、框架、库和工具等,了解它们的优劣和使用场景。你还需要关注用户体验,扩大自己的知识面。
参与开源项目和社区,在开源社区中,程序员可以发现新的技术和工具,了解其他开发者的经验和实践。培养团队协作和沟通能力,坚持自我学习和提高。
你可以从金字塔的最底层努力做起,一层一层的打怪升级,最终登顶。如果你足够努力并有足够的天分,你也可以直接去做一个全国影响者,甚至超越影响者阶层,直接进入开创者阶层。
你可以通过持续地维护一个技术博客或者技术公众号,不断地发表一些高质量的原创技术文章,在某个技术领域打造自己的技术影响力,并通过在一些有影响力的技术峰会上做主题演讲,以及出版一些高质量并畅销的技术图书,持续扩大自己的影响力。成为影响者。
大到各种编程语言,小到各种编程框架和工具,如果你能直接开发一款在全球范围内被软件开发人员广泛接受的技术产品,并能吸引全球的开发者参与到你的产品开发中,那么你就成为某方面的开创者了。
例如编程语言的大师级人物,Java 编程语言的创始人詹姆斯·高斯林, C# 编程语言的创始人安德斯·海尔斯伯格,Python 编程语言的创始人吉多·范罗苏姆,JavaScript 编程语言的创始人布兰登·艾克。
当然,这条路不仅需要天赋、努力和运气,还要看历史的进程。
重要的是行动起来
每个程序员都想知道自己是不是一个优秀的程序员,世界上很多事情都是有规律的,有些是天赋,有些是在日常的编程工作中学习、进步、积累、总结得来的。你可以用以下特征来作为参考标准。
1.热爱编程
很多程序员干这一行只是为挣钱,如果有更好的职业,他们会毫不犹豫的辞掉程序员的工作。而优秀的程序员热爱编程,喜欢钻研代码,他们感到能指挥电脑来帮助人们和自己解决现实生活中的问题是一种神奇的能力。当遇到问题无法解决时,他们会茶不思、饭不想,无法入睡。
2.强大的学习能力
优秀的程序员会不断的学习,拓宽知识的深度与广度,知道如何能更高效的完成任务,如何更能有效的解决问题。
3.团队合作
每个人都是有局限性的,在厉害的人也无法对抗一个团队。优秀的程序员愿意分享交流,与他人合作,充分借助团队的力量来完成工作。
4.主人心态
很多程序员以打工者的身份看待自己,以打工者的心态工作。优秀的程序员会想象如果自己创办一家企业,需要哪方面的知识,缺少哪方面的技巧。只有将自己放在主人的位置上,你才能真正理解经营一个企业需要的技能。
5.行动起来
做比说更重要,最重要的是行动起来,不要仅仅停留在嘴上。
总结一下
张一鸣曾在一次会议中,分享自己对人才的一些看法,作为面试官,过去10年里,可能面试过2000多个年轻人。总结了优秀的年轻人所具备的特质,首先有好奇心,能够主动学习新事物、新知识和新技能。第二,对不确定性保持乐观。第三,不甘于平庸。第四,不傲娇,要能延迟满足感。第五,对重要的事情有判断力
我特别赞同第五点,最近几年,很多意识到选择大于努力,实际上就是你是否具备判断力,选什么专业、选什么公司、选什么职业、选什么发展路径,自己有判断能力,不被他人而左右。
作为程序员,技术实力固然重要,这是你产生影响力,可以做选择的前提,没有这个作为基础,你根本连选择的权利都有没有。但想要成为一个顶级的程序员,瓶颈在于你的天赋和判断力,不管怎样,当你开始意识到这是一件重要的事情的时候,就是一个好的开始。
相关文章:

优秀程序员的5个特征,你在第几层?
每个人程序员都对未来的职业发展有着憧憬和规划,要做架构师、要做技术总监、要做CTO。但现实总是复杂的,日复一日的工作与生活总能让人一次又一次地陷入迷茫。大部分原因就是对职业发展轨迹和自我能力提升的一般规律缺乏认识,做事找不到方向或…...

JAVA Session会话 Thymeleaf - 视图模板技术配置步骤
JAVAWebSession会话会话跟踪技术session保存作用域Thymeleaf - 视图模板技术配置过程Session会话 HTTP是无状态的:服务器无法区分这两个请求是同一个客户端发过来的,还是不同的客户端发过来的 现实问题:第一次请求是添加商品到购物车&#x…...
Linux编译cpprestsdk库
本文用的Linux系统为Ubuntu22.04,自带GCC11.3.0。 依赖 ①编译需要boost库,本文用的库版本为boost-1.82.0.beta1.tar.gz。 ②编译需要openssl库,这里使用的版本为openssl-1.1.1s.tar.gz。 ③编译需要cmake库,本文使用的是cmake-3…...

算法的时间复杂度和空间复杂度
目录 1 如何衡量一个算法的好坏 2.时间复杂度 2.1 时间复杂度的概念 2.2 大O的渐进表示法 2.3常见代码举例 2.3.1 Func2 O(N) 2.3.2 Func3 O(MN) 2.3.3 Func4 O(1) 2.3.4 Func5 strchr O(N) 2.3.5 Func6 冒泡排序 O(N^2) 2.3.6 Func7 二分…...

基本认识vue3
一、基本搭建 项目搭建 使用 最新的 Vue3 TS Vite项目 执行命令 (本项目采用如下方式) npm create vitelatest my-vite-app --template vue-ts或者 运行项目 npm install npm run dev项目搭建初始化目录 新搭建的项目可能会遇到个问题…...

HTTP/HTTPS协议认识
写在前面 这个博客我们要要讨论的是协议,主要是应用层.今天我们将正式认识HTTP和HTTPS,也要认识序列化和反序列化,内容比较多,但是不难 再谈协议 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层,我们要完成下面三个步骤. sock的使用 定制…...

【VScode】远程连接Linux
目录标题1. 安装扩展插件2. 在Linux上操作3. 确定Linux的IP地址4. 远程连接到Linux5. 实现免密码登录使用 VScode 远程编程与调试的时有会用到插件 Remote Development,使用这个插件可以在很多情况下代替 vim 直接远程修改与调试服务器上的代码,同时具备…...

QT/C++调试技巧:内存泄漏检测
文章目录内存泄漏方案一方案二:CRT调试定位代码位置方法1方法2其它问题方案三:使用vs诊断工具方案四:使用工具VLD(Visio Leak Detector)方案五Cppcheck内存泄漏 内存泄漏:指的是在程序里动态申请的内存在使…...

【贪心算法】一文让你学会“贪心”(贪心算法详解及经典案例)
文章目录前言如何理解“贪心算法”?贪心算法实战分析1.分糖果2.钱币找零3.区间覆盖内容小结最后说一句🐱🐉作者简介:大家好,我是黑洞晓威,一名大二学生,希望和大家一起进步。 👿本…...

【字体图标iconfont】字体图标部署流程+项目源码分析
今日,心情甚是烦闷,原由… 公司项目需要将字体图标做一些细微的调整,我一人分析了许久,看不大懂源码的逻辑,产生了自我怀疑。深吸一口气,重新鼓起勇气,调整心境,一下子豁然开朗&…...

2023最全的Web自动化测试介绍(建议收藏)
做测试的同学们都了解,做Web自动化,我们主要用Selenium或者是QTP。 有的人可能就会说,我没这个Java基础,没有Selenium基础,能行吗?测试虽然属于计算机行业,但其实并不需要太深入的编程知识&…...

jvm_根节点枚举安全点安全区域
1、可达性分析可以分成两个阶段 根节点枚举 从根节点开始遍历对象图 前文我们在介绍垃圾收集算法的时候,简单提到过:标记-整理算法(Mark-Compact)中的移动存活对象操作是一种极为负重的操作,必须全程暂停用户应用程序才能进行,像这…...

fabric(token-erc-20链码部署)
确保自己已经安装了fabric。没有安装的可以参考我之前的教程fabric中bootstrap.sh到底帮助我们干了什么?(手动执行相关操作安装fabric2.4)_./bootstrap.sh_小小小小关同学的博客-CSDN博客小伙伴们在跟着官方示例来安装fabric的时候都是相当烦…...

C语言基础——流程控制语句
文章目录一、流程控制语句 -- 控制程序的运行过程 9条(一)、条件选择流程控制语句:if语句if……else……语句if……else if……语句switch语句(二)、循环流程控制语句:for语句while语句do while……语句co…...

WinForm | C# 界面弹出消息通知栏 (仿Win10系统通知栏)
ApeForms 弹出消息通知栏功能 文章目录ApeForms 弹出消息通知栏功能前言全局API通知栏起始方向通知排列方向通知栏之间的间隔距离无鼠标悬停时的不透明度消息通知窗体的默认大小示例代码文本消息提示栏文本消息提示栏(带选项)图文消息提示栏图文消息提示…...

刷题之最长公共/上升子序列问题
目录 一、最长公共子序列问题(LCS) 1、题目 2、题目解读 编辑 3、代码 四、多写一题 五、应用 二、最长上升子序列问题(LIS) 1、题目 2、题目解读 3、代码 四、多写一道 Ⅰ、题目解读 Ⅱ、代码 一、最长公共子序列问题&…...

【数据结构】千字深入浅出讲解栈(附原码 | 超详解)
🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:C语言实现数据结构 💬总结:希望你看完…...
自动驾驶V2X
1 SoC MDM9250 2 设备网络节点 mhi_swip0 rmnet_mhi0 3 网络协议栈log打印控制 include/linux/netdevice.h ethtool -s eth0 msglvl [level] ethtool -s eth0 msglvl 0x6001 4 URLs MHI initial design review https://lore.kernel.org/lkml/001601d52148$bd852840$388f78c0$c…...

零基础自学网络安全/渗透测试有哪些常见误区?
一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往…...

ConvMixer:Patches Are All You Need
Patches Are All You Need 发表时间:[Submitted on 24 Jan 2022]; 发表期刊/会议:Computer Vision and Pattern Recognition; 论文地址:https://arxiv.org/abs/2201.09792; 代码地址:https:…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...