job4j.ru - Практика. Ревью. Результат.
771 subscribers
75 photos
186 links
О жизни в IT:
- Языки: Go, Rust, Java, Kotlin
- Технологии: PostgreSQL, Kafka
- Инфраструктура: Docker, Kubernetes
- Soft Skills: общение, интервью, карьера
Download Telegram
package main

import (
"testing"

"github.com/stretchr/testify/assert"
)

func TestGetChamps_Standard(t *testing.T) {
stat := [][]MemberStat{
{{ID: 1, Amount: 5}, {ID: 2, Amount: 6}},
{{ID: 1, Amount: 15}, {ID: 2, Amount: 10}},
}

got := getChamps(stat)
want := Champs{IDS: []int{1}, Amount: 20}

assert.ElementsMatch(t, want.IDS, got.IDS, "должен вернуть только ID чемпиона")
assert.Equal(t, want.Amount, got.Amount, "сумма очков должна быть максимальной")
}


Описание курса 👉 https://job4j.ru/courses/38
👍3
Рынок IT в 2025 | Наваливаем кринжа

Чтобы провести аналитику IT-рынка в этом году, я ждал 9 мая.
Все запланированные встречи состоялись, теперь можно подвести итоги и сделать предположения о перспективах.

Зачем это нужно? Ценностей всего две:

1. Ресурсы — то есть деньги;
2. Предназначение.

Первая ценность без второй невозможна, поскольку мы живём в материальном мире. Следовательно, анализ рынка необходим, чтобы понимать, где ещё есть ресурсы, а где они уже исчерпаны.

Начнём с цифр — количества вакансий по ключевым направлениям:

* Python ML: 1176 ↓ 26
* React + TypeScript: 1006 ↓ 23
* JS + Vue: 927 ↑ 2
* Java + Spring: 891 ↓ 16
* C# + .NET: 842 ↓ 17
* Go + Docker: 730 ↓ 18
* PHP + Laravel: 700 ↓ 17

Для сравнения: в 2023 году по каждому из этих направлений было около 2500 вакансий, а в 2022 — примерно 5000. Рынок явно просел. Пора ли искать новое направление?!

Теперь разберём причины — в обратном порядке, от незначительных к наиболее важным.
👍7🤔3🤯3😱2
LLM

Вы знаете, в каком году были созданы первые алгоритмы машинного обучения? Они появились в середине XX века. А с 2017 года нас пугают тем, что системы на базе LLM заменят всех — от программистов до врачей.

Я не раз пытался перейти от «ручного» программирования к vibe coding, но каждый раз бросал это занятие. К счастью, я посмотрел интервью Андрея Бреслава о его новом языке на основе LLM. Настоятельно рекомендую его посмотреть: «Андрей Бреслав и vibe coding».

В ролике он чётко описал два способа взаимодействия с LLM:

1. Как генератор кода.
Вы можете просто попросить сгенерировать код, но при этом должны понимать, что он делает. Например:
«Создай модель User с такими-то полями, а также контроллер, сервис и репозиторий для неё».

2. Как «чёрный ящик».
Вы не знаете, как написать код, и просите LLM добавить нужное поведение. Например:
«Сделай программу, которая будет авторизоваться на hh.ru под моей учёткой и откликаться на вакансии по заданным критериям».

Научными терминами это императивный и декларативный подходы. Язык Java — императивный: мы описываем, что нужно сделать. SQL — декларативный: мы указываем, какой результат хотим получить, но не знаем, как он будет достигнут.

Немного подробнее:

* LLM как генератор кода.
Сложность в том, что сгенерированный код нужно проверять: скорость разработки от этого не повышается, а лишь снижается, поскольку сначала нужно разобраться, как программа работает, а затем убедиться в её корректности.

* LLM как генератор полноценной программы.
LLM — это не компилятор, а статистическая модель: сгенерированный результат — вероятностный, а не гарантированный. Да, модель выдаёт высокий процент правильных случаев, но не 100 %. Кроме того, современные LLM испытывают проблемы с добавлением новых функций: чем больше уточнений, тем хуже результат. Поддерживать такие системы будет сложно.

Несмотря на это, системы продолжают развиваться, но суть работы остаётся прежней: генерация кода с последующей ручной проверкой.

Несомненно, LLM будут внедряться там, где не требуется точный результат: в колл-центрах, системах машинного перевода, чат-ботах, рекомендательных системах, фильтрации контента, продажах и т. д. Но в серьёзном программировании это пока не заменит профессионала.

Не верите? Попробуйте сами: поставьте Cursor и напишите игру «Змейка» на Python.
👍8🤔4
Курсы и инфобизнес

