Ответ
Для постоянного развития я использую комбинацию практики, чтения и анализа.
Теория и новости:
- Блоги и порталы: Baeldung, DZone, InfoQ, технические каналы на Medium.
- Книги: «Effective Java» (J. Bloch), «Java Concurrency in Practice» (B. Goetz), «Clean Code» (R. Martin).
- Конференции и доклады: Записи с JPoint, Joker, Devoxx для знакомства с трендами и best practices.
- Подкасты: «The Java Pub House», «Software Engineering Daily» для обучения в фоновом режиме.
Практика и углубление:
- Алгоритмы: Регулярные тренировки на LeetCode и HackerRank для поддержания навыков решения задач.
- Исследование кода: Изучение исходного кода популярных библиотек (Spring Core, Guava) на GitHub для понимания внутреннего устройства.
- Pet-проекты: Создание небольших проектов для опробования новых технологий (например, Quarkus, Project Loom).
Пример изучения через код:
// Глубокое понимание Stream API через отладку и анализ
List<String> result = items.stream()
.filter(s -> {
System.out.println("filtering: " + s); // Логируем для понимания ленивости
return s.length() > 3;
})
.map(String::toUpperCase)
.collect(Collectors.toList());
Иногда участвую в open-source проектах, чтобы получить опыт командной работы над реальным кодом.