Introduction to the programmer’s English learning, I very identity for the view in the article, English is very important, but the article standing height is too high, I don’t really agree with the study method of concrete expression, also don’t think too actually, just before one hasn’t been published article want to republish, is to take this opportunity to talk to you very serious programmers of self-improvement.

A little bit about relevance,

Self evaluation (example, have an accurate judgment of yourself) :

I started to participate in informatics and mathematics competitions in junior high school. I majored in software engineering as an undergraduate. After graduation, I did big data analysis and project management in a bank, and then STARTED my own business. 15 years of coding experience, 6 years of entrepreneurial experience. The main technical direction is. NET, HTML5, cloud services, application-level development, etc., and my overall level is senior programmer and junior architect


What is the purpose of programmer self-improvement?

It’s written so well that people adore it, that women love it? Do you want to share your achievements on blogs, forums and communities? I think it’s a minority pursuit, and a higher pursuit, before this

In my opinion, the purpose of self-cultivation of programmers in China is to:

1. Better integrate into work, reduce difficulties and increase achievements

2. Steadily improve ability, increase income and achieve financial freedom

2, stand in a higher level to look at their own study and work, set up a more suitable outlook on life and values, happy family, happy life

Say a bit more popular, is to use more reasonable way and method, earn more income


With all this nonsense, let’s get to the point
What is programmer self-cultivation?

It is difficult to explain the positive argument, and the reverse description may be more understandable. The opposite of self-cultivation is “no cultivation”. Let me first talk about some programmers who think “no cultivation” in so many years of work, study and life:

1, programmers zhang met a development problem, very try so hard, the thought of several group, then sent to the group of his problem, waiting for reply, found that there is no answer, just talk directly to the QQ group manager, group manager also didn’t answer, then zhang search, the garden has a blog post on the suddenly found related topics, he will leave a message to the blogger, my email is: Please send me the source code, thank you.

2, programmer Zhang entered the company for 3 months, the boss arranged a lot of tasks, he felt that the boss is very inhuman, the salary is not high, overtime does not give money, so when writing code can save on the province, customer feedback problems do not take the initiative to solve, perfunctorily, and after a month, job hopping.

3, programmer Xiao Zhang is writing a function module, need to carry out some encryption, to Baidu search to a coding module, do not understand what to write specifically, but in the program just apply, so put it intact.

4, programmer Zhang to research and development of a function, the project manager said to him, this function should be able to search, you go to search, Zhang on Baidu search, search a day passed, nothing was found, the project manager came to Sit down beside Zhang, change a keyword, 1 minute to search the solution.

5, Programmer Xiao Zhang Xue. NET has worked for 3 years, the salary is still 10000, and the company raised the salary has not promised, want to job-change and hesitate, then a senior said to him, you go to read a book, read more books, such as “Visual C# from entry to master”, “CLR via C#”, “Javascript authority guide” and so on, So Xiao Zhang bought it and found some things he already knew, and some things he didn’t understand seemed to be useless. Besides, the book was so thick that should he waste his time reading it? For half a year, Xiao Zhang kept on going to work every day, LOL after work and occasionally complained about his low salary.

6 small piece to a new company, programmer, when doing a project to achieve a certain function, have to think of it done before this functionality, but unexpectedly can’t remember how to implement, and then to find the document on your computer, to find for a long time did not find, so we have to give up, and finally again for 2 days, finally to realize the function.

7, programmers small zhang day very not happy, because his product project manager and project team personnel change request again, new requirements but also to the entire structure to make large adjustments, zhang is very depressed, to an emotional outburst in the QQ, said the matter, then immediately, QQ group inside water boiled, Fried programmers xiao li said, yes, the product is dog day! Programmer Wang said, right, the fucking project manager all day long, just know squeezing developers! Programmer sun said, yes, yes, my last company is also like this, squeezing programmers, fortunately I left. In this way, in a curse, several programmers feel comfortable, Zhang happy to play king of glory.

I think some of you may already understand what I’m trying to say, and some of you may not. I can’t tell you exactly what I’m trying to say, but I can only summarize it in one sentence:

In the process of writing code, be good at learning, master methods, thinking, hard work, perseverance, in the long run, in programming, you will find a different yourself.

So this is kind of abstract, so


What are the specific ways to improve self-cultivation?

Programmers specific how to achieve “high culture”, each person has their own way, I can’t say to is very fine, and how to improve human accomplishment, said a words is not clear, but some phrase that is easy to understand, such as a child, have good education of parents, parents polite, children begin to receive formal education, Primary school, middle school, high school, college, and then good cultural courses and social practice, then the child will eventually become a better person than the child who has not experienced this process.