А при чём тут это? Кто обычно становится программистом? «Ботаники» — щуплые ребята в очках и свитерах, увлечённые математикой, физикой и компьютерными играми. А что сделали курсы по программированию? Они дали возможность работать в мире «ботаников» тем, кто сам ботаником не является.

За счёт чего? В первую очередь — за счёт социальных навыков. Задачи, которые выполняет рядовой программист, по силам любому человеку с техническим складом ума, а не только компьютерному гику. Соответственно на рынок хлынули мало или вовсе не менее способные люди с техническим складом ума. Тем самым сформировалась жёсткая конкуренция. Причём это уже не конкуренция среди ботаников, которые в присутствии незнакомых людей не могут связать и двух слов, а среди уверенных в себе специалистов, владеющих приёмами продажников и другими манипуляциями в переговорах.

Сейчас здесь идёт настоящий «пир во время чумы»: те, кто умеют продавать, рассчитывают на зарплату 600–800 тыс. ₽, а те, кто не умеют, — опускают ставку ниже 200 тыс. ₽.
👍10😁2
Автоотклики

Здесь стоит начать с жаргона. Мы сами навалили этот кринж. На курсах учат продавать себя: например, создавать несколько резюме, использовать автоотклики и т. д. HR не могут справиться с таким количеством нерелевантных откликов, и им на помощь приходит автоматизация. На автоотклик мы получаем автоотказ. Таким образом мы дополнительно создаём иллюзию запредельной конкуренции.

Объясните мне: как за 10 минут в новой вакансии появляется 100 откликов? Ребята, мы сами создали такую ситуацию.

Главный «кринж» в том, что я продолжаю наблюдать, как осознанные меркантилы говорят, что нужно продолжать автоматизировать поиск. Если вы задумались написать своего бота для автооткликов, то уже поздно — эта схема больше не работает.
👍7😁2
Глобальный кризис

Все перечисленные выше пункты меркнут по сравнению с главным — глобальным кризисом. Почему в 2022 году IT-рынок сократился вдвое? Потому что из России ушли инвесторы. Кто владеет капиталом, тот и диктует условия. К 2025 году ситуация лишь обострилась, но уже не только на российском рынке, а в глобальном масштабе. Этот факт — главная причина кризиса в IT, а не LLM или количество кандидатов.

У бизнеса нет возможности запускать новые проекты, поэтому всё, что не приносит дохода, замораживается. Внимание переключается на те проекты, которые приносят прибыль.

Требования к кандидатам тоже изменились: теперь нужны знания в разных областях и умение решать задачи по оптимизации и поддержанию проектов.
👍8🤔3
Итак, что делать?

1. Не фокусируйтесь на одном направлении.
Если вы ищете позицию Java-программиста, а вам предлагают задачи DevOps, соглашайтесь — сегодня DevOps — неотъемлемая часть работы программиста.
Если предлагают фронтенд, тоже стоит попробовать: это даст возможность взглянуть на разработку с другой стороны.

2. Обратите внимание на масштабирование.
Изучите кеширование, репликацию сервисов, шардинг баз данных, потоковую обработку в Kafka и согласование данных. Важно также понять, как в этих процессах участвуют DevOps-практики. Такие знания будут очень цениться на рынке.

Яркий пример оптимизации в действии — компания VK: они переписывают свои сервисы с PHP на Go.


Прокачать DevOps 👉 https://job4j.ru/courses/35
Прокачать Kafka 👉 https://job4j.ru/courses/21
🔥12👍5😁1💔1
Авторизация через GitHub

Добавил авторизацию через GitHub.

Попробуйте 👉 https://job4j.ru/login

Так же напомню про функцию
Мок-собеседований 👉 https://job4j.ru/interviews
🔥11🏆5
Linux | Базовые команды и утилиты

Проверь свои знания о базовых командах в Linux.
👉 https://job4j.ru/exams/detail/45

Заполни пробелы в знаниях на курсе DevOps
👉 https://job4j.ru/courses/35
❤5👍3
GoLang | Slice

Мы продолжаем наш проект по GoLang. Сложилось впечатление, что собеседование на Go похоже на сдачу сертификации по Java.

Благо на Java таких собеседований уже давно не проводят.

Ничего не поделаешь, придется играть по этим правилам.

У нас на платформе есть раздел Экзамены . Это по сути тесты.

Добавил экзамен по Slice 👉 https://job4j.ru/exams/detail/46

Теория по собесам в курсе 👉 https://job4j.ru/courses/38

Мок-собеседования 👉 https://job4j.ru/interviews

Находите время и пробуйте.

А так же наши другие курсы Java, SQL, Kotlin, Angular, DevOps, Kafka 👉 https://job4j.ru/courses
👍3
Правки дизайна

