Hmmm... It seems like I have been doing web-programming all along, so I had to rack my brains to remember when was the first time.
It was circa 1998!
CSS support was rudimentary and so were HTML forms. Static websites were OK, but to dynamically generate pages there were very few options. We used Java Servlets and did everything in doGet or doPost. Perl-CGI or DLLs running within IIS would have been the only other alternative.
So we kind of did everything ourselves. What everyone assumes is available today was just not there. We didn't have ORMs, MVC frameworks, templating engines, Javascript libraries, CSS frameworks. The only saving grace was that there were only two browsers to test with: IE and Netscape, and Quirksmode was one of my favourite websites.
I have written my own HTTP server in perl, written CGI based dynamic web-servers in apache / bash / xslt, created my own templating engine in perl and even a rudimentary ORM in Java. It felt like whenever we needed a more efficient way of doing things, we invented something but soon enough it became available as an open-source library or framework. Then we would switch.
All that has helped me learn what goes under the hood of all the good stuff that's available today, and it also makes it easy to understand when something new comes up.
If any of you are just starting out, I'd advise something similar: Build your own web-server, write your own stuff at the lowest level (ie, without jquery / jsp / angular or bootstrap) to understand how things work. Write your own Ajax calls and generate your own cache headers.
Once you have done that, then the rest is a breeze.