首页 > 编程语言 >5年工作经验的程序员,一般都是什么样的?

5年工作经验的程序员,一般都是什么样的?

时间:2024-05-31 17:29:03浏览次数:24  
标签:经验 java 什么样 问题 程序员 开发 组件 日志

本科一般是22岁毕业,5年开发经验一般是指27岁。这个阶段,不少程序员可能通过多次跳槽,薪资有一定涨幅,但真有可能还在小公司甚至外包公司做增删改查的业务,然后坐等30岁的到来。

就以Java为例,一些发展情况一般的程序员情况会怎么样呢?

1 会用Spring boot+JPA等框架做业务,而且由于业务做多了,熟悉框架相关技能,在公司里也能凭借做熟业务而干得风生水起。

2 熟悉日志,测试,项目部署和问题排查等项目开发技能,但仅限于开发单机版的业务。

3 还是在小公司,干的活除了是开发以外,更多干的是打杂扯皮的活。或者说,能凭借在公司里干久了,能在合理利用规则的前提下摸鱼。

4 如果再跳槽,大概率还是找小公司。一方面不知道如何面大公司,另一方面估计连面大公司需要你熟悉哪些技术也未必知道,或者是知道了以后也没有相关技术的项目实践经验;(技术大厂,前后端均可投)

上述情况应该是有3到5年java经验程序员的普遍情况,有一定上进心,但不知道上进途径。

在这个阶段接下来怎么继续提升呢?下文就从简到难,给出相关执行步骤(仅限Java方向)。

1 多参与解决实际问题,哪怕这个问题不是你管的。同时如果有运维或分布式组件相关的问题,一定要参与。这样不仅能继续提升业务水平,而且能立竿见影地提升技术。

2 了解项目从开发到测试到部署整个流程,这样能熟悉项目管理的相关技术和组件。

3 结合业务,熟悉分布式组件或微服务以及云开发等技术,有机会的话,多参与此类任务,多排查和解决此类问题。

4 在上述基础上,看些脱离业务但和项目基础设施有关的技术和组件,比如如何搭建集群,如何扩容和迁移机器,如何解决高并发层面的数据库性能问题,以及如何应对限流熔断和服务降级等问题,如果可能,多参与些诸如压测等性能调优等的工作。

其实如果上心,一般能在3个月的时间内熟悉上述1到3点,如果再多问问大牛,多参与实践,上述第4点也能在半年内掌握。到了这个程度,就别再满足当下公司给的薪资了,跳槽一次的话,薪资涨个3成都算少的。

下文就继续展开说明,先说如何通过排查问题提升技能。

1 在开发过程中,一定会遇到各种问题,有业务层面的,有数据库或OOM或组件层面的,最值钱的应当算是架构和集群层面的。遇到问题后,哪怕不是自己的,一定得参与,哪怕有其它人负责解决,那么人家在解决后,也应该通过看日志搜索关键字等动作,复盘人家的分析和解决过程。

2 一般项目的日志是部署在linux上的,有些项目可能还有ELK等可视化日志管理工具,可能有些项目还会通过new relic或cat等组件监控日志或系统,比如日志里出现Exception,或有数据库长sql,就会告警。

看日志解决问题过程中,首先得掌握打开日志或从监控工具中获取有效信息等做法。再进一步,甚至可以去关注比如logback或ELK等日志组件等配置方式,以及去关注Cat等监控组件等细节。当然在排查问题过程中,连接数据库客户端等工具也必不可少。

3 这样一旦出现问题,解决的步骤一般是,根据时间点拿到日志,再通过关键字搜索日志,再用trace-id或thread-id等观察整条链路在不同模块里的日志。查到出错信息后,再去排查相关代码。

4 上述从日志里得到相关信息的步骤,虽然简单,但没有操练前不是每个人都能熟悉掌握。此外,分析排查问题的过程一定会涉及到业务和组件等技术。

也就是说,如果程序员多参与解决问题,那么一开始可能无从下手,估计连日志在哪以及该如何打开日志都不知道,到了后面,可能别人找到了问题,你才刚打开日志。但所谓熟能生巧,多参与几次,多复盘几次,后面一定能高效发现并排查解决问题。

通过看日志分析解决问题能提升哪些方面的技能呢?业务层面的就不说了,往浅了讲,能熟悉Java的各种异常,往中了讲,可以熟悉排查oom或数据库性能问题的技巧,往深了讲,甚至能了解分布式组件相关的技能。

再说说从项目管理和部署方面提升能力的操作要点。

项目一般会用Gradle或Maven来管理,用Git管理代码,用jenkins做部署,部署上线前,可能需要到数据库里做建表或修改表结构等操作,上线时,可能还要对应修改配置文件。

