What to learn when you want to learn web development
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.
CRUDdy Applications
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:
- You will need to learn basic web front-end programming. This doesn’t need to be complicated at first! You can do most of this with just a basic understanding of HTML and CSS. If you’re doing back office applications for businesses, you won’t need a bunch of flashy, fancy JavaScript to make things zoom around the page. Here’s the deal, most web applications start of with just a simple HTML front-end. Just basic
- You’ll need to learn a back-end language of some sort that will run on a web server and deliver your HTML pages. Whether that’s PHP, Ruby, Python, Node.js, Java or whatever other language you want, it really doesn’t matter. It only matters based on what kind of client you’re looking to sell to or company you’re looking to work for. Want to join a startup? Learn Ruby on Rails, Django for Python or Sails.js for Node.js. Want to join a big corporation? Learn Spring for Java or ASP.NET for C#. Want to do work for small or medium sized companies? Learn Laravel for PHP. My only strict advice here is “Learn only one.” Stick with just one of these for now and your life will be a lot easier. They are each different enough that you will confuse yourself if you try to learn them all at once. You can always go back and learn another framework in a different language after you’ve got a really good understanding of the first one. You’ll find it much easier to learn other languages once you already have one under your belt. For me, I started with C++, moved to Perl, then Java, then PHP, then Ruby, then back to PHP and have done a little Python and JavaScript along the way. In this profession, you will always be learning, so nail one now and the rest will come as needed.
- 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.
Other resources:
- 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