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

input_1

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()
    .GetRootTopic();
rootTopic.SetTitle("Scope");
rootTopic.Add(epicTopic);
//...

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

output_1

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

output_2

Summary

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


Reference

https://www.theurlist.com/edu-scope-to-mindmap

Oleksii Nikiforov

Jibber-jabbering about programming and IT.