The first thing to talk about is, who are the programmers who are talking about today's topic?
Before saying, have to mention a very famous programmer Allen, he had a point of view: "Resolutely oppose the Peking University Bird and other institutions", I also very much agree with this point of view, but now, I am " on the basis of approval", and firmly oppose or even dislike Zhao Jie "to express this view ." Because of this view, the people who can help and function are the grass-roots developers that Allen are least likely to meet, and those who are least likely to meet are the most common programmers in China, and they are the ones that Allen are most unlikely or even unwilling to help. If a high-level programmer, with a good foundation of science, logic, and have a complete language learning experience, think at least to achieve this is the programmer, and even feel that the other do not learn the data structure of the people do not do the program, it is really very belittle.
In China, writing a program is not just an interest, but more often a common occupation and a means of livelihood.
Big companies have great programmers, good architects, but a lot of small companies also have a lot of ordinary programmers. In my years of work experience, but also more and more deeply feel the influence and strength of ordinary programmers. For high-level programmers, the so-called Eight Immortals crossing each have the avatar, each have their own achievements, each have their own cultivation, but the programmer in reaching higher levels, some "self-cultivation", is the most basic, is universal.
So today's topic for programmers is all the programmers who are writing code or have written code, including programmers in the broadest sense, such as project managers, architects, and so on.
To do anything is to have a definite purpose, then
Let's talk about what the programmer is doing to improve his self-accomplishment.
The program is good for someone to worship, a sister like? or to blog, forum, community published articles to share to achieve success? I think this is the pursuit of a few, but also a higher pursuit, before this
I think that in China, programmers are aiming to improve their self-cultivation in order to
1, better integration of work, reduce difficulties, increase achievements
2. Steady upgrading ability, raise income, achieve financial freedom
2, stand at a higher level to see their own study and work, to establish a more suitable outlook on life values, family happiness, happy life
To be more popular is to earn more money in more reasonable ways and methods .
Talking so much nonsense, get to the chase.
What is the programmer's self-cultivation?
Positive discussion is difficult to understand, the reverse description may be more understandable, the opposite of self-cultivation is " no culture ", first of all, said in the work, study, life in so many years, encountered some I think "no self-cultivation" of the programmer form :
1. Programmer Xiao Zhang encountered a development problem, very anxious, think of a few groups, so to the group sent his questions, waiting to answer, found no one answer, on the direct dialogue Group master QQ, group master also do not answer, so small Zhang on the search, suddenly search Blog Park has a post explaining the related topics, he read to Bo main message, My mailbox is:[email protected], Trouble Bo master to send me the source, thank you.
2, the programmer small Zhang entered the company 3 months, the boss assigned a lot of tasks, he felt that the boss is not human nature, wages are not high, overtime also do not give money, so in the time of writing code can save on the province, customer feedback problems are not active solution, perfunctory mainly, and after one months, job-hopping.
3, the programmer is writing a function module, need to carry out some kind of encryption, to Baidu to find a coding module, do not understand what the specific write, but put in the program just apply, so it is so intact put in.
4, programmer Xiao Zhang to the development of a function, the project manager said to him, this function should be able to search, you go to look, small Zhang in Baidu search Ah search, a day passed what did not find, project manager came to small Zhang side sat down, changed a keyword, 1 minutes on the search solution.
5, programmer small Zhang Xuexi. NET has been working for 3 years, wages or 10000, and the company raised wages did not agree, want to job-hopping and hesitation, then a senior said to him, you go to read books, read more books, such as "Visual C # from Getting Started to Mastery", "CLR via C #" "JavaScript authoritative guide" and so on, So the small Zhang bought back, and turned over to find some things he has been, and some do not understand it seems to be used, and the book so thick, should not waste time to see it? Xiao Zhang on such repeated tangled for six months, still work every day, off-duty lol, and occasionally complain about the low wages.
6, the programmer small Zhang to a new company, in doing a project to achieve a certain function, think up before did such a function, but unexpectedly can not think how to realize, so on to their own computer to find documents, looked for a long time also did not find, had to give up, finally toss 2 days, finally still to realize this function.
7, programmer Xiao Zhang one day very unhappy, because his project manager and project team product personnel and change the demand, the new demand for the whole structure of the big adjustment, small Zhang very depressed, to a QQ vent mood, said the matter, so immediately, QQ group inside fried boiling, programmer Xiao Li said, yes, The product is the dog day! The programmer Xiao Wang said, "Yes, the Damn project Manager has peace of mind all day and knows how to squeeze developers!" Programmer Xiao Sun said, yes, I was in the same company, squeezing programmers, luckily I left. In this way, in a scold sound, a few programmers feel comfortable, Xiao Zhang happy to play King Glory.
I think, some people may have understood what I want to say, some people may not understand, specific words I also can not say, only in a word to summarize is:
In the process of writing code, good at learning, mastering methods, diligent thinking, hard work, perseverance , over the course, in programming, you will find a different self.
These are still relatively abstract, then
What are the specific ways to improve self-cultivation?
Programmer concrete How to achieve "higher self-cultivation", everyone has their own way, I can not say very fine, and how to improve the human accomplishment, just like, a sentence is not clear, but some of the words are easy to understand, such as a child, have a good education parents, parents polite, children from the beginning to receive formal education, Elementary school, middle school, High school, university, then the culture curriculum and the social practice is good, then this child's final accomplishment, must be better than the child who has not experienced this process.
Similarly, the writing procedure is the same, below I will talk about some of the most basic, most easy to understand learning methods and principles, I call it:
Fundamentals of the programmer base
A good developer, should be able to deal with any software program and business problems comprehensively, efficiently and rigorously, become a good development, is a very interesting topic, but no matter how to carry out the topic, the basic two words are necessary, although the code volume is a measure of development capabilities of the important indicators, But it is not enough to be able to write code skillfully, but to understand the technical principle and business logic deeply, the solid personal Foundation and the technical Foundation will often promote the code writing and solve the problem more easily.
Here are some of the basics, probably most developers will not care about or even ignore, but these are the cornerstone of the development of the building.
1. Scientific basis
The process of becoming a developer is not the same, some are trained, some hobbies, there are professional training, in the process, may be full or scattered or even did not learn the basic computer science, but no matter what kind, want to become a higher level of developers, write higher quality code, The study of computer-based disciplines is very, very (important thing to say three times) important. Specifically, the basic disciplines in the practical application, there are the following several doors are necessary, according to the order of learning in the following
1 ) Data Structure
Data structure course popular is to tell you how to use the most basic language types, variables, keyword statements, and so on to deal with a variety of logic problems, we call it algorithms, and daily programming in various problems, such as sorting, folder traversal operations, database queries, etc., can be in the data structure course, Find the corresponding mathematical prototype. The understanding of the data structure course is also the embodiment of a person's mathematical ability, data structure learning is good or bad, is a programmer level difference of an important watershed, for this piece of content learning, there are the following suggestions: Using VB, C, C + +, Pascal and other languages, buy a related language data structure and algorithm book, or download the relevant PDF ebook online, complete the learning side, and write all the cases in the book to run debugging once, when it is possible to understand that some of the common methods of daily programming originates from some data structures and algorithms, it basically achieves the learning effect.
2 ) Operating system
All programming language development and application operation, based on the operating system, desktop programming, most of the scenes include memory, process, file system, network communication, user interface, all derived from the operating system definition and concept, a complete understanding of the origin and composition of the operating system and operational logic, multi-threaded, complex interface, File management and some difficult to understand the programming ideas and other development encountered in the scene, there is a great help, not only to help understand, but also to master more effective program writing. Specific can buy an operating system of the book or download the relevant PDF ebook, complete browsing, so that the actual programming scenario to see the operating system principle, it basically reached the learning effect.
3 ) Database
Traditional relational database, the introduction of simple, deep but difficult, often developers can quickly grasp the deletion of changes, views, indexes, stored procedures and other basic database operations, but in the preparation of complex queries, design the main foreign key, optimize the field, remove redundancy, and so on, will only be in accordance with gourd painting scoop but can not think independently of the situation. The reason is still not able to understand the fundamental principle of relational database, and the database of this course, the system elaborated the context of the relational database, to understand the mathematical principle or logical basis, to improve the level of database programming has a qualitative impact. The proposal is also to buy a database of related books or download PDF e-book, can be skilled in the first paradigm, the second paradigm, such as the basic knowledge of database courses and database programming scenarios to establish a correlation, but also basically achieve the learning effect.
4 ) Compilation principle
Compiling principle is the scientific basis of programming language and all kinds of language compilers, it can be said that the compiling principle has created almost all it applications in the world, the basis of learning compiling principle is data structure and algorithm, so the learning of compiling principle takes more time and energy, because of modern high-level programming language compiler, in code optimization, Resource optimization has been done enough intelligence, therefore, the compilation principle of learning on the impact of the actual combat is more and more small, but is so-called Ben Shengmerong, if you think that the data structure and algorithm to achieve a higher level and state, can be in the compilation of the principle of learning further in-depth, Finally, you and the average programmer to open a larger gap.
2. English Proficiency
The natural characteristics of English and the length of the letter and the historical factors of the development of the subject, decided that the programming language must be based on English, in the programming process, from the language of the keyword to the content of the document or search engine results, are inevitably encountered in English. Most programmers, with English level four or so, but because of non-professional and working environment reasons, gradually alienated or even completely forgotten English. While the actual operation, most of the programming language materials are English, online programming questions and answers are also in English, so it is necessary to restore English proficiency to a not too high but effective level, to achieve the following effects:
1) Every keyword knows the specific English translation, logical meaning and pronunciation of the language you use.
2) for their own use of the language involved in the relevant methods, libraries, frameworks, tools, etc., can know each of the methods, processes and parameters of the key words such as English translation, logical meaning and pronunciation.
3) to the common programming logic and key keywords, can use the English organization problem description, the simplest answer also line, as long as can be read by the search engine can. For example, how to convert a shape to a string type in C #, the simplest English description is the C # Integer covert to String.
4) Any English technical manuals, documents, articles or problem descriptions within the scope of their technical knowledge can read 80% of the content meaning and be able to read the full technical meaning.
3. Search method
Any developer, should have the ability to search, or even must have the search ability, search engine treasure, is endless, the same with the search consciousness of the different programmers, but because the differences in the search skills ultimately in the program development Quality, project implementation efficiency, and even engineering product quality there are several times the difference, therefore, Mastering efficient, advanced, and flexible search methods and techniques is very, very (important thing to say three times) useful. The main methods are described below:
1 ) Search Source Selection
- Although the English programming data more accurate and efficient, but the number of Chinese programming data is superior, so encountered problems the first search choice or Baidu
- Google for the professional Chinese vocabulary processing ability is sometimes even stronger than Baidu, and Google can search a large number of English resources, so Google is also one of the preferred, but because Google is blocked, so the need for VPN, SSH and other FQ operations, or Baidu search "Google Mirror" keyword, Accessed via Google's mirrored website.
- In addition to search engines, professional technical sites, forums, communities are also very direct and effective source of search, such as foreign StackOverflow website, the domestic cnblogs Blog Park, Oschina Open source China, etc., have a search function, the question keyword input, Maybe it will get the answer soon.
- QQ Group, it is recommended not to use, unless the QQ group owners or members are very busy or very enthusiastic people, or QQ group to ask technical questions, is very inefficient search method.
2 ) keyword Construction
Search keyword construction, directly affect the search efficiency and the correct results of the filter, there is no special skill, the key lies in the search accumulation, but the general principle is to follow, accurate and concise, such as when a description, how to serialize and deserialize XML in C #, very stupid keyword construction is "How to use C # Serialization and deserialization of XML ", while the correct and efficient keyword is" C # XML Serialization deserialization ", or in Google search is" C # XML Serialization. " In the normal programming, must pay attention to the related method and the experience accumulation
3 ) Lenovo Search
Lenovo search, not a search engine category, is very useful in the search of advanced techniques, to cite a popular example, like to use C #, using some. NET class to handle an HTTP communication, but has not been able to search the perfect result, but in another way, considering that vb.net is also the. NET system, and C # is completely interlinked, you can also try to use the vb.net keyword search, search for the perfect code and then copied into C # code. This kind of association search can not only help to search the correct result, but also the training of brain thinking, it is worth trying.
4 ) Resource Search
Open source framework, products, tools, controls and other development aids more and more, more robust and iterative, to find a mature tool or plug-in, but also become a large number of developers of the necessary methods and skills, and how to efficiently search for the desired resources, but also become a learning, Its core approach is to know the address of the resources website, common such as open source China, Github, csdn download, PUDN, etc. Resource-type sites need to accumulate more often, when used will be very critical.
4. Thinking mode
Developers, must develop business thinking mode, so-called business thinking, is to do any project, write any code before, need to the project itself business concepts and business logic even business process must have a comprehensive learning and understanding, although not a project mandatory requirements, but is a good development habits , whether you think it is a developer or a tester or technical director, master the business principles, to better design or read the project's data structure and process structure. The programmer's thinking is often inconsistent with the user or customer, out of the technical thinking mode, accustomed to business thinking problem solving programmer, not necessarily the best, but must be a very easy to communicate with the programmer
5, work and programming habits
Some people say that love is a waste of time, so slovenly, but in the end this is still a habit, when the habit of developing clean and hygienic habits and make it become the inertia of life, often will not spend more time, but appear clean and capable. Writing procedures as well, there are some programming habits, seemingly inadequate for the road, seemingly a waste of time, but if you persist, eventually you can receive unexpected wonders. Here are some particularly important habits.
1 ) Use of shortcut keys
Whether using Windows, the Linux operating system, or the IDE, shortcut keys are the system's own standard, in fact, CTRL + C, v such operations, most people can taste in the time-saving sweetness, the concept of further diffusion, if you write code in the IDE, in addition to the code itself, All the rest of the mouse operation, keyboard positioning operation, all with shortcut keys to replace, in time there will be an order of magnitude of savings, but it seems such a good thing, really adhere to the implementation and the formation of the habit of the few people, therefore, in the early changing habits, remember shortcut keys, will be a long-term process, need to persist.
2 ) Code Comment
As a developer grows with age and experience, the projects that are involved are no longer done by a single person or a few people. The reconstruction of the system, the reconstruction of the code, the handover of work, the training of the new personnel, and so on, will be more and more encountered, these things without exception will have already written code to re-read or repeat, if the initial writing code, do complete, clear code comments, the follow-up work will be a great help. Not only to improve work efficiency, but also to enhance cooperation goodwill. In fact, even if you just look at your own code, if you have comments, you can deepen the impression, shorten the code lookup time. Therefore, any developer should develop a good code-commenting habit.
Good code comments should be able to do the following:
- Each function, each attribute, or even the partition of a variable, can be found in the corresponding explanation.
- Use more and more XML annotations that are supported by the IDE, not only annotated text, but also detailed parameter descriptions.
- Comment on program structure, module, component division, etc.
3 ) naming rules
Software companies with a certain size, in code writing have a set of their own naming rules, covering projects, modules, functions, variables and so on, the benefits of standardized naming is self-evident, but passive, forced to follow the naming rules and actively used to the use of naming rules is completely different. A good developer, should be from the heart of the hope that the various code names are regular, easy to read, rather than tangled in the naming rules will increase the length of the code word.
4 ) does not have the programming logic
The so-called programming logic, the opposite is not pay attention to the programming logic, not pay attention to programming, not only is a bad programming habits, but also reflects the low quality of life, many developers, because of personal habits, time-out, customer requirements for a variety of reasons, in programming, especially at random, reflected in such as to achieve a function , Baidu out a piece of code, direct application, 10 lines of code only understand 8 lines, there are two lines do not understand also put in the program to use, a lot of such small details, like in the project buried countless time bombs, not only a great probability of the formation of rework, but also for the project buried the risk. Programmers should have the attitude to develop the programming logic, do not force themselves, do not despise the program.
5 ) Data Backup
Accidental deletion, misoperation, computer power loss, file loss and so on are every development according to personnel may encounter problems, if do not want hard work to be wasted, do not want to accidentally affect the job, it is necessary to do backup, in larger companies, there will be a complete source control and information security protection, Whether you work in a large company, or in a small company or in order to realize the value of personal code, you need to do a good job of data backup code and documents, backup way of flexible, with the use of online CVs, SVN, TFS, git source control, can also manually copy files to cloud space or local hard disk, You can even compose a RAID disk array on your PC, etc., and develop a periodic, regular backup habit.
6 ) How the message works
Communication is the source of progress, if the development team's lively discussion is the embodiment of personality and passion, the way the mail work is another stable and efficient. Whether it is the company level of work communication, or the development team's problem exchange, the role of e-mail, including problem normalization description, work retention marks, workflow flow, responsibility division clear, etc., accustomed to the major issues, important matters through the mail with colleagues, supervisors and other communication, will be very helpful to team collaboration.
These methods, I have felt for so many years and experience, but also gave me a lot of help, hope also can help to everyone, can not say can "enhance the accomplishment", but also "enhance the accomplishment" effective way.
Finally, I want to say the strength of perseverance.
Share a true little story, the company has two developers, one to do. NET for many years, but very slick, doing things can save the province, caught can be lazy opportunity to lazy, let him learn new knowledge new method always think he thinks he will, there are 1 of none. NET Foundation, has been doing low-level language development, from 15 only began to learn. NET and Web front-end, but things are very positive, almost every day of their own time to study, encountered do not understand the figure is clear, encounter will not be the scene on the Internet or find someone to ask for help, after the project has been repeatedly thinking of where can be improved. From 15 to now, just 1 years, the development of these two people is a big difference, the wage gap is growing, the latter has been able to work on the small and medium-sized software outsourcing projects, the former is still mixed days, and their respective development can be fully predictable.
What I want to say is that this article share some of the truth and methods, are easy to understand, and often hear such as 101% and 99% of the 365-story, 10,000 hours of truth, and so on, but really to seriously think and practice a handful, perhaps, adhere to the programmer's greatest accomplishment, and you encourage!
A very serious talk about the self-cultivation of the programmer