Programming skills are undeniably important for a Java developer.

However, in addition to the basic programming development ability, other aspects of ability is also a very important factor to reflect the ability of a programmer.

For example, troubleshooting ability, online operation and maintenance ability, project management ability, coordination and communication ability, etc.

This article, mainly to briefly introduce, as a qualified Java development, in addition to their own technical growth, but also what aspects can be improved.

Class development Skills

The first category, which is not purely coding skills, but is also related to development, is what I call class development skills.

Linux system

A lot of people’s development machine is Windows, so usually also basic graphical development interface. However, that doesn’t mean you don’t need basic Linux skills.

Because the application you develop may be deployed on a Linux machine, and most of the time you will have to deal with the Online Linux server, so the installation of Linux system, the construction of the development environment, Linux common commands and the deployment of the project under the Linux environment are essential skills.

Otherwise, if something goes wrong online, there’s nothing you can do about it.

Unit testing

As I said in Unit Testing matters, unit testing is important, and good unit testing can save us a lot of development time. Unit testing is a basic prerequisite for better continuous integration and delivery of software.

Unit testing also involves techniques such as using mocks for single testing, using in-memory databases for single testing, and so on.

As a developer, it is necessary to have the habit of writing single tests, and also to master basic single test writing skills. This can lead to early detection of problems.

Version management

I believe that almost all corporate code is hosted through a version management tool, whether it’s Git or SVN.

In addition, many technologies are now open source and co-built through GitHub, and the use of version management tools is an essential skill for Java development.

Versioning has a lot to learn, such as when to Commit, how to write a Commit message at Commit time, and how to resolve code conflicts.

Build tools

Like version management, dependency management for enterprise development is no longer the raw import and export of Jar packages. Instead, use a tool like Maven or Gradle.

The use of build tools is equally important, and a qualified developer should know how to check for dependency conflicts, how to arbitrate dependencies, and so on.

Code debugging

Someone makes fun of programmers, who spend half of their time writing bugs and the other half of their time debugging. This may sound like a heart-breaking statement, but it also illustrates the importance of debug.

Although it is too much to say that programmers spend half of their time writing bugs, it is impossible for any programmer’s code to be completed in one go. The larger the project is, the more bugs there will be. In offline development, debug is the most effective means to find and solve problems.

Code debugging is actually relatively simple, as long as the endpoint is set up, follow the procedure step by step to see the effect. Just learn to use the tools provided by the IDE. See Eclipse Debug Tips

Troubleshooting and resolution of problems

In terms of troubleshooting, this ability is really, really important.

When something goes wrong, it’s time to test the programmer. This is the skill that differentiates programmers more than any other. A question may involve many aspects of knowledge.

Ali had a divine figure, the flower doron. In the early days of Taobao, no matter what problems he encountered, he could basically solve them. He was called a god because of his problem-solving and problem-solving skills. If you can solve a problem in two days that a team hasn’t solved in two weeks, you’ll be called a god.

Most of the time, the problem is not difficult to solve, the difficult is to locate the problem. This will involve a lot of knowledge, knowledge reserve is very important, but in the case of knowledge reserve is not enough, at least from the following aspects to improve their ability.

1. View logs

2. Analyze the Java stack information

3. View cluster monitoring indicators

Non-development skills

There is another set of skills that may have nothing to do with development, which I call non-development skills. These skills often determine how far a developer can go.

goal-directed

I call goal orientation an ability, a basic ability that one should have. Also, it can be exercised and cultivated.

Goal-oriented people are people who define their goals first, then look for ways to achieve them, and finally use all available resources to achieve them by all means.

Goal-oriented people have specific goals.

A person with a clear goal will not waver or give up easily when doing things. He can overcome difficulties and stick to his goal to the end.

Goal-oriented people, when doing things, will think about, try all kinds of ways to achieve the goal.

A goal-oriented person, when doing things, will find, create, borrow all the resources to achieve the goal.

Keep setting goals for yourself and become a goal-oriented programmer. If you want to interpret goal-oriented as KPI oriented, I’m fine with that. I think it is OK to have a goal and work hard for it.

Time management

Time management is important for anyone, but it’s especially important for programmers because we don’t have much time at our disposal.

How to manage your time correctly is a deep knowledge. Some people work overtime, even 996 way of working. But in the end, I still can not get a good result, which is largely due to the poor time management, most of the time is “busy”.

Most of the time, hard work in front of the credit will slightly show vicissitudes of life.

A programmer may be busy with many things in a day. At work, he may arrange several requirements review, design review, interaction review, TC review, etc., and also need to check problems, write code, and sometimes act as a product, operation, or even customer service role. In life, they should accompany their families, enrich themselves and exercise. How to arrange your time is very important.

