I am a self-taught programmer. After a year of self-study, I learned to program well enough to land a job as a software engineer II at eBay. Once I got there, I realized I was severely under-prepared. I was overwhelmed by the amount of things I needed to know but hadn’t learned yet. My journey learning to program, and my experience at my first job as a software engineer were the inspiration for this book.
This book is not just about learning to program; although you will learn to code. If you want to program professionally, it is not enough to learn to code; that is why, in addition to helping you learn to program, I also cover the rest of the things you need to know to program professionally that classes and books don’t teach you. “The Self-taught Programmer” is a roadmap, a guide to take you from writing your first Python program, to passing your first technical interview. I divided the book into five sections:
1. Learn to program in Python 3 and build your first program.
2. Learn Object-oriented programming and create a powerful Python program to get you hooked.
3. Learn to use tools like Git, Bash, and regular expressions. Then use your new coding skills to build a web scraper.
4. Study Computer Science fundamentals like data structures and algorithms.
5. Finish with best coding practices, tips for working with a team, and advice on landing a programming job.
You CAN learn to program professionally. The path is there. Will you take it?
How This Book is Formatted
The chapters in this book build on one another. If you see something you don’t understand, it might have been covered in a previous chapter. I try not to re-explain concepts, so keep this in mind. Important words are italicized when they are defined. There is a vocabulary section at the end of each chapter where each italicized word is defined.
Technologies Used In This Book
This book teaches certain technologies in order to give you as much practical programming experience as possible. In some cases I had to choose between many different popular technologies. In Chapter 20: “ Version Control ” (for those readers who are unfamiliar with version control, I will explain later), we go over the basics of using Git, a popular version control system. I chose Git because I consider it the industry standard for version control. I use Python for the majority of programming examples because it is a popular first programming language to learn, and it is a very easy language to read, even if you have never used it. There is also a huge demand for Python developers in just about every field. But, I try to be as technology agnostic as possible: focusing on concepts instead of technologies.
In order to follow the examples in this book you will need a computer. You computer has an operating system —a program that is the middleman between the physical components of the computer and you. What you see when you look at your screen is called a graphical user interface or GUI, which is part of by your operating system.
There are three popular operating systems for desktop and laptop computers: Windows , Unix and Linux . Windows is Microsoft’s operating system. Unix is an operating system created in the 1970s. Currently, the most popular Unix operating system is Apple’s OS X. Linux is an open-source operating system used by the majority of the world’s servers . A server is a computer or computer program that performs tasks like hosting a website. Open-source means the software is not owned by a company or individual, instead it is maintained by a group of volunteers. Linux and Unix are both Unix-like operating systems, which means they are very similar. This book assumes you are using a computer running Windows, OS X or Ubuntu (a popular version of Linux ) as your operating system.