The Ultimate Self-Taught Developer Curriculum

Tech With Tim
19 Aug 202217:29

Summary

TLDRThis video script outlines a comprehensive 12-month curriculum for self-taught developers aiming to become software engineers. It suggests starting with determining one's programming interests, then progressing through language fundamentals, object-oriented programming, and problem-solving exercises. As learners advance, the curriculum covers advanced programming concepts, good coding practices, and tools like Git and GitHub. Later stages introduce data structures, algorithms, and potentially a second programming language for a broader perspective. The final months focus on applying knowledge to projects, exploring system design, and continuous practice to refine skills.

Takeaways

  • πŸ“… The video outlines a 12-month curriculum for self-taught developers to become proficient software engineers.
  • πŸ•’ It's recommended to spend 15-20 hours per week learning, with a focus on mastering a list of topics in a specific order.
  • πŸ’‘ The curriculum begins with determining the type of programming you're interested in, which will guide your choice of programming language.
  • πŸ”‘ Fundamental programming concepts such as control flow, data types, and input/output operations are emphasized as the starting point.
  • 🧩 After grasping the basics, object-oriented programming (OOP) principles like classes, inheritance, and polymorphism are introduced.
  • πŸ“š The importance of practicing coding through exercises and problem-solving is stressed to reinforce learning.
  • πŸ’» Advanced programming concepts like memory management, asynchronous programming, and system design are covered in later months.
  • πŸ”— Learning Git and GitHub is recommended to familiarize with version control and collaboration tools used in software development.
  • 🌐 Gaining exposure to different programming languages and their paradigms is suggested to broaden the developer's perspective.
  • πŸ“ˆ The curriculum concludes with studying data structures, algorithms, and potentially system design to prepare for technical interviews and real-world applications.
  • πŸ”— The sponsor, Scalar, is highlighted for offering mentorship and interview career support to help developers crack tech interviews at top companies.

Q & A

  • What is the main focus of the video?

    -The main focus of the video is to share an ultimate self-taught developer curriculum, outlining a list of topics to master and the order in which to learn them to become a software engineer.

  • How is the curriculum structured in terms of time?

    -The curriculum is structured as a 12-month schedule, with recommendations on what to learn each month, assuming the learner has 15 to 20 hours per week to dedicate to learning.

  • What is the first step recommended in the curriculum for a self-taught developer?

    -The first step is to determine what type of programming the learner wants to do, which involves researching different areas within programming to find what interests them.

  • Why is it important to learn the fundamentals of programming before moving on to more complex topics?

    -Learning the fundamentals of programming is crucial as it provides a solid foundation. It ensures that the learner understands basic concepts before tackling more complex topics, which can be discouraging if not grounded in the basics.

  • What does the video suggest about the importance of object-oriented programming (OOP) in the learning process?

    -The video suggests that after mastering the basics of a programming language, the next topic to focus on is object-oriented programming. It is considered a fundamental concept that involves learning about classes, objects, inheritance, and other related topics.

  • How does the curriculum address the need for practice in programming?

    -The curriculum emphasizes the need for practice by recommending that learners work on exercises, problems, and assessments to reinforce the concepts learned and to improve their coding skills.

  • What role does the sponsor Scalar play in the video, and what do they offer?

    -Scalar, the sponsor of the video, is a tech school founded by industry veterans that offers mentorship and dedicated interview career support. They help prepare individuals for technical coding interviews at top companies.

  • What are some advanced programming concepts recommended to be learned in the curriculum?

    -Some advanced programming concepts include decorators, code modularity, command line operations, iterators, generators, asynchronous programming, threading, multiprocessing, and memory management.

  • Why is it suggested to learn another programming language after becoming comfortable with the first one?

    -Learning another programming language provides a broader perspective on programming paradigms and the strengths and weaknesses of different languages, which is valuable for a well-rounded software engineer.

  • How does the curriculum prepare learners for technical interviews?

    -The curriculum prepares learners for technical interviews by covering essential topics like data structures, algorithms, time complexity, and system design, which are commonly assessed in such interviews.

  • What is the significance of understanding operating system level concepts and computer architecture in the curriculum?

    -Understanding operating system level concepts and computer architecture provides a deeper insight into how programs execute and how a computer works, which is beneficial for a software engineer to optimize and understand system-level interactions.

