Java programmers beware: you lay the golden years of development, how are you going to grasp?

In the Java industry's popular a saying - Golden Year 5, the date when the entry is from the programmer, the first five years of work choices affect career development and salary trend throughout his career. How to grasp the past five years, from a rookie joined the line they may not surprise transformed into a big brother, this is a process that involves their professional knowledge base and problem selection, then, how a Java programmer to do in order to complete the entry promotion of the road chiefs of it?

To work between 1 - 2 years

During this time, presumably for Java already has a deep understanding. First, you have to be very familiar with design patterns, look at some books on writing code optimization, improve your code ability to single-handedly write elegant code; secondly, you must contact concurrent work, you should go deeper understand the relevant knowledge concurrent; and finally, you have to have some research framework and Java class libraries used, but also need to see some kind of source JDK, including source framework you are using. All in all, at this stage, you need to do is understand the underlying Java class libraries and Java, JDK and JVM is relevant content.

Java programmers beware: you lay the golden years of development, how are you going to grasp?

Between four years - to work 3

If you are in this stage, to be honest very difficult to enhance the ability of the code, because this phase of the study would be more diverse. In the first three years of work, you must contact with varying degrees over other technologies, such as big data, distributed cache, distributed messaging services, distributed computing, software load balancing technology, any one of you could be a master, are It will be a huge advantage when you interview potential. So if you are, then you can go in-depth study of a particular interest in technology, which is not necessarily used in your work, but it must be relevant.

Java programmers beware: you lay the golden years of development, how are you going to grasp?

To work in 4 - 5 years between

Programmers to work four to five years, then, should you encounter a problem of the technology. Do not rush to improve their technology, is more important at this time is to increase your influence, you can try to go to some well-known companies to improve your employment background; you can also post some technical articles to influence more people; you can also go Github create an open source project belongs to you, to build their own products. Techniques learned at this stage, it is easy to encounter a problem, and often reaches a certain extent, you have thoroughly studied the effect is really very little, unless you are specifically doing academic research. Unfortunately, however, most programs ape can not do this step, it is scientists do. This time to increase the influence of mainly influence can create more opportunities for you, so, your biggest task is to enhance their influence, to prepare for future career.

Java programmers beware: you lay the golden years of development, how are you going to grasp?

I have a friend who graduated in 2011 as a software developer programmer, into the software development industry for over eight years, he worked as junior software engineer, senior software engineers, project managers, technical managers, project managers, recent over the years with the development team, participate in job interviews. I asked him to work at sharing experience of these years, there are welcome to explore the different views.

For students in terms of software development, we must first objective understanding of their own situation, think clearly own what now, what next to do a good job careers to choose different types of enterprises. For example, the current body without a bit, much-needed employment, technical ability is more general, you can select the interim human resources outsourcing; specializes in technology like the technology has a strong interest, hope to become the technology of cattle in a field, you can select an Internet platform type; there are certain technical basis, want to go after technical managers, project managers direction, you can select the type of outsourcing. The next will play the programmer's career development plan put forward specific recommendations:

Do you have a clear career plan?

1, to the architect

For any Java developer, architect role is a very desirable. So what is the main difference between programmers and architects is it? Architects have a sound and solid technical system, with a better system analysis and design capabilities, rich experience in project development. In fact, from the first programmer to grow their own learning, reading and mature project code will make people benefit; secondly from the experience in the field, to understand the characteristics of distributed systems, in doing the project, to be able to focus on performance, scalability, reliability, availability, and other indicators.

架构师是一个漫长的积累过程,大部分架构师的年龄在35岁左右,这个阶段就是程序员的黄金期。那么我们如何以一个架构师的标准来加强自己的能力呢?程序员要向一名架构师发展,需要进一步加强技能的修养。对于互联网公司来言,最重要的技能是对网络和分布式系统的理解,比较麻烦的是分布式系统,除了分布式,在现在大型互联网企业中,还需掌握高性能、深入浅出、性能调优、Spring、JVM等技术。当然,良好的驾驭管理开发团队的能力和人格修养,能够让架构师在开发项目中游刃有余,不会出现意外的干扰。

