影响Java程序员的因素有很多,除了本身的技术能力、学历学校,还有很多外部因素,诸如:地域、公司性质及规模、会不会写PPT,甚至运气都很重要。
比如,如果在北上深这些城市,程序员如果想达到15K,还是很轻松的,甚至一些只会CUDR的程序员,工作几年也会达到这个数字(当然,再往上会很困难);但如果在三四线城市的话,薪水达到15K会稍微困难一些。
当然打铁还需自身硬,技术水平提高了,薪资自然而然就能达到你期待的水平。
个人建议,技术能力的提高,主要抓两个方面,一个是基础的内功,一个是表面的外功。
内功
太基础的我就不写了。
熟悉Java常用的类,String、集合、IO等,最好能看一下源码;
学习一下Java常用的工具库,commons包下面的,另外可以看一下guava-libraries,这个是google的一个工具类;这些要看到源码。
JVM:了解Java内存模型、内存管理、堆和栈、垃圾回收;必须了解JVM各种参数及调优;最好会用一些调优的工具。
了解多线程,至少学会使用线程池,了解synchronized/lock/volatile这些东西,并且要知道...当然如果没把握用好的话,就尽量避免使用。
了解一些网络编程的知识:RMI/Socket/、应用级协议以及可选实现技术。
其他:反射、序列化、Annotation、AOP、IOC、Cache。
外功主要是熟悉一下常用的技术和框架:
关系型数据库:从开发的角度深入了解一些吧,常用的就是MySQL、Oracle了;如何看执行计划、如何进行SQL优化、什么时候会索引失效。再进一步,主备、分库分表什么的;Oracle里面表分区,RAC。
非关系数据库:这些要学习学习。最常用的Redis必看吧,其余的Mongodb什么的也用用试试。
MQ:Kafka、RabbitMQ什么的用一用。用到Kafka的话,顺便就把Zookeeper看一看。
版本控制工具:也别只会用svn了,git也学一学。顺便把maven或者gradle也学了。
开发框架:别只抱着SSH不放了。Spring和Spring MVC都是很有用的,Struts我觉得快不行了;Spring Boot是你必须要学的,Spring Cloud里面还有一堆框架,也要看看。其实吧,Spring还有很多很多框架都值得学习。Orm框架多了解一下,Hibernate、Mybatis、Srping Data JPA。连接池相关的,什么druid、HikariCP之类的。这些说起来就太多了,总之保持技术敏感度吧。
接口方面:WebService+XML虽然不提倡,但是现在还是用的很多。Rest+JSON的要看看。更进一步,Swagger等这些工具也学习学习,可以生成一个具有互动性的API控制台;减少开发者的工作量。
其他:负载均衡、监控、单元测试、持续集成、分布式日志收集、虚拟化、Devops等等等等...
再者,多练练说话,别有的时候肚子里面有一堆东西却表达不出来,到时候很吃亏的,比如述职、面试的时候。
希望我的回答,能够帮助到你!
我会持续分享Java程序开发、架构设计、职业发展等方面的知识和见解,希望能得到你的关注。