Seriously talk about the self-cultivation of programmers

(This article is a reprinted article, I think it is well written)

The first thing to talk about is, who are the programmers who are talking about today's topic?

In China, writing programs is not only a hobby, but more often, it is a common occupation and a means of making a living

Big companies have great programmers and great architects, but a lot of small companies also have many ordinary programmers. In my work experience over the years, I have felt more and more deeply the influence and power of ordinary programmers. For high-level programmers, the so-called Eight Immortals Crossing the Sea each has magical powers, each has its own achievements, and each has its own cultivation, but before programmers reach a higher level, they have some "self-cultivation", which is the most basic and universal. of.

So the programmers that today's topic is for are all programmers who are writing code or who have written code, as well as programmers in a broad sense, such as project managers, architects, and so on.

 

Everything is done with a definite purpose, then

Let’s talk about it again, what is the purpose of programmers to improve their self-cultivation?

    The program is well written, some people admire it, and some girls like it? Or go to blogs, forums, and communities to publish articles to share and get achievements? I think this is the pursuit of a few people, and it is also a higher pursuit, before that

I think that in China, the purpose of programmers to improve their self-cultivation is to

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

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

2. Look at your own study and work from a higher level, establish a more suitable outlook on life, a happy family and a happy life

To put it more simply, it is to use more reasonable methods and methods to earn more income

 

Having said so much nonsense, let's get to the point

What is the self-cultivation of programmers?

    It is difficult to explain the positive discussion clearly. The reverse description may be easier to understand. The opposite of self-cultivation is "no self-cultivation." "Programmer form:

1. Programmer Xiao Zhang encountered a development problem and was very anxious. He thought of several groups, so he sent his question to the group, waited for an answer, and found that no one answered, so he directly talked to the group owner's QQ, the group owner He didn't answer, so Xiao Zhang searched, and suddenly found a post in the blog garden explaining related topics. After reading it, he left a message to the blogger. My email is: [email protected] , please send the source code to the blogger. I'll take a look, thank you.

2. Programmer Xiao Zhang has been in the company for 3 months. The boss has assigned a lot of tasks. He feels that the boss is very inhumane. If there is a problem with the feedback, he will not take the initiative to solve it, and he will be perfunctory.

3. Programmer Xiao Zhang is writing a functional module and needs some encryption. He found a coding module on Baidu. .

4. Programmer Xiao Zhang wants to develop a certain function. The project manager said to him that this function should be searchable. You go to Soso to see, and Xiao Zhang is searching on Baidu. After a day has passed, he can't find anything. The project manager came to Xiao Zhang and sat down, changed a keyword, and found a solution within 1 minute.

5. Programmer Xiao Zhang has been working in .NET for 3 years, and his salary is still 10,000. He has not agreed with the company to raise his salary. He hesitated to change jobs. At this time, a senior said to him, you should go and read more. Books, such as "Visual C# From Beginner to Proficient", "CLR via C#", "Javascript Authoritative Guide", etc., so Xiao Zhang bought it back, and flipped through it and found that some things he already knew, some didn't understand. It seems that I can't use it again, and the book is so thick, should I waste time reading it? Xiao Zhang struggled in this way for half a year, still going to work every day, and after get off work LOL, occasionally complaining about the low wages.

6. Programmer Xiao Zhang went to a new company. When he was working on a project to implement a certain function, he remembered that he had done such a function before, but he couldn't remember how to achieve it, so he went to his computer to find the document and found it. I couldn't find it for a long time, so I had to give up. Finally, after 2 days of tossing, I finally realized this function.

7. The programmer Xiao Zhang was very unhappy one day, because his project manager and the product staff of the project team changed the requirements again, and the new requirements required major adjustments to the entire structure. Xiao Zhang was very depressed and went to a QQ I vented my emotions and said this, so immediately, the QQ group exploded. Programmer Xiao Li said, yes, the product is shit! Programmer Xiao Wang said, yes, the fucking project manager can just sit back and relax all day, and he knows how to squeeze developers! Programmer Xiaosun said, yes, yes, my last company did the same, squeezing programmers, but fortunately I left. In this way, amidst the scolding, a few programmers felt relieved, and Xiao Zhang happily went to play the glory of the king.

I think, some people may already understand what I want to say, some people may not understand, I can't say the specific words, I can only summarize it in one sentence:

In the process of writing code, you are good at learning, mastering methods, thinking hard, working hard, and persevering. In the long run, you will find a different version of yourself in programming.

 