2、 走向项目经理

有一些程序员工作机遇比较好,不但负责项目的设计工作,而且还负责项目的管理工作,对项目经理这个工作有一定的尝试。因此,这类程序员可以审视一下自己,是否合适这项工作,如果自己对这种工作比较满意,而且具备项目经理的要求,则可以向项目经理这个方向发展。项目经理的工作重点已经从编程转移到对人、对技术、对进度、对项目的管理,因此,项目经理必须要了解软件开发的各个环节、了解开发的各种技术和运用、了解开发队伍人员的水平和特点。

在日常的工作和生活中就得逐步锻炼这方面的能力,其次,学习一些项目管理的知识,例如:PMP、CMMI、敏捷开发管理等。从程序员到项目经理可以使项目经理更好地理解程序员在项目中的地位和作用,了解软件开发的各种规律性的东西,从而保证项目的正常完成。而且,项目经理的收入在公司中的地位也是比较高的,因此,我认为走向项目经理是程序员的另一个发展空间。我想提醒一下,程序员在担任项目经理之前最好要把软件设计工作做好,这样在做项目经理的时候,就会有很好的基础。

3、 走向管理者

很多程序员希望自己能成为公司中的主管、经理、老总、老板,这样在公司无论是收入还是地位都相对高一些。另外,有些程序员可能厌倦了年复一年的编程工作,希望能摆脱这种步步紧逼的工作状态,走向管理者程序员要比一般人做更多的准备,做更多的转型工作。但是,如果你有这个志向,又积累了这方面的工作经验,可以努力往管理者发展。由于软件公司的管理者不同于一般公司的管理者,专业能力越强,管理起来就越得心应手,没有专业能力的管理,遇到的问题很多,也很难解决。 因此,我的建议程序员最好要把编程、项目设计、项目管理等基础打好,这样转型到管理者成功率就会高一些。

4、 原地踏步

当然也有程序员惰性比较大,安于现状,也无可厚非。对待这些程序员,我的建议是原地发展,把本职工作做得更好,把自己的技术水平再提高一步。在这个过程中他们的能力和自信心都会得到提高,他们的想法自然不会一成不变。不管做哪一行,都应尽早做好职业规划,人都需要有一个目标去激励自己,Java程序员更是如此,朝着一个目标逐步提升自身实力总会比原地打转好,相信聪明的你该知道怎么做。

据不完全统计,截至目前(2019.3)为止,中国Java程序员的数量已经超过百万。而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大。那么,作为一名Java程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,这不仅是一个刚踏入职场的初级程序员,也是工作三五年后开始迷茫的老程序员,都必须要面对和明白的问题。为了帮助大家少走弯路,我总结出一个Java程序员的工作2-5年成长路线。

Java programmers beware: you lay the golden years of development, how are you going to grasp?

Java程序员应该掌握的技术

1、通信协议

各个子系统之间要进行通信,必须要选择一种或多种通信协议,现代比较常见的是基于HTTP的协议。建议了解更多协议对于学习安全也有很大的帮助,比如MySQL和PostgreSQL的协议都有安全的设计。

2.、序列化

系统之间通过网络传输,或者存储到文件时,肯定只有一种格式,就是字符串。要将复杂的数据结构与字符串之间进行转换,就需要用到序列化,简单的序列化如JSON和XML,稍微复杂些的有protobuf、thrift等。需要了解所有这些序列化方式之间的优势和劣势。,比如JSON和XML只能用于传递数据,而protobuf与thrift还可以用来做RPC协议,至少要确保每种序列化方式都自己尝试过hello world。

3.、数据库

