12 new abilities that programmers should possess!

Source: Internet
Author: User
Tags coding standards

The following is a summary of 12 abilities that a qualified programmer should possess. The rise of China's software industry relies on qualified programmers. Any gorgeous management system cannot guarantee the successful delivery of software projects. Qualified programmers are a powerful guarantee and a foundation for project success. Write this down to give a reference to new students who have just entered the programmer's career. I always thought that it would be hard for programmers to stick to it if they didn't really like it. If you really don't like this profession, you should respect it, respect yourself, and change it.

1. Programming Language Capability

Needless to say, as a qualified programmer, it is necessary to be proficient in a language. This kind of proficiency is not to say that I have read a book "24-hour proficient in XXX" and copied a few programs to be proficient. It depends on long-term accumulation and immersion.

2. Encoding capability

I have read a lot of code written by programmers. In the same JSP or Java source file, there are more than three naming methods, separated by underscores (_) and capitalized, the name must start with a letter. Like a vegetable market, it is very messy. It is estimated that he will not be able to understand it in 10 days. Complying with coding standards is the most basic requirement of a programmer. Sadly, many programmers are not aware of the seriousness of this problem. No matter the readability and maintainability of the Code searched on the Internet, you only need to implement the function. If you want to finish this project, you can pat your ass and leave without the most basic responsibilities. I often turn code into a programmer's child. You are the child's father, and the child's mother has feelings. Can you not take care of your own children? Are you a competent parent? This is a Java coding specification that I have compiled for your reference. Here, you can download http://gurudk.javaeye.com/blog/111734. For classes, it focuses on responsibilities; for methods, it focuses on intentions; For method bodies, it focuses on Implementation ideas. Code of a large segment must be segmented and separated by blank lines. The line comments are used to describe the code.

Thinking is organized. before writing code, you can simply plan and write down the process in a natural language to sort out the Implementation ideas. Don't read the requirements or design, right away, right after the code is knocked out, debug immediately after the code is knocked out. It takes some time to think about it. coding is just the last simple task. Don't turn yourself into a code typist, write and think, write, delete, or write. An'an quietly figured out the implementation process and implemented it in his mind. Repeat the code.

3. Object-oriented Thinking Ability

Today, most programming languages are object-oriented programming languages. The common essence of these object-oriented programming languages is the idea of object-oriented. Understanding these features is more important than object-oriented languages, such as understanding inheritance, polymorphism, and overloading. Understanding of basic object-oriented principles, such as the open and closed principles, interface isolation principles, and single responsibility principles. On this basis, you should master common design patterns, such as factory patterns, policy patterns, observer patterns, template method patterns, and command patterns. I have interviewed many programmers and none of them can say a few words.

4. Leverage tool capabilities

To do well, you must first sharpen your tools. With the opportunity, the work efficiency can be improved several times. Have you chosen a good ide for programming? I have heard that programmers use NotePad to write programs. I think it is a kind of self-abuse. Just like an article I saw earlier, I talked about a group of outdoor travel enthusiasts who went out for a tour and carried a lot of travel bags containing compressed cookies and other fast foods. They would rather chew on compressed biscuits with mineral water and refuse to go to a fast food restaurant or farmhouse for dinner. The tool serves the purpose. It is easy to use and can improve efficiency. The form does not matter.

Another commonly used tool is the notebook, which can be called a knowledge management tool. I use mybase and it feels very useful. Before that, all of my fragments are recorded in separate text files, which are hard to find and difficult to manage.

I often access the Internet and see a lot of good information to save for future use. in the beginning, I used bookmarks from Firefox, but I was too tired to classify myself. It was difficult to find the bookmarks when I got too many bookmarks. Later, I used the Firefox plug-in of DELE bookmarks (Del. icio. us), which is very convenient. Now I have become a necessary tool.

Another important tool is the search engine. I have installed the Google for Firefox plug-in. It feels good and has the English translation function. According to my colleague, Baidu is used for internal affairs and Google is used for foreign affairs. Many technical materials are in English, and Google search is more efficient. When a search engine is ready, it opens a door to the knowledge treasure house. When a search engine is used, keyword selection is very important.

I often browsed the blog of Daniel. It was very troublesome to visit one website one by one. I went there and may not update it. I can use the RSS subscription tool. I used the igoogle desktop tool, every morning, I spent half an hour scanning the newest article of Daniel.

5. English proficiency

The new technical materials are all in English. It Technology in the English-speaking countries has been ahead of us for at least 10 years (this is my estimate and may be narrowing down ). Even India, a country with poor infrastructure construction, is far more advanced than us in the field of software outsourcing because of its good English base. To learn English, you must first have confidence, and then spend time. Read more English documents, and use tools such as kingsanceiba and Google's Firefox plug-in.

6. Learning Ability