java程序员如果可以,一定别开发完代码就了事,可以多和运维或做发布的人多沟通,从中一方面能了解基于jenkins等组件的项目发布流程,另一方面,还能熟悉项目打包部署和调试等细节。再进一步,通过熟悉这一流程,还能知道项目和nginx、redis、dubbo和消息中间件等组件的对接方式。总之,如果多参与几次项目发布,或者哪怕没机会动手实践,也可以在一旁熟悉各种命令。这种技能甚至有些java高级开发也未必掌握。

再说下从分布式组件层面获取技能的方式。

一个项目哪怕再普通,多少会结合些分布式组件,比如用nginx做负载均衡,用redis做缓存,用dunno做远程调用。甚至可以这样说,如果程序员不注意观察,眼里只有被分配到活,自然可以不用接触相关技能,但如果肯多问人,肯多和相关人员交流,一定能接触到分布式组件方面的技能。

这块该怎么看呢?

1 结合业务需求看为什么要用组件?比如要解决数据库层面的性能问题,所以要用redis或mycat。

2 看项目里怎么用,比如怎么通过配置文件连接redis或dubbo,怎么通过注解或API使用组件。

3 如果可以,看下组件是如何在linux上搭建的,尤其需要关注集群的搭建方式。

4 着重关注组件方面问题的解决。比如遇到dubbo超时问题,或kafka消息重发,这类问题其实只要关注,发生的频率不比业务问题要低。

这方面也是能熟能生巧,刚开始的时候可能连组件是什么都未必清楚,但观察一阵代码,同时解决一些问题后,估计集群长什么样,使用组件可能会有哪些坑,应该都能知道。

在熟悉组件以后,就可以多观察高并发相关的技能了。

高并发方面的问题其实也是一样的,刚开始可能无从下手,但多参与几次问题排查和解决后,大家其实会发现这并不神秘。

高并发相关技能包括哪些呢?

1 搭建组建环境层面,有扩容,更换服务,搭建集群和迁移数据等技能。

2 在解决实际问题层面,有熔断,服务降级和限流等动作,这方面甚至还可以包括分布式锁和消息幂等操作。

3 从功能方面,包括用nacos等组建搭建服务治理环境,用dubbo+zookeeper搭建远程调用环境,用nginx或ribbon搭建负载均衡环境,以及用nginx或gateway搭建网关环境,或者是用seata搭建分布式事务环境。

可能上文提到的技术,一些java初级开发都未必听全,但本人亲眼见过,一个才2年开发的java程序员,人比较上心,基本掌握上述技术才用了4个月,到7,8个月的时候都能解决高并发问题了。

其实做这个程度,别说高级开发,估计架构师相关的技能都能掌握不少。虽然说,对java开发的要求一般是能顺利做好开发任务,同时确保代码质量,而且能解决本职方面的问题,但如果java开发仅仅止步于自己所管的一块,估计增长的也是些业务技能,这种技能估计换个工作就没用了。

但是相反,大多数java项目总会包含些架构,集群和组件等方面的技术,而且java程序员如果肯主动上进,那谁也不能拦着。可能刚开始会步步维艰,甚至连打开linux日志的命令也要先查,但只要肯坚持,那么最终收益的还是自己。

本人也见过不少java程序员,在一家公司的某个组里,大概有4,5个初级开发,他们的薪资普遍只在年薪15w左右。

其中有些人可能就仅限于自己所管的这块,确实,业务做多了,完成任务的速度和质量能提升,但这些人平时接触到的也就是增删改查。但也有一些人,平时在工作之余,甚至是利用加班,多去和其它组以及运维和中间件组交流,有问题总是跟在后面,哪怕一头雾水,也会找人复盘,盯着问。

我一直都在强调,前端程序员,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。推荐一款程序员都应该知道的好物——JNPF低代码开发

应用地址:https://www.jnpfsoft.com

这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;采用微服务、前后端分离架构,集成了代码生成器,支持前后端业务代码生成,满足快速开发;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3,平台即可私有化部署,也支持 K8S 部署。

在 JNPF 中,至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端 UI 等组件,这种情况下我们避免了重复造轮子,已内置大量的成熟组件,选择合适的组件进行集成或二次开发复杂功能,即可自主开发一个属于自己的应用系统。

就这样大概过了半年,这两批java开发的差别就肉眼可见。一些只完成自己任务的程序员,估计依然停留在增删改查阶段,充其量顶多是个熟练工,按薪资来衡量,估计依然是停留在年薪15w的水平,况且年纪又大了,竞争力可能还下降。