Outlines

00:00

πŸ“š Introduction to the Self-Taught Developer Curriculum

The speaker introduces a comprehensive curriculum designed for individuals who are teaching themselves to become software engineers. They outline a list of topics to master, recommend an order of learning, and provide an approximate timeline for each topic based on a 15-20 hour per week study schedule spread over 12 months. The speaker's experience in teaching programming for six years and their own programming experience for ten years add credibility to the curriculum. They also mention their own programming course available at programmingexpert.io and suggest that viewers who are already familiar with coding to check out the video's sponsor, Scalar, which offers a tech school curriculum and interview preparation for top tech companies.

05:00

πŸ‘¨β€πŸ’» Month-by-Month Curriculum and Early Programming Fundamentals

The speaker breaks down the curriculum into a month-by-month schedule, starting with determining the type of programming one wants to pursue and selecting a programming language. They emphasize the importance of learning programming fundamentals such as data types, control flow, and basic syntax before moving on to object-oriented programming (OOP) concepts like classes, objects, inheritance, and interfaces. The speaker suggests spending the first month or two focusing on these fundamentals and gaining comfort with writing basic code and setting up a development environment.

10:02

πŸ”„ Advanced Programming Concepts and Problem-Solving

After establishing a strong foundation in programming basics and OOP, the speaker advises moving on to advanced programming concepts in month four. This includes topics like decorators, code modularity, command-line operations, and understanding of iterators, generators, asynchronous programming, threading, and memory management. They also recommend learning about computer and operating system-level concepts to deepen the understanding of how programs execute and how computers work. The speaker suggests dedicating months four to six to these advanced topics and starting to work on more complex programming problems.

15:02

πŸ“ˆ Refining Programming Skills and Exploring Specializations

In the later months of the curriculum, the speaker suggests focusing on writing clean and efficient code, understanding good programming habits, and learning from others' code on platforms like GitHub and StackOverflow. They recommend learning version control with Git and getting comfortable with command-line operations. The speaker also advises learning a new programming language to gain perspective on different paradigms and tools. Towards the end of the curriculum, they suggest delving into data structures, algorithms, and computer science theory, and considering exploring areas like system design, design patterns, and specialized fields such as artificial intelligence or data science.

Mindmap

Keywords

πŸ’‘Self-taught developer curriculum

A self-taught developer curriculum refers to a structured learning path designed for individuals to acquire programming and software development skills independently, without formal education. In the video, the speaker outlines a comprehensive 12-month plan covering various topics, from basic programming concepts to advanced computer science theories. This curriculum is intended to guide viewers on what to learn and in what order, assuming a commitment of 15 to 20 hours per week.

πŸ’‘Programming fundamentals

Programming fundamentals are the basic concepts and principles that form the foundation of programming, such as variables, loops, conditionals, and data types. The video emphasizes starting with these fundamentals as the first step in the curriculum, suggesting that understanding these basics is crucial before moving on to more complex topics.

πŸ’‘Object-oriented programming (OOP)

Object-oriented programming is a programming paradigm that uses objects and classes to design applications and improve code reusability and scalability. In the script, OOP is introduced as a topic to focus on during the second month of the curriculum, highlighting the importance of learning about classes, objects, inheritance, and other related concepts.

πŸ’‘Development environment

A development environment refers to the setting, tools, and resources used by developers to write, test, and debug code. The video mentions setting up a development environment as part of the initial learning phase, which is essential for getting comfortable with writing basic code and using essential tools for programming.

πŸ’‘Data structures and algorithms

Data structures and algorithms are fundamental to computer science and software engineering. They involve organizing and manipulating data efficiently and solving problems using step-by-step processes. The video script suggests that after gaining a solid foundation in programming, learners should delve into these topics, which are critical for technical interviews and advanced programming.

πŸ’‘Software engineering tools

