How to Use Search Techniques to Be an Effective Programmer

The Importance of Searching Skills
It's entirely possible to develop a web page or a small app for someone who lacks programming knowledge. If you're lucky, when you google some examples, you might find ready-made code and get the job done. Even experienced programmers often search for existing solutions to save time and effort.

Modern and efficient programming techniques are unimaginable without search engines, the web, and collective intelligence. Therefore, search skills are becoming more and more important to efficient programmers.

Now, we don't have to know or memorize workarounds for many programs - just search. We became more efficient, more creative, and able to solve more problems. However, does this mean that good search level is enough to develop software? This article will delve into the role of search skills in the formation of programmer knowledge and how to use search engines effectively.


Classification of knowledge

There are three types of knowledge:




Conceptual knowledge (why, what, if - semantically) - understanding the concepts, principles, relationships and main methods of developing software. This type of knowledge can answer why a software architecture or code must be designed in a particular way, and what is the best choice among them and what is the logic behind the choice. Conceptual knowledge is a long-term view and understanding of a problem, not just the use of a programming language to solve specific problems.
Purpose: Find new solutions to complex open-ended problems and create robust software systems.
Takeaways: Learn computer science, computer architecture, and programming concepts, and build your own theories based on practical processes and experience.
Practical knowledge (how to do it - in a program) - how to use knowledge to solve specific programming problems. This type of knowledge does not require advanced conceptual knowledge and underlying theoretical foundations. For this, search technology is most important; because programming languages ​​have limited problems, and specific solutions to problems, search engines can share these problems and solutions with relative ease.
Purpose: Quickly solve problems with proven and known solutions, rather than reinventing a new approach every time.
Takeaway: Search for existing solutions, learn by example or do your own research, and reuse them later.
Tacit knowledge (expertise, experience, and intuition)—experience that people accumulate in implementing software systems that form knowledge within the brain. Through powerful brain functions, tacit knowledge can synthesize and coordinate the other two types of knowledge (conceptual knowledge and practical knowledge). This type of knowledge is difficult to impart because most of the tacit knowledge resides in our subconscious. Under certain conditions, it works with intuition to make optimal decisions based on experience, feedback and evaluation of conceptual and practical knowledge.
Purpose: Use your expertise, experience and intuition to achieve the best solution.
Harvest: Develop software and summarize.


Design patterns (as well as architecture, domain, and others) are interesting examples of combining multiple types of knowledge: examples of "how to", "conceptual knowledge" behind those examples, and experience implementing them. This form of knowledge is one of the reasons why design patterns are so successful and widely used.

As more and more practical solutions and examples become available on the web, the practical knowledge in people's brains becomes less and less valuable. We no longer need to memorize practical knowledge. Now we can solve almost all common programming problems that may be encountered during software development. But a master programmer knows a lot more than just the examples he can search for, and knowing where to search for them. He is able to come up with his own solutions, make most of the best decisions, and apply them in the best way possible. In addition, for new, complex, domain-specific and context-specific problems, it is difficult to find solutions online. Moreover, for all important software engineering, in the process of formulating excellent solutions, high-level software development theory, application experience of these theories, in-depth understanding of the system, problem space environment and other related knowledge are required.

Therefore, conceptual knowledge and tacit knowledge are still very important in the software development process. When using search technology, we should strive to expand various kinds of knowledge, not just to solve a specific problem. As your ability to solve high-level problems improves, you will successfully become a more efficient programmer.
searcheskill-3.png

Efficient search for solving real problems


A. Find

Definition - Figure out what problem you are trying to solve and focus on what to look for. There is so much interesting material on the web that the search process can easily take up all of your work time (and personal time).
Search (commonly used advanced search syntax) - how to use search engines correctly and efficiently, and how to use Baidu search efficiently.
Browse the results (quality of content, credibility, and level of expertise; if the credibility of the material is too low, no need to look again) – read – evaluate (human resources, tools and function libraries depended on)



B. Use



Copy Code – Duplicate code alone (preferably with all sorts of extreme unit tests for this)
Cleanup code – Keep only minimal, relevant, clean code for your solution.
Apply the code in the system.



C. Learning



Understand - what you do and why - learn from code and implementation.
Expanded knowledge - a. Practical knowledge: specific methods, techniques and styles of problem solving; b. Conceptual knowledge: learning new concepts, refining existing ones and building your own; c. Tacit

knowledge : if you use search wisely By finding solutions and learning from them, the experience will naturally improve.
Gather (links, comments, references, reading lists) - any interesting information that will be useful for you to search, explore, and learn in the future. Build knowledge for these goals.

Guess you like

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