Сегодня занимался правками дизайна платформы. Все же сделаем две темы: светлую и темную.

👉 https://job4j.ru/

А так же поправил описание процесса обучения:

Изначально я хотел, чтобы весь учебный процесс был похож на рабочую обстановку. Поэтому с первых уроков вы используете Git, системы статического анализа, тесты и системы непрерывного развёртывания.

С другой стороны, мне хотелось, чтобы обучение было домашним и комфортным. Поэтому мы не вводим жёстких ограничений на сдачу заданий и общее время прохождения материала — вы можете заниматься в любое удобное время.

Также мне хотелось, чтобы каждый ученик не превращался в безликое лицо. Поэтому мы стараемся помогать каждому индивидуально: проверяем каждый урок, объясняем теорию и в целом общаемся.

Наверное, вы спросите: «Как же у вас хватает времени на всех?» Действительно, на курсе, кроме меня (Пётр Арсентьев), работают ещё три ментора: Стас, Алексей и Андрей, и нас хватает на всех. Дело в том, что я убрал неэффективные и трудозатратные элементы обучения: вебинары, видеоуроки и видео-лекции. Они были в самом начале проекта, но я сразу понял, что ученики львиную долю времени тратят на пассивный просмотр видео, считая это активным обучением. Я категорически против этого. Поэтому весь учебный материал изложен текстом с иллюстрациями. Таким образом мы смогли заменить часовые видео на десятиминутное чтение, что позволяет ученикам сразу начать активно применять полученные знания, а не откладывать это на завтра после пассивного просмотра.

Ученик обращается к нам тогда, когда он выполнил свою часть учебного процесса — написал код или решил задачу, а не когда не понимает теорию и просит объяснить ещё раз. Теория без практики — пустое дело, особенно в программировании.

Такой подход дал нам возможность сфокусироваться на практических навыках учеников, что, в свою очередь, приносит свои плоды.

Подведу итог:

* Прагматический подход и много практики
* Необходимая теория для практики и собеседований
* Обратная связь от менторов — мы проверяем каждый урок
* Сдача теории ментору и подготовка к собеседованию
* Проектные работы

Если у вас есть сомнения или вопросы по поводу учебной программы или уровня, буду рад обсудить их лично в Telegram:
Пётр Арсентьев https://t.me/parsentev
👍20❤5🔥2
Linux | Команды и утилиты | HTTP/3

Сегодня снова смотрел собеседования и обратил внимание, что на скринингах спрашивают вопросы о технологических тенденциях.

Догадываюсь, что это показывает: кандидат интересуется развитием индустрии.

Практически везде спрашивают о командах и утилитах Linux — и это понятно, потому что серверы работают на Linux. Но также часто встречаются вопросы о протоколах TCP/UDP и HTTP.

Сегодня услышал вопрос про версию HTTP/3. Оказывается, в 2020 году вышла новая версия протокола HTTP/3. Он уже работает поверх QUIC (UDP), минимизирует задержки, избавляет от TCP Head-of-Line Blocking, содержит встроенное шифрование и поддержку мобильности. Подходит для тех же сценариев, что и HTTP/2, но быстрее и надёжнее в реальных сетях.

Поэтому решил добавить уроки по этим темам:

