Java career path from entry to mastery

Introductory (1 year)
Objective: Participate in simple project development.
Skills:
Mastering Java. The classic "Java Core Technology: Volume 1 Fundamentals" (or "Java Programming Ideas") must be read, skip the graphics and applet chapters. Get used to consulting the Java API Doc. In order to ensure the quality of the code, "Effective Java", "Clean Code" and "Refactoring" also need to be read at least once.
Familiar with the Linux development environment and bash shell. Linux is our development and deployment environment, and you better get comfortable with it as soon as possible. The basic use of Linux can be learned through "Brother Bird's Linux Private Kitchen: Basic Learning (Third Edition)", and the development of bash shell scripts can refer to "Linux Shell Scripting Guide".
Master Development Tools
Be proficient in using an IDE. Either Intellij IDEA or Eclipse can be used, the former is recommended. At least familiar with the commonly used shortcut keys, can debug (including remote debug) projects.
Get familiar with an editor. Such as Vim/Emacs/Sublime Text, at least learn to search/replace/code completion.
Master common class libraries and toolkits outside the JDK. The JDK native API is inconvenient to use in many scenarios. You need to master the excellent class libraries and toolkits contributed by the community, such as apache commons, google guava, etc. For details, you can read the Utility article on server technology selection.
Master web development frameworks. We use Spring (or Rose) + Ibatis (or Jade) to develop web services, you need to be proficient in them.
Learn code conventions. We generally follow oracle's Java Language Coding Specification, you can read and become familiar with it first. The Code Formatting file is at git@xxx/coding-standard.git, please import it into the IDE before writing the code. Also, make sure that the IDE has the Findbugs and CheckStyle plugins installed.
Familiar with the development process. Our development process is roughly as follows: functional development->unit testing->functional testing->Code Review->integration testing->release. Make sure you are familiar with each of these links.
other. You need to be proficient in using the version control tool Git (read: "Git Definitive Guide"), and the project building tool Maven (read: "Maven in Action"). Also, try TDD development at this stage.
Advanced (2-3 years)
goal: independently responsible for a server project.
Skills:
Master web development best practices, master Restful API design, understand Spring principles. Recommended reading "Spring Secrets". Master the project hierarchy and sub-module division. Recommended reading: "J2EE Core Patterns".
Master web architecture design. Including Http reverse proxy, data cache, load balancing, horizontal scaling and vertical scaling. Recommended reading: Distributed Java Applications: Fundamentals and Practice.
Master relational databases. Including designing MySQL table structure, sub-table and sub-database according to business characteristics, SQL analysis and optimization based on execution plan, and database capacity planning. Recommended reading: "MySQL must know and know", "High-performance MySQL".
Learn about NoSQL. We use Hadoop, HBase, Hive on a large scale, and some projects use Redis and Storm. You need to learn the most basic use of these tools.
Learn about web security. Learn about web front-end security issues. Design secure web services, including encryption and decryption, anti-forgery, and anti-replay attacks.
Master Http (recommended reading: "Illustrated Http", "http Authoritative Guide"), Thrift and other protocols.
Master service capacity planning, performance tuning, reliability assurance, and troubleshooting. Learn about capacity planning and performance tuning, sort out business monitoring points, and use our monitoring and alarm system proficiently. Recommended reading: "In-depth understanding of the Java virtual machine".
other. Design Patterns: Learn from the project, and if you have time, you can read "Design Patterns in a Simple Way" and "Design Patterns in JDK". To learn Java Socket programming and multi-threading knowledge, you can read "Java Concurrent Programming Practice", and read the articles on Concurrent Programming Network.
In-depth (4 years later -)
goals: distributed systems and middleware development.
Build a knowledge system: "Large Website System and Java Middleware Practice", "Large Website Technology Architecture: Core Principles and Case Analysis".
Principle and Design: "Large-scale Storage System", "UNIX Network Programming Volume 1: Socket Networking API", "How Tomcat Works".
Learn open source projects: Apache Thrift, Zipkin, Netty, Rose, Jade, Taobao RPC system Dubbo, etc. Analyze the design ideas in the project. For example, the same RPC framework, what are the similarities and differences between Finagle and Dubbo.
other. Let's deepen your learning according to the projects you are involved in. For example, if you need to write a DSL, you can read "Domain Specific Languages", and if you are interested in Redis, it is recommended to read: "Redis Design and Implementation". There are two books, no matter what project, are recommended to read: "Unix Programming Art", "UNIX Environment Advanced Programming (3rd Edition)".

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326455068&siteId=291194637