要形成自己的数据库选取风格,就需要先对自己常用的数据库有足够深入的了解。对于关系式数据库,除了一般的Create、Query、Delete、Update操作外,还需要能自行建立索引、数据库的平行扩展、了解如何进行性能调试,以及了解常见查询操作的性能级别、常见的查询性能瓶颈点。一个较好的例子是 "SELECT COUNT(*) FROM table WHERE dt_create-86400>NOW();" 。

4、 存储

存储分为几种类型。NAS等各家产品有所不同,大多是通过NFS来访问的,问题是NAS的价格很高,而且在去IOE的趋势中很多人也不愿意再用,所以经常会有基于文件系统建立小规模存储的需求。需要关注的是每个目录下的文件数不应该太多,当一个目录下文件数(实际是inode数量,包括文件和目录)超过1000时,性能就很差了。所以,建议将一个系统中要存储的对象ID做16进制,随后每2位16进制做成一级目录,这样可以确保每个目录下的文件数不会超过256个。现代云计算,如Amazon S3已经把存储的问题解决的很好了,如果可能,尽量用好。

5、应用框架

此事在各个语言之间各有选择,多注意了解自己关注方向的所有框架的优势和劣势,至少当有个毛头孩子问你为什么不选择某个最新的框架时,能清楚用自己的观点答复。对于常见的框架,十分推荐自己重新实现一个来当作锻炼,实现一个WEB框架,不到200行代码就实现了。

6、接口

主要是指接口协议,或者RPC协议。系统之间进行RPC调用很常见,注意选择自己能熟练使用的,并且有所深入研究,并了解其常见的限制。RESTful API就是个比较常见的选择,但是性能并不好,自己要对性能等参数有量化的了解,而不是简单的一句好或不好。短连接接口在三次握手时是串行操作,要了解其为何耗时。

除了要在如上的各种不可或缺的组成部分中有所了解,还要能清楚地知道一些常用系统模块的原理,并能够很深入的玩起来。几个值得注意的:

  1. HTTP服务器:常见的无非是nginx、apache,自己要能进行基本配置,包括静态文件、fastcgi转发等。

  2. 关系式数据库:常见的如mysql、postgresql、sqlite,自己要对每一种都有深入的了解,可以做一遍常见操作的性能测试,并牢记于心。比如sqlite虽然并不需要走网络,但是实际查询性能很差。

  3. NoSQL数据库:memcache、redis、mongodb等,近几年有很多,挨个了解其实现原理,以及各种常用操作的性能,当有需要时,随时能拿得出手来用。

  4. 云计算平台:几种常见的云计算平台的应用方式要有了解,如Google的资源方式和Amazon的Java programmers beware: you lay the golden years of development, how are you going to grasp?,每种云计算平台往往还会提供一大堆附加服务,比如可靠数据库,存储,缓存等,也要分别有所了解。

  5. 加密/签名技术:常见如truecrypt、openssl、gnu pg、sha1、md5、scrypt等,了解各种加密/签名技术的安全性、字长等,并都能自己做过hello world。

那如何快速学习并精通呢?

针对当前互联网公司的技术需求以及结合主流技术,我自己整理了一套系统的架构技术体系,当你技术过硬的时候,能够解决技术问题才会服众。不少公司都很重视高并发高可用的技术,特别是一线互联网公司,分布式、JVM、spring源码分析、微服务等知识点已是面试的必考题,这些东西可能你们平时在工作中接触过,但是缺少全面系统的学习。

个人推荐分享一套全面的知识图谱,无论走架构,管理还是项目经理的路线这些技术你都应该有一定的了解及掌握!(迷茫的朋友可以参考下学习方向)

一、框架源码解析专题

应用框架spring

  • spring IOC源码解析
  • spring Aop源码解析
  • spring MVC源码解析
  • spring注解试开发
  • spring 5新特性

Java programmers beware: you lay the golden years of development, how are you going to grasp?

ORM框架MyBatis

  • MyBatis 快速掌握
  • MyBatis 源码分析
  • MyBatis 徒手实现

