如何成为一个优秀的程序员

1 衡量一个程序员是否优秀,不是看程序员懂多少编程语言和编程技能,也不是看程序员做过多少项目,写过多少行代码,发表多少篇技术文章,甚至也不是看程序员的工作年限。

衡量程序员,第一看薪资,第二看所在的公司。薪资意味着当前的能力,当下的公司意味着对程序员能力的背书认可程度。这句话可以理解成,拿高薪,所在好公司的程序员,是优秀的程序员。

2 程序员提升能力的途径是在项目中实战,再讲得细一些,是通过在项目里解决各种问题拉起提升,而所解决问题的难度,决定了程序员能提升的上限。

比如去解决业务问题,能确保程序员掌握基本的增删改查技能,去解决运维架构类问题,确保程序员升级成架构师,去解决算法内核方面的问题,能确保程序员升级成资深算法专家。

但一般的中小型公司,所提供的项目实践机会,其中包含的技术,大概率只能确保程序员做熟较为基础的增删改查技能。

3 换句话说,要成为优秀的程序员,一般得在能提供值钱技术实践机会的公司,在其中通过解决各种问题来提升自己的技能。

一般来讲,当下大专及以下学历的程序员,能进好公司的概率不比前几年。换句话说,要成为优秀的程序员,一般得具有本科学历,否则可能在投好公司的职位时,甚至连面试的机会都没。

4 优秀程序员所掌握的技能,一般是通用的,比如跳槽时,说自己用过某些值钱技术,解决过某些疑难问题 ,或者从零到有搭建过一个系统,或者改进过算法。

但相反,业务知识点未必是通用的,比如某人在一个公司干了5年,业务很熟,但技术只会增删改查,但跳槽时,对方公司只认技术。所以说,熟悉业务未必是程序员的亮点,只熟悉业务的程序员未必优秀。

5 一般来说,程序员总是先通过面试,拿到某类技术(比如架构或算法)的实践机会,然后才能真正(通过解决实际问题)掌握该技术。

比如培训班入行的人一般再怎么学,其实也无法达到能工作的程度,一般是通过包装简历拿到面试机会,然后再到项目里提升。

所以程序员要优秀,不能光考学,因为单学一定无法得到项目实践机会,而是得靠面试。

6 所以程序员提升的一般方式是,在一个公司里干个2,3年,掌握必要的技能,然后通过看更资深的技能点,想办法在面试中证明自己在项目里用过该技术,进入到更好的公司,进入到能提供资深技术实践机会的项目,这个过程中一般也会伴随着涨薪,这个过程多次迭代。

这样到了35岁甚至更大的年龄,能用“大公司经历”和“资深技术的实践能力”来证明自己的能力。有人或许会说,这样的人也可能被裁,但如果不这样,估计未必能干到35岁,而且被裁后更可能一筹莫展。

7 在IT这行,能有很多指标来认可程序员的“优秀”,比如熟悉业务,熟悉接口和参数,在公司里独当一面,再进一步可以是掌握各种原理和思想,在一些初级开发面前也能展示自己很高深。

但这样所谓“优秀程序员”,在跳槽时未必有足量的竞争力。这块程序员朋友要有清醒的认识,不要去图“优秀”的虚名,更不能舒适区里的“轻易解决问题”所迷惑。

证明程序员优秀的标准上文已提到过,即高薪,同时在好公司。而中小类公司的程序员,验证自己能力的标准,就看自己能能否挑战成更好公司更高薪资的职位。

8 对程序员来说,能被别人用较短时间掌握的技能,不能算值钱技能,能通过看书或查资料轻易掌握的技能,也不能算值钱技能,同理,如果程序员本身掌握的技能,别人也能轻易获取,那么程序员就应该去拿更值钱技术的项目实践机会,去掌握更值钱的技能。

程序员方面,哪些技能别人未必能轻易掌握呢?当前前提是项目里要用到。需要在较难环境上实践的技能算资深。比如能在Windows上实践的技能,别人也能轻易搭建环境,但如果在linux上搭建集群,或者云服务方面的技能,别人要学甚至更本没环境,这些技能算值钱。

另外一些资深程序员可能有相同的感受,一些资深技能,比如集群或算法等问题的解决方法,教科书上没,网上类似的资料也不多,甚至此类问题此类技术用文字描述都很费功夫,那么这些技能很值钱,对应到岗位,此类程序员的头衔可以是架构师,算法工程师,资深问题专家。

