← Back to context

Comment by pillars

1 year ago

I can relate to you, OP.Sorry for off topic I want to share my experience about my journey of programming. When I started programming, I was introduced to the ideas of variables, conditions, loops, functions—regular programming constructs. But I didn't understand much of what was going on, how the computer worked, or anything beyond just the syntax. I used to wonder: when I start my PC, how does it even know where to begin? I often felt insecure and anxious about all these unknowns. I was trapped in tutorial hell, thinking that just gluing pieces of code together was enough. It made sense for a while, but eventually, I wanted to quit.

After some time, I searched online about how to improve, and people recommended learning data structures and algorithms (DSA). I didn’t know how to implement data structures on my own and struggled a lot—almost like going through hell. Nothing made sense. I couldn’t even get beyond linked lists.

Then I found a Reddit post saying I might have the wrong mental model. It said that even if you know some programming, without understanding how to think about structures and systems, you're stuck. I started searching for what 'mental models' meant, but due to my lack of experience, I didn’t find anything useful.

Later, I read a discussion on Hacker News about the book Structure and Interpretation of Computer Programs (SICP). One commenter explained how the book starts with the concept of data and procedures. That really clicked for me. I had never thought of computation as just transforming input data into output data. The model of:

Input → Computation → Output

made everything fall into place. This idea carries through all levels of programming—whether it's assembly, mid-level, or high-level languages. It’s the fundamental notion. You need basic constructs to steer data through transformations into useful outputs. Computation is essentially about transforming one form of information into another.

After that realization, everything started to make sense—assembly, high-level programming, even operating systems. It was one of the best ‘aha!’ moments of my life."