So you want to change careers to become a developer, this is a very wise choice. Being a developer is in high demand and that's not going to change as the need for new applications for every aspect of our lives are needed. This blog post hopefully will frame the path to becoming a developer to keep expectations realistic and the path clear.
Think of a skill of having 1-5 stars of competency, and think of earning a star as investing 2000 hours of practice and learning (equivalent of 1 year full time work). This is why you always see (5+ years of experience) on job ads cause they want the unicorn master of the skill that has invested 10,000 hours of time into a particular skill (considering we need to balance many skills, this is rare and non-existant at the entry level as much as job ads wish it so.)
But you do need at least one star on your belt before you're likely to have the skills and knowledge to secure your first role (maybe less, but let's keep expectations realistic). So go into this thinking about hours, not days, not months. How much time can you put in to reach that 2000 hours.
Before you make any big investments, you want to get some exposure to development to make sure this feels like a right fit and also some prep will make an investments in live instruction more valuable.
I would undergo the following which should eat up the first 100 hours of your journey.
(Note: This guide will mainly result in your of learning web development skills, they are great entrypoint with lots of demand, but the concepts, tools and knowledge are easily portable into other spaces like mobile, data, blockchain, etc.)
- General Assembly's free Dash Program - 10 hours
- Basic HTML and CSS Sections of the Responsive Design Course - 83 hours
At this point you'll have a good foundation in what writing code feels like and many of the basic concepts, the question is what is the next step. You'll have three choices.
Enroll to get a Computer Science Degree - This is by far the most expensive choice and is more practical if you want to do something very low level (hard) like working on operating systems or creating new databases and data tools as the in-depth understanding of how the computer works and data structures will play big in designing software where speed is top priority.
Enroll in Bootcamp - This is a MUCH more affordable option which is about 15-25 thousand dollars for a 3 month program with about 500 hours of in class time and probably another 200 hours of solo homework and project time. This is a great option for most people as it provides the structure and accountability many won't be able to provide themselves along with providing job search guidance. Bootcamps vary in quality, having been and student and an Instructor at General Assembly I would highly recommend them as an option but completing all the tasks in the first step of this guide will go a LONG way in maximizing the value of the bootcamp experience. A bootcamp can reduce the total time needed for the first start to about 1500 hours because of the time saved in having a focused path.
The self-taught route is a viable path but you need to be very self-disciplined to make sure you put in the time and you'll need to put yourself out there to get experience in things like team work and working with best practices. Another challenge is that the girth of education materials out there is vast, but the range of quality is vast, and some of the quality stuff can quickly go stale cause of how the industry evolves. Being self-taught requires discipline, good judgement, and determination. Expect you'll need the full 2000 hours to get to 1 star status, but no costs.
Regardless which path you choose, there are some things you really need to make sure your learn and get comfortable with along the way. I'll list them below along with any videos I have to teach that concept.
Most web servers run the linux operating system and don't have graphical interfaces (to save resources), so the only way to talk to most web servers is through the command line, usually using the BASH shell (shell just means a command line environment). Since this is the case you'll find many tools and programs that will make your life easier as a developer revolve around terminal, so you MUST get comfortable with it. If your on Mac your terminal uses ZSH which is the same as BASH, if your on windows download the git-bash software.
Having a good editor/IDE and learning how to use it will make your life a lot easier when writing code. There are many out there such as WebStorm, Atom and my personal recommendation, Visual Studio Code. You can use VSCode with any language and it has a robust set of tools, the videos below I'll show you the basics of working with VSCode.
- Intro to Visual Studio Code
- My Favorite Visual Studio Extensions
- Creating an environment for any lanaguage with Docker and VSCode
Git and Github can be hard to understand and work with at first, but it is arguably along with Bash the most universal and important tools you'll use. Whether you are working in Web, Mobile, Data, Blockchain, etc. you will regularly be working with Git, Github and Bash so make sure you get comfortable with these (overtime) but do not think they are something you can ignore.
Your web applications can't be used by anyone outside your computer unless you deploy them somewhere to be publically hosting.
For frontend applications that run in the users browser you can use Netlify, Vercel, Render and more.
For backend application, Heroku will be your main option until you become more seasoned.
- 4 ways to deploy a static site (frontend)
- More ways to deploy a static site
- How to Deploy to Netlify/Vercel with CodeSandBox.io
- Deploying React to Netlify
- Deploying NodeJS Apps to Heroku
- Heroku Trouble Shooting Guide
- What are datatypes, why do they matter
- Creating variables, the scope of the variables
- Math Operations (adding, subtracting, etc. with numbers)
- String operations (how to reverse, split, manipulate strings)
- Boolean operations (how to as true/false questions in code)
- Control flow (how to use boolean expressions to branch code with if statements and loops)
- Collections (how do we bundle multiple datapoints into ordered and unordered data structures)
- functions (what are arguments, what is a return value, what is a pure function, first clas functions)
- Classes (What is object oriented programming? What are are constructors, properties, methods)
Learn the web frameworks in the language you choose to focus on and create and deploy a few web application as you get more comfortable with the language.
Here is a list of language and the web frameworks to learn in the order you should learn them.
|Language||Mini-framework to learn first||Robust framework to learn second|
|Python||Flask or FastAPI||Django or Masonite|
|Ruby||Sinatra||Ruby on Rails|
|GO||Echo or Revel||Buffalo|
|Java||Spring Boot or Play|
|Swift||Vapor or Kitura|
There are several things you want to know about how computers work that will make your life a lot easier.
- What is RAM how is it different than a hard drive
- What is TCP (Transmission Control Protocol)
- What is HTTP (Hypertext Transfer Protocol)
- How does the web use TCP and HTTP
- What is an internet browser
- The Http request and response cycle
- Types of Data Structures
- Types of Design Patterns
- Types of Algorithms
So your at the 1500-2000 hour mark, you've deployed some applications, now it is time to begin the job search. Here are some resources to help you hit the ground running.
- Guide to branding yourself as a developer
- My Advice of the Developer Job Search
- Tips on writing a developer resume
- 2022 How to become a dev video, covering different roles you have
Bottom line, budget two thousand hours of learning, practicing and building things and you should be on your way to becoming a full-time developer.