I prefer reading books from cover to cover and taking notes quite frequently. At the same, I tend to have multiple items on my reading list. It feels frustrating to get back to an awesome book and realize I need to revision it all over again. So I decided to organize it a little bit. I think the best way to organize the learning process is to envision the end goal and have sensible timelines.

For the sake of simplicity, I use google spreadsheets as storage and XMind as a visualization tool. XMind is a great tool to visualize and brainstorm some ideas.

💡 My take on it

  • Determine the list of books and materials to learn for the next sprint (e.g. quarter, half of a year)
  • Set priority and categorize
  • Add corresponding notes to Evernote for each book, course, etc. It is quite easy to generate internal link in Evernote and access it from spreadsheet directly.
  • Generate mindmap and play with it so it is possible to estimate and create a plan to take further actions.
  • Manage progress and perform retrospective when you feel you need it. 🔁

Books for .NET Developer

Here is the the list of really good books to consider:

Book Author
C# in Depth (4th) - 2019 Jon Skeet
C# 8.0 and .NET Core 3.0 Mark J. Price
Programming C# 8.0 - Build Cloud, Web, and Desktop Applications Ian Griffiths
.NET Core in Action Dustin Metzgar
Unit Testing Principles, Practices, and Patterns Vladimir Khorikov
Concurrency in C# Cookbook: Asynchronous, Parallel, and Multithreaded Programming Stephen Cleary
Under the Hood of .NET Memory Management Chris Farrell
Designing Data-Intensive Applications Martin Kleppmann
.NET Microservices: Architecture for Containerized .NET Applications Cesar de la Torre
Designing Distributed Systems Brendan Burns
Agile Principles, Patterns, and Practices in C# Robert C. Martin
The Pragmatic Programmer, From Journeyman To Master Andrew Hunt


Build mindmaps programmatically

I’ve created library XMindCSharp for .NET to build mindmaps that you can open with (XMind). You can work with it like this:

var book = new XMindConfiguration()
                .WithFileWriter("./output", zip: true)
                .CreateWorkBook(workbookName: "test.xmind");
var rootTopic = book.GetPrimarySheet()

Also, I’ve developed simple CLI application edu-scope-to-mindmap to create mindmaps from excel spreadsheet I’ve mentioned above.

To use it, run next command from project directory:

$ dotnet run --path ./ouput --name test.xmind --source-path input/input.xlsx


Sometimes it is hard to pick a bite that I can chew on 😆.



I’ve introduced lightweight approach to organize your learning process. Personally, I find it useful because learning is essential part of my craft and you better do it well 😉.

If you want to organize your learning process the way I do, please feel free to use: template.xlsx + edu-scope-to-mindmap



Oleksii Nikiforov

Jibber-jabbering about programming and IT.