Software engineering tools encompass a range of applications and utilities that aid in the software development process, such as version control systems, integrated development environments (IDEs), and debugging tools. The speaker recommends learning these tools as part of the curriculum to enhance productivity and code management skills.

πŸ’‘Git and GitHub

Git is a version control system used for tracking changes in source code during software development, while GitHub is a web-based platform built on Git for version control and collaboration. The video encourages learning Git and GitHub to practice code versioning, collaboration, and to become familiar with the command line.

πŸ’‘Advanced programming concepts

Advanced programming concepts include more complex topics such as decorators, asynchronous programming, memory management, and operating system-level interactions. The video script places these topics in the fourth month of the curriculum, indicating that a solid grasp of these concepts is necessary for deeper understanding and proficiency in programming.

πŸ’‘Problem-solving skills

Problem-solving skills in the context of programming refer to the ability to analyze, reason, and develop solutions to programming challenges. The video emphasizes the importance of these skills, suggesting that practice and experience are key to becoming a great programmer and successfully tackling technical interview questions.

πŸ’‘Technical interview preparation

Technical interview preparation involves learning and practicing the skills and knowledge required to perform well in job interviews for software engineering roles. The video script mentions that mastering data structures, algorithms, and having a strong foundation in programming concepts are essential for cracking tech interviews at top companies.

πŸ’‘System design

System design in the context of the video refers to the process of planning and constructing systems, particularly software systems, to meet desired needs and specifications. It is mentioned as a topic to explore towards the end of the curriculum, suggesting that understanding system design principles is beneficial for more advanced or senior software engineering roles.

Highlights

The video provides a 12-month curriculum for self-taught developers to become software engineers.

The curriculum is designed for learners with 15 to 20 hours per week to dedicate to learning.

The presenter has six years of teaching and ten years of programming experience.

The curriculum includes a focus on problem-solving skills, practice, and guidance.

Scalar, the sponsor, offers a solution to enhance programming skills and prepare for tech interviews.

The first step in month one is to determine the type of programming the learner is interested in.

Learners are advised to start with the fundamentals of programming before building complex applications.

Month two focuses on learning object-oriented programming concepts.

By month three, learners should be comfortable with the basics and start working on projects.

Month four introduces advanced programming concepts such as decorators and memory management.

Learners are encouraged to explore operating system level concepts and how a computer works.

Month seven is about building good programming habits and understanding clean code.

Git and GitHub basics are recommended to be learned in month eight.

Learning a second programming language is suggested in month nine to gain perspective on different paradigms.

Data structures and algorithms are the focus in month ten, preparing learners for technical interviews.

The final months are dedicated to exploring fun projects, system design, and potentially specializing in a niche area.

The video concludes with a reminder that consistent practice is key to improving programming skills.

Transcripts

play00:07

So in this video, I'm going to share with you

play00:10

the ultimate self-taught developer curriculum, which will be a long

play00:13

list of topics that you need to master to become a software engineer.

play00:17

Now, not only will I give you this list,

play00:19

I will tell you the order in which you should learn these topics

play00:21

and approximately how much time I would spend on each

play00:24

assuming you had between 15 to 20 hours per week to learn this stuff.

play00:29

So what I've kind of done is broken this into a 12 month schedule,

play00:32

saying in month one learn this, month two learn this

play00:35

etc. etc..

play00:36

Again, assuming that you have between 15 to 20 hours per week.

play00:39

Obviously this will widely vary depending on your skill level,

play00:42

how naturally this comes to you, if you have more time, less time.

play00:46

I just figured it'd be nice to kind of

play00:47

put it in a one year schedule and give you, you know,

play00:50

where I would hope to be by each month with 15 to 20 hours per week.

play00:55

So just to add a bit of credibility here,

play00:57

I've been teaching programing for about six years.

play00:59

I've been programing myself for about ten.

play01:02

A very good understanding of what it takes

play01:03

to get good at programing and the order in which you should learn specific topics.

play01:07

In fact, I have a programing course programingexpert.io,

play01:09

you can check it out from the link in the description

play01:11

that teaches this exact curriculum pretty much.

play01:14

