Target Audience

There are many resources that you can use to learn how to code. This book is written, and heavily optimized, for a specific set of people. This section will help you figure out if this book will help you and provide other learning resources that may be a better fit.

First Principles

First principles thinking is the act of boiling a process down to the fundamental parts that you know are true and building up from there.

This book starts with fundamental parts of coding and challenges you to derive everything else. Questions and exercises are not practical and are designed to challenge and strengthen your foundations in the fundamental parts of coding.

Towards the end of the book, you will have developed a keen eye for detail and will be exposed to a few interview problems.

Core Principles

This book is not designed to be fun. This book is written to cover all aspects of coding as quickly as possible and building on first principles. If you dedicate your time to this book, you will become a competent full stack software engineer in the shortest amount of time.

If your main goal is to have fun, or if you need to be motivated, or if you are not sure if coding is what you want to do, this book can be boring for you. Freecodecamp.org or simply building fun projects instead may be better resources for you!

This book is targeted at students who have decided to pursue coding as a passion and want to become a good and reliable software engineer quickly. There is a lot of theory to prepare you for coding interviews and complicated projects to challenge and prepare you to become an effective engineer. This will not be easy.

Habits

Since you are committed to learning coding, this section will point out the good habits of a good software engineer and bad habits that lead to failure.

Being a Good Engineer

Good software engineers care about what they are learning and doing. They learn deeply and care about details. They ask questions when things do not make sense. As a side effect, they are effective communicators. They are great at listening, understanding others, explaining concepts, and asking questions.

<aside> 💡 Good communication skills is the most important skill for being a good software engineer.

</aside>

If you catch yourself thinking...