How to improve your programming skills

Source: Internet
Author: User

One, 1. A solid foundation. Data structures, Discrete mathematics, and compilation principles are the foundations of all computer science, and it is difficult to write high-level programs without mastering them. According to my observation, computer majors are more able to write high-quality software than others who study other majors. The program is written by everyone, but when you find that writing to a certain degree is difficult to improve, you should think about whether you want to go back and learn the most basic theories. Do not learn oop from the start, even if you are proficient in oop, you may be helpless when you encounter some basic algorithms.

2. A rich imagination. Do not stick to the fixed way of thinking, when encountering problems, you should think of several solutions to solve the problem, try others never thought of methods. Rich imagination is based on a wealth of knowledge, in addition to computers, more into other disciplines, such as astronomy, physics, mathematics and so on. Besides, it's also a good way to see more sci-fi movies.

3. The simplest is the best. This is perhaps a guideline that all science follows, and the principle of such complex mass-energy swaps is simply a simple formula: E=MC2. Simple methods are easier to understand, easier to implement, and easier to maintain. When encountering a problem, prioritize the simplest scenario, and consider a complex scenario only if the simple scenario does not meet the requirements.

4. Not to the dead. When you encounter obstacles, you may want to temporarily away from the computer, look out of the window scenery, listen to light music, and friends chat. When I have a problem, I go to play games, and it is the violent fight game, when the part of the brain that is responsible for the game is extremely hyper, the part of the brain that is responsible for programming is getting enough rest. When I start working again, I will find that these problems can be solved now.

5. The thirst for answers. The history of human science is a process of craving for answers, even if only a small part of the answer is worth the effort. As long as you firmly believe, you must find the answer to the problem, you will devote energy to explore, even if you do not have the answer, in the process you will learn a lot.

6. Communicate more with others. Three people will have my teacher, perhaps in a casual conversation with others, you can burst the spark of inspiration. It will give you a lot of inspiration to get on the internet and see how people think about the same problem.

7. Good programming style. Pay attention to develop good habits, code indentation orchestration, variable naming rules should always be consistent. Everyone knows how to rule out errors in the code, but often ignores the mistakes in the comments. Annotations are an important part of a program that makes your code easier to understand, and if your code has clearly expressed your thoughts, you don't have to annotate them, which is even worse if the comments and code are inconsistent.

8. Toughness and perseverance. This may be the biggest difference between a "master" and a general programmer. A good programming is 99% sweat and 1% coffee. Experts are not geniuses, they are honed in countless days and nights. Success can bring us incomparable joy, but the process is extremely dull. You might want to do a test, find a list of primes within 10000, copy them all down, and then check three more times, and if you can do this without interruption, you can meet this one.

Second, what is research and development capability

When it comes to a software engineer with a high level of research and development, we often think that this person may be proficient in C + +, JAVA, database programming, network programming ... And so on, is the software developer's ability to develop language and programming proficiency? Definitely not! Being proficient in these languages and tools only means mastering some knowledge. Ability is not the same as knowledge. Ability refers to the correct way to solve a problem. Research and development ability refers to the method of analyzing, judging, solving and predicting technical problems.

The theory of "knowledge useless" is best suited to describe the rapidly changing situation of technology in IT industry. It is also said that the people who do IT industry are also eating youth rice, while young, still can continue to learn new language and tools, older, there is no time and energy to keep up with the changes in technology.

Is this really a technician's fate? When we think so, we are not really understanding the true meaning of research and development. When we look at the development of foreign companies, we often feel inferior to the feeling: their senior research and development staff experience is really rich. They have even used core memory and perforated tape. However, are their experiences of core memory and perforated tape useful today? Are their experiences of basic and Fortran still useful today? No, these experiences are useless. But with the growth of research and development, their research and development capabilities are increasing. It is these research and development capabilities that enable them to be called senior developers, enabling them to continually develop new products in the rapidly changing IT industry.

So what is research and development capability?

5 levels of research and development capabilities

Just as the knowledge structure is not a plane, the research and development capability structure is not a plane. Research and development capabilities include the following 5 levels:

Will have a general, isolated grasp of the knowledge point. This is basically a stage where the tools are just mastered. College students or vocational school students, learn C language, and do a few small projects, can speak C language. At this point, as long as there is a detailed design, C language will be able to turn the design into code. C language is only a low level in the structure, in the Network Research and Development Center, there are a lot of things: network socket programming, VC + + programming, database programming, ASP programming, TCPIP basic knowledge, routing basics, WAN fundamentals, test equipment Knowledge, PowerPC basic knowledge, FPGA Basics ... As we continue to expand the field of research and development, things will be expanding, such as now we need to understand the principles of VoIP, protocols, will be the future of things will be exponentially number of levels of growth. Of course, not a person wants everything, encyclopedic characters have gone. The introduction of a product generally requires a considerable number of people to work together to complete. Note that this is very important, the following to talk about the ability of the various levels of training and comprehensive quality of training are related to this.

Proficiency at this level means that a given design can be completed quickly and efficiently. Software code is simple and efficient, and the error rate is low, maintainability, portability is good, hardware design pay attention to the board stability, high success rate, low cost, testing pay attention to the rapid framework of a variety of complex application environment. We often see this argument that the Chinese people are most suitable for software development, at the same time we are sad to feel the Indian software industry developed. What is the reason for this? In fact, it is wrong to say that the Chinese are the most suitable software, is the Chinese brain cells are composed of 0 and 1? More accurately: Today's Chinese young people in the current educational environment, the most easy to technically reach the level of proficiency. Isn't that right? Starting from the first grade of primary school, each student will have to learn each character, each phonetic alphabet transcription Number 10 times, until proficiency, the math test is also required to accurate to the number of decimal places. The Chinese are very clever, and after learning one thing, they will soon be proficient.

