Tackle Any Coding Challenge With Confidence and Learn How An Experienced Developer Thinks

Companies routinely incorporate coding challenges when screening and hiring new developers. This book teaches the skills and mental processes these challenges target. You won’t just learn “how to learn,” you’ll learn how to think like a computer. These principles are the bedrock of computing and have withstood the test of time.

Coding challenges are problematic but routinely used to screen candidates for software development jobs. This book discusses the historical roots of why they select for a specific kind of programmer. If your next interview includes a coding exercise, this book can help you prepare.

Understand the Fundamentals For Writing Code In Any Language

Regardless of where you are in your software career, this book collects insight gained from a lifetime of working with computers. These are the principles, patterns, and approaches seen time and time again across the decades. We’ve added many abstractions over the decades, but the architectural fundamentals are the same, you have to peel back the layers. Understanding what’s going on in the internals of the computer’s CPU gives you new insight when troubleshooting and fixing software errors.

This book covers:

    • How coding challenges like “Fizz Buzz” weed out the wrong people and are rarely applicable to daily software development work. Why do companies insist on using them?
    • Addressing why the tech interview process drives women and underrepresented groups out of the industry. What can we do about it?
    • How to practice and prepare for a coding challenge and give yourself an edge. Preparation and repetition can help you keep your cool.
    • Learning how to think like a computer and how to nurture this skill regardless of language. Most languages share common concepts and assumptions when writing code.
    • Understanding computing fundamentals like Boolean logic, one’s complement notation, and two’s complement notation. Programming syntax and idioms may differ between languages, but these concepts don’t.
    • A step-by-step approach to designing an algorithm when you’re tackling a new problem. See how an experienced developer works through how it should work with pseudo-code.
    • Observing the flow of data throughout a program to understand how the system as whole works. These flows give you key insights into what the program expects and how it transforms inputs to outputs.
    • Tools for navigating an unfamiliar and complex codebase to decipher how any application works. It provides a hands-on example that helps you understand unfamiliar source code.
    • Putting it all together in a deep-dive to look at how the PHP compiler implements arrays, which are common constructs in other languages.
    • Overcoming impostor syndrome, which affects many people who work as software developers. The resources and advice discussed here can help anyone who thinks they don’t belong in the field.

About the Author

Ed Barnard has experienced two consecutive 20-year careers in software development. He soldered together his first computer from a handful of resistors, diodes, switches, and lights in 1968 at age 10. He taught himself FORTRAN IV two years later. High School brought BASIC. College introduced ALGOL, assembly language, and Pascal. Ed’s second 20-year career has been web software development for countless clients, companies, and projects. He enjoys sharing what he’s learned along the way through magazine articles, books, and speaking at conferences.