And lastly, if you already know how to code,

play01:16

you already know a lot of the topics on this list, then what I would recommend

play01:19

you do is check out the sponsor of this video.

play01:22

So what makes a great programmer?

play01:24

Now, you may have thought about

play01:25

this often, but there really is no definitive answer.

play01:28

Now, if you ask me, I'd say good problem solving skills,

play01:31

lots of practice and likely some other guidance.

play01:34

Now, fortunately for us, Scalar, the sponsor of today's video

play01:37

has a solution that can make you a great programmer

play01:40

and help you crack pretty much any tech interview that you can think of.

play01:43

And yes, by that I mean at companies like Microsoft Media and Google.

play01:47

Now, Skyler's a tech school

play01:49

that was founded by industry veterans that worked at top tier tech companies

play01:53

one of them actually worked

play01:54

directly with Mark Zuckerberg in the early days of Facebook

play01:57

and helped to build the Messenger app and other parts of the Facebook platform.

play02:01

Skyler's curriculum is built keeping in mind

play02:03

the needs of tech companies vetted by those who work there currently.

play02:07

And with Scalar, you get mentorship as well as dedicated interview career

play02:10

support to help you along your journey Last year, they helped 2000

play02:14

plus engineers get into top product based companies.

play02:17

Now, mastering

play02:18

problem solving data structures and system design is now only one step away.

play02:23

Give scaler.

play02:23

Try it by clicking the link in the description

play02:25

and enrolling in a free master class

play02:27

where you can learn how to master technical coding rounds at main companies.

play02:31

Thanks to scalar for sponsoring this video.

play02:34

So with all that said, let's dove into the beginning of the curriculum here.

play02:37

We'll start at kind of month one.

play02:38

So on month one,

play02:39

the very first thing you need to do is determine what type of programing

play02:43

you actually want to do.

play02:44

And this may be hard if you've never program before,

play02:47

you need to spend at least a day or two researching kind of different areas

play02:50

within programing and figuring out what interests you and what you want to build.

play02:54

You can always change later on

play02:55

if you find that you're really bored with what you originally chose,

play02:58

but you need a starting point

play02:59

in a programing language that you're going to be learning.

play03:02

So you need to pick, you know, do

play03:03

I want to do I, do I want to do research, do and do data science?

play03:06

Why am I learning to code, first of all? What interests me?

play03:09

What do I want to build?

play03:10

Once you know

play03:11

those things, it's very easy to find languages in the specific domain.

play03:15

For example, if you wanted to be a front end web

play03:16

developer, you'd probably want to learn JavaScript.

play03:18

You want to do more backend stuff, maybe Python, maybe go, maybe Java C++, right?

play03:23

There's a bunch of different options.

play03:24

So that's kind of what you need to figure out first.

play03:26

Now, once you find a programing language that you want to learn,

play03:29

you need to immediately go right to the fundamentals.

play03:32

No building stuff, no creating complex applications.

play03:35

You need to understand what is an F statement, what is A for, what is a value?

play03:39

How do I add numbers together? What are different data types?

play03:42

How do I print something? How do I collect console input?

play03:44

All of the fundamental programing concepts.

play03:47

If you want a full list, you can check out the curriculum.

play03:49

I'm programing expert it's free.

play03:50

You don't have to pay to view the curriculum you can go through in view

play03:53

kind of what I would teach in terms of programing fundamentals.

play03:56

Moving on from there, I would imagine that learning

play03:59

just the fundamental tools of programing, setting up your development environment,

play04:02

kind of getting comfortable writing basic code would take you about a month.

play04:06

If you're putting in 15, 20 hours per week to really get good at it,

play04:10

to really understand what's going on.

play04:12

That's how long I think it would take the average person.

play04:15

Again, some people may be much faster than that.

play04:17

So once you've done that,

play04:19

what I would recommend is trying to do some type of exercises,

play04:21

trying to do some type of problems,

play04:23

going through assessments, going through practice questions,

play04:25

whatever is going to help you practice and actually be writing code

play04:28

and learning this skill.

play04:30

You need to do that because it's not enough to just watch the video.

