Our bookshelf C # programmer. What about you?

  • Tutorial

Prospective students at Veeam Academy often ask us about books that would be helpful in preparing for entering our C # programming course. Usually we recommend several sources, accompanying them with their comments, why they will be useful.

However, the majority of books on programming are 1K + pages, and reading them “from cover to cover” will take more than one month, and perhaps even more than one year! Therefore, all of our recommendations for Veeam Academy applicants serve only as a guide, and not as a mandatory requirement.

Over time, we summarized our comments on each of the publications and eventually got a list of, it seems to us, good books for professional growth of a C # programmer.
We present our brief review under the cut.


Below is an overview of the following books:

  1. J. Richter. CLR via C #
  2. Stephen S. Skien. Algorithms. Development Guide
  3. Joe Albahari. Threading in C #
  4. Itz ben gan. Microsoft SQL Server 2012. T-SQL Basics
  5. J. Skeet. C # for professionals. Programming subtleties
  6. Joe duffy Concurrent Programming on Windows
  7. Eric Freeman et al. Head First. Design Patterns
  8. Sergey Teplyakov. Design patterns on the .NET platform

J. Richter. CLR via C #

Reading Richter is like painting the walls of a room white. Read once - painted in one layer. In this case, one layer is usually not enough - the paint does not always fall flat and does not turn out as bright as we would like - so it is better to go and fix it with another layer, and in time tint the already separate places. In general, the more layers, the whiter the room!

Every time you reread Richter, you discover something new. And the point is not that the updated editions of this book come out at regular intervals (which, by the way, speaks of its great popularity). Even reading the same version, you find interesting places due to the depth and breadth with which the material is submitted.

Many people call this book "the Bible" and the "alphabet" for C # programmers. However, it is worth noting that there is very little attention paid to a specific programming language - the emphasis is on the .Net platform and the basic principles of its work.

Therefore, it still can not be considered a textbook on C # (in the usual sense for beginners), but we can say that this is a mandatory book for any professional .Net developer. However, in the case when you are just starting your career path, Richter will definitely help you to avoid many mistakes and allow you to write programs more efficiently, as you will understand the platform more deeply.

So, what's inside:

About 1000 pages of fascinating text about the internal structure of the Microsoft .NET Framework common language performing environment (CLR), written in simple language and in a friendly manner by the recognized expert in the field of programming, Jeffrey Richter.
The chapters are divided into sub-topics related to each other, but they can be read (and even necessary) not consistently. Each chapter has links to other chapters, which makes it convenient to read in parts and will allow you not to linger on topics that now seem particularly difficult or uninteresting.

Also on the pages of this book you will find answers to most of the questions that people like to ask at interviews in C # and .Net.

For specialists with programming experience under the .Net platform, this book does not need advertising. For beginners, we highly recommend not to postpone familiarity with her!

Stephen S. Skien. Algorithms. Development Guide

If you already have a general university course on basic algorithms behind you, and you need to refresh the main points in a short time, then this book is one of the best.

This is not a tutorial, but rather a guide to the effective development of algorithms in practice. The book is distinguished by a very good and accessible presentation; it is replete with references to contemporary literature and useful examples. Particularly instructive are the sections “Stories from life”, where the author tells how to find suitable solutions for the difficult tasks that he faced in his career.

The book consists of two parts. The first part allows you to quickly recall the main points of the course on algorithms (complexity, types of data structures, sorting, work with graphs, combinatorial search, dynamic programming, etc.). Here you will receive practical recommendations for the development of algorithms.

The second part is a directory of structures and algorithmic tasks that will help you find a solution for the problem that you faced at work. There are many examples and useful links, and also lists existing software implementations.


Joe Albahari. Threading in C #

Multithreading is one of the most complex topics faced by a modern developer, regardless of the selected programming language. This topic is especially important when writing highly loaded distributed systems, so
the Veeam Academy pays special attention to multithreading.

For a general introduction to this topic, Joe Albahari’s site is well suited , where the material from the relevant multi-thread chapters in the CLR from his book
C # in a Nutshell is structured .