The above is still relatively abstract, then

What are the specific ways to improve self-cultivation?

How programmers achieve "higher self-cultivation", everyone has their own way, I can't go into details, just like how to improve one's self-cultivation, one or two sentences are not clear, but some sayings are also popular It is easy to understand, for example, a child has well-educated parents, and the parents are polite. The child begins to receive formal education, primary school, junior high school, high school, and university, and then the cultural curriculum and social practice are good. Then the child's final life cultivation must be Better than a kid who hasn't gone through the process.

The same is true for writing programs. Now I will talk about some of the most basic and easy-to-understand learning methods and principles, which I call:

Fundamentals of Programmer Fundamentals

A good developer should be able to deal with any software program and business problems comprehensively, efficiently and rigorously. Being a good developer is a very interesting topic, but no matter how the topic is developed, the basic two words are essential. , Although the amount of code is an important indicator to measure the development ability, it is not enough to be able to write code proficiently. It is also necessary to have a deep understanding of technical principles and business logic. A solid personal and technical foundation will often promote code writing. Solve problems more easily.

Some of the basics mentioned below may not be noticed or even ignored by most developers, but these are the cornerstones of the development building.

1. Scientific basis

The process of becoming a developer is not the same, some are from a professional background, some are hobbies, and some are training in professional institutions. In this process, you may have comprehensive or scattered or even have not studied basic computer subjects, but no matter what kind, you want to Becoming a higher-level developer, writing higher-quality code, and learning the basics of computer science are very, very, very (important things said three times) important. Specifically, in the practical application of basic subjects, the following subjects are definitely required, and they are listed as follows in the order of learning

1) Data structure

In layman's terms, the data structure course tells you how to use the most basic language types, variables, keyword statements, etc. to deal with various logical problems, which we call algorithms, and various problems in daily programming, such as Sorting, folder traversal operations, database queries, etc., can all find the corresponding mathematical prototypes in the data structure course. The comprehension ability of the data structure course is also a reflection of a person's mathematical ability. The quality of data structure learning is an important watershed for the difference in the level of programmers. For the learning of this content, there are the following suggestions: use VB, C, C++, For languages ​​such as Pascal, buy a book on data structures and algorithms related to the language, or download related PDF e-books online, complete the study, and write, run and debug all the cases in the book. When you can comprehend some When the common methods in daily programming originate from certain data structures and algorithms, the learning effect is basically achieved.

2) Operating system

      The development of all programming languages ​​and the running of applications are based on the operating system. Most scenarios in desktop programming, including memory, process, file system, network communication, user interface, etc., are derived from the definition and concepts of the operating system, and a complete understanding of The origin, composition and operation logic of the operating system are of great help to multi-threading, complex interface, file management, and some scenarios encountered in the development of difficult to understand programming ideas, not only to help understanding, but also to grasp more effective program writing. Specifically, you can buy an operating system book or download related PDF e-books, and browse through it completely, so that you can look at the operating system principles in combination with the actual programming scene, and you will basically achieve the learning effect.

3) Database

      Traditional relational databases are easy to get started with, but difficult to in-depth. Often developers can quickly master basic database operations such as CRUD, views, indexes, and stored procedures, but they are writing complex queries, designing primary and foreign keys, optimizing fields, When redundant, etc. are removed, there is a situation where they can only follow the gourd and draw the scoop but cannot think and expand on their own. The reason is that I still haven't been able to understand the fundamental principles of relational databases. The database course systematically expounds the ins and outs of relational databases, and understanding the mathematical principles or logical foundations of them has a qualitative impact on improving the level of database programming. It is also recommended to buy a database-related book or download a PDF e-book, which can skillfully associate the basic knowledge points of database courses such as First Normal Form and Second Normal Form with database programming scenarios, and basically achieve the learning effect.

4) Compilation principle

      Compilation principles are the scientific basis for programming languages ​​and various language compilers. It can be said that compilation principles have created almost all IT applications in the world. The basis for learning compilation principles is data structures and algorithms. Therefore, it takes more to learn compilation principles. Since the compilers of modern high-level programming languages ​​have been smart enough in code optimization and resource optimization, the learning of compilation principles has less and less impact on actual combat, but as the so-called Ben Sheng Morong, If you think that your study of data structures and algorithms has reached a high level and state, you can go further in the study of compilation principles, and finally open a bigger gap between yourself and ordinary programmers.

