There is a saying: “Programmers do a lot of copy-pasting. A good programmer is the one who knows to use Google well.”
The statement above is indeed very true. Let’s look at the following example:
- In a Python programming lesson, the lecturer assigned a student to find the factorial of a given number.
- The student searched for a solution using the Google search engine by typing “Python factorial function”.
- He found a factorial function on the GeeksforGeeks website and copied the sample.
- He adapted the found solution into his code with proper attribution.
- He also tested the function using sample data to ensure that the algorithm is functioning correctly.
- He took the time to understand the code by discussing it with peers and the lecturer.
While it’s true that programmers often engage in copy-pasting code snippets or solutions found online as part of their workflow, solely relying on this approach can be a double-edged sword. On one hand, making use of existing solutions can save time, increase productivity, and provide valuable insights into problem-solving approaches. Additionally, knowing how to effectively search for and utilise resources like the Google search engine and coding sites (e.g., Stack Overflow, GeeksforGeeks) is indeed a valuable skill that distinguishes proficient programmers. (softwareengineering, 2017)
On the other hand, it’s essential to emphasise that copy-pasting without understanding the underlying logic or without adapting the solution to the specific context can lead to various issues. These include introducing bugs, security vulnerabilities, or dependencies on outdated or incompatible code. Moreover, relying too heavily on copy-pasting can hinder the development of critical thinking, problem-solving abilities, and a deep understanding of programming concepts, which are fundamental requirements for a programming student. (softwareengineering, 2017)
Therefore, while being proficient in using search engines and efficiently incorporating existing solutions into one’s work is valuable, it’s equally important for programmers to strive for a balance. This involves:
- Understanding: Taking the time to understand the code being used, its purpose, and how it integrates with the requirements stated in the question.
- Adaptation: Adapting the copied code to fit the specific requirements and constraints of the current project, ensuring it aligns with coding standards and best practices.
- Documentation: Properly documenting any external code used, including attributions, references, and explanations of how it fits with the requirements stated in the question.
- Continuous Learning: Actively seeking to expand one’s knowledge and skills through practice, experimentation, and learning from both successes and failures. (freecodecamp, 2017)
Ultimately, while knowing how to use Google effectively is undoubtedly a valuable skill for programmers, being a truly proficient programmer involves a combination of resourcefulness, critical thinking, and a deep understanding of the craft of programming.
About the Author:
Mr. Colin Khoo is an inspiring IT lecturer with 32 years of experience, renowned for his passion for teaching and making programming classes engaging and fun. He began his career at Informatic College in 1991 and joined SEGi College Sarawak in 2007, where he now serves as a Senior Lecturer in the Department of IT. Colin’s dedication to education has earned him the Long Service Award in 2019 and the Best Lecturer of the Year award in 2020. As the advisor for the Tech Club, Colin fosters a collaborative environment for tech enthusiasts and stays connected with SEGi’s alumni by organising annual reunions and visiting their workplaces. His commitment to his students’ success is unwavering, and he continually strives to help them achieve their fullest potential.