• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Programming Advice (experienced programmers only)

ValleyBoy

Junior Member
I'm new around here and was looking for some advice on the best learning methodology to master programming. I would appreciate if some of the experienced developers could chime in on how they learnt programming and how to overcome imposter syndrome.

I have just picked up Head First HTML CSS since it is somewhat practical but if there is any insight on how i could expatiate my learning I'm all ears.

I joined this forum to maybe find a mentor, someone who can steer me in the right direction.
 
First, HTML isn't programming. It's just formatted data. It's debatable whether CSS is programming - you can sort of use it that way but it's not really designed for that. The main HTML and CSS-affiliated programming language is JavaScript, with all sorts of libraries, and even Node.JS for the backend. Though you can use Python or PHP or any of several other languages for the backend instead.

If you want to know how I learned CSS it started when this forum changed formatting (many years ago, but kinda like now) and I used the Stylus browser extension and CSS to make it look the way it did before.

But many things have changed since I started. AI kills at this stuff. (Funny comic link) And/or AI kills jobs. I just can't stand to use LLMs, so I can't help with the current job market.

But here's one more funny comic on a site I think you might find useful for learning CSS.

135-dungeon-0.webp
 
Thanks for sharing.

Do you suggest just going right ahead and learning and actual programming language say PHP or Python than spending time on HTML and CSS? I thought they were foundational especially if i wanted to break into full-stack roles?

Also, i wanted to ask if there was a chance you could mentor me, maybe if i could check in with you weekly or once every few days. @Ken g6
 
Ah, your goal is full-stack work. You most likely want to learn React(.js) on Node(.js) using Claude Code. I wouldn't be a good mentor because I have no real experience with any of the common modern technologies.

As far as the other things I mentioned, Python/Django is OK if you really like Python. Don't learn PHP unless you want to specialize as a Wordpress developer, which you probably don't.

