About Qualified Programmers

After reading other people's work, I recorded it:

1. Programming language ability

Needless , as a qualified programmer, it is necessary to be proficient in a language. This kind of proficiency does not mean that after reading a book "Mastering XXX in 24 Hours", you can say that you are proficient after copying a few programs. It depends on long-term accumulation and immersion.

2. Coding ability

I have seen a lot of code written by programmers. In the same jsp or java source file, there are more than three ways of naming methods. There are underscore intervals, all capitals, and pinyin first. alphabetical. Just like a vegetable market, it is extremely messy, and it is estimated that after 10 days, he will not be able to understand it himself. Complying with coding standards is the most basic requirement of a programmer. Sadly, many programmers simply do not realize the seriousness of this problem. I randomly pile up the code found on the Internet, regardless of readability and maintainability, as long as the function can be realized. If I want to finish this project, I will slap my butt and leave, lacking the most basic responsibility and literacy. I often think that the code must be the child of the programmer. You are the father of the child, the mother of the child, and have feelings. Can you not take good care of your own children? Are you a competent parent? This is a Java coding specification written by me for your reference. You can download it here http://gurudk.iteye.com/blog/111734

The other one is comments, and it should be noted that comments are not for comments. For the class, it is mainly to explain the responsibility; for the method, it is mainly to explain the intention; for the method body, it is mainly to explain the realization idea. For large sections of code, break them into sections, separate them with blank lines, and use inline comments to describe them.

Organized thinking, before writing code, make a simple plan, write down the process in natural language, and use it to organize and implement ideas. Don't type code immediately after reading the requirements or design, and debug immediately after typing the code. Take some time to think, typing code is just the last very simple job, don't turn yourself into a code typist, think while writing, write and delete, delete and write. Quietly think about the realization process, and realize it in your mind first. Then go to the code, it will come naturally.

3. Object-oriented thinking ability

Today, most programming languages ​​are object-oriented programming languages. The common essence of these object-oriented programming languages ​​is object-oriented thinking. Mastering these is more important than the object-oriented language itself, such as an understanding of inheritance, polymorphism, and overloading. An understanding of the basic principles of object-oriented, such as open and closed principle, interface isolation principle, single responsibility principle, etc. On this basis, you should master common design patterns, such as factory pattern, strategy pattern, observer pattern, template method pattern, command pattern and so on. I've interviewed a lot of programmers, and none of them can say a few words.

4. Utilize the ability of tools.

If a worker wants to do a good job, he must first sharpen his tools. With a handy guy, work efficiency can be improved several times. When you program, have you chosen a good IDE? I heard that programming masters use Notepad to write programs. I think that is a kind of self-abuse. Just like an article I saw before, it said that a group of outdoor travel enthusiasts went out to travel and carried a heavy travel bag, which contained fast food such as compressed biscuits. They would rather nibble on compressed biscuits with mineral water than go to fast-food restaurants or farmhouse restaurants within a mile away. Tools serve their purpose, they are easy to use, and they only need to be more efficient. The form doesn't matter.

Another commonly used tool is a diary, which can be called a knowledge management tool if it sounds better. I use myBase, which is very easy to use. Before, all my snippets were recorded in separate text files, very It's hard to find and the management is chaotic.

I often go to the Internet, and I see a lot of good information that I want to save for future viewing. At first, I used the bookmarks that come with firefox, but I am too tired to sort by myself. Later, I used the firefox plug-in of Del.icio.us, which is very convenient, and now it has become a must-have tool for me.

Another most important tool is the search engine. I installed the google for firefox plug-in, it feels good, and there is an English translation function. According to my colleague, use baidu for internal affairs and google for external affairs. Many technical materials are in English, and it is more efficient to use google to search. The use of search engines is equivalent to opening a door to a treasure trove of knowledge. When using search engines, keyword selection is very important.

I often go to browse Daniel's blog. It is very troublesome to visit each website one by one. If I read it, it may not be updated. I can use the RSS subscription tool. I use the iGoogle desktop tool. I spend half an hour scanning every morning. The latest articles of Daniel All in all.

5. English proficiency

New technical materials are all in English, and the IT technology of English-speaking countries is at least 10 years ahead of us (this is my own estimate and may be shrinking). Even India, a country with poor infrastructure construction, has developed very rapidly in the field of software outsourcing because of its good English foundation, far surpassing ours. To learn English, the first is to have confidence, and the second is to spend time. Read more English materials, use Kingsoft PowerWord, Google's firefox plug-in and other tools to cooperate, the most important thing is to persevere.

6. Learning ability It is not easy to make a living

in IT. The whole environment evolves too fast. If you don't learn, you will fall behind. Learning must be targeted, don't learn ruby ​​today, python tomorrow, and php the day after tomorrow. First of all, you must recognize your own goals, what are your short-term goals, what are your goals in 1 year, 3 years, and 5 years later. Combine these goals and determine your own study plan. After all, human energy is limited. Of course, it is also good to master a few more programming languages, you can expand your knowledge, and the most important thing is to serve your own goals.