2. English ability

    The natural characteristics of English, the length of letters, and historical factors in the development of disciplines 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 not possible. Avoid encountering English. Most programmers have English basics of around CET-4, but due to non-professional and working environment reasons, they gradually become alienated or even completely forget English. In actual operation, most of the programming language materials are in English, and the content of the online programming question and answer is also in English. Therefore, it is necessary to restore the English ability to a level that is not too high but effective, to achieve the following effects:

1) Know the specific English translation, logical meaning and pronunciation of each keyword in the language you use.

2) For the related methods, class libraries, frameworks, tools, etc. involved in their own language use, they can know the English translation, logical meaning and pronunciation of each method, process, and parameter keywords.

3) For common programming logic and core keywords, you can organize the description of the problem in English, and the simplest answer is also fine, as long as it can be understood by search engines. For example, how to convert an integer to a string type in C#, the simplest English description is C# Integer Covert To String.

4) Any English technical manuals, documents, articles or problem descriptions within the scope of their own technical knowledge, able to read 80% of the content meaning, and be able to read the complete technical meaning.

3. Search method

    Any developer should have the ability to search, or even must have the ability to search. The treasures of search engines are endless. Different programmers who also have search awareness, but because of differences in search skills, the quality of program development, There are several times differences in project implementation efficiency and even engineering product quality. Therefore, it is very, very, very useful to master efficient, advanced and flexible search methods and techniques. The main methods are described as follows:

1) Search source selection

  • Although the programming materials in English are more accurate and efficient, the programming materials in Chinese are superior in quantity, so Baidu is the first search choice when encountering problems.
  • Google's processing ability for professional Chinese vocabulary is sometimes even stronger than Baidu's, and Google can search out a large number of English resources, so Google is also one of the first choices, but because Google is blocked, it needs to perform VPN, SSH and other FQ operations, or Search for the keyword "Google Mirror" on Baidu and access it through Google's mirror website.
  • In addition to search engines, professional technical websites, forums, and communities are also very direct and effective search sources, such as the foreign StackOverFlow website, the domestic Cnblogs blog park, OSChina open source China, etc., all have search functions, enter the question keywords into them, maybe You will also get the relevant answers soon.
  • For the QQ group, it is recommended not to use it. Unless the QQ group owner or members are very idle or very enthusiastic people, asking technical questions in the QQ group is a very inefficient search method.

2) Keyword Construction

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

3) Lenovo Search

    Lenovo search does not belong to the category of search engines, but it is a very useful advanced technique in search. For example, if you want to use C# and use a certain .NET class to process a kind of HTTP communication, the search has not been perfect. The result, but another way of thinking, considering that VB.NET is also a .NET system, which is completely similar to C#, then you can also try to search with VB.NET keywords, search for the perfect code, and then copy it into C# code. Such associative search can not only help you search for correct results, but also train your brain's thinking, so it's worth trying a lot.

4) Resource search

    There are more and more development aids such as open source frameworks, products, tools, controls, etc., and the robustness and iterativeness are getting stronger and stronger. Finding a mature tool or plug-in has also become a must-have method for a large number of developers. Skills, and how to efficiently search for the resources you want has also become a knowledge. The core method is to know the address of the resource website, such as open source China, Github, CSDN download, pudn, etc. Resource websites need to be accumulated more often, and it will be very critical when they are used.

4. Mode of thinking

    Developers must develop a business thinking mode. The so-called business thinking means that when working on any project, before writing any code, it is necessary to have a comprehensive business concept, business logic and even business process of the project itself. Learning and understanding, although this is not a mandatory requirement of a project, is a good development habit. No matter whether you think it is a developer, a tester or a technical director, you can better design or Read the data structure and process structure of the project. Programmers' thinking is often inconsistent with users or customers. A programmer who gets rid of the technical thinking mode and is accustomed to solving problems with business thinking is not necessarily the best, but must be a programmer who is easy to communicate with.

5. Work and programming habits

    Some people say that they love cleanliness and waste time, so they are not sloppy, but in the final analysis, it is still a matter of habit. The same is true of writing programs. There are some programming habits, which seem insignificant and seem like a waste of time, but if you stick to it, you can eventually get unexpected and miraculous effects. Listed below are some particularly important habits.

1) Use of shortcut keys

    Whether using Windows, Linux operating systems, or in IDE, shortcut keys are standard in the system itself. In fact, most people can taste the sweetness of saving time with operations such as Ctrl+C and V. To further spread this concept, if you write code in the IDE, except for the code itself, all other mouse operations and keyboard positioning operations are replaced by shortcut keys, there will be an order of magnitude savings in time, but it seems so For good things, there are only a handful of people who really insist on implementing and forming habits. Therefore, changing habits and remembering shortcut keys in the early stage will be a long-term process that requires constant persistence.