Back to HTML: Yeah, learn the basics, though these days you can use CSS and JavaScript to make a new element with a random name do almost anything. You'll need CSS, including stuff like Flexbox I never could get my head around, and you'll likely want to learn a library like Bootstrap. You'll need to learn SQL because you'll use it frequently; though you don't necessarily need to be a database administrator, also knowing the basics for MariaDB or SQLite or something doesn't hurt. If you really want to be full-stack, also learn user interface design (Here's a book I was pointed at), and graphic design - I'm really no good at that.
 
Also, i wanted to ask if there was a chance you could mentor me, maybe if i could check in with you weekly or once every few days.
I'll volunteer, though I have no idea what you want to do. I'll probably use Gemini to help you since whatever you are going to ask me, I won't have practical experience in it but I have learned through experience that when I'm answering questions or helping others, that is when I learn the most.

You can think of me as a coder who has "instincts" or a gut feeling if something will work or not or even if it doesn't, going at it until something does work. I got 80/100 in one weekly 3 hour exam and 60/100 in the final 8 hour exam of the 42 coding school. That was the best time of my life in recent years. Problems were thrown at me and I had so much fun solving them that I wish all I could do for the rest of my life was solve these problems and keep getting scored.

I do have to warn you that I've never had a proper developer job so think of me as an amateur.
 
I still think Structure and Interpretation of Computer Programs is the most fun intro there is to programming. It's 40 years old but the two MIT professors who wrote it publish it free online.


The book is filled with some genuinely awesome projects. Here is an intro to their book / course they gave to a bunch of devs at HP forty years ago.


What sucks is Berkeley used to have a full course published, including video lectures and supporting libraries as well as a pre-configured interpreter, but a troll sued them for not having subtitles on their videos so they pulled down every video course the university published (and they had a ton).

You might check this course published on MIT Open Coursework based on this unbelievably fun book.

 
Another thing I love about SICP is it teaches recursion, which is a super important thing to understand in programming. I remember reading a book where the author went to IBM and asked a bunch of senior devs to write up a binary search from scratch and no one could do it because they were all taught to not use recursion and to do it using an iterative procedure. Whereas it makes more sense to write it using a recursive procedure and let the compiler convert it into an iterative process since the algorithm is a special type of recursive called tail-recursive. Binary search is like baby's first algorithm and it was insane to see experienced devs unable to code up something so simple that you learn freshman year in your first CS class. Say you have a sorted list of numbers and you want to see if the number x is in it. Then

1. If the list is empty x cannot be in the list so stop and return failure
2. Otherwise look at the element in the middle of the list. If it's x you're done. Stop and return something pointing to the middle of the list.
3. Otherwise if x is smaller than this middle element you only need to look at the left half of this list, as everything on the right half is bigger. So go back to Step 1 and look for x in the left half of the list.
4. Otherwise x must be larger than this middle element so it must be in the right half of the list if it appears. So go back to Step 1 and look for x in the right half of the list.


In a logarithmic amount of time you'll either find x in the list or whittle the list down until it's empty and you know x is not in it and return failure. It's kind of like how you'd look for the definition of a word in a dictionary book.
 
Last edited:
Another really cool project the book has is to make a program that can do symbolic derivatives; derivatives in the calculus sense. Not numerically, that would be simple, but instead being able to tell you that say if y = cos(x^2*sin(4x)) that

dy/dx = -4x^2*cos(4x)*sin(x^2*sin(4x)) - 2x*sin(4x)*sin(x^2*sin(4x))

Then later you'll write an interpreter to interpret the language you're programming in. It's wildly awesome.
 
What sucks is Berkeley used to have a full course published, including video lectures and supporting libraries as well as a pre-configured interpreter, but a troll sued them for not having subtitles on their videos so they pulled down every video course the university published (and they had a ton).
CS61A. Memories. I might have the lecture videos from 20ish years ago saved, but they are like 360p. 🤣

Didn't expect a SICP fan thread to pop up, but here we are. If OP goes that route, he can do the JavaScript edition of the book instead of the classic in Scheme.

This forum isn't active enough for anyone to be a mentor. For that, I suppose OP can leverage Claude or hop onto Reddit?
 
Thanks for sharing.

Do you suggest just going right ahead and learning and actual programming language say PHP or Python than spending time on HTML and CSS? I thought they were foundational especially if i wanted to break into full-stack roles?

Also, i wanted to ask if there was a chance you could mentor me, maybe if i could check in with you weekly or once every few days. @Ken g6
You have to decide what you want to learn first. You aren't going to learn "full stack" development all at once. That is just saying there is a lot of moving parts when it comes to full stack. Pick one of them and start doing tutorials and stuff and learn how things work.

While programming in javascript and Python will have similarities (functions, variables, loops, logic, etc), they are completely different as to "how" you use them. There will be concepts that translate across any language (the stuff I mention above) but there is stuff that will be specific to the different areas of the stack.

For instance, JS is all event based for actions like clicking buttons, typing, etc. Python, when doing the backend, won't have any of that. You'll want to focus on how the backend will accept calls from the front end via API calls. I've used blueprint which is pretty straight forward, but then again I have 20+ years experience doing development so I'm not sure how straight forward it will be to someone who's getting into it.

But once you learn these concepts of, for instance, event based programming, those concepts can be used with any kind of technology for UI stuff. Same with if you learned something like how blueprint works for API calls. You're going to have that concept that will work in Java, Python, or node.js if you want, where you read a request from the UI and do something, then send a response.

And then once you learn some sort of basics of the front end JS code, you'll want to start looking at frameworks like React or Angular or something. No one in the real world uses vanilla JS but you still need to understand it.

There is a lot to learn so pick one thing at a time to focus on.
 
CS61A. Memories. I might have the lecture videos from 20ish years ago saved, but they are like 360p. 🤣

Didn't expect a SICP fan thread to pop up, but here we are. If OP goes that route, he can do the JavaScript edition of the book instead of the classic in Scheme.

This forum isn't active enough for anyone to be a mentor. For that, I suppose OP can leverage Claude or hop onto Reddit?
Did you take Brian Harvey's course at Berkeley? Jealous if so. CS courses were fun at UCLA but Berkeley is probably the best CS program in the world.
 
Last edited:
Yep, way back in 1994 lol. At the time, didn't appreciate it for what it was.
IIRC Dr. Harvey liked to say CS61A was the best intro CS course because they chose SICP.

Edit:
Found his lectures from 2011.

https://archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E?sort=-downloads
Ah man doesn't look like that run of the class had the great video from Alan Kay about user interfaces. I think I saw it in the 08 run of CS61A. If you have never seen this talk it's highly worth watching. Funny enough Kay talks about one of his biggest inspirations for his work on the UI for the Xerox Alto being a book about how to play tennis.

 
Last edited:
Which tool would you recommend for debugging the communication flow between the various web technologies?
In general if you are just looking to see what's going on from front end to backend from a webapp, I use nothing more than Chrome dev tools. It depends where you want to debug as well.

If you are trying to debug the UI before it hits the backend, then yeah dev tools is all you need. Just put break points in the actual code and you can also view all of the network requests to see what is being sent and returned.

If you're using minimized code and not in developer mode with the mapping files, you can have the dev tools pretty'ify the minimized files so you can at least make them somewhat readable and put break points in there.

Also in dev tools, in the elements panel, you can set break points on elements changing attributes. So for instance if you want to debug what is causing a class to be added to an element, or a child being added or something, you can do that in the elements tab by right clicking and choosing the "break on" option. And then when the class changes or child is added, it will break in the code and you can read up the stack to see what actually cuased it to happen. It can be tricky to track down the true event that caused it with the async nature of web stuff, but it can usually put you in the right direction.

As for debugging backend stuff, if you are not running locally in developer mode and/or can't hook a debugger into the backend, then the only thing I've done is just spit out logs. I do this regularly with stuff running inside of docker containers and I'll just tail the logs as I'm doing stuff to see what the logs I put in are spitting out.

But if I'm doing actual work and development, running the UI and backend both locally, I'll just hook the backend app (python or java) into the debugger with vscode. I don't use anything other than vscode to develop now a days.
 
Back
Top