How to Become a Web Developer
I’ve been making websites since 1997 and working professionally since 2010 full time as a software developer. If you don’t have any experience doing programming or web design as a hobby this will be extremely challenging. Getting started will seem like the hardest thing ever. With commitment and reflecting on your accomplishments regularly, you can make this process more enjoyable. I personally believe it takes about 6 months for me to learn any new technology and about 2 years to really get it down. Therefore, I believe it will take most people about 2 years to get comfortable with the basics of web development. This covers a lot of territories.
What do you really need to learn?
Becoming a web developer is not easy because there are so many technologies you must learn to be capable of doing the job. Not only that, but you will also develop communication skills, and become familiar with environments like Windows or Linux. There’s also a lot of random things you’ll have to learn like how to use FTP, SSH, and how to follow basic Search Engine Optimization (SEO) techniques.
Choosing a Programming Language for the Backend
Popular programming languages that are commonly used for web development are listed below. It’s important to look at your market where you live to see what jobs are available. When I started, there really weren’t many PHP or Java jobs in my area so I focused on learning ASP.NET. You may have to relocate for certain technologies. Markets vary from location to location. The larger cities will provide the most learning opportunities.
These programming languages and frameworks are commonly used and there are plenty of jobs for them. Let’s discuss their unique characteristics and values in the market.
- ASP.NET / .NET Core
- PHP
- Python
- Java
ASP.NET / .NET Core
Being that this is a Microsoft technology it is most commonly found in large corporations because it integrates very tightly into Active Directory environments. A lot of corporations have in-house business apps that help facilitate day-to-day business operations. These include Business-to-Business (B2B) applications, integrations with other systems, and external facing web applications Business-to-Customer (B2C). .NET can also be used to create Windows Services, Desktop Applications, and integrates with a lot of Microsoft technologies. The .NET core can also run on Linux now and is considered one of the fastest programming languages available on the market.
Java
Java is a classic programming language that has stood the test of time. There modern Model View Controller (MVC) framework Spring is very popular and they seem to steal some things from .NET. They are both very similar in syntax but Java also offers benefits. Java is also used to build desktop apps and is the programming language used to natively create applications for Android.
PHP
PHP is an open-source web scripting language that became very popular in the early 2000s. The majority of the internet uses PHP being that popular Content Management Systems (CMS) like WordPress, Joomla, Drupal, and Magento are built with PHP. I recommend learning PHP for beginners because it’s very easy to get started with. However, it’s not gaining popularity these days for many reasons. It doesn’t have the power that Python has. The most popular Model View Controller (MVC) framework for PHP is Laravel.
Python
I’ve dabbled in Python over the years and it is truly one of the most powerful programming languages available. Python is gaining territory enormously because it’s easy to script with, used in web development, can be compiled, and is also heavily used in artificial intelligence (AI). Python has a popular Model View Controller (MVC) frameworks like Django and Flask. It’s fast, lightweight, and truly a winner for development. Python developers typically make more money than other developers.
Basic Front-End Technologies
These technologies are the cornerstone to web development. Without these technologies you can’t be a web developer.
Hypertext Markup Language (HTML)
HTML is a markup language that allows you to describe how things should display on the website. For the most part, this is rather easy to learn. Learning to use this in combination with CSS, JavaScript and a framework like Bootstrap is what makes it challenging.
Cascading Style Sheets (CSS)
CSS is how you define how something should be styled. This is used to set the color, padding, width, and height. Well, that’s a general idea. It gets much more advanced with pre-processors like SASS and LESS. You’ll also need to be aware of popular frameworks like Twitter’s Bootstrap framework.
JavaScript
Learning the basics of JavaScript isn’t that bad. Mastering JavaScript is insanely difficult. Try reading John Resig’s book (Secrets of the JavaScript Ninja) on JavaScript and you’ll realize how deep that rabbit hole is. I don’t recommend that book for beginners. It’s an expert level book but you should strive to one day understand it. However, learning the basics is rather easy. Once you have that down you will want to learn a JavaScript framework like Angular or ReactJS.
Databases
I recommend starting with MySQL. This is a very popular database that is light and is very commonly used in website development. You can easily access a MySQL server using DigitalOcean or with Docker.
https://marketplace.digitalocean.com/apps/mysql
https://hub.docker.com/_/mysql
Git
I cannot stress how important it is to learn a good version control system. Right now, Git is the best and most popular one on the market. There are others but they don’t compete in popularity or functionality. Git is a version control system that allows developers to check their source code into a repository like GitHub. This is critically important and you should really put time into learning this before you start a job. It helps because, not only will you have the ability to revert your changes, it also provides a way that senior developers can see what you changed and provide feedback. I would start learning this immediately. In fact, I teach developers this before I teach them a programming language that way they can use it as they learn.
Where to Start?
I think new people have a very low level of awareness and familiarity so they will need to cover more territory. Their ability to learn will be a lot slower than someone who has been aggressively learning for 10 years like me. Because I have a high level of familiarity I can remember and pick up things enormously faster than newer developers. However, it still takes me, an enormous amount of time. I just learn differently now than I did when I started. It’s important to understand that in the beginning baby steps and entry-level jobs are critical to one’s success.
I recommend starting with a self-paced environment or going to college. If someone doesn’t want to pay the money or have the time to go to school they certainly can get started. However, I don’t have a degree and would highly recommend that you pursue one at some point. It helps enormously, especially when you get further down the road and want to pursue higher positions like an architect’s position.
FREE College Courses
https://online-learning.harvard.edu/subject/computer-science
https://www.edx.org/learn/python
Udemy
I recommend Udemy because the financial commitment here is really low. You pay about $20 dollars for a video series on a topic and you are good to go. This is exactly enough to get started. Just an FYI., Udemy is known to list videos for $200 dollars and every other day mark them down to $20. If you wait a few days or a week you can get your videos marked down. They do this to stimulate sales…
CodeAcademy
This is free to start but also has a payed monthly subscription for about $20/month. Their courses cover everything from Web Development to Data Science, Developer Tools, Machine Learning, Web Design, Mobile Development and even Game Design. They include languages like Python, JavaScript, Java, SQL, R, C#, C++, Ruby, PHP, Go, and more!
Meetups / Conferences
I highly recommend getting active in the community. The larger cities have the best meetups and conferences. You can watch presentations by developers on technologies and techniques. This also gives you the chance to meet people in person and expand your professional network.
Standout in Software Interviews
The trick to standing out in an interview is demonstrating a few key characteristics like aptitude, desire to learn, enthusiasm, and commitment. People who succeed in this career are life-long self-learners. They don’t need a structured environment to learn in and are capable of learning as they go.
Passion
Demonstrating passion is easy if you’re truly in love with what you’re doing. Someone who loves what they are doing will get very excited and have project samples and a Github to demonstrate their love for web development.
Mastering Git
Seriously, I can’t stress this enough. Master git! Really understand how to branch, checkout, clone, commit and push code. Be aware of advanced Git techniques like bisect, forking, and history. This will help you more than you will realize.
Understanding Design Patterns
Be sure to understand common design patterns like Model View Controller (MVC) this is the most popular pattern I’ve ever encountered. I’ve seen this at nearly all of my jobs. Other patterns may or may not be used at a job you’re applying to.
Common Design Patterns
- Model View Controller (MVC)
- Components (ReactJS/Angular)
- Repository Pattern (Popular in .NET)
- Gang of Four Patterns
High Level Concepts
Being able to explain why code should be decoupled, algorithms, or how polymorphism works is pertinent to developing high skillsets as a software developer. I was once challenged to a 4-hour coding challenge. I wasn’t able to complete it but I was smart enough as a junior developer to attempt to put dependency injection (DI) into the code. It turns out they used unit testing religiously and dependency injection is required to do that. I got the job and that single job is the one that shaped my career the most.
Unit Testing
This is really useful and practical. Environments that release code frequently may unit test their code to reduce regression testing. The trick to unit testing is knowing how to write decoupled code. If a developer truly understands this they are enormously ahead of developers who don’t.
Docker
This technology is a game-changer and can really make your life easier if you take the time to learn it. While this is very advanced, you’re going to want to make yourself aware of this sooner than later. This is the direction things are going. Containerization provides a unique way of distributing applications efficiently and can also make learning programming easier by providing isolated environments for development. Docker can also be used to run a local MySQL server. It’s a lot easier to use a MySQL Docker image than to install and manage a MySQL server manually.
Awareness
Never stop learning! If you read often and follow other developers on Twitter, Facebook, and YouTube you will be more aware of technologies and how they are used. This will make you smarter and improve your ability to communicate.