Similarly, writing a program is the same, the following I will talk about some of the most basic, the most easy to understand learning methods and truth, I call it:


The foundation of programmer foundation

A good developer, you should be able to comprehensive, efficient, rigorous and business issues to deal with any software program, be a good development, is a very interesting topic, but whatever the topic how to develop the basic two words are essential, although the amount of code is one of the important indicators to measure development ability, but only can be skillful in code is not enough, It is also necessary to have a deep understanding of technical principles and business logic. A solid personal and technical foundation will often promote the writing of codes and solve problems with ease.

The following are some of the basics that most developers may not care about or even ignore, but they are the building blocks of development.

1. Scientific basis

Become the developer’s process is not the same, have a plenty of trained, have a plenty of interest, still have a plenty of professional training, in the process, may be comprehensive or scattered even didn’t learn computer basic disciplines, but either way, want to be a higher level of developers, write high quality code, learning computer basic disciplines, Is very, very, very important. Specifically speaking, in the practical application of basic disciplines, there are certain needs for the following, which are arranged in the order of learning as follows

1) Data structure

Data structure course popular said is to tell you how to use the language with the most basic types, variables, keywords statements, etc., to deal with all kinds of logic, we call this the algorithm, and the various problems in daily programming, such as sorting, directory traversal operation, database query, etc., can be in data structure course, find the corresponding mathematical prototype. The understanding ability of data structure course is also the embodiment of one’s mathematical ability. The quality of data structure learning is an important watershed for the difference of programmer’s level. For the learning of this content, I have the following suggestions: VB, C, C + +, Pascal language, such as buy a language data structures and algorithms in the book, or download the PDF ebooks on the net, full of learning, and to all the case personally written in the book runs debug again, when can realize some common in everyday programming technique originated from some data structures and algorithms, Basically achieved the learning effect.

2) Operating system

The development of all programming languages and the operation of applications are based on the operating system. Most of the scenes in desktop programming, including memory, process, file system, network communication, user interface and so on, are derived from the definition and concept of the operating system. A complete understanding of the origin and composition of the operating system and the operation logic. Multithreading, complex interface, file management and some difficult to understand the normal programming ideas encountered in the development of the scene, there is a very big help, not only help to understand, but also to master more effective writing procedures. Specifically, you can buy an operating system book or download the relevant PDF e-book, complete a browse, to be able to combine the actual programming scene to view the operating system principle, basically achieve the learning effect.

3) Database

Introduction to traditional relational database, simple, this is difficult, often, developers can quickly master the add and delete, views, indexes, stored procedures, the basic database operations, such as in writing complex queries, design the main foreign key, optimization fields, such as removing redundant, there will only be as well but not independent thinking about the status of the extension. Investigate its reason or failed to understand the fundamental principle of relational database, and database this course, the system elaborated the ins and outs of relational database, understand the mathematical principle or logic foundation, to improve the level of database programming has a qualitative impact. It is recommended to buy a database related book or download a PDF e-book, which can skillfully establish a relationship between the basic knowledge of the first paradigm, the second paradigm and database programming scenarios, and also achieve the basic learning effect.

4) Compilation principle

Compilation principle is the science of programming language and all kinds of language compiler, to say the compiling principle created the world almost all of IT applications, compilation principle is the basis of the data structure and learning algorithms, so the compiling principle of learning to spend more time and energy, as a result of the modern advanced programming language compiler, In the aspect of code optimization, resource optimization has been intelligent enough to do, therefore, compiling principle of learning to combat the effects of smaller and smaller, but the so-called late this sheng rong, if you think you of data structure and algorithm of learning status and reached a higher level, can in the study further compilation principle, finally put himself and ordinary programmers a larger gap.

2. English ability

The natural characteristics of English and the length of letters as well as the historical factors of the development of the subject determine that the programming language must be based on English. In the programming process, from the keywords of the language to the content of the document or the search results of the search engine, it is inevitable to encounter English. Most of the programmers have the English foundation of English level 4 or so, but because of non-professional and work environment reasons, gradually alienated or even completely forget English. In practice, most of the programming language materials are in English, and the online programming q&A content is in English. Therefore, it is necessary to restore English proficiency to a low but effective level to achieve the following results:

1) I know the specific English translation, logical meaning and pronunciation of every key word in the language I use.

2) Be able to know the English translation, logical meaning and pronunciation of every method, process and parameter keywords involved in the relevant methods, class libraries, frameworks, tools, etc.

