The Self-Taught Computer Scientist. Cory Althoff

The Self-Taught Computer Scientist - Cory Althoff


Скачать книгу
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.

      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!

      So I've convinced you that self-taught programmers can program professionally and that you need to study computer science, especially data structures and algorithms. But does that mean you can't read this book unless you are learning to program outside of school? Of course not! Everyone is welcome in the self-taught community! My first book was surprisingly popular with college students. A few college professors even contacted me and told me they were teaching their programming classes using my book.

      College students studying computer science often ask me if they should drop out. My goal is to inspire as many people to learn to program as possible. That means letting people know it is possible to program professionally without a degree in computer science. If you are already in school studying computer science, that works too, and no, you should not drop out. Stay in school, kids! Even if you are in school, you can still be part of the self-taught community by applying our “always be learning” mindset to your schoolwork and going above and beyond to learn even more than your professors teach you.

      So how do you know if you are ready to study computer science? Easy. If you already know how to program, you are ready! I wrote this book for anyone who wants to learn more about computer science. Whether you are reading this book to fill in the gaps in your knowledge, prepare for a technical interview, feel knowledgeable at your job, or become a better programmer, I wrote this book for you.

      I got hired as a software engineer without a degree, and I hear new success stories from self-taught programmers every day. As a self-taught programmer, you absolutely can have a successful career as a software engineer without a degree. I know this can be a sticking point for some people, so before we dive into computer science, I want to share a few self-taught programmer success stories from my Facebook group.

      Matt Munson

       It all started when I lost my job at Fintech. To make ends meet, I started working odd jobs: cutting lenses for glasses, fixing and tuning cars, working as a carnie, and doing small side programming projects. Despite my best efforts, after a few months, I lost my apartment. This is the story of how I escaped homelessness by becoming a programmer.

      When I lost my job, I was enrolled in school. After I lost my house, I kept doing schoolwork out of my car and tent for a couple of months. My family wasn't able to help me. They didn't understand minimum wage jobs don't pay anywhere near enough to feed one person and keep gas in the tank while keeping a roof over your head. Nonetheless, I was still unwilling to reach out to my friends for help. In September, I sold my truck, cashed what I had left in a 401(k), and drove the 1,800 or so miles from my hometown in Helena, Montana, to take my chances in Austin, Texas.

       Within a week, I had two or three interviews, but no companies wanted to take a chance on a homeless guy, skilled or not. After a few months of this, I had friends and strangers donating to my GoFundMe to try to help me get back on my feet. At this point, I was eating about once a day, seldom anything good, in any sense of the word. My only shot at getting out of this situation was becoming a programmer.

       Finally, I decided to do one last push. I sent out my résumé en masse to any job I remotely had a chance of being qualified


Скачать книгу