Most people learn tools instead of leraning concepts first. As a consaquence, they often lack the funcamental knowledge of how things actually work
Introduction#
For instance, many CS students utilize VS Code with multiple extensions for code compilation and execution. This practice isn’t necessarily detrimental, but a significant issue arises when these individuals lack fundamental knowledge of manual code compilation and terminal usage. They heavily rely on feature-rich IDEs without delving into the inner workings of the programming language they’ve been using for months.
Now what to do#
It is crucial to grasp concepts before delving into specific tools. Consider learning GPG as an example. Watching a tutorial on encrypting a file using GNUPG may allow you to execute the task, but without a basic understanding of encryption concepts, such as private and public keys, you won’t comprehend the process. The same principle applies to learning Linux. Start with reading documentation, understanding the history of Linux, decentralized systems, and the distinctions from other operating systems before diving into specific tools.
Read the effin docs#
Reading documentation should be your initial step when acquiring a new skill. Docs are crafted by project developers and serve as one of the best learning resources. Unfortunately, some individuals are oblivious to the existence of documentation. Relying solely on tutorials from platforms like YouTube without consulting the official documentation indicates a lack of fundamental understanding.
Look at the source code#
Explore free software repositories on platforms like GitHub or GitLab. Examine the source code to understand how a project is maintained, review pull requests, and analyze issues. Some users utilize open-source tools for years without ever inspecting the source code. Understanding the programming language of the software you use is a fundamental aspect of technical literacy.
Compile program manually#
Occasionally, manually compiling source code can enhance your understanding of package functionalities, build dependencies, and offer opportunities for software optimization. Refer to compilation instructions in the wiki or readme for valuable insights.
Try to stick with the minimalist software#
Opt for minimalist software over bloated proprietary alternatives. For example, when downloading large files with multiple connections, a minimal CLI tool like Axel can perform the task efficiently. Minimalist software tends to have concise documentation, making it easier to comprehend.
Also minimal software = small documentation = easier comprehension.
Conclusion#
Emphasize conceptual learning before delving into specific tools. Acquiring a solid conceptual foundation makes learning tools more straightforward in the long run.