可以参考一下学习
1. 工程化专题
(团队大于3个人之后,你需要去考虑团队合作,科学管理)
2.源码分析专题
(好的程序员,一行代码一个设计就能看出来,源码分析带你品味代码,感受架构)
3.分布式架构
(跟上技术节奏,扩宽技术视野,程序员要往上提升,要有自己的技术工具箱和技术认知。)
4.微服务架构专题
微服务架构专题
5.性能优化
(追求高效、科学调优,不靠碰运气)
你要会沟通,懂业务,理解需求,懂产品!最终,我们都是为了用户创造价值的。你不懂用户,不理解市场,不知道产品为什么要这么做,不知道如何根据实际需求去选择技术方案,有什么用?你技术再牛,不能做出能满足用户需求的产品,你给公司创造了什么价值?
嗯你不懂需求,但是你技术厉害,会优化,你会面对海量用户进行优化。那么你知道这个场景之下,是速度更重要还是准确更重要吗?理解需求的话,也许可以牺牲准确性一两天迅速拿出一个让用户满意的方案,也许可以改头换面提供给用户其它办法,你的高技术的方案要实施一个月,有用吗?
三年Java程序员我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段
在这三年的开发生涯中,感悟到一个道理,自己并不属于自己,有很多的思想也并不能实现。举个例子来说吧,给别人做项目,拿到手的项目是别人分析好的,方案给你选定,尽管你觉得有不合理的地方,你有你的想法,但是也是无济于事,并不能得到别人的采纳。刚开始的时候,也许你还能提出你自己的观点,但结果是并不会被用到。久而久之,即便有了想法,也不想说了。就这样,一天到晚,压抑着自己的情绪。用别人的思路控制着自己的身体去工作。时间长了,疲惫不堪。
工作五年Java程序员
回答一下大家关心的如何提升自己的能力,争取更高的收入。
初级程序员的重心在编写代码、运用框架->中级程序员重心在编写代码和框架->高级程序员技术攻关、性能调优->架构师 解决业务和技术问题
下面是我画的不同阶段程序员的能力的示意图,能力比例表示不一定准确,主要供参考。
某朋友公司在招的一份15w薪酬的Java工程师工作职责说明:
1、熟悉spring,ibatis等常用框架;
2、有过运维经验或shell开发优先;
3、有过dubbo或者rabbitmq经验者优先;
4、熟悉nginx配置者优先;
5、有丰富的数据库设计经验,精通sql语言,并熟悉Mysql数据库系统
一份25-40w薪酬的资深Java工程师工作职责说明(加粗的主要为差异部分)
1;理解熟悉金融业务(消费信贷,支付交易,理财等),参与相关业务的系统设计,核心系统代码的编写
2;系统缺陷的修复以及性能调优;
3;主导技术难题攻关,确保高性能处理和系统的稳定性
任职要求:
1;三年以上Java开发经验,对技术有热情和追求;2;熟悉分布式系统的设计和应用,熟悉分布式、缓存、消息等机制;能对分布式常用技术进行合理应用,解决问题;
3;掌握多线程及高性能的设计与编码及性能调优;有高并发应用开发经验;
4;掌握Linux 操作系统和大型数据库(Oracle、MySql);对sql优化有丰富的经验;
5;有良好的抽象设计能力和逻辑性,善于独立分析和解决问题;
6;有第三方支付开发经验的优先,有会计清算系统开发经验的优先
7. 具有金融行业系统应用架构工作经验者,熟悉行业业务模型和应用架构模型者,优先考虑;
你可以对比一下接近你现在收入的岗位说明和你希望达到收入的岗位说明,中间的差距不也就是另一种你需要填补的坑么?
中级后端程序员提升薪资的重要点在于:1.项目经验:支付,通知,IM,短信等公用模块快迅实现。
2.代码质量:抽象封装,日志规范,发布流程,快速定位。
3.性能优化:服务器的内存,硬盘,数据增长量,带宽,系统中最消耗性能的地方,一个请求需要调用哪些服务,每次访问DB的时间是多久。
4.架构能力:分布式,负载均衡,读写分离。
5.选型能力:JMS,SOA/SCA/微服务,MongoDB/Redis/Memcache,Java/Go/NodeJS等。
6.管理能力:团队技术分享组织,项目风险控制,任务和工作的分配
7.需求评审能力:很快给出反馈建议,多长时间能够完成,技术风险点在哪,有没有花费时间长,又不重要的需求。
8.Geek能力:对某一个技术点研究的特别深入,比如说Nginx的配置,设计,构架。ElasticSearch的设计,优势。