My advice for time management is to prioritize your to-do list and only do one thing at a time.

Learn quickly

In this era of rapid technological development, new technologies are being introduced every day. A good developer needs to keep learning to ensure that he or she will never become obsolete.

And studying is definitely going to take a lot of time. Then, the ability to learn quickly is also crucial for a programmer who doesn’t have much time.

English language ability

First of all, our daily development code is based on English, and many of the current technology is also invented by foreigners. That is to say, many new technical documents are in English.

Take the most popular blockchain recently for example, no matter whether Satoshi Nakamoto is Japanese or not, his blockchain white paper is also in English, people with good English ability can immediately learn new knowledge, and those with poor English ability may see second-hand translation materials.

Technicians with good English can also earn a lot of money by translating books. Programmers with poor English have trouble naming variables.

Science and the Internet

This I think is crucial for developers. Just like the English ability. Much of the material is posted on foreign websites.

Whether it is Google, Wikipedia, these need science online. And many foreign websites, such as StackOverflow and GitHub, can also be accessed faster.

The project management

Every programmer, whether working on a large project or a small one, has a PM day. Both require good project management skills.

There’s a lot of learning about how to estimate risk, how to estimate cost, how to get a project on time, how to manage a project team.

Any lack of mastery may lead to project risk or even project failure.

In the case of project management, there may be no credit for releasing the project on time, but if the project is delayed, there is guilt.

A programmer who cannot manage a project, at most a senior programmer, cannot be promoted to expert level or above.

Coordination communication

In addition to the project manager role, developers are not independent of each other on a project. Many times collaboration is required across teams, departments, and even companies.

In the project, you and other students are in the same role, and the relationship between them can be regarded as level, so how to manage horizontally will be very important.

Why do many people do things quickly while others take a lot of detours? Because some people have coordination and communication skills, which means that when you go out to run errands, sometimes you just need to “brush your face” to solve the problem. So, the reason why I can “brush my face” is because of my strong coordination and communication skills.

Understanding ability

If you don’t understand well, you can’t understand requirements well. Without a good understanding of requirements, a lot of time can be wasted. In many cases, the requirement documents given by PD are not all reasonable. In this case, if the developer’s understanding ability is poor enough to correctly understand the requirements in the requirement review stage, the result of the project can be imagined.

Poor understanding ability, can not quickly learn new knowledge, also want to spend more time than others. By learning Java 9 Jigsaw, some people quickly understand the principles of modularity, while others don’t. That’s because of the difference in comprehension.

Presentation skills

All of the abilities mentioned above are more or less dependent on the ability to express themselves. If the presentation skills are poor, there will be problems with coordination and communication, not to mention project management.

In addition to daily work, which requires the ability to communicate with others, many companies write daily, weekly or monthly reports. Good expression ability can clearly write to understand what they have done, what contribution, so that the leadership is also comfortable. The work is not bad.

What’s more, the promotion system in many companies is based on oral defense. Therefore, how to express clearly my work achievements and harvest in the past period of time largely determines the promotion result.

Other times, developers will also be involved in presentations, whether within the team, within the company, or at industry conferences. The ability to speak is crucial. Most of the time, others know a person, first of all through his ability to express himself.

The new barrel theory

The front said so much, count down, as if a programmer is omnipotent. However, I would say that programmers should be omnipotent, because we are going to change the world.

On the other hand, if you have the ability, you’d better practice all of them. But if you’re not good at something, you should also be aware of what you’re not good at.

The worst thing is not knowing that you don’t know. This article has a small purpose, which is to let you know that you don’t know.

We know the law of the barrel – the amount of water in the barrel depends on the shortest board.

The traditional cask law is measured by placing the cask on a flat surface. However, when the bucket is placed on an inclined surface, the amount of water the bucket holds depends on the length of the longest board.

This, of course, requires that the length be opposite to the length, and that there should be blocks of corresponding length around the long block as her auxiliary.

That is to say, when we are a large section shorter than others, not only do we have to choose the right slope. It is more important to arrange the other blocks in a reasonable way so that they can play their due role. This makes maximum use of existing blocks.

The skills I listed above are the boards of a programmer’s barrel. It doesn’t matter if you have a short board, as long as you find your long board and surround it with other boards of corresponding length.

Chicken soup time

The skills mentioned above are called skills because they can be practiced. This includes the ability to understand, express and learn. It’s all exercisable.

So, developers, don’t just churn out code. Look up even if it’s okay. Mend the length of the boards in your barrel. This will take you further.

Your skill level determines your lower limit of development. Soft skills determine the upper limit of your development.

Refueling, mutual encouragement.