一、初级开发,1-3年Java开发经验
年底,北京,这类初级程序员大概薪资式8-20k。如果可以进互联网大厂,薪资可以更高点。
初级开发一般式能做各种增删改查业务,遇到一些简单的问题,比如空指针制类,能够通过看日志解决,也要有一定的沟通能力,对接个API啊这类的。
初级开发阶段,其实不仅仅式体现在业务阶段,在技术层面也有体现。如果初级开发只是熟悉当前企业的业务,那后续肯定式会受到限制了。后续应该从数据库优化、解决各种数据库问题以及分布式组件或者微服务组件实用层面来提升自己。
初级Java开发,应该努力摆脱在公司做增上改查。从了解公司业务开始,积极参与到项目初期,比如需求分析和设计相关工作。
突然想起来在论坛看到一个大牛分享的故事:没记错应该是华为的,很多年前了,入职的时候大佬就是一个小员工,后来又机会加入到一个新的项目当中。但是由于项目组是新成立的,很多职责不到人老员工自己手里又有自己项目,所以有 职能部门来问一些工作,没人管。这个大佬,就开始了解整个项目需要对接的部门和同事,谁来了都认真对待,久而久之是这个项目的问题大家来了就找他。最后直接升级成项目负责人了....
二、高级开发,3年以上
年底,北京,高级开发起步薪资最低也接近2万了,5-6年的Java开发30k也差不多。40w也就是高级开发的上限了。
一般来说,高级开发的日常是两方面:第一能带一些人做业务,大概在一个小组长的位置。第二能够解决一些有难度的问题。
高级开发在公司里,未必都有什么头衔,但是一些初级开发解决不了的问题,他可以直接站出来老带新的,关于分布式组件什么的,都有能力解决。
高级开发的日常工作,增删改查的比例非常小,更多的要负责项目的开发维护和运行,以及要解决些相对【值钱】的问题。
初级开发的工作一般仅限于Java和数据库,比如SpringBoot+Oracle数据库,高级开发就要涉及到测试工具,部署工具。同时就已经要在Linux上干些部署项目和日志排查问题的工作了。
三、架构,5年以上
年底,北京,架构师50w年薪,大公司70-100w;过一百万的少之又少...
架构师一般根据业务的特征,比如并发量可用性等特性,或者看要不要接受消息中间件,然后设计出整个产品。或者一些模块的架构,同时还要搭建环境,比如Linux上安装redis或者kafka。此外架构师还要保证系统运行的平稳性,比哦如要搭建监控,设计出系统上线的方案以及出现故障的修复方案,当然如果出现组件或者架构方面的问题,也都是要修改的。
我们这里说高级开发和架构的区别,比如系统遇到个dubbo远程调用的问题,从日志上看,报错不是在业务代码层面,而是dubbo组件内部的class类里,这时高级开发可能就不大能解决,但架构师能解决,而且是在架构的职责范围内。
从实际工作中,其实高级开发和架构的一些职责是重叠的,比如都需要搭建系统的架构,都需要排查和解决架构层面的问题,但从技术角度来看,架构师需要更资深的技能。
四、程序员很重要的是心态
针对各位大牛说的我想说:
SpringBoot开源项目好多好牛啊,最后还是在服务器上增删改查。Python在科学计算领域可以很酷,但起码我大部分时间都是用来处理Excel的;.NET刚接触的时候好有成就感,时间一久和各种开源UI框架一比,也就那样;
我们引以为豪的压根就不应该是编程,也不是什么语言,更不是什么开源,而是在实际工作中,面对各种复杂业务之后,对未知仍有好奇心和改变现有框架的技术和勇气。
分享各个阶段如何破之前讲个故事:知乎的十年新知答主 ze ran,因为在国外工作,想起来原来看的天天饮食,在线看很慢写了一个下载软件。后来炒股,不知道那些指标策略有用没,写了个软件,把自己想的策略,书上写的,老师们讲的都实现出来了,在历史数据上跑,发现没有一个赚钱的就退出了股市。
他想告诉大家的是,我想我就做,我想借用此故事告诉大家。提升是有前提的,根据自己的生活需要,或者是实际工作需求进行提升。这是开发的超能力。
五、自身的故事
我认为Java只是增删改查的阶段是大学,各种管理系统都会,弄来弄去以为就是增删改查,那时候是无知无畏。——那时候破局方式在于,参加工作。
那时候大量的看博客,大量的写代码,后来做了不用类型的系统,自己以为自己是一个高级开发了,其实呢?就是批量生成增删改查哈哈哈。
在后来,从看别人的博客变成了自己写博客,把自己认为得意的东西开源出去。但是在这个过程中明白了什么是抽象思维,什么是面向对象,什么是用户体验。
这条破迷茫的路上总结一下就是:大量的代码实战—>开发自己的作品—>分享出去—>归零。
5.1 有关资源泛滥
资源多真的是两面性的,首先对于小白来说,在大量资料之间很难以分辨什么是好的,因为没标准。全部筛选一遍的话,浪费时间和钱。
5.2 关于看书
我看到了有的博主推荐了一些书籍,但是我想说,这么多年来,我虽然看技术书籍,但是对于我自己来说这不算一个好的学习方式。因为记忆力不好,只能通过实战来形成条件反射。
六、Java该怎么建立知识体系
往大点说,现在企业都在数字化转型,那么大数据、区块链,人工智能发展都很好,我们是不是可以基于岗位的工作自己主见往大数据方向过渡呢。
往小里说,从技术上成长,要么是从管理上成长。
之所以在前面铺垫这么多,主要是因为看到大家分享的资源其实并不能解决处于迷茫状态的开发。因为学习方法就错了!第一是我刚刚说的看书,第二还有分享开源项目的。我发现现在很多年轻人,是为了完成任务去学习。
但是大家在学框架或者开源项目的时候,都是直接问问题,不愿意自己调试代码。这都是任务式学习,其实学习过程很重要,不是说我知道学什么,我就学。但是不自己解决问题,因为有一条张嘴的捷径。
入门:Java SE基础-->Java Web(含数据库+H5+js+vue)中级:Maven-->Git-->SSM框架 -->MybatisPlus-->Spring Boot-->传智健康【项目实战】进阶:Spring Cloud(微服务开发,学这一套就够了) 也可分技术点学: (Dubbo-->Zookeeper-->RabbitMQ-->RocketMQ-->Docker-->Redis -->MongoDB-->搜索技术Elasticsearch)项目:SaaSiHRM【企业服务】-->好客租房【生活服务】-->万信金融【金融行业】-->闪聚支付【聚合支付】-->权限管理一体化解决方案-->短信网关平台面试:Java大厂面试专题课
上面入门到面试提到的所有知识点均有配套课程,还有一份工作后需要提升的技术:
【JDK8-15新特性】【编程强化】【数据库强化】【安全框架SpringSecurity】【报表技术】【模板引擎VelocityTools】【工作流Activiti7】…
黑马程序员:黑马程序员Java学习路线图/p/596422138