play04:32

You have to really understand the fundamentals

play04:35

before you can go any further.

play04:36

So after you nail down the fundamentals here, the next topic, which is still kind

play04:40

of considered fundamentals in my book, would be object oriented programing.

play04:43

So you're kind of starting month two here.

play04:45

The next thing I would focus on learning is object oriented programing.

play04:49

Now, this is definitely more complicated than the fundamentals,

play04:51

and it may not even be necessarily offered in the programing language

play04:54

that you're working in,

play04:55

but you still need to learn kind of the paradigms of that

play04:57

and all the different topics within for example,

play05:00

you need to learn about classes and objects,

play05:02

you need to learn about attributes, need to learn about methods.

play05:05

You're going to have to learn about inheritance, about abstract classes,

play05:08

interfaces, based classes, you know, all these different things.

play05:11

Right?

play05:11

There's a lot of topics within object oriented programing.

play05:14

Again, if you want a full list, you can go to something

play05:16

like programing expert and you can see kind of the curriculum Again,

play05:19

that's for you don't have to pay to see that.

play05:21

It's not what I would do in kind of month to learn object oriented programing

play05:24

and then really start working on maybe some larger projects.

play05:28

And I say large, nothing massive.

play05:29

But where you're writing a few classes, you're having classes and objects interact

play05:33

with each other.

play05:33

You need to practice all of this stuff and do it in some type of format

play05:37

where you're actually writing a program.

play05:39

You know, you're doing stuff on your own,

play05:41

maybe you're referencing solutions or StackOverflow, that's fine.

play05:44

But you still need to be trying to create a majority of this program by yourself.

play05:48

And kind of struggling before you just dove in to the answer book.

play05:52

So that is what I would do in kind of a month.

play05:53

And moving on to month three here, at this point in time,

play05:56

you should be very comfortable with program.

play05:57

You should know how to solve basic problems.

play05:59

You should have the fundamentals down,

play06:01

and hopefully you've memorized a lot of the basic syntax.

play06:04

Like you don't need to refer to maybe some base code

play06:07

or something like that all the time to actually get anything done.

play06:10

At this point, I would really, really start working on some type of project,

play06:14

some type of exercises and just continuing to practice these skills.

play06:18

These are things that it doesn't matter what programing language you work in,

play06:21

you're going to have to know and you're going to have to be very, very good.

play06:23

So personally, I would commit probably a month

play06:25

to just going through different exercises going through different problems

play06:29

and really testing myself and making sure I understood

play06:31

all of the concepts very, very well before going any further.

play06:35

Because if you try to jump further without knowing it

play06:37

it's going to be very discouraging because stuff gets even more complicated, right?

play06:41

In kind of the next month that I'm going to go through.

play06:43

So it's kind of month one, two, three.

play06:45

Make sure you learn the basics, the fundamentals,

play06:47

of a programing language,

play06:48

object oriented programing, and then you do a ton of exercises

play06:51

and a ton of practice.

play06:52

Then you can move on to month four.

play06:54

All right.

play06:54

So moving on to month four here again, at this point,

play06:57

you should have a very solid understanding of the basic programing.

play07:00

Concepts should be comfortable

play07:01

writing code and ready to kind of move on to a new topic and learn something new.

play07:05

Now, this is where I'm going to recommend that you start diving into advanced

play07:08

programing concepts.

play07:10

Some people may disagree with me here, but I think it's a good idea

play07:12

to really nail everything programing before you dove into stuff like software

play07:16

engineering tools and more kind of, you know, add ons to programing.

play07:20

That's what I'll call them.

play07:21

So in month four, I would start looking at advanced programing concepts.

play07:24

Now, some of those concepts would be things like decorators splitting your code

play07:28

into different modules and different packages, learning how to run your code

play07:31

from the command line, how to compile code manually, stuff like that is important.

play07:35

Next, I would learn stuff like iterator generators, understand

play07:39

some kind of underlying concepts in the programing language

play07:42

that maybe you've been taking advantage of,

play07:43

but you didn't really understand how they worked.

play07:46

I would learn about asynchronous programing.

