A List of Awesome Programming Books (Must Reads)

micro

Building Microservices: Designing Fine-Grained Systems

Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures.

Microservice technologies are moving quickly. Author Sam Newman provides you with a firm grounding in the concepts while diving into current solutions for modeling, integrating, testing, deploying, and monitoring your own autonomous services. You’ll follow a fictional company throughout the book to learn how building a microservice architecture affects a single domain.

View Online



SRE

Site Reliability Engineering: How Google Runs Production Systems

The overwhelming majority of a software system’s lifespan is spent in use, not in design or implementation. So, why does conventional wisdom insist that software engineers focus primarily on the design and development of large-scale computing systems?

In this collection of essays and articles, key members of Google’s Site Reliability Team explain how and why their commitment to the entire lifecycle has enabled the company to successfully build, deploy, monitor, and maintain some of the largest software systems in the world. You’ll learn the principles and practices that enable Google engineers to make systems more scalable, reliable, and efficient—lessons directly applicable to your organization

View Online



Algorithms

Introduction to Algorithms (The MIT Press)

Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.

View Online


clean

Clean Code: A Handbook of Agile Software Craftsmanship

Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship . Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code “on the fly” into a book that will instill within you the values of a software craftsman and make you a better programmer–but only if you work at it.

View Online


freelance

The Software Engineer’s Guide to Freelance Consulting

The Software Engineer’s Guide to Freelance Consulting will help teach you to be an effective freelance software consultant, which will enable you make more money, dedicate more time to hobbies, spend more time with your loved-ones and even discover new businesses.

View Online



health

The Healthy Programmer: Get Fit, Feel Better, and Keep Coding

To keep doing what you love, you need to maintain your own systems, not just the ones you write code for. Regular exercise and proper nutrition help you learn, remember, concentrate, and be creative–skills critical to doing your job well. Learn how to change your work habits, master exercises that make working at a computer more comfortable, and develop a plan to keep fit, healthy, and sharp for years to come.

View Online


SRE

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

In this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data. Software keeps changing, but the fundamental principles remain the same. With this book, software engineers and architects will learn how to apply those ideas in practice, and how to make full use of data in modern applications.

View Online



guide

The Complete Software Developer’s Career Guide

Early in his software developer career, John Sonmez discovered that technical knowledge alone isn’t enough to break through to the next income level - developers need “soft skills” like the ability to learn new technologies just in time, communicate clearly with management and consulting clients, negotiate a fair hourly rate, and unite teammates and coworkers in working toward a common goal.

View Online


devops

The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations

Increase profitability, elevate work culture, and exceed productivity goals through DevOps practices.

More than ever, the effective management of technology is critical for business competitiveness. For decades, technology leaders have struggled to balance agility, reliability, and security. The consequences of failure have never been greater―whether it’s the healthcare.gov debacle, cardholder data breaches, or missing the boat with Big Data in the cloud.

And yet, high performers using DevOps principles, such as Google, Amazon, Facebook, Etsy, and Netflix, are routinely and reliably deploying code into production hundreds, or even thousands, of times per day.

View Online


seat

A Seat at the Table: IT Leadership in the Age of Agility

Agile, Lean, and DevOps approaches are radical game changers, providing a fundamentally different way to think about how IT fits into the enterprise, how IT leaders lead, and how IT can harness technology to accomplish the objectives of the enterprise. But honest and open conversations are not taking place between management and Agile delivery teams.

View Online


generic

From Mathematics to Generic Programming

If you’re a reasonably proficient programmer who can think logically, you have all the background you’ll need. Stepanov and Rose introduce the relevant abstract algebra and number theory with exceptional clarity. They carefully explain the problems mathematicians first needed to solve, and then show how these mathematical solutions translate to generic programming and the creation of more effective and elegant code. To demonstrate the crucial role these mathematical principles play in many modern applications, the authors show how to use these results and generalized algorithms to implement a real-world public-key cryptosystem.

View Online


users

User Stories Applied: For Agile Software Development

You’ll learn what makes a great user story, and what makes a bad one. You’ll discover practical ways to gather user stories, even when you can’t speak with your users. Then, once you’ve compiled your user stories, Cohn shows how to organize them, prioritize them, and use them for planning, management, and testing.

User role modeling: understanding what users have in common, and where they differ
Gathering stories: user interviewing, questionnaires, observation, and workshops
Working with managers, trainers, salespeople and other “proxies”
Writing user stories for acceptance testing
Using stories to prioritize, set schedules, and estimate release costs
Includes end-of-chapter practice questions and exercises

View Online


users

The Pragmatic Programmer

The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development. Whether you’re a new coder, an experienced programmer, or a manager responsible for software projects, use these lessons daily, and you’ll quickly see improvements in personal productivity, accuracy, and job satisfaction. You’ll learn skills and develop habits and attitudes that form the foundation for long-term success in your career. You’ll become a Pragmatic Programmer.

View Online


patterns

Design Patterns: Elements of Reusable Object-Oriented Software

The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently.

Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk.

View Online


We hope you enjoyed this curated list of awesome programming books

If you have any books you think we missed out, then please leave a comment below!