The analysis and summary from "proficiency" to "Analysis summary" is a big change. The analysis is from the disorderly surface phenomenon to sort out the order of things, and grasp the main contradiction of things. Software porting is most needed for analytical capabilities. Before transplanting, we should carefully analyze the structure of software, organize the process framework and main data structure of the software, and seize the main parts to find out the key points of migration. For new technologies and tasks, we should use analytical ability, organize the clue and seize the key points. The most need to use the analysis of the stage is: one is to learn new technology, the novel method, with Hua said, is to the book from the thick read to thin, read to thin, it means to seize the key points, the second is the demand analysis stage, at this stage also need to learn a lot of new knowledge, new concepts, to use analytical ability, Sort out what you need from a lot of information; third, the project summary phase, review and analysis of the research and development process, experience and lessons learned. Summing up to achieve Sichun, Youbiaojili, from the special phenomenon to the universal law, to do classification, induction, abstraction, generalization.

Comprehensive planning from "analysis and Summary" to "comprehensive planning" is a qualitative leap. For development work, "comprehensive planning" is "comprehensive planning". The development of artisanal workshops does not feel the importance of comprehensive planning. This is the key difference between the handicraft workshop and the formal research and development organization, and also the key point that our Chinese software industry is inferior to the Indian software industry. Many of our research and development staff are very willing to use China's initial reform and opening up method-"stones"-to do research and development. To prevent the spread of this trend, to improve research and development capabilities, to improve the quality of research and development products, we must have the determination to break the wrist to abandon this method. This method is used more, not only affect the quality and progress of research and development products, but more importantly, will inevitably cultivate the inertia of thinking, so that researchers do not use the brain in the work, but by hand. The "stones" approach is sometimes useful, and we want to be very clear about when it is useful, and what is the premise of this usage? This method must never be abused. Only two cases can be "stones", one is to study the key technology, and the other is to do the prototype system to determine the demand when the user is not clear about the requirements. When researching the key technologies, it is not necessary to make a thorough consideration of the system, but to do some experiments on the key points, after the test is completed, we must not extend the test system without thorough consideration to the whole system, and still need to make a comprehensive plan. The development of the prototype system is the same, the prototype system built for the purpose of confirming demand must not be extended to a product system to meet the requirements of various indicators. In fact, even in the study of key technologies, experimenting, and prototyping systems, it is required to do a full-scale planning first. The correctness of the key technology can be confirmed only if all kinds of test schemes are designed.

Trend management This is a more qualitative leap forward. Not only understand the technology on one hand, but also understand the causality and interaction between different technologies, and also need to understand the change of market demand.

The cultivation of ability

"Will", "skilled" ability of the training

There is no trick here, a word, diligent and more practice, there is no other way. Don't think that a teacher teaches or reads is learning. Learning has many forms, learning from books, learning from practice, and learning from others. In these two stages, the focus is on learning knowledge.

"Analysis Summary", "Comprehensive planning" ability to improve

IT industry knowledge changes rapidly, on the basis of mastering basic knowledge, from learning knowledge to learning the right way to do things. To master the "methodology". The ability to analyze and summarize, the ability of comprehensive planning and the ability to develop the trend are all formed by mastering the methodology on the basis of continuous mastery of knowledge.

Generally speaking, the ability to analyze and summarize is relatively easy to cultivate, the key lies in diligent analysis, diligent summary. Don't be lazy, don't fantasize about taking shortcuts. No problem, no serious analysis, just cram. To avoid this, we can gradually improve the ability of analysis and summarization. Pay special attention to the requirements analysis phase and the project summary phase. These two stages are easily overlooked by the developers, and are considered to have little to do with technology, so they are not willing to spend too much time thinking, which is very detrimental to improve the ability of analysis and summarization.

The Order of ability cultivation

Do not do horizontal cultivation at each level, this will become a knowledge worker. For example, after doing a year's X25 program, want to do routing protocol, or after two years of routing protocol, want to do frame relay. Many people want to do this every year to do a number of different technologies, so that learn more knowledge. This desire to learn is good, but action is wrong. It technology is constantly evolving, even in specialized product areas such as routers, switches or network security. No one can master every aspect at the level of technical knowledge, and I cannot do this, and the professors of the university do not, and the fellows of the Academy do not. Once you have mastered the technical knowledge of a field, you must strive to increase your ability to a level that cannot be extended at a flat level. Otherwise, whenever you enter a new field of knowledge, you will appear to be identical with the novice. It is important to improve yourself on a three-dimensional level. Of course, improving your ability does not mean not to focus on technology in other relevant areas. On the contrary, given the level of competency, there will be more understanding of new areas of knowledge. Because of the ability to improve, it is easy to grasp the key points of the new knowledge field. From here, we can also see that the improvement of research and development ability is not in a plane development, is not directly continuously improve the level, but spiral rise and development. Proficiency in one aspect of the technology, began to improve the analysis of the ability to summarize, with the ability to analyze and summarize, you can quickly understand other aspects of the key principles of knowledge.

Note: I have always wanted to write an article like this, I have been plagued by such problems, I read the blog on the Internet when I saw this article I feel very good, so it reproduced, http://lzth.iteye.com/blog/611959

How to improve your programming skills

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.