* Навигация и работа с файлами \[#505397]
* Создание и запись текстового файла \[#505474]
* Поиск и фильтрация текстов \[#505398]
* Управление процессами в Linux \[#505399]
* Сетевая диагностика \[#505475]
* Права и владельцы файлов \[#505400]
* Мониторинг памяти и дискового пространства \[#505476]
* TCP и UDP \[#505477]

Описание курса 👉 https://job4j.ru/courses/35
❤9👍3
Стратегия успеха: xоп, хоп и в дамках

На той неделе я выложил видео о рынке IT в 2025 году. Под видео было много критики в адрес моего негативного высказывания о том, что программисты стали "продавать" себя. Я решил посмотреть проект крестного отца этого движения и увидел там интересные комментарии. Не про инфоцыганство 😁, а про убеждения людей.

Ребята искренне благодарят создателей этого проекта, что научили их дорого продавать себя. Разве это плохо? У тебя семья, ипотека и куча обязательств, а ты работаешь на 150 тр в месяц. А можешь на 550 тр или даже 1kk$.

И с этой позиции такие методы выглядят справедливыми.

Смысл стратегии — максимально быстро выйти на рынок. Для этого:

1. Составляем грамотное продающее резюме. Тут нужно указать опыт работы более 3 лет. Указать максимальное количество технологий в вашей предметной области. Их можно взять из описаний вакансий.
2. Цитирую дословно крестного отца движения — уметь вывозить базар за резюме. Для этого нужно выучить правильные ответы. По сути сводится к заучиванию шпаргалок по нужной технологии.
3. Самое важное — мощная харизма. Что самое важное для продажника? Чтобы тебе поверили. А доверяют кому? Людям, которые умеют к себе расположить. Тут подходят все возможные способы: заготовленные шутки, лесть, восхищение интервьюером, самозначимость, раздувание щек.

После этого ты выходишь на рынок, записываешь свои собеседования и корректируешь свое резюме, ответы и поведение. Вуаля, и полляму в месяц у тебя в кармане.

Что в этой схеме делают менторы крестного отца? А они как раз и занимаются рисованием резюме, наработками по вывозу базара и элементами мощной харизмы.

Сколько бы я не пытался найти достойные аргументы против такого подхода, я ничего не смог найти. Я не увидел, чем лучше просидеть 2 года и писать код учебных проектов или 2 месяца активно учиться вывозить базар и прокачивать харизму, а в итоге и тот, и тот делают одну и ту же работу.

Бесспорно, мне приятно получать сообщения от ребят, что им после моего курса комфортно работать на проекте, что они быстро растут по карьерной лестнице, и многие из них через 2-3 года становятся сеньорами и тимлидами, но может, это можно было сделать эффективнее. Уже в процессе работы закрывать свои проблемы в знаниях и опыте.

Поэтому я решил, что в курсе "Из Java в Go за 5 месяцев" нужно переделать концепцию. Во-первых, ограничиться временем в 2 месяца. То есть это должен быть скрипт, а не марафон. Во-вторых, акцентироваться на резюме и базаре о нем.

Я посмотрю на результат курса по Go и также переделаю курс по Java. Думаю, что можно будет сократить курс по Java до 6 месяцев, как он был изначально.

В целом, у кого есть сложности с резюме, легендой или мощной харизмой, буду рад помочь. Пишите в личку 👉 @parsentev.
🔥24❤5👍2
job4j.ru - Практика. Ревью. Результат. pinned «Стратегия успеха: xоп, хоп и в дамках На той неделе я выложил видео о рынке IT в 2025 году. Под видео было много критики в адрес моего негативного высказывания о том, что программисты стали "продавать" себя. Я решил посмотреть проект крестного отца этого…»
Понедельник начинается с LeetCode

На той недели разбирали собеседование выпускника. У него основная проблема, то что он сильно волнуется. И из-за этого не может собраться.

Ему дали задачу уровня easy и он ее решал все собеседование, целый час.

Поэтому я настоятельно рекомендую погонять задачи уровня easy.

Сегодня сам спотыкнулся на задачу по бинарному поиску. Решал ее тоже целый час ))

https://leetcode.com/problems/search-insert-position/

Аналогичную задачу видел на собеседовании в Авито.
🔥12👍7😁3
Собеседование Go Core

Добавил уроки по курсу Go.

Типы данных [#505461]
Нюансы работы с defer [#505462]
Структуры данных [#505470]
Map [#505481]
Interface [#505482]
Pointer [#505483]

Большая просьба тех кто участвует в этом эксперименте, сжать булки и добежать до конца. Уже прошел месяц, а еще никто даже 1/4 не решил. Я понимаю, что когда это бесплатно, то мотивации проходить нет. В целом я придерживаюсь такой идеи. Как только первый участник эксперимента получить оффер, то эксперимент сворачиваем и доступ на курс я отключу.

Описание курса 👉 https://job4j.ru/courses/38
👍9🔥4
4.9.4. Собеседование Go Goroutines

Я добрался до самой жирной темы в Go.
Добавил уроки:
Ядра, процессоры, процессы и горутины [#505487]
Планировщик Go [#505490]
Go Channel [#505488]
Go Select [#505489]
sync.Map | RWMutex | atomic [#505491]

Эта теория. Еще будет 10 урок с практическими задачами реализации шаблоновон: Worker Pool, Fan-in, Fan-out и тд.

Описание курса 👉 https://job4j.ru/courses/38
🔥17
Задачи на горутины

Все тоже самое, что и в Java, только в другом API.
Но кода в разы меньше получается, по сравнению если такое же писать на Java.

Задача: WorkerPool [#505492]
Задача: FanIn [#505493]
Context [#505494]
Задача: Поиск с отменой [#505495]
Шардированный кеш [#505496]
Задача*: Продвинутый Worker Pool [#505497]

Главный маркетинговый ход в Go и тут сработал "Многопоточный код, как последовательная программа" )) Местами тут похлеще wait, notify, notifyAll.

Описание курса 👉 https://job4j.ru/courses/38
👍4🔥2🤮2