3) For common programming logic and core keywords, can use English to organize the description of the problem, the simplest answer is also ok, as long as the search engine can read it. Covert = Covert = Covert = Covert = Covert = Covert = Covert = Covert = Covert = Covert = Covert = Covert = Covert = Covert = Covert = Covert

4) Within the scope of my own technical knowledge, I can understand 80% of the meaning of any English technical manuals, documents, articles or problem descriptions, and understand the complete technical meaning.


As a developer, it is especially important to have a learning atmosphere and a communication circle. This is my iOS communication circle: no matter you are white or big, welcome to enter!! Topics to be shared include reverse security, algorithms, architecture design, multi-threading, network advancements, also underlying, audio and video, Flutter and more…… According to the network to comb their own development experience summary of learning methods, free to share with you. You can download it yourself if you need to. + skirt: 196800191, or + WX (XiAZHiGardenia) Get interview materials resume templates to communicate skills together


3. Search methods

Any developer, should have the ability to search and even must have the ability to search and the search engine’s treasure, is endless, also have different programmers search consciousness, but eventually because of search skills difference in application development, project implementation efficiency and even quality engineering several times to appear on the product quality difference, therefore, Mastering efficient, advanced, flexible search methods and techniques is very, very, very useful. The main methods are as follows:

1) Search source selection

Although English programming materials are more accurate and efficient, but the number of Programming materials in Chinese is superior, so the first search for problems is Baidu

Google for the processing power of a vocabulary of Chinese sometimes even stronger than baidu, and Google can search out plenty of English resources, therefore, Google is also one of the preferred, but was blocked by Google, so you need to for VPN, SSH FQ operation, or in the baidu search keywords “Google image”, through Google image of site for a visit.

In addition to search engines, professional technical websites, forums and communities are also very direct and effective search sources, such as StackOverFlow websites abroad, Cnblogs and OSChina open Source China in China, etc., all have search functions. If you input the keywords of questions, you may get relevant answers quickly.

For THE QQ group, it is recommended not to use it, unless the QQ group owner or member is very idle or very enthusiastic, otherwise asking technical questions in the QQ group is a very inefficient way to search.

2) Key word structure

The construction of search keywords directly affects search efficiency and the filtering of correct results. There are no special skills, the key is search accumulation, but the general principle is accurate and concise. For example, when a description appears, how to serialize and deserialize XML in C#, The stupid keyword construct is “how to serialize and deserialize XML in C#”, while the correct and efficient keyword is “C# XML Serialization deserialization”, or “C# XML Serialization” in Google search. In the usual programming, we must pay attention to the accumulation of relevant methods and experience

3) Associative search

Associative search, which does not belong to the category of search engines, is a useful advanced skill in search, for example, want to use C#, using a. The ASP.NET class handles an HTTP communication, but has been searching for imperfect results, but consider VB.NET as well. NET system, and C# is completely connected, so you can try to use VB.NET keywords for search, search to perfect code and then copy into C# code. This kind of associative search can not only help search the correct result, but also train the brain thinking, which is worth trying more.

4) Resource search

Open source framework, product development, tools, control and auxiliary stuff more and more, is stronger and stronger robustness and iterative, looking for a mature tools or plug-ins, has become the necessary method of a large number of developers and skills, and how to efficiently search out want resources, has also become a business, its core method lies in knowing resources website address, Common examples are Open Source China, Github, CSDN download, puDN and so on. Resource sites need to accumulate more at ordinary times, to use the time will be very key.

4. Thinking patterns

Developers, must develop business thinking mode, the so-called business thinking, is a time when doing any project, before writing any code, need to the business concept of the project itself and the business logic and even business processes should have a comprehensive learning and understanding, this is not a mandatory project, it is a very good development habit, Whether you are a developer, a tester, or a technical director, if you have a good grasp of business principles, you can better design or read the data structure and process structure of a project. Programmers’ thinking is often inconsistent with users or customers. A programmer who gets rid of the technical thinking mode and is used to solving problems with business thinking may not be the best, but he must be a programmer who is easy to communicate with

5. Work and programming habits

Some people say that love clean waste of time, so slovenly, but in the final analysis, this is a habit problem, when the habit of developing clean sanitation and make it become a life inertia, often will not spend more time, but appears clean and capable. The same is true of writing programs. There are some programming habits that may seem like a waste of time, but if you stick to them, you will eventually receive unexpected results. Here are some habits that are particularly important.

1) Use of shortcut keys

