Nowadays programmer is a very sought-after industry, professional background, big cattle brought into the door, training institutions and so on, as if as long as the industry can be tens of thousands of annual salary,

Programmers so many, but the salary is still a layer of division, some people in tens of thousands of annual salary struggling, some people in five or six hundred thousand relaxed

The difference between programmers is the skill, the code you write, right?

So what does it take to be a good programmer?

One: Enjoy learning, in addition to paying attention to the development of new technology, but also understand the importance of non-technical knowledge

The average programmer usually starts learning a skill when he needs it. Great programmers are open to learning all kinds of things.

Two: pragmatic but not stubborn

Following a “programming specification” is something few developers can do, especially if the “programming specification” is not written by a professional programmer.

But the task of the programmer is to produce solutions that solve problems, not to produce art that presents perfect technology.

Three: give up

There is a common fault in China’s software enterprises, that is, like stacking functions, always dream of doing a big and complete, a universal, a universally available software, but the reality is that this software usually do not succeed, many give up halfway. Good programmers know when and how to give up, and when deadlines are approaching, staffing levels are low, and requirements are unclear, they decide decisively which features should be delayed, and which features should be kept alive.

Four: learn Java8

Java 14, if I remember correctly. Unfortunately, the VERSION of the JDK configured in my IDE is still Java 13, and there is an alternate version, Java 8. The reason why I don’t follow the fashion is probably because I don’t study as hard as I did when I was young. Let me be ashamed for a while.

There is also an objective reason why Java 8’s new features are truly groundbreaking and unprecedented. Lambda expressions and streams, for example, are extremely useful. In fact, there are quite a few Java programmers who haven’t mastered them (sadly).

Prior to Java 8, starting a thread looked like this:

Thread t = new Thread(new Runnable() {    @Override    public void run() {        System.out.println("Before Java 8"); }}); t.start();Copy the code

After Java 8, all you need to start a thread is this:

Thread t1 = new Thread(() -> {    System.out.println("Java 8"); }); t.start();Copy the code

It’s clear what’s good and what’s bad. It’s really hard to be a good Java developer if you don’t already know the features of Java 8. “The best time to plant a tree was 10 years ago, the next best time is now.” Take action!

Five: Master Spring

Spring is now an integral part of Java development. It is no exaggeration to say that I am not a good Java developer without Spring. I’d bet a buck that almost every company that writes in Java is using the Spring framework.

I don’t have a gambling habit, but I’m sure I can win. I’m only betting 1 dollar, not because I’m being stingy, but for the sake of the loser, so I don’t want to lose money.

Architecture is evolving, and even development teams as small as two or three people are moving from single applications to microservices. This is called a tidal wave, and Spring Boot and Spring Cloud have natural advantages in this area.

Learn unit testing

When I was working in A Japanese company, testing was very important. Code review, unit testing, integration testing and so on were very busy. But when I came back to Luoyang, the team didn’t have a culture for this kind of testing at all, and although I tried to advocate it, it didn’t work well, so many questions popped up online and ended up getting overwhelmed.

If you want to be a responsible developer, hone your testing skills. JUnit and TestNG are very popular unit testing frameworks in Java. JUnit was designed to analyze units of code, while TestNG’s intended use is for advanced testing. The two frameworks are not equal, but at least they are different.

Seven: proficient in API and class library

1) Logging class library, such as Log4j, SLF4j, LogBack.

2) JSON parsing libraries such as Gson, Jackson, org. JSON, and Fastjson.

3) Test libraries, such as JUnit and TestNG mentioned earlier.

4) General class libraries, such as Google’s Guava, Apache’s series of class libraries.

5) HTTP class libraries, such as HttpClient and HttpCore.

6) Word, PDF, Excel class library.

7) Database connection pool class library, such as DurID, HikariCP.

8) Message notification libraries such as RabbitMQ and Kafka.

9) Mail libraries, such as JavaMail.

10) Encrypt and decrypt class library.

Eight: Learn design patterns

Learning programming is like practicing martial arts. You need to practice martial arts very well. You can’t lose two things. First, internal work; Second, it is the secret book of martial arts. Internal work corresponding to programming is our basic programming ability, the design mode of programming can be imagined as the secret of martial arts.

Design patterns are about designing elegant (coded) solutions for different types of scenarios. There are many advantages to learning design patterns well. For example, it is easy to understand the logic in classic code (many good open source frameworks make extensive use of design patterns). Answer fluently in the interview (design model is the focus of the interview); You can write elegant solutions (or code).

If you want to learn design patterns, I recommend Qin Xiaobo’s Zen of Design Patterns, which is fun and easy to read.

Nine: Master development operation and maintenance tools

If you’re familiar with continuous integration and deployment tools like Maven, Git, Jenkins, and Docker, you’ll feel like a miracle when it comes to development operations. Let me solemnly introduce these four students:

Maven is a (specifically Java) software project management and automated build tool, provided by the well-known Apache Software Foundation. Based on the concept of the Project Object Model (POM, you know where that XML file comes from), Maven uses a central repository to manage the build and documentation steps of projects.

Git is a distributed version control software originally created by Linus Torvalds and released under the GPL open source license in 2005. Github, a large dating platform, is a code hosting platform that uses Git for version control.

Jenkins is an open source continuous integration tool written in Java that frees developers from the complexity of integration to focus on the more important implementation of business logic.

Docker automates the deployment of applications under the software container to provide an additional layer of software abstraction on the Linux operating system, as well as an automatic management mechanism for operating system virtualization.

Ten: Skillful use of IDE

Speaking of IDE, I can’t help thinking of an old saying: “To do a good job, you must sharpen your tools.” IDE is like a weapon and a knife in a soldier’s hand. If you are not skilled in using it, how can you fight the enemy?

Last year, I switched from Eclipse to IntelliJ IDEA. At the beginning, I was extremely rejected and resisted. Readers urged me to keep using IntelliJ IDEA for a period of time. If you’re going to label me as someone who doesn’t like new people, I have no reason to disagree. It works so well.

Eleven: Learn about the JVM

In order to become a truly good Java developer, there is no getting away from the FOCUS of the JVM, just like you have spent generations of effort to participate in the children’s examination, the country examination, the national examination, and finally if you do not pass the Jinshi, it is a little wasted.

You need to understand how the JVM works, just-in-time compilation (JIT), garbage collection, and so on to write robust and high-performance Java applications. For a systematic study, I recommend Zhou Zhiming’s Deep Understanding of the Java Virtual Machine, one of the few books written by an acclaimed Chinese programmer.

Twelve: have enterprise spirit

Many programmers like to think that they are workers, to the identity of workers to look at their own, to the mentality of workers work. Good programmers see themselves as owners of the business, and they know that the interests of the business are their own. Also, a good programmer imagines what knowledge is needed and what skills are missing if he or she starts a business. Only by putting yourself in the master’s shoes can you truly understand the skills required to run an entrepreneur.

At that time, you need solid basic skills, rich practical experience, the mind has a gully, to start steady, the code will be beautiful



      



             

The above content is some of my own feelings, share out welcome correction, by the way for a wave of attention, the information of your friends concerned about me after clicking Java learning exchange group for free oh