play07:48

I would learn about threading and multiprocessing.

play07:50

I would start looking into

play07:51

memory management, understanding stuff like pointers versus references.

play07:55

You may have learned that earlier.

play07:56

Hopefully you did, but if you've not already at this point,

play07:59

then I would try to learn topics like that,

play08:01

especially if you're in a dynamically typed programing language.

play08:04

You probably want to start looking at some constructs,

play08:06

maybe a little bit outside of that

play08:08

and just kind of exploring, you know, how do other programing languages work?

play08:12

Not just the main language that I meant continuing here.

play08:15

I would learn about some operating system

play08:17

level concepts, which is kind of what I was discussing.

play08:19

Like, how does a CPU actually work?

play08:21

What is a CPU?

play08:22

What's a core versus what is a thread?

play08:25

What does it actually mean to run my program?

play08:27

What's happening on the computer?

play08:29

How what is binary?

play08:30

Right, stuff like that you don't need to be a master at,

play08:32

but I think you should have some perspective

play08:34

on as a programmer or someone who wants to become a software engineer.

play08:38

So that's what I would do in kind of month for probably month five

play08:41

and six, as well as just get comfortable with these more advanced topics.

play08:45

Try to dig into how a computer works, how do programs actually work,

play08:49

how are they being executed?

play08:50

What is a file, what is source code, what is bytecode?

play08:53

Those are things you want to understand next.

play08:55

Once you've done that in this kind of,

play08:57

I guess, four to six month period here, your month for two months, six.

play09:00

What I would do is work on harder programing problems, right?

play09:04

Maybe at this point you go to

play09:05

something like leak code or algal expert, you start just trying

play09:08

maybe some of the easy and medium problems and seeing, okay, how do I deal with,

play09:12

you know, problems I've never seen before?

play09:14

Stuff that's completely new.

play09:15

What is my problem solving skill?

play09:17

Like, not just pure kind of coding and I guess regurgitating stuff

play09:21

that you've already learned.

play09:22

How do I look at a unique problem and use code to solve it?

play09:25

That's a skill set that's always going to be important

play09:27

and that at this point I think you start diving into.

play09:30

So that's kind of what I have from month four to six.

play09:32

Learn advanced programing concepts, learn operating system level concepts,

play09:36

learn threading multiprocessing,

play09:37

how a computer works, what is a CPU, what is a thread, what is a core?

play09:41

And then work on some more

play09:43

advanced problems and more difficult ones and then move on to month seven.

play09:46

All right.

play09:47

So at this point here, you've been programing

play09:48

for about half a year approximately, if you're following the schedule, right?

play09:52

And you should have learned a lot of stuff, right?

play09:54

You have a lot of knowledge in your head.

play09:55

It's a lot of new stuff.

play09:57

Hopefully you've been applying it along the way and you've done

play09:59

a lot of practice problems and you're getting good at that.

play10:02

Now is where I I think you need to start looking into what is good program.

play10:06

What does it mean to write a good program?

play10:09

What are good programing, habits? What is clean code?

play10:12

How do I not just solve the problem, but how do I solved in a more optimal way?

play10:16

How do I make my code easier for other people

play10:18

to read, easier for other people to add to, etc.?

play10:22

This is when I think you start getting into building good programing habits

play10:25

and also reading a lot of other people's code,

play10:27

going to GitHub, going to StackOverflow, and just maybe spending an hour or so

play10:32

whenever you want to do this, looking through some production level code,

play10:35

understanding how code bases are kind of laid out, how do they organize code?

play10:39

What happens when I have, you know, 10,000 code files?

play10:42

How do those kind of get laid out?

play10:43

Where do I put those? Again, you're not going to be a master at this.

play10:46

Need to probably learn this on a job, but this is something that I would start

play10:49

trying to learn good programing habits, learn

play10:53

what is clean code, what is good code, how do I write this in a more optimal way?

play10:57

There's a lot of patterns you can learn that are like that.

play10:59

And again, reading and kind of reviewing a lot of other people's code.

play11:03

Now continuing here,

play11:04