这段话的意思是,程序员要让自己变得优秀,变得不可替代,一定得想办法去解决资深问题。但还是这句话,不少中小公司的项目,其实不包含此类技术的实践机会。

9 伴随着程序员的成长,其实对“优秀”的定义是不断提升的。一开始是记住更多的api和参数,少出现bug,再开始是,出了bug能通过各种手段排查,再进一步是能解决更资深的问题。

所以网上有不少文章,会给人这样的感受,学好并发相关技能,学好某些算法,或者是会全栈或微服务等技术,会让自己很优秀。这话其实有片面性,因为程序员需要不断进步。

一般程序员可以分初级开发,高级开发,资深开发,架构师,再进一步可以是技术专家,如果有程序员朋友一直停留在所谓的技能算法或原则,顶了天只能算是“高级的”初级开发。所以程序员发现自己在当前项目当前公司,无法再通过解决问题提升技能时,要做的是,去看更好职位的jd,准备相关面试说辞,去争取更值钱技术的实践机会,而不是在一个技术点上继续卷。

10 程序员变得优秀,一定不是光靠自己学习,也不能靠自己去报一些(含资深技术)的课程,也不是单靠自己在本地跑通或者实践各种技术。

因为到了一定程度以后,资深技术由于需要linux服务器,或者是集群环境,或者搭建环境的步骤很复杂,程序员大概率是无法在本地通过模拟环境掌握相关技能。比如高并发环境或者devops,或者是算法挑参等环境,在个人电脑上基本很难搭建。

相关做法上文已经提到过,先知道技术层面的努力方向,至少先知道下一职级所需要的值钱技术,然后得通过各种方式,证明自己的项目经验,这句话大家仔细体会,提升的要点就在于此,然后通过进入包含更值钱技术的项目,让自己的眼界更开阔,这样至少能知道之后发展过程中哪些技术更值钱。

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

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

相关文章

java+vue3+iclientol实现警务地理信息系统实践

警务地理信息系统(Police Geographic Information System, PGIS)是一种专为警务工作设计的地理信息系统,它结合了地理信息技术、数据库技术、网络技术和现代警务理念,旨在提升公安机关的空间数据分析、决策支持、指挥调度、案件管…

SpringMVC的WebMvcConfigurer及返回

由于很久很久没有做过纯springmvc的代码了,好多东西都遗忘,最近接手了一个古早项目springmvc的。记录一下: 1、WebMvcConfigurer 是 Spring Framework 中的一个接口,它提供了一种扩展 Spring MVC 配置的方式。通过实现 WebMvcConf…

【QVariant类型剖析】

QVariant类型剖析 🌟 官方文档中给出的定义🌟 特性🌸QVariant实战应用🌸项目成果展示 🌟 官方文档中给出的定义 📘Because C forbids unions from including types that have non-default constructors or…

基于springboot+vue+Mysql的外卖点餐系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

【.NET Core】你认识Attribute之CallerMemberName、CallerFilePath、CallerLineNumber三兄弟

你认识Attribute之CallerMemberName、CallerFilePath、CallerLineNumber三兄弟 文章目录 你认识Attribute之CallerMemberName、CallerFilePath、CallerLineNumber三兄弟一、概述二、CallerMemberNameAttribute类三、CallerFilePathAttribute 类四、CallerLineNumberAttribute 类…

Android 简单的下拉选择框实现

