How I would approach programming
This article will provide a general learning path for someone that has no experience in programming or computer science, it won’t be like watch video 30 in that tutorial series on that channel, but I will provide some resources at the end so you can get started.
Just as disclaimer I myself am still a long way form being a guru in computer science, I started one year ago and don’t know everything there is to know (shocker!) but this is from my experience since I was very successful in my learning journey.
Before we start
First of all congrats on deciding to jump into computer science, it’s a daunting and intimidating field to learn and master so good job and keep it up.
Before we get into steps I want to say that this won’t be easy if you have no prior knowledge of CS or programming, there is a reason why it has a reputation of being hard and why are jobs so high paying. A lot of people feel overwhelmed at first and give up thinking they’re not smart enough. It is hard but not for the reason you think. You’ll probably feel overwhelmed at first as I did as did everyone, that’s because there is just so much things to learn and new concepts just jump from nowhere all the time. Just don’t give up, it’ll take time but it’s not complicated and you don’t need a degree in mathematics to code.
1. CS Terminology
Before you get into code you should get familiar with Computer Science terminology. This post covers everything you need and then some. It’s written so that anyone can understand it even if you never used a computer before. Just wrap your head around those definitions and you’re off to a good start.
2. Basic logic
If you know math, great you can skip this step if you want. If you don’t no worries you don’t need math to code, as I said previously, but knowing basic logical statements is, in my opinion, a requirement. It’s way easier than math and propositional logic is a building block of programming.
https://www.youtube.com/watch?v=s16xd9XyDnY
I recommend this video.
3. Choose a programming language
Let’s get this straight – IT DOESN’T MATTER WHAT PROGRAMMING LANGUAGE YOU START WITH.
When you learn the basics in one programming language transitioning to another one is one day learning the new syntax.
That said I wouldn’t recommend starting with C++.
Believe me, just don’t, I know from personal experience.
One I would recommend to start with is Python because it’s easy to read, highly abstracted and one of the most used languages in the industry. Just download it from the official website and you’re set. Get a book or go to YouTube and search Python Introduction, I recommend Tech with Tim channel. Focus on understanding core concepts like variables, data types, conditionals, operators, loops, functions eventually making your way to object-oriented programming. When you know these things you can pretty much learn any other programming language that you want.
What you learn depends on what you want to do later with programming. If you have an idea or a path you’re following here are some suggestions:
- Front-End development – Java Script
- Web/Software development – Java, Java Script, Python
- Game development – C++, C#
- Android development – Java
- IOS development – Swift
- Data science – Python
- Artificial Intelligence – Python
4. Git/GitHub
Git is something called source or version control system. It is basically iCloud for your code. GitHub is hosting platform for version control and collaboration. That’s the place where you store your code,
5. Start a Project
By far the best way to improve after you handled the basics. It’s not enough to know how to write code, you have to be a problem solver. That is what making a small personal project is going to teach you. Search online for some beginner projects like a blog site or tic tac toe. You will encounter errors and that’s great, learn to search online and find solutions, if the problem you have ever happened to anyone else it’ll probably be on stackoverflow.com. This is the main skill that you need as a programmer, learning code syntax and what’s a function or how to create a class is easy. The challenge is solving problems when they accrue and hand-held tutorials won’t provide that.
6. More advanced topics
When you decided what you want to do and have a language that you’re sufficient in with a few projects on GitHub you probably know how to continue your journey but here is a checklist of things a programmer should learn as a base after the basics.
Data Structures and Algorithms • Big O Notation • Data Structures • Arrays • Stacks, Queues, Priority Queue • Linked Lists • Hash-Tables • Trees • Heaps • Graphs & Graph Theory • Sets & Set Theory •Algorithm Design & Analysis
Design • UML Modeling • Design Principles • Design Patterns
Tools • Git/Version Control • Linux Commands • IDEs
Databases • SQL • Database Design
Web dev • HTTP • API’s & JSON • Client-Server Model • Networking
Now here are some resources that helped me learn:
stackoverflow.com – a MUST
Beginner
- codecademy.com
- techwithtim.net and https://www.youtube.com/channel/UC4JX40jDee_tINbkjycV4Sg – has some advanced topics but great beginner content
Web development
Game Development
Algorithms
Course on Algorithms and Data Structures
Artificial Intelligence