another thing I would do is I would start learning Git and GitHub,

play11:07

just the basics, nothing crazy, but I would start practicing committing

play11:11

everything that I read in terms of code to my GitHub repository.

play11:14

I would start seeing, Okay, you know what happens if I have a conflict?

play11:17

What is a branch?

play11:18

I'll start learning these basic GitHub kind of terms

play11:21

and getting comfortable using the command line.

play11:23

How do I copy a file? How do I move a file?

play11:26

Maybe you don't always have to touch your mouse.

play11:28

Now you can do a lot of stuff with commands that you know,

play11:31

like Bash commands, Windows commands, you know, Mac commands, terminal commands,

play11:34

whatever you want to learn.

play11:35

But I would get, you know, familiar with some of those commands and understand

play11:39

some of these software engineering tools, which is what I call them.

play11:42

All right, so now we're moving on to month eight.

play11:44

At this point, you should be good at programing.

play11:45

You should know the basics of getting GitHub.

play11:47

Maybe you have some bash commands under your belt.

play11:49

You're starting to understand

play11:51

what is clean code, what is good code, how do I write better code?

play11:54

How do I not just solve the problem?

play11:55

How do I solve the problem?

play11:57

Well, now this is the point where I think you need to jump into

play12:01

another programing language.

play12:02

You don't need to become a master. You don't need to be an absolute pro.

play12:05

But I think you should study and look at another language

play12:08

and ideally one that is different than the programing language

play12:10

then you currently know.

play12:12

What I mean by that is pick something that is fairly different.

play12:14

Maybe you go from a dynamically typed language to a statically typed language.

play12:18

You go from something

play12:20

that's a very high level language and maybe a lower level language.

play12:22

Maybe you try learning something like C++ or C, something that's considered harder

play12:26

than maybe a Python or a JavaScript.

play12:29

This is going to give you a really good perspective

play12:30

for different kind of programing paradigms,

play12:33

the way that different programing languages work, and the fact

play12:36

that there's always the best tool for the job right?

play12:39

When you have two different programing languages,

play12:41

one is not better than the other, but one is better at something than the other.

play12:44

One is just like the other.

play12:45

One has its pros and has its cons or places

play12:48

where you would use it in places where you wouldn't use it.

play12:50

And that's an important perspective to build and learning another

play12:53

programing language is always something very, very valuable,

play12:56

especially because a lot of the stuff you already know is going to carry over.

play13:00

Then you're going to learn about a little nuances, tweaks, and,

play13:03

you know, maybe this one's faster or slower. You're going to just discover

play13:06

a lot of things by jumping into another language.

play13:08

So that's what I would do here. No need to be master.

play13:11

So that's what I would focus on. Another programing language.

play13:13

All right, so now we're nearing kind of the end of the journey here.

play13:15

You've been programing for a long time.

play13:17

Hopefully you're getting good hopefully the basics are now kind of nailed down.

play13:20

You know, everything.

play13:21

That's totally fine.

play13:22

You feel comfortable solving most problems

play13:24

in the programing language that you originally chose.

play13:26

You've just learned another one.

play13:27

You know, you've got some basics and not now.

play13:30

Unfortunately, it's time to learn

play13:31

some of the hard stuff that everyone hates learning now is the reason I left this

play13:35

till the end, because this is a fairly discouraging section for a lot of people.

play13:39

But this is what I would start

play13:40

looking into the dreaded data structures and algorithms.

play13:43

I would also start potentially looking at mathematics related to programing,

play13:47

maybe just getting some perspective of what

play13:50

like a proof looks like for an algorithm,

play13:52

looking at something like discrete mathematics or linear algebra.

play13:56

You don't have to do that.

play13:56

I'm just saying maybe that's something you want to just take a look at.

play13:59

Have an appreciation for how complex some computer science proofs

play14:03

and topics can really be.

play14:05

I would also maybe start considering looking into computer architecture

play14:08

that's, you know, what is it?

play14:09

Transistor, what are different gates?

play14:11

What's an end gate or gate nor gate?

play14:13

How is, you know, a CPU design, stuff like that?

play14:17

