Читать книгу The Self-Taught Computer Scientist - Cory Althoff - Страница 8

What You Will Learn

Оглавление

While my first book, The Self-Taught Programmer, introduces programming and the skills you need to learn to program professionally, this book is an introduction to computer science. Specifically, it is an introduction to data structures and algorithms. Computer science is the study of computers and how they work. When you go to college to become a software engineer, you don't major in programming; you major in computer science. Computer science students study math, computer architecture, compilers, operating systems, data structures and algorithms, network programming, and more.

Each of these topics is the subject of many very long books, and covering them all is way beyond the scope of this book. Computer science is a massive subject. You can study it your entire life and still have more to learn. This book does not aim to cover everything you would learn about if you went to school to get a computer science degree. Instead, my goal is to give you an introduction to some of the essential concepts in computer science so that you will excel in different situations as a self-taught programmer.

As a self-taught programmer, the two most important subjects for you to understand are data structures and algorithms, which is why I decided to focus this book on them. I divided this book into two parts. Part I is an introduction to algorithms. You will learn what an algorithm is and what makes one better than another, and you will learn different algorithms such as linear and binary search. Part II is an introduction to data structures. You will learn what a data structure is and study arrays, linked lists, stacks, queues, hash tables, binary trees, binary heaps, and graphs. Then, I wrap up by covering what to do once you've finished this book, including the next steps you can take and other resources to help you on your journey learning to program.

In my previous book, I explained how it doesn't make sense to study computer science before you learn to program. That doesn't mean you can ignore it, though. You have to study computer science if you want to become a successful programmer. It is as simple as this: if you don't understand computer science, you will not get hired. Almost every company that employs programmers makes them pass a technical interview as part of the application process, and technical interviews all focus on the same subject: computer science. Specifically, they focus on data structures and algorithms. To get hired at Facebook, Google, Airbnb, and all of today's hottest companies, big and small alike, you have to pass a technical interview focusing on data structures and algorithms. If you don't have a depth of knowledge in these two subjects, you will get crushed in your technical interviews. A technical interview is not something you can wing. Your potential employer will ask you detailed questions about data structures, algorithms, and more, and you better know the answers if you want to get hired.

On top of that, when you get hired for your first job, your employer and co-workers will expect you to know computer science basics. If they have to explain to you why an O(n**3) algorithm is not a good solution, they won't be happy with you. That is the situation I found myself in when I got my first programming job at eBay. I was on a team with incredibly talented programmers from Stanford, Berkley, and Cal Tech. They all had a deep understanding of computer science, and I felt insecure and out of place. As a self-taught programmer, studying computer science will help you avoid this fate.

Furthermore, studying data structures and algorithms will make you a better programmer. Feedback loops are the key to mastering a skill. A feedback loop is when you practice a skill and get immediate feedback on whether you did a good job. When you are practicing programming, there is no feedback loop. For example, if you create a website, the website may work, but your code could be horrible. There is no feedback loop to tell you if your code is any good or not. When you are studying algorithms, however, that is not the case. There are many famous computer science algorithms, which means you can write code to solve a problem, compare your result to the existing algorithm, and instantly know whether you wrote a decent solution. Practicing with a positive feedback loop like this will improve your coding skills.

The biggest mistake I made as a new self-taught programmer attempting to break into the software industry was not spending enough time studying data structures and algorithms. If I had spent more time studying them, my journey would have been much more manageable. You don't have to make that mistake!

As I mentioned, computer science is a massive subject. There is a reason why computer science students spend four years studying it: there is a lot to learn. You may not have four years to spend studying computer science. Fortunately, you don't have to. This book covers many of the most important things you need to know to have a successful career as a software engineer. Reading this book will not replace a four-year computer science degree. However, if you read this book and practice the examples, you will have a solid foundation for passing a technical interview. You will start feeling comfortable on a team of computer science majors, and you will also significantly improve as a programmer.

The Self-Taught Computer Scientist

Подняться наверх