I’ve seen a lot of posts on /r/learnprogramming and other places wondering how to get started with web programming. I’ve been doing this for about 15 years now and I’m here to give you some good news. Everything that I’ve done, from bill pay sites for Fortune 100 companies to lead tracking applications for small businesses, is essentially based on one simple concept and that’s CRUD.
In the computer world, CRUD stands for Create, Read, Update, Delete, which describes the four basic actions that most web applications need to do. In fact, they map directly to how the web and most databases are set up. (The HTTP protocol supports PUT, GET, POST and DELETE commands and SQL supports INSERT, SELECT, UPDATE and DELETE also.) These types of web applications are called Information Systems and if you can learn to make them, you will be 80% of the way to being the type of web developer businesses are looking for.
So, what does this mean in practical terms? You need to know how to:
- Take information from a user of the site (a form on a web page)
- Check the information to make sure it’s correct (also called Validation)
- Save the information to a database
- Show the information back to the user
I’ve just explained the majority of the web in those simple bullet points.
Look at Twitter. Take a status update from a user, check to make sure it’s less than 140 characters, save it to a back-end database and show it to all the followers.
Look at Wikipedia. Take an article entered by a user, check to make sure that the user has the ability to update the article and gives an update message, save it to a back-end database and show it to anyone that visits that article.
Look at Google. Pull a website’s contents from the site, check to see if it’s been updated, stick the content in the search engine and show proper search results when a user searches on a topic.
Is it more complicated than this? Of course it is. Each application has it’s own requirements and needs, but 80% of it is the same. This is where you need to focus when you first start out, with this 80%. With that, you can get really far and prove to a potential employer that you’ve learned the basics they need. The rest is learning business specific stuff that they’ll expect to teach you on the job anyway.
The Secret Sauce
So if you ever wanted to know what you needed to learn in order to do web programming, it basically boils down to this:
- Lastly, you’ll need a database. 99% of the time, this will be an SQL database and MySQL is the standard, so stick with it for now. “But I heard PostgreSQL is a better database.” “But big corporations use Oracle.” Doesn’t really matter. Most of it’s the same anyway and everyone and their mother has MySQL installed, so just use it for now and broaden out later. Luckily, you shouldn’t need to learn too much of the SQL language right away since any decent back-end framework worth anything will have what are called “database migrations” and an “ORM” built in, allowing you to use it to define and manipulate the database using your back-end language. This is true for Rails, Django and Laravel.
Getting to a point where you can create a simple web application with these three components—front-end, back-end and database—will put you well on your way to knowing 80% of what you need to be a web developer. There are an infinite number of other things you can pick up along the way, but what you need to remember is that your job is to create an application that makes other people’s lives easier, and you can do that with just the above three components. Everything else can be added piece by piece onto this foundation.
- The Odin Project - Thorough introduction to Ruby on Rails development.
- Laracasts - Screencasts for the PHP Laravel framework (some free, some paid)
- Getting Started with Django - Screencasts for the Python Django framework