1% a day: Learning to code
Tags: codenewbie, todayilearned, react, computerscience
Published: 2021-08-03 05:40:25

What really is coding, and why is it such a hot topic nowadays? For those who are already seasoned developers, this question might sound like I’m writing a Scratch tutorial. However, since this article is aimed at those who need a non-technical introduction without large and confusing words thrown around, it will very much feel like a Scratch tutorial. This turned out to be a longer blog than I hoped for, but follow along anyways you might learn a thing or two.

Coding is the practice of writing software to program a computer to carry out tasks. These tasks can be simple calculations, or even cars that can actually drive themselves. There’s a lot that goes into developing a working program. As the developer, you’ll need to know at least the basics of how programs work to build simple programs. There’s usually two types of developers. They either focus on the __frontend__ (user interface) and __backend__ (APIs, servers, and databases).

Let's take a look at frontend development first. A frontend developer builds the user interface which is everything the user sees and interacts with. Inlcuding buttons, forms, content like this article, and the overall design and feel. Frontend developers use frameworks like Angular and libraries like React, Tailwind, and Bootstrap to build complex frontends quickly. You'll need to learn HTML, CSS, and Javascript before you can dive into the many frameworks and libraries. A frontend developer focuses on making a program easy to use, well designed, and scalable. This is called UX/UI. If you're the frontend developer, your programs need to look great but most importantly be easy to use.

Now the backend is different. Backend developers build the backbones of a program that users don't see or pay attention to. After all, how many times have you wondered what API calls are being made or what database a website uses? Backend developers build the APIs, servers, and databases. An API allows two programs to interact and share data, sort of like a bridge or middleman. A server is used to fetch and prepare data and send it to the frontend or to a database. And finally, the database. We all know what it is. It's where large sets of information is stored to be quickly accessesed and organized. As a backend developer, this is what you will be building.

You might be wondering what do you need to learn to become a frontend or backend developer? Well the answer is, it just depends. Web development requires different skills than mobile development. Here's a short starter list of the things you'll need to learn.

__Frontend development:__ HTML, CSS, JavaScript (including ES6, objects, and DOM), Bootstrap or Tailwind, and finally React, Angular, or Vue.

__Backend development:__ Intermediate JavaScript (on topics such as destructuring etc), NodeJS, ExpressJS, SQL, MongoDB or MySQL (or any other database), Git, and Authentication. There are other languages you can use other than JavaScript & NodeJS. For example, you can use Java & Spring, Ruby & Rails, Python & Django, or C# and .NET. I'll save you trouble and tell you now that the only difference between them is what your needs are. 

__Mobile development:__ Swift for iOS, Kotlin for Android, Flutter or React Native for cross platform apps, APIs, and databases.

Now that you know what the different types of routes you can take to learn the type of development you want, and know what to learn, let me give you some advice.

#1: You can't learn it all in one day. 
There's a ton of courses, free on youtube and paid on other platforms. The courses are also very broad and cover a lot of different topics, from basic introductions to complex theory. I struggled with information overload when I was learning. There was just too much to learn and too many different opinions on things. It felt overwhelming and it could easily slow your journey down by an insane amount of time. What I did to avoid this was I picked a course, and stuck with it no matter how boring or how many cool tools I find that I want to learn. I also avoided learning unnecessary stuff. I didn't jump into React without completing the Javascript section including the projects. If I needed some extra clarification on a topic, I'd do very minimal research. 

#2: Tutorial hell.
Every developer I've met has been in tutorial hell and you will too eventually. It's when you're going from one course to another and another and another and fall into a loop. A plateau I call it. The key is to stick to learning the things you only need to learn. Such as the topics I've categorized development into above. Learning these topics can help you land a job if you stick to it. Focus on the things you absolutely need to learn, then build small projects on your own. If you get stuck, google the problem. You'll most likely find the answer on StackOverflow. If you can't, maybe watch a small video explaining how to do what exactly it is you're trying to do. Then move on with your studies and repeat the cycle. Whenever you learn something new, include it in your old projects or build something new. That's what helped me.

#3: Set a realistic timeframe.
You wont be able to learn to code, land a remote job, and work from the beach all in 3-6 months. It might take you 6 months to land a job just after completing your courses and projects. Putting a timer on your head will just make you rush and not absorb the concepts, make you feel like you're running out of time, and will definitely burn you out. Take your time learning these skills and enjoy the process. The tech industry is probably one of the few industries that require lifelong learning. A doctor at the age of 60 is considered very experienced, but a developer at 60 would be considered very outdated if they’ve both never learnt anything only within the last few years. There's a quote by Warren Buffet that I like that goes, "No matter how great the talent or efforts, some things just take time. You can't produce a baby in one month by getting nine women pregnant." He's right, you just can't!

When I was starting my journey, HTML and CSS we're pretty easy. Then I got overwhelmed with Javascript. I've even quit a few times before jumping back into my courses again. The key is practice and discipline. You can't count on motivation because there are days when motiviation isn't there to pick you up. You've got to stay disciplined. The more you learn, the easier it gets. It took me 5 months to learn Javascript, then it took me 3 days to learn Swift, then it took me 8 hours to get comfortable with Python and build things. I've even struggled with programming logic where I would know how an API is built, but I could't do it right. Eventually it all clicked without me even knowing. If you invest the time, energy, and effort, I guarantee you that you can learn to code. I say software developers are similar to authors because as good as an author you might be, you can't write a book in a day. And as good as a developer you might be, you can't build an app in a day. Take it one line of code at a time. Improving 1% a day.

Here's a list of resources to get you started. I'll list channels, free courses, and paid courses below. Note: I don't get paid to use these links and I'm not affiliated in any way.

#Web dev:
**Paid**
- [Angela Yu's web dev course Udemy](https://www.udemy.com/course/the-complete-web-development-bootcamp/)
- [Brad Traversy's Javascript course on Udemy](https://www.udemy.com/course/modern-javascript-from-the-beginning/)
- [Colt Steele's web dev bootcamp Udemy](https://www.udemy.com/course/the-web-developer-bootcamp/)
- [Treehouse web dev courses](https://teamtreehouse.com/library)
- [CodeWithMosh's paid courses](https://codewithmosh.com/courses)
- [Codecademy](https://www.codecademy.com/catalog)

**Free**
-[FreeCodeCamp's Youtube channel](https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ)
-[FreeCodeCamp's website](https://www.freecodecamp.org/)
-[CodeWithMosh's free Youtube videos](https://www.youtube.com/user/programmingwithmosh)
-[NetNinja on Youtube](https://www.youtube.com/channel/UCW5YeuERMmlnqo4oq8vwUpg)
-[WebDevSimplified](https://www.youtube.com/channel/UCFbNIlppjAuEX4znoulh0Cw)
-[Brad Traversy's free Youtube](https://www.youtube.com/user/TechGuyWeb)


There are a ton of other courses out there. You just have to find the instructors that you enjoy learning from the most. If you liked this article, leave a like or comment. If you see a typo or something just message me. Keep an eye out for my next blog about React __*(Explaining React to a 5 year old)*__. Thanks for reading