但一些积极上进的程序员,由于日常工作中会主动接活并多参与事情,平时也经常出错,或者有时候分析问题不到位。但过了半年,这些人多少能掌握排查问题的技巧,多少参与过OOM或分布式组件等问题的排查,多少也开发了缓存等高并发方面的活,这样的话,出去面个高级开发应该不成问题,假以时日,估计升级到架构,应该也是时间和体力方面的问题。

标签:经验,java,什么样,问题,程序员,开发,组件,日志
From: https://blog.csdn.net/wangonik_l/article/details/139274082

相关文章

  • 你见过最糟糕的程序员是怎样的?
    之前看过一个段子,也可能是真事。你见过的最差的程序员是怎样的?底下有位匿名用户回答到:还是新人的时候,接手过一座屎山,奈何技术不足,也不敢乱动这座屎山,只好继续在屎山拉屎。后来离职,几经跳槽混够了经验和能力,进了一家大公司,有天我们组接手一个项目,正是我曾经拉过屎的那座屎......
  • Repo, git相关经验
    RepoRepocomplementsGitbysimplifyingworkacrossmultiplerepositories.Fromhttps://source.android.com/docs/setup/create/repo基本语法repocontentcommandHelpRepohelpCommandHelpRepo<command>--helpinitRepoinit-uurl[option......
  • 大龄程序员思考
    视觉AI很难做近来一直在从事AI视觉检测方面的工作,外行人可能觉得挺厉害,实际上这钱挣得基本等于搬砖近两年以来,行业不景气、制造业利润上不去,那么在这个产业链中,老板就没有余钱来进行升级改造。老板们是否愿意花钱投入视觉检测,一是老板的认知、二是是否有足够的资金实力;就算最......
  • 盘点程序员可以接私活的平台和一些建议
    如果你的工作相对没那么费时间,可以空闲的时候去接点私活。或者是还没有找工作之前,可以通过一些平台接一些兼职,一来能够赚钱,在主业保持稳定的情况下能够发展自己的副业。二来通过接项目,大量的实践,你说接触的类型会更丰富,可以为你积累实战经验,面试时也会比他人更有优势。下面是我为......
  • 一个程序员的牢狱生涯(45)杨x
    星期一杨x        “秦所,我问一下这份调查报告该往什么地方录?”        我在录完剩下的‘谈话记录’后,在打开的系统中,仔细看了一下,没有找到可以录入那三张关于上午杨x的事的调查报告的地方,就转头向秦所问道。        “没有录入‘调查报告’的地......
  • 一个程序员的牢狱生涯(46)明白
    星期一明白        秦所在听到我说全部录完了后,站起身过来看了看,然后把桌上的‘调查记录’收了起来,放在了里间办公室的文件柜中。        “眼镜,就在办公室坐一会儿吧!”        ‘秦所在里间办公室说道。        “就是,就在办公室待会儿,......
  • 程序员的自嘲:从超人梦到AI助手,我们如何应对AI大模型时代的挑战?
    在AI大模型时代,作为一名程序员,我不得不承认,确实有点危机感。自从OpenAI推出ChatGPT-4O之后,看了发布会,我更加有危机感了,因为AI越来越像人了。记得小时候,我梦想着成为超人,拯救世界。但现在,我感觉超人变成了AI,而我要拯救的,是我的饭碗!百度CEO李彦宏大佬曾说“未来人人都是程序......
  • 程序员如何避免被ai替代
    程序员不被AI替代的策略:1.持续学习和提升技能:  -关注最新技术趋势和工具,如云计算、人工智能、区块链等。  -掌握多个编程语言和框架,提升全栈开发能力。2.培养跨领域知识:  -理解行业需求,将技术应用于具体行业,如金融科技、医疗信息化等。  -学习产品设计......
  • 【2024版】最新HW参考 HVV行动之蓝军经验总结(非常详细)零基础入门到精通,收藏这一篇就够
    ‍正文:HW行动,攻击方的专业性越来越高,ATT&CK攻击手段覆盖率也越来越高,这对于防守方提出了更高的要求,HW行动对甲方是一个双刃剑,既极大地推动了公司的信息安全重视度和投入力量,但同时对甲方人员的素质要求有了很大提升,被攻破,轻则批评通报,重则岗位不保;大的金融、央企可能不担心......
  • 计量和测量的区别有哪些?两者的关系是什么样的?
    计量和测量在行业内经常被混用,更不用说外行人对计量和测量的定义不够清晰,无论是看字面还是定义,似乎两者没有什么太大的区别,但实际上,两者还是有区别的,不过又存在千丝万缕的联系,那么计量和测量的区别有哪些?两者的关系是什么样的?计量在历史上,有非常悠久的定义,古代就有度量衡的说......