Ask HN: What made programming finally click for you?
1–10 of 48 posts
Re: Ask HN: What made programming finally click for you?
#2Re: Ask HN: What made programming finally click for you?
#3Several months later, perhaps a year, I sat down to try it again. For some reason it wasn't so hard this time. I was able to get it to work.
I don't remember what my other projects were, but I remember struggling to design some more software. I couldn't tell where to begin or how stuff should work. So I'd just jump in somewhere and start somehow. I'd flesh out one component, and then when I'd go to write a component that integrated with it, I found my first design was wrong. I ended up throwing out drafts and restarting.
Through a grueling repetition of this I learned to have a better intuition. I increased my capacity to hold a large and complex program in my head, and to reason about it. I remember a job interview at 18 years old, when someone told me, "you write decent Python." I was quite proud.
I don't think they're was a single moment where it clicked. It was a painful teething process of repeatedly painting myself into a corner, throwing everything out, and starting again. I was very lucky to have supportive adults in my life who helped me out, along with kind strangers on the internet who looked at my broken code.
I'll tell you about one small moment of realization. Once I was asking for help online with a problem relating to my masking an import with a local variable, or something like that. After this was explained to me, Ned Batchelder gave me a command; "now, realize that importing is just a special case of assignment."
It legit blew my mind. It felt like a zen master had imparted special wisdom to me. It was a magical pedagogical moment I've never experienced again. Thanks again, nedbat.
Re: Ask HN: What made programming finally click for you?
#4But it wasn't until I took a statistics class, which involved programming in R, that I began to realize the purpose of functions: to handle inputs, and return outputs.
The class involved data engineering, so I created functions to deal specifically with data.
And it was then that I realized "Ohhh... functions in any language just operate on data... so... with this knowledge, now I see the purpose of application routes in web frameworks like ExpressJS, Python Flask, etc."
A course on relational databases helped me understand how to store data.
And from there, I finally realized the purpose of a REST API, and how browsers connect to servers.
At that point, I realized "Wow, I finally understand how to create a full stack app (including database design)"
Re: Ask HN: What made programming finally click for you?
#5A big part of todays programming work is spent on understanding what others have come up with about how the environment your app runs in is modelled and how it talks to your app and expects your app to talk and behave. This includes data models, process models, event handling etc.
So while there might be a big click when you discover that you need a place to store your data and have algorithms/code operating on that data, in common programming tasks it has to click again an again about others' ways of doing things and adjusting your code to fit that model.
And yes that can be fun and enlighting. Again and again.
Re: Ask HN: What made programming finally click for you?
#6What made it click? There wasn't a specific point, but I think it was when I started to seriously branch out into multiple languages. I've dabbled in other languages before, but when I seriously started working with other languages and made larger projects in them did I understand how to structre the code so it's not terrible.
Re: Ask HN: What made programming finally click for you?
#7Re: Ask HN: What made programming finally click for you?
#8Re: Ask HN: What made programming finally click for you?
#9Re: Ask HN: What made programming finally click for you?
#10However a couple things stand out:
- learning to use a debugger
- test driven development
- static typing
- learning a systems language (stack, heap, memory management, pointers etc.)