2) Code comments

    As a developer grows in age and experience, the projects he participates in can no longer be completed by one person or a few people. System refactoring, code refactoring, job handover, training for new employees, etc., will be encountered more and more, and these things will all re-write or repeat the already written code without exception. Read, if you do complete and clear code comments when you initially write the code, it will be of great help to the follow-up work. Not only improve work efficiency, but also enhance the goodwill of 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 good code commenting habits.

Good code comments should do:

  • Every function, every attribute and even the division of variables can find a corresponding explanation.
  • Use more and more XML annotation methods supported by IDEs, not only annotation text, but also detailed parameter descriptions.
  • Also annotate the program structure, modules, component divisions, etc.

3) Naming rules

    A software company with a certain scale has its own set of naming rules for code writing, covering projects, modules, functions, variables, etc. The benefits of standardized naming are self-evident, but passively and forced to obey the naming rules and actively Getting used to naming conventions is quite different. A good developer should sincerely hope that all kinds of code names are regular and easy to read, rather than entangled in the naming rules will increase the length of the code word.

4) Programming logic that is not ready

    The opposite of the so-called programming logic that doesn't work out is the programming logic that doesn't pay attention to it. The programming logic that doesn't pay attention to it is not only a bad programming habit, but also reflects the low quality of life. Many developers, because of personal habits and rush schedule , There are many reasons such as low customer requirements, and they are very casual when programming. For example, in order to achieve a certain function, Baidu produces a piece of code and applies it directly. The 10 lines of code only understand 8 lines, and there are two lines that are not understandable. To use it in the program, many such small details are like planting countless time bombs in the project, which not only has a high probability of rework, but also planted risks for the project. Programmers should have a responsible attitude, develop a programming logic that is not going to work, and neither force themselves nor despise programs.

5) Data backup

    Accidental deletion, misoperation, computer power failure, file loss, etc. are the problems that every developer may encounter. If you don’t want your hard work to be wasted, and you don’t want accidental accidents to affect your work, it’s a good idea to make backups. Indispensable, in larger companies, there will be complete source code management and information security protection, and whether you are working in a large company or a smaller company or when realizing the value of personal code, you must do a good job. Data backup of code and documents, the choice of backup methods is flexible and diverse, including the use of online CVS, SVN, TFS, Git source code management, or manual copying of files to cloud space or local hard disks, or even to form RAID disks on personal computers Arrays, etc., to develop periodic and regular backup habits.

6) How Mail Works

    Communication is the source of progress, and if the lively discussions in the development team are a reflection of character and passion, then the way emails work is another kind of prudence and efficiency. Whether it is the work communication at the company level or the problem communication of the development team, the role of emails includes formalized description of problems, job filing and traces, workflow flow, clear division of responsibilities, etc. It is accustomed to sending major issues and important matters through emails. The way to communicate with colleagues, supervisors, etc. will be very helpful for teamwork.

The above methods are my feelings and experiences over the years, and they have also helped me a lot. I hope they can also help everyone. It cannot be said that it can “enhance self-cultivation”, but it is also an effective way to “enhance self-cultivation”.

 

Finally, I want to talk about the power of persistence

Share a true little story. There are two developers in the company. One has been working on .NET for many years, but he is very slick. He can save when he can do things. When he can be lazy, he will be lazy and let him learn new knowledge and new methods. I always think I can do it; there is another one who has no .NET foundation, and has been doing low-level language development. I only started learning .NET and Web front-end in 15 years, but I am very active in doing things. I take time to learn by myself almost every day. If you know what you know, you can figure it out. When you encounter a scene that you don't know, go online or ask someone for help. After the project is over, you will think about what can be improved. From 15 years to now, in just one year, the development of these two people has become worlds apart, and the wage gap is also growing. The latter has been able to manage small and medium-sized software outsourcing projects alone, while the former is still living , and their respective development in the future is completely predictable.

What I want to say is that some of the principles and methods shared in this article are easy to understand, just like the stories that are often heard such as 101% and 99% of the 365th power, 10,000 hours of truth, etc. , but there are only a handful of people who really think and practice seriously. Perhaps, persistence is the greatest accomplishment of programmers, and I will share with you!

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325699901&siteId=291194637