Ответ
Мой подход к саморазвитию — постоянное и сбалансированное обучение через теорию и практику.
1. Потребление информации:
- Технические блоги и новости: Подписки на Dev.to, Stack Overflow Blog, официальные блоги (.NET, AWS).
- Подкасты: DotNet Rocks, The Changelog — слушаю в дороге.
- Книги: Комбинирую фундаментальные ("CLR via C#", "Design Patterns") и практические ("Code That Fits in Your Head").
- Конференции и митапы: Смотрю записи DotNetConf, посещаю локальные митапы для нетворкинга.
2. Практика — ключевой элемент:
- Пет-проекты: Создаю небольшие проекты для опробования новых технологий (например, микросервис на gRPC, SPA с Blazor WASM).
- Решение задач: Регулярно практикуюсь на LeetCode, Advent of Code для поддержания алгоритмических навыков.
- Участие в open-source: Изучаю код популярных библиотек, иногда вношу мелкие правки (исправление багов, документация) или создаю свои утилиты.
3. Применение в работе:
- Внедряю изученные best practices (например, внедрение зависимостей, паттерны).
- Предлагаю и провожу рефакторинг устаревшего кода, применяя новые знания.
- Делиться знаниями внутри команды через код-ревью или мини-доклады — лучший способ закрепить материал.
Пример практики новой фичи C#:
// Изучение record struct и global using в C# 10
// GlobalUsing.cs
global using System;
global using System.Collections.Generic;
// Point.cs - неизменяемая структура с автоматической реализацией Equality
public readonly record struct Point(int X, int Y)
{
public double DistanceFromOrigin => Math.Sqrt(X * X + Y * Y);
}
// Использование
var p1 = new Point(1, 2);
var p2 = new Point(1, 2);
Console.WriteLine(p1 == p2); // True (значимое сравнение)
Console.WriteLine(p1); // Point { X = 1, Y = 2 }