Какое у вас дополнительное образование в области программирования?

Ответ

Основной формат — самообразование через книги, документацию, технические статьи и онлайн-курсы (Coursera, Udemy). Также участвую в профильных митапах и конференциях (JPoint, Joker).

Формальные сертификации и курсы:

  • Oracle Certified Professional: Java SE 11 Developer
  • Курсы по Spring Boot, микросервисной архитектуре и Apache Kafka
  • Углубленные курсы по алгоритмам и структурам данных (практика на LeetCode, CodeWars)

Практический пример применения знаний: После изучения многопоточности переработал кэш, применив ConcurrentHashMap для потокобезопасности:

public class Cache<K, V> {
    private final ConcurrentHashMap<K, V> map = new ConcurrentHashMap<>();

    public V get(K key) {
        // Потокобезопасная ленивая загрузка
        return map.computeIfAbsent(key, this::loadFromDb);
    }

    private V loadFromDb(K key) {
        // Загрузка данных из источника
        // ...
    }
}

Постоянно изучаю новые технологии: в настоящее время углубляюсь в GraalVM и фреймворк Quarkus.

Ответ 18+ 🔞

Да что ж это за жизнь такая, а? Сидишь, блядь, как сыч, в четырёх стенах, и учишься. Самообразование, ёпта! Книжки, документация, статьи — вот мой хлеб насущный. Курсы эти, Coursera, Udemy... Иногда думаешь: "Э, сабака сука, дай-ка я на митап вылезу, людей посмотрю". JPoint, Joker — туда же, блядь. Чтобы не превратиться в говнокодера-затворника, понимаешь?

Ну и бумажки, конечно, эти ебушки-воробушки. Без них никуда, хоть тресни. Oracle Certified Professional: Java SE 11 Developer — вот это я понимаю, блядь, бумага! Не какая-нибудь хуйня. Плюс курсы по Spring Boot, микросервисам, Apache Kafka... А чтобы мозги не засохли — алгоритмы, структуры данных. LeetCode, CodeWars — там я, блядь, душу отвожу, как на турнике.

А вот смотри, практика, сука, где собака-то порылась. Читаю про многопоточность, думаю: "Да хуйня, всё понятно". А потом гляжу на старый кэш — и волнение ебать, терпения ноль! Всё в говне, потоконебезопасно. Ну я его, блядь, взъебал и переписал на ConcurrentHashMap. Красота же!

public class Cache<K, V> {
    private final ConcurrentHashMap<K, V> map = new ConcurrentHashMap<>();

    public V get(K key) {
        // Потокобезопасная ленивая загрузка
        return map.computeIfAbsent(key, this::loadFromDb);
    }

    private V loadFromDb(K key) {
        // Загрузка данных из источника
        // ...
    }
}

Теперь хоть из десяти потоков дергай — ни один клиент не получит пизды вместо данных. Идиллия, блядь.

А щас, сука, новые игрушки изучаю. GraalVM, Quarkus... Говорят, летать должно. Посмотрим, блядь, посмотрим. А то как-то подозрение ебать чувствую — везде обещают овердохуища производительности, а на выходе получается пиздопроебибна. Но проверить надо, иначе никак.