Programming work summary

Source: Internet
Author: User
I have been on campus for two years without knowing it. During my two years of work, I have gained some experience. The following is a summary.

1. If you can, select a project with senior work experience. A good system cannot be separated from a good framework. A good framework must be structured by a good architect. The xpr project was an error from the very beginning. The first was the vision error. The purpose of this project was to use the popular open-source framework to re-implement all the functions of the existing system xpc, and some functions of xpr can be open-source. It is unrealistic to re-implement all the functions of the existing system xpc. xpc has been developed for more than eight years and will require new functions in the future, in this case, it is very difficult for xpr to achieve functional consistency with xpc. Open source does not mean that you can achieve it with this idea. You must first check the value of this open source project, that is, who will use it and why it should be used, or whether similar products already exist. These companies did not conduct research, and failure is also common. Most importantly, all developers, including the leader, have a thorough understanding of this open source. In this case, open source is actually a matter of ignorance. Secondly, several core developers in charge of the project do not understand the original system, new technologies such as some open-source software, or even the entire field. In particular, the leader on the UI Layer has no practical experience in the development of the UI Layer, and is not familiar with JavaScript, JSP, and Servlet. You can learn and do it at the same time! After more than half a year, there was an astonishing discussion at a meeting: The content section of the page should be made into a floating window, because the existing system should also be like this! As a result, we can imagine that we started with tapestry and then directly used dojo. The code was not maintained by developers, and the project was postponed.

2. there is no clear need for unfamiliar fields or new technology applications. At the beginning, there is no need for too many ideas and designs to directly program applications. It is critical to discover and solve problems in applications. The xpr project completes development according to the software development engineering development process with clear requirements. It first divides several modules and then finds the owner for several modules. There will be many meetings and many documents at the beginning, discussing how to deliver each module and how to provide APIs for other modules to call. I can't tell why I am sending accounts with my mind. Think about it, maybe it's because of your lack of experience. After the meeting, I will ask the owner in detail, and I am not clear about it. I don't need to worry about it anyway. Other modules will write it to us. I doubt whether it is true or not, but it turns out that it is not clear. As a result, the API is constantly changing. The POC documents and design documents written in the previous quarter are useless! It is a good thing to develop sub-modules. It can assign responsibility to the home, but it does not mean that each module does not need to care about other modules. In modular development, interaction between modules is the most important success. If a role is responsible for communication between modules, project development will be much better. Of course, agile development methods can be mentioned here. I think it is better to Adopt agile development methods for unfamiliar fields or applications with unclear requirements or new technologies. There is no need for too many documents. Let the facts speak, the Code outputs the results, and the result line is the line. If it doesn't work, it won't work. There is no ambiguity!

3. basic university courses are very important, such as data structure, algorithm design, compilation principle, operating system, computer architecture, microcomputer principle, assembly, TCP/IP principle, and C/C ++. These are the guarantee for us to learn technology in the future. I think that compared with Chinese programmers, foreign programmers do not mean the gap between openapi, SOA, and open source software. The most important thing is the underlying technologies and ideas! But to be honest, if there is no application in the learning process, in fact, these basic learning cannot be transparent, which is why we always say that what we learn in college is simply a waste of time. Everything is inseparable from an in-depth understanding. To have a deep understanding of Java collections, you must have a very clear understanding of the data structure. To learn the JDK principles, you must have little knowledge about the compilation principles; the operating system can help you with multi-threaded programming. If you want to know the allocation and status of objects in the memory, the microcomputer principle can tell you. If, as a programmer, we can write a piece of code and make every process of the output result roughly clear, we will be qualified. For example, how does one compile and execute the code? After lexical analysis, syntax analysis, and Semantic Analysis to the generation of intermediate code, why is the Java bytecode intermediate code? Why cannot it be the final target code. Why is JVM a virtual machine? Since it is a virtual machine, it must have the concepts of CPU, input and output, memory, and so on. What do these concepts need to correspond to the JVM? Why, why is this necessary. Basic Java programming is also very important. For example, how to create an object, how to assign values to this object, and how to manage this object are the basis for learning spring, it is also a problem to be solved by Spring IoC. Generally, we do not need to check the spring source code. We all know that spring will follow this process. A colleague once saw a test case that needed a mock service. I asked him why he didn't directly create a new service and introduced spring? Answer: only the bean in spring will be used instead of generating an object! If it was just one time, it could also be said to be modest, but later contacts proved that he would only call the bean object managed by spring, so he was proficient in spring!

