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()
.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
Sometimes it is hard to pick a bite that I can chew on 😆.
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