BeginningToJournaling

Thoughts About Learning to Program and Develop Software

Introduction

In modern programming, we encounter so many layers of abstraction that beginners face an enormous problem: Should they learn what’s underneath these abstractions, or should they just learn to use them without delving deeper? The internet emerged on January 1, 1983, with the establishment of the Transfer Control Protocol/Internetwork Protocol (TCP/IP). Since then, the use of the internet has expanded with different web browsers and various ways to implement the same logic in simpler ways. Because of this, much information is kept hidden from beginners, making it hard to wrap one's mind around. These days, when I write a server with Node.js and Express, I only have to write a few lines of code, whereas in earlier days it would take dozens of lines.

The Challenge of Self-Learning

As a self-taught developer, I often feel overwhelmed by the sheer amount of information available about the same topics. Frameworks are great because developers share their work, but this has taken away the opportunity to experiment with simpler solutions. I've heard the statement, "Don’t reinvent the wheel," many times. But isn't reinventing the wheel the best way to learn? By doing so, I would make my own mistakes and probably come up with similar solutions, but at least I would understand why something is made the way it is.

Finding Balance in Learning

Self-taught developers face decisions about whether to accept community-approved solutions or to open Pandora’s box by experimenting, reinventing, and making their own mistakes. These decisions take a lot of time. The field of computer science is vast, and we know from the beginning that we won’t learn everything. Therefore, we need to manage our time and invest it in the right direction. I always advise learning the fundamentals, reading documentation, and spending most of your time in a field that brings you joy. Sometimes, this joy comes with tears and pain from grinding to understand and apply concepts in real situations.

Conclusion

In conclusion, the journey of learning to program and develop software is filled with challenges and decisions. Embrace the process of experimenting and making mistakes, as it leads to deeper understanding and personal growth. Focus on the fundamentals, and find joy in the learning process, even when it gets tough. This approach will help you navigate the complexities of programming and develop a strong foundation for your future endeavors.