4. Be honest with others! At the beginning of the project, if the implementation of new technologies has not been tested, a large number of feasibility analysis reports have been written, telling the leadership that this is feasible and simple, as if it was used, it could solve all the problems. As a result, a leader was very happy, confident in the project, and his expectations increased significantly. However, after doing so much work, we only want to favor the leaders. Things will not matter in the future. It is good to successfully complete the project. If it fails to do so, it will be a big deal. I have been praised and affirmed by the leaders, and I will continue to discuss it in the future. Of course, I seem to be a little gentleman. However, half a year after I joined the project, my owner resigned. Three or four months ago, all the owners quit their jobs. This has a lot to do with the project. Yes, the project is risky, but our process is wrong from the very beginning.

5. Pay attention to code standardization and ensure code quality! This involves writing test cases and complying with certain programming specifications and habits. We can use tools to ensure the quality of our code. For example, we can use spoonet to check the code standardization, luntbuild to ensure that the code can be compiled, and even test case execution in Maven. If the tool is not guaranteed, we need the leader or owner to guarantee it. For example, you can use code review to view your code, or even call your side to explain the general process of the program, or even use Pair programming to ensure the quality of the Code. For example, in test case, we know that it is not easy to fully write it. For example, to compare the two objects, we need to do a lot of work, sometimes we prefer to use DEBUG to manually view the attribute values of an object. This is of little significance for the leader or owner to run these test cases, but you can ask the programmer what to test in each test case to see if the test is in place. This is very simple and necessary. We have attached great importance to test case, but a leader said that the test case of the project can be made into a framework in the future, so that program developers can easily write test case. People have inertia. after learning that there will be simple tools, we will not write or take test case seriously now. Not to mention the convenience and inconvenience of this framework, it is known from its development that it is not feasible. The emergence of the framework should be summarized after thousands of programming practices. For example, the emergence of struts emerged after the development of MVC programming to a certain stage, and struts was not a hot topic for some people. To write a test case framework, you must first write your own test case, and then summarize it by senior developers, in order to design a test case that fits the project itself. I am not very optimistic about the test case framework, so I still write test cases. However, other developers no longer write their own test cases. Later, the correctness of the project was not guaranteed, and it also had a great relationship with this. Some errors may have been discovered and solved in the unit test phase, but they can be solved only after the QA test phase. Until now, the so-called test case framework has not been noticed, just like communism.

6. Keep in mind that acquiring any knowledge or skills is a long-term accumulation process! Rome was not built in one day, and gravity could not be discovered only when an apple fell down. the atomic bomb was not accidentally made. Now there are hundreds of thousands of lights that can't be separated from Edison's invention, today, powerful computers cannot do without the blockbuster in 1946. Xpr wants to implement it with the latest open-source software, and also requires Web2.0, SOA, etc. The Hype of Concepts makes senior leaders very happy, but a high-performance, high-reliability, and high-availability system, there is still a lot of technical foundation. Xpr is an error. On the basis of xpc, adding new technologies for restructuring is fundamental. China's software industry is going international! Internationalization is of no significance to software enterprises, but it is of great importance to customer enterprises. The fact in China today is that all foreign countries represent prestige and quality, and undoubtedly reputation is the top priority. Currently, in the ERP market, what people ask the most about each other is "No ERP ?", If I say no, I'm sorry. I may not have a single business. Then, "which company's ERP is used ?", If you have an unknown ERP provider, I am sorry. This shows that your enterprise management is still poor and has not reached the international market. The competitive advantage sometimes comes from the hype of concepts, and people are always interested in new things. For example, in, the overall victory of a household appliance company was attributed to low prices and speculation. In the ERP market, well-known domestic ERP enterprises are no exception, such as the crazy hype of erp2, URP, yonyou, and RTE of Kingdee in. Speculation over technology is a good thing that others do not know, but they must be quite clear about it, always pay attention to how to use the hype. Otherwise, we will face a very cruel reality. When consumers become more and more rational, our household appliance enterprises will not be able to produce a TV or washing machine that is truly made up of Chinese people!

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.