Java programmers beware: you lay the golden years of development, how are you going to grasp?

设计模式

  • 设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • 设计模式对比及应用场景

Java programmers beware: you lay the golden years of development, how are you going to grasp?

二、并发编程专题

  • JVM内存模型
  • 并发同步处理
  • 并发包之tools限制
  • 并发包之atomic原子操作
  • 阻塞队列BlockingQueue详解
  • 并发Map、List与Set详解
  • Executor线程池详解及核心源码剖析
  • ForJoin

Java programmers beware: you lay the golden years of development, how are you going to grasp?

三、性能调优专题

JVM性能调优

  • JVM类加载机制详解
  • JVM内存模型
  • 垃圾收集机制详解
  • 垃圾收集算法详解
  • JVM调优工具详解
  • GC日志详细分析
  • JVM调优实战

Java programmers beware: you lay the golden years of development, how are you going to grasp?

Mysql性能调优

  • Mysql索引数据结构深度讲解
  • Mysql 执行计划与索引讲解
  • Mysql锁机制与事务隔离级别详解
  • 慢查询Sql调优实战

Java programmers beware: you lay the golden years of development, how are you going to grasp?

Nginx调优

  • Nginx快速掌握
  • 熟练掌握Nginx核心配置
  • 掌握Nginx负载算法配置

Java programmers beware: you lay the golden years of development, how are you going to grasp?

Tomcat调优

  • 整体认知Tomcat项目架构
  • 生吃环境配置
  • 掌握Tomcat 线程模型背后原理

Java programmers beware: you lay the golden years of development, how are you going to grasp?

四、分布式框架专题

分布式消息中间件

  • Rabbitmq
  • RocketMq
  • Kafka

Java programmers beware: you lay the golden years of development, how are you going to grasp?

分布式储存中间件

  • Redis
  • MongoDB
  • FastDFS
  • Elasticsearch

Java programmers beware: you lay the golden years of development, how are you going to grasp?

分布式框架

  • Zookeeper
  • Dubbo
  • ShardingSphere
  • Netty

Java programmers beware: you lay the golden years of development, how are you going to grasp?

五、微服务系列专题

  • 微服务架构变迁史
  • spring boot源码剖析
  • spring cloud Netflix源码剖析
  • spring cloud Alibaba源码剖析
  • 虚拟容器

Java programmers beware: you lay the golden years of development, how are you going to grasp?

六、项目实战专题

双十一电商平台

  • 电商项目架构设计及核心技术点整理介绍
  • 基于spring cloud微服务架构拆分
  • 电商平台技术解决方案

Java programmers beware: you lay the golden years of development, how are you going to grasp?

分布式调用链平台

Java programmers beware: you lay the golden years of development, how are you going to grasp?

七、互联网工具专题

  • Git
  • Maven
  • Jenkins
  • Linux
  • 虚拟容器

Java programmers beware: you lay the golden years of development, how are you going to grasp?

Finally the above knowledge I have summarized a set of corresponding video architecture, the core of notes and interview Zhenti (including Dubbo, Redis, Netty, zookeeper, Spring cloud, distributed, high concurrency architecture technical data) to everyone, we want to help, but also help you save time looking for learning materials!

Obtaining:

Interview File Access:

Like + backward point concerns small series of small series of learning exchange group: 909 666 042 receive free information! (To help your promotion and pay rise)

Rational use of every minute of their own time to enhance their learning, do not use the "no time" to hide his ideological laziness! Young, hard fight, give an account of their own future!

Java programmers beware: you lay the golden years of development, how are you going to grasp?

Java programmers beware: you lay the golden years of development, how are you going to grasp?

Java programmers beware: you lay the golden years of development, how are you going to grasp?

Java programmers beware: you lay the golden years of development, how are you going to grasp?

Guess you like

Origin blog.51cto.com/14570694/2458499