Whether you’re using Windows or Linux or an IDE, shortcuts are a standard part of the system itself. In fact, Ctrl+C, V, and so on, most of us can see the time-saving benefits. Will all the rest of the mouse, keyboard positioning operation, use keyboard shortcuts instead, there will be orders of magnitude in time to save, but things look so good, really insist to execute and few people form the habit, therefore, in the early habit change, remember the shortcut key, is a long-term process, need to adhere to.

2) Code comments

As a developer grows older and more experienced, the projects he works on can no longer be completed by one or a few people. System of refactoring, code refactoring, the handover of the work, for new staff training, and so on similar things, will more and more hit, saves have written these things without exception code or repeated read again, if the initial code, code comments would be complete, clear, are of great help for the follow-up work. It not only improves work efficiency, but also enhances cooperation. In fact, even if you just look at your own code, if there are comments, it can deepen the impression and shorten the code search time. Therefore, any developer should develop a good code comment habit.

A good code comment should do this:

For every function, for every property, and even for the division of variables, there is an explanation.

Use XML annotations, which are increasingly supported by IDES, not only with annotation text, but also with detailed parameter descriptions.

The program structure, module, component division and so on are also annotated

3) Naming rules

Software companies with a certain scale have a set of their own naming rules in code writing, covering projects, modules, functions, variables and so on. The benefits of standardized naming are self-evident, but passive and forced to abide by naming rules and active accustomed to using naming rules are completely different. A good developer should sincerely hope that the various code names are regular and easy to read, rather than worrying about naming rules that increase the length of the code word.

4) Uncompromising programming logic

So-called not on programming logic, the opposite is not cultured programming logic, don’t pay attention to programming, is not only a kind of very bad programming habits, also reflected the low quality of life, many developers, because personal habits, drive time limit for a project, the customer requirements of a variety of reasons, particularly when programming randomly, reflected in such as in order to achieve a certain function, baidu out a piece of code, As a direct application, only 8 lines of 10 lines of code are understood, and two lines that are not understood are used in the program. Many such small details are like countless time bombs buried in the project, which not only have a high probability of rework, but also bury risks for the project. Programmers should have a sense of responsibility and attitude, develop programming logic, do not force themselves, and do not despise the program.

5) Data backup

Mistaken delete, wrong operation, computer power, the condition of lost files, and so on was developed according to every staff all possible problems, if don’t want to hard work is wasted and does not want to accidental accident affect the work, it completes the backup is essential, in larger companies, will have the full source code management and information security protection, and whether it is work in a big company Or in a small company or code in the realization of individual value, to do a code and documentation of data backup, backup mode of flexible choice, have to use online CVS, SVN, TFS, Git source code management, can also be manually copy files to the cloud or local hard disk, can even form a RAID on a personal computer disk array, etc. Make periodic and regular backups a habit.

6) Working mode of email

Communication is the source of progress. If the passionate discussion of the development team is the embodiment of character and passion, then the working way of email is another kind of steady and efficient. Both company level of communication and the development team the problem of communication, the role of email describe problem including regularization, work for filing in evidence, process flow, division of responsibilities clear, etc., are used to the major issues, important items through mail communicate with colleagues, supervisors, etc, will be a great help to the team cooperation.

These methods are my feelings and experiences for so many years, and have also given me a lot of help. I hope they can also help you. I can’t say that it can certainly “improve self-cultivation”, but it is also an effective way to “improve self-cultivation”.

Finally, I want to talk about the power of persistence

To share a true story, the company has two developers, 1 do. NET for many years, but very slick, can do things to save the province, catch the opportunity to be lazy lazy, let him learn some new knowledge new methods always opinionated think they will; One has no.NET foundation, has been doing low-level language development, and only started learning it in 2015. NET and Web front-end, but very active in work, almost every day to find time to learn, and when I met with a situation I did not understand, I would go to the Internet or seek help. After the project was finished, I would repeatedly think about what can be improved. From 15 years to now, just one year, the development of these two people has been a world apart, the salary gap is getting bigger and bigger, the latter has been able to operate small and medium-sized software outsourcing projects, while the former is still in the life, their respective development can be completely predictable.

I want to say that some of the principles and methods shared in this article are easy to understand, and often heard such as 101% and 99% of the 365 power of the story, 10,000 hours of truth and so on, but really to seriously think and practice are few, perhaps, persistence is the greatest accomplishment of programmers, and everyone!

Welcome everyone to comment, let’s discuss technology together!! If you think the article is good, please help click like below the article!!