Are you a qualified programmer? -12 abilities that qualified programmers should possess

Source: Internet
Author: User
Tags coding standards learn php

After four years of graduation, I feel that I have come from an unqualified programmer step by step. Looking back, qualified programmers have many standards and requirements,
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 the 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 also respect this profession, respect yourself, and change your career.

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, which has the first letter of the pinyin alphabet.
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 I have compiled,
For your reference, here you can download http://gurudk.javaeye.com/blog/111734

Note that annotations are not for the purpose of annotations. For classes, it focuses on responsibilities; for methods, it focuses on intentions; For method bodies, it focuses on Implementation ideas. For code of a large segment, it must be segmented,
Use blank lines to separate and use in-line comments to describe.

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 is more important than object-oriented languages, such as inheritance, polymorphism, and overloading.
Understanding. Understanding of basic object-oriented principles, such as the open and closed principles, interface isolation principles, and single responsibility principles. On this basis, we should master common design patterns, such as factory models, policy models, and observer models,
Template Method mode, command mode, and so on. 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 than go 1 mile.
Non-existent fast food restaurant, farmhouse restaurant 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 clips are recorded in a separate text file, which is hard to find,
Management is also messy.

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, scan every morning for half an hour,
Daniel's latest article has a full view.

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 imperfect infrastructure construction,
Because of its good English base, its development in the field of software outsourcing is also very rapid, far surpassing US. To learn English, you must first have confidence, and then spend time. Read more English documents and use Kingsoft, google's
Firefox plug-ins and other tools, you insist on.

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 recognize your goals. Your short-term goals are
What is the goal after one year, three years, and five years. Combining these goals to determine your own learning plans, human energy is limited after all. Of course, it is good to know more programming languages and expand your knowledge,
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,
There is a book next to it. You can see several pages. 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 and realize the importance of learning,
And can 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 of any other method,
Or you are 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, li Ning's back.
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 this process of finding a solution, we often have a lot of good ideas,
This 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 also used many open-source software. You can see the documents of the most popular open-source software, such as Spring, hibernate, and Struts,
Their getstarted files 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 never ask 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. Developing Enterprise Application Software
During development, the abstract ability is embodied in the ability to understand the problem domain and to abstract the domain model. 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 demonstrates your aesthetic standards, know what is good, what is bad, what is elegant code, and what is bad code,
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 Tests can also be used as regression tests,
When you modify the code, it serves as a warning line. 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 from 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.

 

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.