This is an example of how someone learns Web programming on their own.
My first exposure to programming was in high school. I learned to program using QBasic. How fun was that. My programs ranged from DOS command programs to a spaceship shooter game. For the first time I could see the power I could have over a computer.
After high school I took a C programming course at American River College. I didn't have the prerequisites to be in that course but the instructor let me take the course anyway. I promised myself that I would do well in the course and I did. I remember raising my hand and asking the instructor why we should learn C programming. What benefit would we get from learning it? The professor was actually a bit befuddled by the question and just said we were learning C because it was everywhere. I still didn't know why we were learning C. I later realized that C is indeed everywhere, underlying so much software that we use everyday and influencing so many programming languages that came after. C is like a standard for understanding a certain level of programming.
I guess I was pretty practical. Seems like a lot of students were taking the class because it was another class on a list that they needed to take in order to get their degree. I wanted to learn something that I could use to conquer a piece of the world.
I'm glad I took that C programming class because I learned a lot about programming and about computers. I learned about how computer memory works, pointers, data structures, search and sort and other algorithms. I learned how to write better programs and structure my code. Pretty useful stuff to serve as a beginning foundation for programming.
I got a job doing data entry (got to start somewhere) and awhile later at the same company I got a job researching and editing news for the website www.govtech.com. About the same time I read the book Ender's Game which inspired an idea to start a website called democranet.com (democracy + internet) where people would submit political articles and vote on them to influence popular opinion. I was really excited about doing this but I didn't have anyone to build a website for me and I didn't have any money and I didn't know anything about building websites. So I decided to learn and do it myself.
I asked a friend of mine who did some web development what I should learn to make a website. He told me I should buy books about HTML, CSS, Javascript and PHP. So in 2004 that's what I did. I bought the books and read them and practiced what was in them. I remember following along a PHP book to program a website. It was fun and I learned a lot. Along with PHP I also learned how to use MySQL. I think it wasn't very hard for me to learn Web programming because I already knew how to program.
I actually programmed a lot of functionality of democranet.com, including user registration, user profiles, user-submitted articles, sorting articles, pagination, rating articles, article categories and login. I found a version of www.democranet.com on the WayBackMachine, so you can see and try out this functionality for yourself if you want.
I could program functionality but at the time I didn't know much about making a website look good. Here's a picture:
Later on I made a better design for the website but I never implemented it into the website. What happened was while I was building the website I started to read more political articles and news and I started liking politics less and less, and I found that I was enjoying Web programming and liking it more and more. So I pivoted. I decided to leave democranet.com behind and instead do Web programming.
In late 2004 I came across Damien Katz's mesmerizing blog post Formula Engine Rewrite which hooked me as a reader of his blog, which was a cool thing because I got to read his blog as he first began to work on CouchDB.
In my next post I'll talk about how my professional programming career began.