Here you will find examples of working with streams: start, end, interrupt, locks, synchronization, synchronization contexts, etc. Also, the streaming capabilities of .NET (thread pools, asynchronous methods), Parallel LINQ, SpinLock / SpinWait structures, and much more are considered.

If you want to dig deeper, we recommend the book by Joe Duffy, a review of which is presented below.

Itz ben gan. Microsoft SQL Server 2012. T-SQL Basics

This book on the basics of T-SQL will be useful for both beginners and experienced developers who have long been familiar with this language. The book is distinguished by its simplicity. In addition to basic SQL queries, table expressions, window functions, and other topics are also considered. Each chapter is accompanied by a large number of examples and exercises to consolidate the material.

The author does not bypass the theory, but does not overload the presentation with theorems and proofs.

Even after many years of working with SQL, you will certainly discover something new for yourself, as well as be able to refresh and streamline your knowledge.

J. Skeet. C # for professionals. Subtleties of programming.


This book has many excellent reviews, and it is no coincidence. The author chose a style similar to the one that Bjorn Stroustrup, the founder of the C ++ language, used in his work “Design and Evolution of the C ++ Language”. This book tells about the basic principles of the creation and development of the C # language, shows its evolution from version to version, explains why the language was given this or that opportunity. All this ultimately forms a holistic picture of the perception of the C # language. The book also contains tips and practical experience of the author. The subtleties of the language are revealed thanks to numerous examples. Great attention is paid to the LINQ topic.

The work of J. Skeet is not at all like Richter’s book, although it also contains detailed information about the features of the internal implementation of C #. We see that, paired with Richter, this book will be an excellent tool for in-depth study of C # and the .NET Framework.

One of the reviews can be read

here .

Joe duffy Concurrent Programming on Windows


While reading Joe Duffy's work, you can “boil,” but the effort is worth it. This is one of the most fundamental books on multithreading in Windows. A serious topic, a decent volume (more than 1000 pages) and deep immersion in low-level details of multithreading may not be the easiest reading. However, any developer who wants to write efficient, fault-tolerant and scalable code (both managed - managed and unmanaged - native) for Windows should not pass by.

Despite the fact that the book was published ten years ago, it covers almost all topics related to multithreading: basic algorithms and synchronization primitives, asynchronous programming models in .NET, memory models, lock-free and much more.

The book combines theory and best practices with many examples of using Win32 and the .Net API, and also contains examples of algorithms and data structures that you can use in your code.

In addition to multi-threading, the book by J. Duffy will help to more deeply understand how Windows, CLR and the .NET Framework work, and will answer the question why.

Note: The Task Parallel Library (TPL) theme is not affected here, since the TPL was not yet released at that time. Steven Cleary can be recommended to explore TPL.

Eric Freeman et al. Head First. Design Patterns


If you still do not have much experience with design patterns, but would like to fix it, and at the same time consolidate your knowledge in OOP, then this book can be very useful. It is framed in a rather unusual (although traditional for the Head First series of books) style - it contains a huge number of pictures, quests and informal descriptions, is replete with a large number of examples, it is written without water and is very easy to read.
Simultaneously with the analysis of the most popular patterns and the corresponding UML diagrams, here the main principles of OOP are also explained along the course of the narration.

Do not be confused by the fact that code examples are presented in Java. All of them are quite simple, and even a novice developer can easily figure them out. This is exactly the case when C # developers find it useful to look into a Java book.

Sergey Teplyakov. Design patterns on the .NET platform


Unlike the rest of the literature included in our review, this book was originally written in Russian and therefore is devoid of the flaws inherent in most modern translations from English. However, its advantages do not end there.

The book is written by a C # developer for C # developers, which implies having basic knowledge of OOP on your part. The author shares his experience, considering both classic and more suitable for the .NET platform ways to implement each pattern. This analyzes the pros and cons of each method.

Throughout the book, the possibility of applying the considered patterns is demonstrated by a single example, which allows us to form a complete picture of the world of patterns.
More information about the book can be found here.

How would you add to this list?

Also popular now: