Как изучаешь новые технологии?

«Как изучаешь новые технологии?» — вопрос из категории Софт-скиллы, который задают на 25% собеседований C/C++ Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Мой подход к изучению новых технологий, особенно в контексте C++ и смежных областей, структурирован и практикоориентирован.

1. Фундамент и теория:

  • Документация и стандарты: Изучаю cppreference.com, официальные предложения (WG21 papers) для новых возможностей C++ (например, PFR для рефлексии).
  • Книги и статьи: Читаю книги авторитетных авторов (Скотт Мейерс, Николай Йосуттис) и технические блоги (Bartek's Coding Blog, Microsoft C++ Team Blog).

2. Практическое погружение:

  • Эксперименты с кодом: Создаю минимальные примеры для проверки концепции. Например, при изучении корутин C++20:
    #include <coroutine>
    #include <iostream>
    generator<int> range(int from, int to) {
    for (int i = from; i < to; ++i) {
        co_yield i;
    }
    }
    int main() {
    for (int v : range(0, 5)) {
        std::cout << v << ' '; // 0 1 2 3 4
    }
    }
  • Пет-проекты: Реализую что-то конкретное, например, простой HTTP-сервер с использованием Boost.Asio для понимания асинхронного ввода-вывода.
  • Изучение open-source: Анализирую реализации в библиотеках уровня Boost или крупных проектах вроде Chromium, чтобы понять best practices и edge cases.

3. Консолидация знаний:

  • Решение задач: Использую платформы вроде LeetCode, но с фокусом на новые фичи языка (алгоритмы с использованием ranges C++20).
  • Написание и ревью кода: Пробую применить изученное в рабочем коде или в pull request к open-source проектам.

Для таких технологий, как новые инструменты сборки (CMake, Conan) или системы статического анализа (Clang-Tidy), я сразу пробую интегрировать их в существующий проект, чтобы оценить реальную пользу.