It is not easy to eat in it, and the whole environment is evolving too fast. If you don't study, it will fall behind. Learning should be targeted. Don't learn Ruby today, learn Python tomorrow, and learn PHP the day after tomorrow. First, you must first recognize your goals, what are your short-term goals, what are your goals after one year, three years, or five years. Combining these goals to determine your own learning plans, human energy is limited after all. Of course, it is also good to master several programming languages. You can expand your knowledge, and it is important to serve your own goals.

Reading a book is the best way to learn a technology or tool systematically. After reading this article, I will go online to find relevant information for further study. It takes more than one minute to start a computer and put a book next to it. On the bus, you can also watch it on the subway.

Of course, you can't just learn technology. You must often practice your soft skills, such as communication and expression skills. You can explain what you learned to your colleagues, which improves both understanding and communication between colleagues. The highest level of learning is that you can explain what you have learned to others. In terms of learning psychology, it is known as conism.

When I learn something, I always go online to know if there are any related books. If I want to learn it, I will buy one or go to the library to find the relevant books. I can't store the books I bought at home (I have bought more than 10 thousand books so far ). I mostly read the directory to understand the main content of this book. When necessary, I can immediately add it to my knowledge structure. Everyone may have their own learning methods, realize the importance of learning, and be able to supplement their own knowledge as needed. This kind of ability is more important.

7. Creativity

It is generally believed that the East has a strong imitation capability but a poor creative ability. I have seen many programmers who often say, "This can only be solved. I don't think of any other method ." Maybe he never thought about other methods at all, or he was too lazy to think about it. It is very easy to find two or more solutions to any problem. A simple Google may be dozens of solutions. Sadly, some programmers often stop in their own small territory. This is also the attitude towards the customer. Instead of actively helping the customer solve the problem, it is just the only solution.

One of the first ways to break this mindset is to first think of "no impossible" or "Everything is possible" when faced with a problem. The previous one is addi's advertising language, followed by Li Ning. Only by thinking like this can we find another way to solve the problem. Even if we try many ways, there is still only one solution, however, in the process of finding a solution, we often have many good ideas, which will make us think deeply about a problem. I suggest you take a look at the book "Horizontal thinking". He provides some methods and tools for creative thinking.

However, I believe that the belief that there is another solution is the first, and both methods and tools are the second.

8. Document capability

Some may question the relationship between programmers and writing documents. You have used many open-source software. You can see the documents of the most popular open-source software, such as spring, hibernate, and Struts. What about tutorial, their getstarted, their reference documents are easy to understand. Writing code is equivalent to writing a document, but it only uses a programming language. Similarly, writing a document in a natural language is equivalent to writing a program, which is simple, clear, and easy to understand. Who is comfortable with such a "program. Similarly, it is important for programmers who want to advance to the role of a designer or demand analyst.

Word is the most practical tool. Many programmers do not use multi-level numbers, and the index directories do not know how to generate them, let alone apply styles flexibly. Many typographical operations are called dirty work. A lot of spam styles. In fact, you can write a beautiful document after just learning it.

9. abstraction capability

Abstract ability is the ability to understand things from phenomena to essence. If you just stay at the level of "seeing mountains and mountains, seeing water and water", what customers say, what you do, how design is done, how you implement it, and why, I also don't want to think about what needs he has met. This may only solve the surface problem and may cause rework. By recognizing the essence, you can make your program more flexible and scalable. In enterprise application software development, abstract capabilities are embodied in the ability to understand problem domains and abstract domain models. Reasonable abstraction is also the premise of code reconstruction. Every reconstruction is a step towards better abstraction.

10. Code review capability

Code review and unit test are two common methods to ensure code quality. The Code review capability illustrates your aesthetic standards, and you know what is good, what is bad, what is elegant code, and what is bad code, so that you can make yourself better.

11. Unit Test Capability

Code without a unit test can only be said to be a semi-finished product. Because there is nothing to prove that your code can run. Test-driven development is a good best practice for agile processes. Unit Testing can also be used as a regression test, which serves as a warning line when you modify the code. The awareness of unit testing is an important criterion for distinguishing whether programmers are qualified. Unit Tests without writing are an important benchmark for distinguishing mediocre programmers and excellent programmers.

12. Dry

Dry is a principle, that is, don't repeat yourself. From "Programmer cultivation-from employee to expert". 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 repeat yourself, write an automated script (such as using ant or batch processing commands) to automate the work to improve efficiency.

Another is that we often switch IP addresses in different places. If we do this manually each time, it will be a waste of time. Writing a bat command can solve the problem and finding a small tool can solve the problem.

During coding, the copy reuse of the Code is also repeated by yourself. Although the copy process is great, it will take a lot of effort to maintain consistency, especially when the person who maintains the code is not you in the future, use the code generation tool to solve this problem. There are too many similar examples. If you find that you often do repetitive work, you must be cautious about whether you violate this principle and find some ways to automate them. Good things are to be shared, qq2102203684 welcome to exchange!


12 new abilities that programmers should possess!

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.