From Zero to Full-Stack JavaScript developer — How to teach yourself to code

Alena Bukilic
Florence Development
8 min readJan 16, 2020
Photo by Christina Morillo from Pexels

In two and a half years I went from zero knowledge about programming to a full-stack JavaScript developer. It was a difficult journey, and it didn’t need to be.

This article is for all people dreaming of a career in programming with no idea where to start. I will guide you on my own tough path to programming and build a structured learning path that somebody with similar aspirations as mine, might find useful.

The Journey from Dream to Reality

Two and a half years ago, I knew zilch about programming. Even things I thought I knew were misinterpretations.

My formal education was in Political Science and my work experience was diverse from retail to journalism. I struggled to find a profession that brought a true sense of purpose.

Before I turned 28, I had not written a line of code, edited a post in WordPress, or made an animation. All I knew is that I wanted to change my career, and programming allowed me to create something that was my own.

My passion for game development led to extensive research concluding that web development was the best place to start building my skills.

As I began learning about software development, the variety of resources were overwhelming and the lack of a clear learning path was confusing. Information was jumbled and I learned more complex stuff without the proper basic knowledge.

I am now a full-stack JavaScript developer for the healthcare software company Florence. Today I am going to share with you exactly how I taught myself to code and how you can do the same with much less struggle.

Start with the basics and don’t get discouraged

A good starting point in web development is HTML. It is not a programming language, do not make that mistake.

HTML is a markup language used for the positioning of elements on a web page. CSS, inseparable with HTML, is used for web page elements design. They make it possible to create a simple website like this one-page portfolio.

If you are at the beginning of your journey, don’t skip anything even if it seems too simple or easy. The foundation of web development is the most important part.

Many aspiring developers and self-learners make the mistake of bypassing simple elements early on and never recover from it. Even if you’ll never do front end development or UI/UX design you must know HTML and CSS.

Some good courses to consider when learning about HTML and CSS are:

These two courses should provide enough information to begin more complex front-end work. They also act as a crash course to determine if you actually enjoy coding or not.

Programming requires a high level of persistence, discipline and attention to detail. My opinion is that anyone can learn to code and became a good developer. Success is not a matter of capability but rather a matter of character.

To be a programmer you must be a problem solver and you must love the work. It is a challenging job, even more so if you are self-taught.

If you don’t truly fall in love with programming, don’t do it. There are plenty of jobs in tech that are more or less development related but do not require coding (marketing, product development, customer support, etc.).

If you’ve learned some foundational basics and enjoyed it, the journey that follows is even better.

Learning the front end basics

In my experience, the best and the most comprehensive web development resource for self-taught developers is freeCodeCamp. Start with the first chapter Responsive Web Design.

Responsive Web Design is an essential way to start building and posting your personal projects. These posts will be the best reference to future employers about you and your skills. Make sure to host your projects (tribute page, portfolio page, etc.). I found codepen.io to be a convenient hosting option.

Git is a must know, must use, code versioning tool in modern development. As your knowledge grows, try replicating this website template and post it to GitHub.

The Front End Libraries Certification on freeCodeCamp is a great next step. Take the time to work on Front End Libraries Projects in addition to code challenges. Projects are more time consuming but are the best way to learn not only to code but to troubleshoot and find solutions for problems you’re facing.

Quick steps for learning front-end basics:

1. Sign up for freeCodeCamp

2. Work on Responsive Web Design Projects in addition to code challenges

3. Host your projects using codepen.io or other hosting of choice

4. Receive a Responsive Web Design Certification on freeCodeCamp

5. Get familiar with Git

6. Try replicating this website template and post it to GitHub

7. Work on Front End Libraries Projects in addition to code challenges

8. Receive a Front End Libraries Certification on freeCodeCamp

Building data structures and algorithms

Now comes the hardest but the most rewarding part. Things will get more difficult when building data structures and algorithms but don’t get discouraged. When things just click, the feeling is unexplainable. You won.

Begin with the freeCodeCamp’s Javascript Algorithms and Data Structures, which will give you a basic knowledge about this topic through code challenges.

After completing Basic JavaScript and Basic Algorithm Scripting begin with HarvardX CS50 on edX. The first five weeks are relevant and provide the core of computer science with subjects like data structures, algorithms and memory management. In this course, you will learn C programing language, the basis of many programming languages.

