Coding Essentials Guidebook for Developers: Preface & Introduction
This post is a free chapter extract from the Coding Essentials Guidebook for Developers. If you get value out of it, support us by purchasing it here. Subscribe with your email address if you'd like to stay up to date with new content from Initial Commit.
If you picked up this book, you have probably been curious about learning to code for some time. But it's one thing to tell yourself to start learning something and another thing altogether to actually start doing it. It doesn't help that the terms "software development", "programming", and "coding" can sound pretty intimidating. The word code suggests a degree of secrecy. It implies a language that a select few speak while most remain ignorant. "Software development" and "programming" can sound dense and inaccessible. In fact, these three terms - software development, programming, coding - all generally mean one thing: "Making a computer do something for you." That's better - not so scary after all.
My personal story with learning to code is far from unique. I am a mostly self-taught programmer who started coding as a hobby. I don't have a computer science degree. My interest was piqued by creating rudimentary video games as a young teen. Years of learning from books, summer camps, online tutorials, and a couple of college courses bolstered that interest. Now I call it a job. Throughout my journey, I have gained insight into some of the key topics that define this field. In hindsight, these are now clear to me. But it can be extremely hard for beginners to know which topics to start learning and how to go about learning them.
Most programming books cover a single topic in depth - usually a specific programming language or tool. This is fine and dandy, but it can overload a beginner with information. Reading an entire book per topic also takes ages and the content is usually fairly dry, which can make learning slow and painful. I've found that learning in this way also leaves large gaps in understanding of how the different pieces of the puzzle fit together.
The purpose of this book is to teach you a condensed version of the essential topics you'll need to know as a software developer and to connect the dots between them. This book is by no means an exhaustive guide to this material, but the information it provides will arm you with the knowledge and confidence to contribute to existing software projects or even to start one of your own. Understanding this material will also dramatically speed up the learning curve of other programming languages, tools, and topics going forward.
This book is organized into an approachable set of chapters that each address a core concept, programming language, or key tool related to software development. The book is split into two parts. Part I comprises 3 chapters that answer some basic questions about computers, programming languages, and the Internet. This will provide some context for the rest of the book. We'll start by examining basic computer architecture and how computers handle data. Next, we take a look at what programming languages are and how they operate. We'll conclude Part I by discussing how the Internet works, including clients, servers, requests, responses, and browsers.
Part II comprises eleven chapters that are more practical in nature and forms the meat of this book. We begin Part II by learning about the Command Line. This topic provides a natural introduction to coding. The Command Line allows users to perform most of the actions that are typically done with mouse clicks, but in a text-based way that promotes using the keyboard to issue commands instead of the mouse. Once you feel confident issuing commands through the Command Line, like browsing through your files and folders, copying/moving files around, and running other programs, jumping into coding will be a lot less intimidating.
Now that we know how to write some code, we need a way to keep track of our code files as they change over time. We also need a convenient way to collaborate with other developers. Programmers do this using Version Control Systems, or VCS. We'll focus on a tool called Git, the most popular VCS tool in use today.
What if we want the programs we write to store some data for reuse in the future? This is where databases come in. We'll cover databases and SQL (Structured Query Language), which is the main programming language used to interact with databases.
Next, we lean back towards the Internet by learning about Web Frameworks and the Model-View-Controller (MVC) design pattern. These tools and concepts take some of the coding burdens off of developers, so web applications can be released faster and with fewer headaches. By "coding burdens" we mean the need to write repetitive, redundant code that performs a basic function common to many (or all) Web applications.
We'll close out the book with a discussion on Package Managers. Most code projects rely on existing code libraries to add in some desired functionality. These are called dependencies. As we add more dependencies to our projects and as those dependencies are updated over time, managing them manually becomes unruly. Package managers are tools that help us conveniently manage our project dependencies.
This book strives to introduce each of these topics in an accessible way and explain how they fit together. Without further ado, let's begin.
To continue reading, purchase the Coding Essentials Guidebook for Developers here.