Once upon a time, how many times I poking fun at his own project, cursing their faults, project file structure chaos unclear, serious code, the code level redundant code block, the lack of annotation and log, giant, static configuration items scattered here and there, chaos data validation, and exception handling, fragile stability and expansibility, every function upgrading and problem solving, It was scary.

These problems is just the backend development stage, the potential problems and needs analysis, functional verification, interface design, architecture design, selection of technology and test phase, there will be more problems exposed, each phase is progressive, complement each other, each other to get most of the colleagues identity can be executed, down process, requires repeated communication and discussion, Team members should be properly divided and grow, and project cost and schedule should be properly controlled.

As you can see, for a large project, it is not easy to write a lot.

My questions and thoughts

I have been mainly engaged in Java back-end development for 5 years. Unfortunately, I have not written satisfactory code, and there are more or less problems I mentioned at the beginning. In addition, I am not particularly in-depth about the technology used in my development process, and I have no way to start when I meet some special problems.

The reasons can be summarized as follows:

  • Not thinking clearly about what you can achieve by “finishing a project” or “solving a problem”?
  • Floating on the surface of the technology, not deep enough;

Remember before sending a space say: “have a problem, if can the corners, that is a very high level”, it is true that when a problem, especially the online urgent problems, heart will be a rejection and oppressive feeling, on the one hand, there is no water in the stomach, there is no such experience accumulation and, more important is the mentality is wrong, don’t want to clear the question being settled, access to what.

In fact, after finishing a project, the most intuitive harvest is that you can use some skills, but if you already know and are familiar with the skills, what else can you get? Not to mention copying code everywhere.

Therefore, we should not only pay attention to the realization of functions, but also realize the process and quality. Step by step, steadily implement and summarize, and gradually form our own methodology.

In addition, in the face of a problem, think more about their own experience and accumulation, there will be no rejection mentality, and will be very hard to complete it.

Method, good attitude is the premise, is very important, want to achieve well, it needs technical skills, skills is not enough, in the face of some special online problems, or consider the system availability, performance, high traffic, scalability, it will be very difficult.

Therefore, for the frequently used technology to be in-depth, specific, in order to better achieve system functions, to deal with various problems.

The above is my current situation and reflection, and I hope I can make improvements.

concerns

Now I think data structure and algorithm and other basic is very important, although rarely used in the actual development, but for understanding the IMPLEMENTATION and design ideas of the JDK core class library or framework, it is very helpful, this is exactly where I am relatively weak, I must slowly make up.

In dealing with high concurrency, multithreading, IO is the foundation, network, multithreading enables you to process a task in parallel, IO enables you to interact in various services and components, network is the foundation of connection, together to complete a business operation, master them, high concurrency optimization, the understanding of the framework has a great help.

In addition, clear project file structure and code hierarchy, uniform code specification and version control, consistent data verification and exception handling are also important.

Finally, the usability, high performance, easy expansion and high throughput of the system are considered, and the overall design is carried out using domain-driven ideas, in-depth understanding of commonly used frameworks and components, and flexible use of various design patterns.

Teamwork and project management are also crucial, as they are a strong guarantee for the real implementation of projects. If I want to switch to management, I need to learn more from people around me.

In the future work process, we should pay more attention to the accumulation of the above aspects and attach importance to each demand point and problem, because this is the best way to accumulate.

To think that you can get so much, you will reject ~

With the development of the Internet, projects will continue to grow larger, more demanding requirements, and technology will continue to change, making it more difficult to write a project well. It is necessary to clarify your focus, learn and practice at all times.

Please scan the qr code below and follow my personal wechat official account ~