要实现这种效果,目前知道的方法有以下两种,Spinner 和 ListPopupWindow,当然肯定还有很多别的方法,这里我们先尝试使用ListPopupWindow来实现这个效果; 以下是一个简单的demo: public class MainActivity extends AppCompatActivity {private List<String> dataList;pr…

三方库的调用方法

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言三方库的调用方法1. **下载并安装Boost库(三方库)**2. **配置开发环境**3. **包含Boost(三方库)头文件**4. **编写代码**5. **链接Boost库(三…

QueryPerformanceCounter实现高精度uS(微妙)延时

参考连接 C# 利用Kernel32的QueryPerformanceCounter封装的 高精度定时器Timer_kernel32.dll queryperformancecounter-CSDN博客https://blog.csdn.net/wuyuander/article/details/111831973 特此记录 anlog 2024年5月11日

ubuntu安装oceanbase调通本地navicat链接

分为两部分 一安装oceanbase服务 准备工作 mkdir -p /data/1 /data/log1 chown -R admin.admin /data/1 /data/log1/偷偷说&#xff1a;其实这步我忘记执行&#xff0c;也没影响我安装 oceanbase程序是很占内存的在安装时我们要先下载好安装包&#xff1a; 然后放在能记住的…

【C语言】/*操作符(上)*/

目录 一、算数操作符&#xff1a;、-、*、/、% 1.1 和 - 1.2 * 1.3 / 1.4 % 二、赋值操作符&#xff1a; 和符合赋值 2.1 连续赋值 2.2 复合赋值(自操作) 三、单目操作符&#xff1a;、--、(正号)、-(负号) 3.1 和 -- 3.1.1 前置 3.1.2 后置 3.1.3 前置-- …

稳定网络的诀窍:静态住宅代理解决方案

在数字化时代&#xff0c;网络稳定性对于个人和企业都至关重要。然而&#xff0c;由于多种因素的影响&#xff0c;如地理位置、网络拥堵或网络安全问题等&#xff0c;网络稳定性常常受到挑战。为了应对这些挑战&#xff0c;静态住宅代理作为一种高效且可靠的网络解决方案&#…

C++容器——list

目录 list容器 list容器使用流程 加入头文件 定义 list容器的使用 添加元素&#xff1a; 删除元素&#xff1a; 访问元素&#xff1a; 容器大小&#xff1a; 迭代器操作&#xff1a; 其他操作&#xff1a; list容器 功能&#xff1a;将数据进行链式存储 链表(list…

AWTK应用程序将资源放到 zip 文件中的方法

在支持文件系统的时候&#xff0c;AWTK 的资源缺省是以独立文件的形式放在指定目录里的。但在有的情况下&#xff0c;把全部资源文件放到一个 zip 文件中&#xff0c;是更好的或唯一的选择。比如&#xff1a; 开发 PC 应用程序。 在没有文件系统的情况下&#xff0c;把资源放到…

【软测学习笔记】Python 教程(1)

&#x1f31f;博主主页&#xff1a;我是一只海绵派大星 &#x1f4da;专栏分类&#xff1a;软件测试笔记 &#x1f4da;参考教程&#xff1a;菜鸟教程❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、Python 简介 二、Python发展历史 三、Python 特点 四、 Python 环…

kali linux2024.1版安装

1 基于 VMware 安装 Kali 系统 打开已经安装好的 VMware 程序&#xff0c;点击选项卡中的“主页”--》而后点击“创建新的虚拟机” 选择“典型(推荐)”&#xff0c;并点击“下一步” 客户机操作系统镜像选择&#xff1a;选择“稍后安装操作系统”&#xff0c;并点击“下一步”…

《中阿科技论坛(中英文)》是什么级别的期刊?是正规期刊吗?

问题解答 问&#xff1a;《中阿科技论坛&#xff08;中英文&#xff09;》是核心期刊吗&#xff1f; 答&#xff1a;不是&#xff0c;但是正规期刊 问&#xff1a;《中阿科技论坛&#xff08;中英文&#xff09;》是什么级别期刊&#xff1f; 答&#xff1a;省级 主管单位…

多线程的情况下 AopContext.currentProxy()切面代理失效问题

多线程的情况下 AopContext.currentProxy()切面代理失效问题 在多线程环境下&#xff0c;AopContext.currentProxy() 可能会遇到问题&#xff0c;特别是在某些情况下&#xff0c;它无法正确地获取到当前线程的代理对象。这通常发生在以下几种情况&#xff1a; 线程不是由Spri…

深度神经网络详解

深度神经网络&#xff08;Deep Neural Network&#xff0c;DNN&#xff09;是机器学习领域中一种重要的人工神经网络。它主要由多层结构组成&#xff0c;通常包括输入层、隐藏层和输出层&#xff0c;每层之间通过权重进行连接。这些权重在训练过程中通过学习来调整&#xff0c;…

Vue线上环境禁止打印console.log

当我们在开发项目时&#xff0c;我们会使用大量的console.log&#xff0c;这样方便我们去调试&#xff0c;但是当正常上线后&#xff0c;在生产环境&#xff0c;我们是不喜欢打印的信息暴露在浏览器控制台的。 这时候我们可以通过一行代码解决&#xff1a; 在main.js文件中添加…

代码随想录算法训练营第二十五天|235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

669. 修剪二叉搜索树 文档讲解&#xff1a;代码随想录 代码链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 这道题目中删除的可能不只是一个节点 常见误区&#xff1a; 遇到一个不在区间范围内的节点&#xff0c;我们不能直接将其删除&#xff0c;因为其左右孩子可…