Learning List


Here are some of the books concepts in my .NET developer roadmap that I plan to learn in the next few years.

  1. C# in a Nutshell. This gap-closer is a first in line of many books that cover the internals of the C# knowledge. It has quite a depth and width of concepts when it comes to .NET and C#. I am currently 7 chapters deep in this and I’ve learned so much already. It feels like every other sentence hits me: This is what was asked on that interview, but I didn’t know it! Well, not anymore. Don’t let the title fool you. No book that has 1600 pages can have ‘in a nutshell’ in the name. It’s too much of a euphemism.

  2. Concurrency in C#. Concurrency is one of the things that I think is often misunderstood my engineers and often overlooked as well. I’ve read one chapter of this and seems to be a fun read, full of useful goodies.

  3. SQL Server Internals Every time I went to an interview, and I ask one of my favourite questions:

What do you think are some of the more important topics that a software engineer should learn to excel in this job/his career?

The answer, 99% of the time, is SQL, SQL internals, perfromance, indexing. Lots of engineers seems to be careless when it comes to databases and performance optimizations. Then they are suprised when some of their endpoints throw a TimeoutException. Bad performance and bottleneck, unfortunately, can’t only be solved with “high-tech” and “great CPUs”. Good code is also required. This is why learning internals is one of my primary topics on this list.

  • On this topic, a great resource was SQL Server: Indexing for Performance and SQL Server: Why Physical Database Design Matters by Kimberly L Tripp. These 2 lenghty courses are marked as “retired” on Pluralsight as they do use older versions of SQL server, but nevertheless, still very much valuable today when it comes to the internals of SQL server and indexing strategies. Kimberly is a great teacher and she was one of the people who worked on the SQL Server team back in early 2000s.
  1. Designing Data-Intensive Applications Lots of great info about system architecture here. A few of the concepts seem to be too advanced for me, still, but it’s definately off the shelf and picked up once in a while. Many senior engineers consider this a must-read.

  2. Computer Systems: A programmer’s perspective Another 1600-pager available for free online teaches a lot of internals when it comes to types. It does start from C, so basic C knowledge is kind of a requirement. Although we don’t manipulate memory and carefully manage types based on its internals in .NET Web Api design, we might at some point, and with this fundamental knowledge lacking I can face some issues. This is recommended to be paired with UC Berkley CS61C. (Also available for free online). I plan to revisit this throughout my career.

  3. Other resources from teachyourselfcs.com. There are a few more books here that I plan to go throughout my career, so I just put the website on here as an additional list. Lots of the books have some courses or university lectures that they should be paired with. Initially I started to go through this list after one of my failed interviews, where I realized there are some gaps in my knowledge that ought to be filled with older, foundational books like these. Going all the way back turned out to be a bad idea. After some 100 hours, I’ve learned some integer representations, boolean operators, conversion etc. which wasn’t something that I used in my day-to-day job as a web-developer. A senior-developer mentor of mine suggested a really good advice, which was to learn the engineering from “inside-out”, meaning that I start expanding the knowledge bubble left and right ( left meaning, back to the beginning, internals of computers etc, and right being, for example, software architecture,and other high level topics) so that I can learn to do my job well, as I also expand onto the more foundational concepts. This is not to say that this list should be ignored of course. The reason that it’s here so that it can be gone through at some point.

  4. POSTGRESQL and its internals I’ve been seeing postgresql being used more and more from different companies due to some of its perfromance and syntax benefits. I definately think this should be unavoidable as a software engineer, as it is one of the more popular database choices out there. I’ve dabbled with it, but it’s somewhat under a level from my knowledge of SQL Server.

  5. MongoDB and other NoSQL internals Some mongoDB was described and mentioned in the Designing Data Intensive Systems book, and it has quite peaked my interest. Definately some of the things to visit.