To systematically learn a technique or tool, reading is the best way. After reading it, go online to find relevant information for in-depth study. Learning should take all the time that can be used. For example, it takes more than 1 minute to start the computer, and there is a book next to it, so you can read a few pages. You can watch it on the bus and subway.

Of course, you can't just learn technology, you should always practice your soft skills, such as communication skills and expression skills. You can explain what you have learned to your colleagues, which not only deepens understanding, but also enhances communication between colleagues. The highest state of learning is that you can explain what you have learned to others, and this shows that you understand. In learning psychology, it is called constructivism.

When I learn something, I always go online to find out if there are related books. If I want to learn, I buy one or go to the library to find related books to read. The books I bought are almost too far away at home (to the current position, I have bought more than 10,000 books). I mostly read the table of contents to understand the main content of the book, and then when needed, I can immediately add it into my knowledge structure. Everyone may have their own learning methods, realizing the importance of learning and being able to supplement their knowledge as needed, this ability is even more important.

7. Creative ability It

is generally believed that the oriental people have strong imitation ability, but poor creative ability. I have seen many programmers like this, who often say, "This is the only way to solve it. I can't think of any other way." Maybe he didn't think of any other way at all, or was too lazy to think about it. For any problem, it is very easy to find more than two solutions, and there may be dozens of them with a simple google. Sadly, some programmers often end up in the tiny territories they build. This is the same attitude towards customers. Instead of actively helping customers to solve problems, they shirk this is the only solution.

One of the first ways to break this mindset is when faced with a problem, the first thing that comes to mind is "nothing is impossible" or "everything is possible". Only by thinking in this way can we find other ways to solve the problem. Even if we tried many ways in the end, there is still only one solution, but in the process of finding solutions, we often have many good ideas. , so that we can really think deeply about a problem. I suggest that you take a look at the book "Horizontal Thinking", which provides some methods and tools for creative thinking.

But I think the insistence on the belief that there is another solution comes first, and the methods and tools come second.

8. Documentation skills

Some people may question what a programmer has to do with writing documentation. You have also used a lot of open source software. Look at the documents of the most popular open source software such as Spring, hibernate, Struts, etc. You will know how easy to understand their tutorials, their getstarted, and their reference documents are. In fact, writing code is equivalent to writing documentation, but in a programming language. Similarly, writing documents, using natural language, is equivalent to writing programs, which are simple, clear, and easy to understand. Whoever sees such "programs" is comfortable. Likewise, for programmers who want to advance to the role of designer or requirements analyst, documentation skills are even more important.

Word is the most practical tool. Many programmers don't know how to use multi-level numbering, and they don't know how to generate index directories, let alone apply styles flexibly. A lot of typography is so-called dirty work. Lots of garbage styles. In fact, if you calm down and learn a little, you can write a beautifully formatted document.

9. Abstract ability

Abstract ability is the ability to recognize things from phenomenon to essence. If you just stay at the level of "seeing mountains is mountains, and seeing water is water", you will do what the customer says, and do what you design, and you will realize it. Never ask why, and never think that he is satisfied. What are the needs of users? This may only solve the superficial problem and may cause rework. Recognizing the essence can make your program more flexible and extensible. In the development of enterprise application software, the abstraction ability is reflected in the ability to understand the problem domain and the abstraction of the domain model. Reasonable abstraction is also the premise of code refactoring. Every refactoring is a step towards a better abstraction.

10. Code Review Capability

Code review and unit testing are two of the two common means of ensuring code quality. The ability to review code shows your aesthetic standards, knowing what is good and what is not good, what is elegant code and what is bad code, you can make yourself better.

11. Unit testing capabilities

Code without unit tests can only be said to be semi-finished. Because nothing proves that your code will work. Test Driven Development is a very good agile process best practice. Unit tests can also be used as regression tests, acting as a warning line sign when modifying code. The awareness of unit testing is an important criterion for distinguishing whether a programmer is qualified or not. Writing or not writing unit tests is an important benchmark that distinguishes mediocre programmers from good programmers.

12.DRY

DRY is a principle, that is, Don't Repeat Yourself. From "The Way of Programmers' Cultivation - From Small Workers to Experts". This principle can be used in many places, for example, you often need to compile, package, and deploy applications for integration testing. Every time you are repeating yourself, write an automation script (such as with ant, batch commands) to automate these tasks to increase efficiency.

Another is that we often switch IPs in different places. If we do it manually every time, it is also a waste of time. It can be solved by writing a bat command or finding a small tool.

When coding, copying and reusing code is also repeating yourself. Although the copying process is very cool, maintaining consistency requires a huge amount of work, especially when the person who will maintain the code in the future is not you. Using code generation tools can solve the problem. this problem. There are too many similar examples. If you find that you often do some repetitive tasks, you should be vigilant, if you violate this principle, and think of some ways to automate them.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326822045&siteId=291194637