As a software engineer, you probably have read many books. They can prove a very useful resource, as many contain valuable information on various technology topics, be it specific technologies or more general approaches on a specific area.
In order to build a specialization in a specific area one must conduct heavy and continuous research, by reading articles, blog posts, wikis, documentation, listening to podcasts or videos and of course by reading books.
This is a list of my favorite books, if you have any book to recommend please share your thoughts below, I will definitely give it a read and post it here! Purpose of this list is not to showcase how many books I have read, or not, but to spread word on good books, what problems they’ve helped me solve and why I found them valuable.
One of my favorite books, Uncle Bob’s Clean Code is a masterpiece, a great book that debates on why we, as developers, should write clean code.
Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals.
Whether you are a C# programmer or a Visual Basic or Java programmer learning C#, a software development manager, or a business analyst, Agile Principles, Patterns, and Practices in C# is the first book you should read to understand agile software and how it applies to programming in the .NET Framework.
The software developer’s life manual is a unique guide, offering techniques and practices for a more satisfying life as a professional software developer. In it, developer and life coach John Sonmez addresses a wide range of important “soft” topics, from career and productivity to personal finance and investing, and even fitness and relationships, all from a developer-centric viewpoint.
This is also published as an audio book, which I highly recommend also.
Buy in Amazon
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.
Dig deep and master the intricacies of the common language runtime, C#, and .NET development. Led by programming expert Jeffrey Richter, a longtime consultant to the Microsoft .NET team – you’ll gain pragmatic insights for building robust, reliable, and responsive apps and components.
This book starts with an introduction to the core concepts of .NET memory management and garbage collection, and then quickly layers on additional details and intricacies. Once you’re up to speed, you can dive into the guided troubleshooting tour, and tips for engineering your application to maximise performance. And to finish off, take a look at some more sophisticated considerations, and even a peek inside the Windows memory model.
Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems.
Algorithms in C, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching: Fundamentals, Data Structures, Sorting, Searching (3rd Edition)
This particular book, Parts 1-4, represents the essential first half of Sedgewick’s complete work. It provides extensive coverage of fundamental data structures and algorithms for sorting, searching, and related applications. The algorithms and data structures are expressed in concise implementations in C, so that you can both appreciate their fundamental properties and test them on real applications.
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Want to know how the best software engineers and architects structure their applications to make them scalable, reliable, and maintainable in the long term? This book examines the key principles, algorithms, and trade-offs of data systems, using the internals of various popular software packages and frameworks as examples.
Written by a world-renowned expert on programming methodology, and the winner of the 2008 Turing Award, this book shows how to build production-quality programs–programs that are reliable, easy to maintain, and quick to modify. Its emphasis is on modular program construction: how to get the modules right and how to organize a program as a collection of modules.
Real-World Functional Programming is a unique tutorial that explores the functional programming model through the F# and C# languages. The clearly presented ideas and examples teach readers how functional programming differs from other approaches. It explains how ideas look in F#-a functional language-as well as how they can be successfully used to solve programming problems in C#. Readers build on what they know about .NET and learn where a functional approach makes the most sense and how to apply it effectively in those cases.
The Art of Unit Testing, Second Edition guides you step by step from writing your first simple tests to developing robust test sets that are maintainable, readable, and trustworthy. You’ll master the foundational ideas and quickly move to high-value subjects like mocks, stubs, and isolation, including frameworks such as Moq, FakeItEasy, and Typemock Isolator. You’ll explore test patterns and organization, working with legacy code, and even “untestable” code. Along the way, you’ll learn about integration testing and techniques and tools for testing databases and other technologies.
Class-tested and coherent, this textbook teaches classical and web information retrieval, including web search and the related areas of text classification and text clustering from basic concepts. It gives an up-to-date treatment of all aspects of the design and implementation of systems for gathering, indexing, and searching documents; methods for evaluating systems; and an introduction to the use of machine learning methods on text collections.
This eagerly-anticipated third edition allows you to get acquainted with some of the best thinking about efficient object-oriented software design using the latest version of the industry-standard for modeling software: UML 2.0. The author has retained the book’s convenient format that has made it an essential resource for anyone who designs software for a living. The book describes all the major UML 2.0 diagram types, what they are intended to do, and the basic notation involved in creating and deciphering them. A true treasure for the software engineering community.
This concise introduction shows you how OAuth provides a single authorization technology across numerous APIs on the Web, so you can securely access users’ data—such as user profiles, photos, videos, and contact lists—to improve their experience of your application.
Nearly seventy years ago, Edith Hamilton published ‘The Greek Way’, a book that educated two generations of readers about the debt we owe the handful of city-states that developed ‘the spirit of the West’ some 2500 years ago. ‘Greek Ways’ is for our time what Hamilton’s book was for a prior era – a classic inquiry that holds up a mirror to Greek culture where we can see ourselves.
Leaders are always trying to get better, which is why there is an enormous and growing collection of literature offering the latest leadership paradigm or process. But sometimes the best way to move forward is to look back.