Again, you don't need to do this, but that's something

play14:19

that I would have learned at my computer science degree

play14:21

and that I'm very thankful that I did learn.

play14:22

So I'm kind of just recommending it here.

play14:24

But overall, you're going to be wanting

play14:25

to look at a lot more theory related to computer science.

play14:28

So data structures and algorithms,

play14:30

time complex, the big O notation, big theta, big Omega,

play14:34

how you determine the running time of an algorithm how you write

play14:37

specific algorithms,

play14:39

sorting algorithms, searching algorithms, what is a heap, what is a binary tree?

play14:43

What is a big tree?

play14:44

There's a lot of stuff like that that will come up in an interview scenario.

play14:47

So if you're trying to prepare for a technical interview,

play14:50

this is something you're going

play14:51

to have to kind of already know before going into that.

play14:54

So I would spend two months probably on this type of stuff, right?

play14:58

A month, nine to ten, I guess.

play15:00

And then I would move on to next up.

play15:02

All right, so let's say an hour on month 11 or 12.

play15:04

I can't really keep track of exactly what I've said at this point.

play15:07

Let's say you're near the end of your journey.

play15:08

All right. You did the data structures and algorithms.

play15:10

You have the foundation in that.

play15:12

Maybe you dabbled in a little bit of math.

play15:14

You looked at some computer architecture.

play15:16

Now is the point where I would start looking at maybe some more fun stuff.

play15:19

Maybe you would look at some modules

play15:21

and packages, like maybe if you're working in Python,

play15:23

you start creating a website with Python,

play15:25

or you start kind of applying your knowledge into building something

play15:28

that's fun, that's cool, a project that you want to work on

play15:31

and that you could maybe continue over a month or two months

play15:33

and then maybe you're going to add your resume or something like that, right?

play15:36

So dabbling into that kind of stuff.

play15:38

So external packages, external modules, stuff

play15:41

that's been built for you to build with others in that.

play15:44

I would also start potentially looking at something like system design.

play15:47

Now, this is something that you would

play15:48

really not do until you're like a senior software engineer,

play15:51

but it's never a bad idea to get, again, a very minimal perspective of all of these

play15:55

different topics, just so that if you ever were asked about something like this,

play15:59

you'd at least have some idea what the what the question was.

play16:02

Right?

play16:03

So when I say system design,

play16:04

maybe you start thinking about, hey, you know, I know how to code now

play16:07

how the heck did they make something like Netflix?

play16:10

What is involved in that in terms of like a dev ops thing?

play16:13

How many servers do they have how optimized is their delivery mechanism

play16:17

have to be? How are they serving content that quickly?

play16:19

Maybe that's something

play16:20

you just want to look into for a few days and kind of research a little bit

play16:23

other than that, you can start learning about some design patterns so you know,

play16:27

common ways to kind of structure programs and start looking into

play16:30

maybe some specific things within your programing.

play16:34

Niche that you're into.

play16:35

Maybe you're really into

play16:35

artificial intelligence, maybe you're really into data science stuff.

play16:38

Maybe you start learning some specific tools within that area

play16:42

and kind of getting a bit of a specialty, if that makes sense.

play16:46

That's what I would do here.

play16:47

And then of course, always be practicing.

play16:49

That's really how you're going to get better.

play16:51

So I think with that said, it's going to wrap up this video again.

play16:54

All of this pretty much with the exception of a few topics,

play16:57

especially like in the later sections is taught.

play17:00

I'm programing expert.

play17:01

I don't want this to just come across as a huge add for that product.

play17:03

But I designed that with pretty much all of what I just described in

play17:07

mind for you to be the best possible place to learn how to code.

play17:11

So if you're interested, check it out from the LinkedIn description.

play17:13

Use discount code. Tim, I hope you enjoyed the video.

play17:15

If you did leave it like good luck in your programing journey.

play17:19

I'll see you in the next one.

Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
Self-TaughtCoding CurriculumSoftware EngineeringProgramming SkillsWeb DevelopmentLearning PathDeveloper JourneyTech InterviewCode MasteryGitHub Tutorial