Most importantly, make it a priority to understand the problems you’re solving in these challenges. You will inevitably get stuck. My advice is cheat a bit, look up a solution but only use the part that halted you, push through the rest and try solving it on your own.

Quick steps for learning about data structures and algorithms:

1. Work on freeCodeCamp’s Javascript Algorithms and Data Structures code challenges

2. First 5 weeks of HarvardX CS50 on edX

Mastering back end basics

After the first five weeks of CS50 and completing freeCodeCamp’s Javascript Algorithms and Data Structures, take a break from abstractions and begin learning about the server-side programming.

To learn about back end basics, freeCodeCamp’s APIs and Microservices chapter provides information about Node, Express and MongoDB.

After you are comfortable with back-end basics, the comprehensive course Learn Node by Wes Bos is a great next step. It will cover many of the things needed to create a modern web app.

Return to rest of the CS50 and dive into Python. At the end of the course you’ll be required to submit the final project, which will be the biggest challenge yet. For me, it felt like graduation. After completing it, I felt I was ready for anything.

Quick steps for mastering back end basics:

1. Work on APIs and Microservices Projects in addition to code challenges

2. Receive a APIs and Microservices Certification on freeCodeCamp

3. Take comprehensive course Learn Node by Wes Bos

4. Return to and complete remainder of HarvardX CS50 on edX

Finishing a final project

To complete the HarvardX CS50 course you must finish a final project. My project was a web app for storing notes and recipes called Procooking.

Procooking has:

  • User registration and login
  • Functionality to create and delete notes
  • Functionality to add categories that the user can assign to different notes
  • Bar for filtering notes by title or text

App was developed using:

  • Vanilla JS (pure JS without framework/library) on the front end
  • PHP on the back end
  • MySQL to handle data

After developing a web app on your own, you have to deploy it. Deploy it for free using Heroku or something similar.

Quick steps for finishing a final project:

1. Develop your final project for HarvardX CS50

2. Deploy your Web App

Searching for an internship

Now that you have posted your projects on GitHub and deployed your CS50 final project, you have everything you need to create your Portfolio Website and update your LinkedIn page. I used WordPress to create my portfolio (not updated since).

GitHub posts, CS50 final project, a portfolio website, and an updated LinkedIn page will help you land your first programming internship.

Don’t worry about the stuff you don’t know. Focus on what you have learned so far. There will always be something new to learn and hiring managers know that. Completing these courses and projects will show your devotion, motivation, and desire to learn.

As far as internship hunting goes, send your resume and portfolio everywhere you’d like to work regardless of if there is an open position. If a company doesn’t have an open position, you’ll most likely get a polite keeping you in mind if something opens.

To find a job that matches your career goals, have a general idea of what are you looking for in a company in terms of technologies, culture and projects. My preference was to work at a company that develops its own product. That way I could grow as a developer with the product.

Quick steps for searching for a job:

1. Create your Website Portfolio

2. Update LinkedIn

3. Update Resume

4. Send your Resume and Portfolio everywhere you would like to work

5. Find an internship that matches your technology, culture and product wants

My first internship experience

My internship was with a small development team of a US-based healthcare startup. I got the chance to get early exposure to the entire development process by working on a complex product with a small team.

I’m still here as a full-time Software developer, learning and growing together with the company.

In the beginning, everything was a challenge. From a simple environment setup to writing first professional lines of code. My first day was mostly about reading about the technologies and concepts the company is guided by.

Back then each day brought a new challenge. The best advice I can give is to always ask questions. There is no shame in not knowing, we have all been there.

Shortly after starting came my first project to implement a search feature. I was still an intern and it was up to me to work on both design and implementation. Figuring out how to meet business requirements while keeping the feature performant and secure was a great challenge.

The job of a programmer is a never-ending learning process, which is one of the things I like most about it.

Upon successfully completing this project the next challenge came and the next. Each bringing a new set of knowledge and experience.

Some additional courses I found useful during my internship are FrontendMasters, MongoDB University, and 30-day vanilla JS coding challenge.

Never give up on your programming dream

A career switch to programming is not an easy path but the feeling you get when your code finally works is something special.

When you hit a bump, which will happen often, don’t get discouraged, push through it and find the solution. In the end, the feeling of accomplishment is great.

Be brave, never give up and good luck!

--

--