Сообщество - Лига программистов

Лига программистов

1 728 постов 11 639 подписчиков

Популярные теги в сообществе:

Что я увидел в своих собеседованиях (часть 2)

Рекомендовал вам записатьсвоё собеседование и делился своими наблюдениями. Вторая часть моих выводов:

❌ Оказалось, что есть типовые вопросы, которые часто задают на собеседованиях, но к которым я специально не готовился. ООП, SOLID, микросервис vs монолит и подобное — без подготовки ответ выходит путанным.
✅ Подботал типовые вопросы.

❌ В какой-то момент я забывался, что нахожусь на интервью и общался с интервьюером, как с коллегой: рассказывал о каких-то негативных моментах в прошлых проектах, говорил от имени команды в контексте "Мы”.
✅ На интервью должна быть дружеская атмосфера, но не нужно забываться. Интервьюера нужно убедить, что я именно тот специалист, который им нужен. На работу устраиваюсь Я, значит в моих рассказах должно быть побольше Я и поменьше Мы. В эту же сторону, поменьше рассказывать о каких-то проблемных местах, побольше рассказывать о удачно решённых задачах.

❌ Во время рассказа "о себе" уходил в ненужные подробности, из-за чего рассказ получался водянистым и производил скорее негативное впечатление.
✅ Я полностью прописал рассказ "о себе", в несколько заходов вычитал и отрепетировал, чтобы в итоге было недолго и по делу.

❌ Когда интервьюер спрашивал "есть ли у меня вопросы по вакансии и компании", то возникала заминка. Я спрашивал не очень связно и не всё, что действительно хотел узнать о потенциальном работодателе.
✅ Для этого я также составил чеклист со списком интересующих меня вопросов.

В DevFM пишу о полезном для разработчика: инструментах вроде Raycast, об архитектурных схемах, записываю видео по FastAPI + Docker для начинающих. А ещё у нас есть бесплатный курс cli-for-dev по Linux на степике.

Вопрос из ленты «Эксперты»

Помогите разобраться

Помогите разобраться Вопрос, Спроси Пикабу, Консультация, Нужен совет, Проблема

что я делаю не так?

Показать полностью 1

Процедурная анимация фона в стиле Матрицы

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

Сделал для своего приложения такую красоту, внизу код на Kotlin (Android+Compose), пользуйтесь кто желает (нейросетью можете перевести на свой язык под свою платформу). Сразу после списка символов идут переменные управления потоками, вынес их вместе, чтобы регулировать скорость, частоту и прочее.



import androidx.compose.foundation.background

import androidx.compose.foundation.layout.*

import androidx.compose.material3.Text

import androidx.compose.runtime.*

import androidx.compose.ui.Modifier

import androidx.compose.ui.graphics.Color

import androidx.compose.ui.platform.LocalConfiguration

import androidx.compose.ui.platform.LocalDensity

import androidx.compose.ui.unit.dp

import androidx.compose.ui.unit.sp

import kotlinx.coroutines.delay

import kotlinx.coroutines.isActive

import kotlin.random.Random

object MatrixAnimationSettings {

val symbols = listOf(

'ア', 'ィ', 'イ', 'ゥ', 'ウ', 'ェ', 'エ', 'ォ', 'オ', 'カ', 'ガ', 'キ', 'ギ', 'ク', 'グ', 'ケ', 'ゲ', 'コ', 'ゴ',

'サ', 'ザ', 'シ', 'ジ', 'ス', 'ズ', 'セ', 'ゼ', 'ソ', 'ゾ', 'タ', 'ダ', 'チ', 'ヂ', 'ッ', 'ツ', 'ヅ', 'テ', 'デ',

'ト', 'ド', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'バ', 'パ', 'ヒ', 'ビ', 'ピ', 'フ', 'ブ', 'プ', 'ヘ', 'ベ', 'ペ',

'ホ', 'ボ', 'ポ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ャ', 'ヤ', 'ュ', 'ユ', 'ョ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ',

'ヮ', 'ワ', 'ヰ', 'ヱ', 'ヲ', 'ン', 'ヴ', 'ヵ', 'ヶ', 'ヷ', 'ヸ', 'ヹ', 'ヺ', '・', 'ー', 'ヽ', 'ヾ'

)

const val rows = 15 // количество дорожек с символами

const val maxVisibleSymbols = 70 // Максимальное количество видимых символов

const val symbolDelay = 200L // Задержка между появлениями символов

const val fadeStep = 0.1f // Шаг уменьшения альфы

const val alphaStart = 1f // Начальное значение альфы

const val maxYOffset = 100 // Максимальное вертикальное смещение

const val maxXOffset = 10 // Максимальное горизонтальное смещение

const val maxDelay = 10000L // Макс задержка

const val fontSize = 12 // Размер шрифта

var symbolPadding = 1.dp // Вертикальный отступ между символами

}

@Composable

fun MatrixBackground() {

Box(

modifier = Modifier.fillMaxSize().background(Color.Black)

) {

for (i in 0 until MatrixAnimationSettings.rows) {

MatrixColumn(MatrixAnimationSettings.symbols, i, MatrixAnimationSettings.fontSize)

}

}

}

@Composable

fun MatrixColumn(symbols: List<Char>, columnIndex: Int, fontSize: Int) {

var symbolList by remember { mutableStateOf(listOf<MatrixSymbol>()) }

var animationRunning by remember { mutableStateOf(true) }

val screenWidth = LocalConfiguration.current.screenWidthDp

val screenWidthPx = with(LocalDensity.current) { screenWidth.toInt() }

val randomXOffset = (Random.nextInt(1, 21) * 20)

val randomStartDelay = Random.nextLong(100L, MatrixAnimationSettings.maxDelay)

LaunchedEffect(Unit) {

delay(randomStartDelay)

while (animationRunning && isActive) {

delay(MatrixAnimationSettings.symbolDelay)

val newSymbol = MatrixSymbol(

symbol = symbols.random(),

index = Random.nextInt(0, 1000),

alpha = MatrixAnimationSettings.alphaStart,

yOffset = symbolList.size * 20,

xOffset = randomXOffset

)

symbolList = symbolList + newSymbol

symbolList = symbolList.mapIndexed { index, symbol ->

symbol.copy(alpha = symbol.alpha - MatrixAnimationSettings.fadeStep)

}

if (symbolList.size > MatrixAnimationSettings.maxVisibleSymbols) {

symbolList = symbolList.drop(1)

}

if (symbolList.all { it.alpha <= 0f }) {

animationRunning = false

symbolList = emptyList()

}

}

}

symbolList.forEach { symbol ->

Text(

text = symbol.symbol.toString(),

color = Color.Green.copy(alpha = symbol.alpha),

fontSize = fontSize.sp,

modifier = Modifier

.padding(MatrixAnimationSettings.symbolPadding)

.offset(x = symbol.xOffset.dp, y = symbol.yOffset.dp)

)

}

}

data class MatrixSymbol(

val symbol: Char,

val index: Int,

val alpha: Float,

val yOffset: Int,

val xOffset: Int

)

Показать полностью

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

Странное дело: Телеграм используют миллионы человек, а внятных гайдов по его удобному использованию я не встречал. Интернет полнится только всратыми лайфхаками вроде "10 полезных функций Телеграм" с набором фич разной степени полезности. Но ни у кого я не видел целостной картины, как ТГ превратить в удобный инструмент для решения задач. Усаживайтесь поудобнее, я вам всё покажу.

Это статья из моего цикла "Нетехнические инструменты разработчика", где я делюсь своим опытом: веду задачи в TickTick, трекаю рабочее время, преодолеваю откладывание дел с помощью декомпозиции задач.

Что разберём

  • как удобно работать с огромным количеством личных чатов с длительным сроком жизни

  • как удобно организовать чтение каналов, если их много

Как работать с огромным количеством чатов с длительным сроком жизни

Описанное подойдёт вам, если у вас много (десятки и сотни) постоянных чатов. Что значит "постоянных"? Я с одними и теми же людьми контактирую длительное время, месяцы и годы. То есть мой опыт не подойдёт, если вы условный менеджер по продажам с кучей ежедневных новых контактов, но весьма временных, то есть по которым дальнейшее общение не предполагается.

Мой метод пережил три больших этапа моей жизни:

  • преподавание, при котором в личном чатах десятки студентов, которые что-то хотят спросить или сдать;

  • разработка, при которой активно плодятся рабочие групповые чаты;

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

К последнему мой гайд относится в меньшей степени. Почему? Для позиции преподавателя и разработчика во главу угла я поставил минимизацию прерываний. Это значит, что для основной работы мне нужно обеспечить что-то вроде состояния потока (см. Как поймать «поток»), когда я вовлечён в рабочий процесс (будь то программирование, проверка задания или проектирование нового курса). Любой интеррапт, к которому относится и "прочитать сообщение в месенджере", прерывает поток, откатывает нужный настрой, ломает красивые абстракции в голове. Причём исследования (см. Никогда не отвлекай программиста) показывают, что любое прерывание по факту занимает больше 10 минут, чтобы вернуться к решению задачи. Вот такая вот плата за прерывание контекста у кожаного мешка.

Мой гайд по работе с рабочими чатами и группами чатов такой:

  1. Создаём нужные папки. Думаю, всем пригодятся папки Р (рабочее) и dev (групповые чаты). Чтобы больше папок влезло без необходимости скроллить право, я пришёл к названию папок в 1-3 буквы. Не очень удобно по началу, но я быстро привык. Альтернативное решение – вместо букв использовать эмодзи, но я для этого староват, видимо. По неизвестной науке причине мне некомфортно с иконками в названиях чатов, слишком аляписто, что ли.

  2. Добавляем в Р (рабочее) все рабочие контакты.

  3. Добавляем в dev (групповые чаты) все групповые рабочие чаты.

  4. Опциональный пункт. Для студентов я создал отдельную папку Ст (студенты). Но! Каждого студента при добавлении в контакты я ещё дополнительно помечаю номером его группы, чтобы упростить навигацию. У меня устоялась пометка в формате <год-поступления>-<номер-группы>-<первые-3-буквы-фамилии>, типа 2020-50-iva для Иванова из группы 50, поступившего в 2020 году. Такой формат обозначения вошёл у нас в практику регистрации на институтском гитлабе, поверх которого всякая автоматизация накручена.

  5. Выключаю на всех групповых (кроме тех, где критически важно быстро реагировать) и студенческих чатах звук и все нотификации. У меня получилось, что контакты из Р довольно редко пишут по неважным и несрочным делам, поэтому звук я там оставил. Если бы там часто писали, я бы звук и там выключил. Или договорился общаться беззвучными сообщениями, это просто бомбическая фича в ТГ. Кто не знает – зажмите кнопку отправки сообщения (или правой кнопкой мыши на компе), и появится выбор – отправить сообщение без звука или отложенное сообщение. Отложенное сообщение тоже часто применяю, чтобы напомнить о каком-то деле, прислать мем не ночью и всякого такого.

  6. Теперь у меня 3 папки с чатами (Р, dev, Ст), и вверху есть число непрочитанных чатов в этой папке.

  7. Когда есть время, я смотрю чаты и отвечаю. Но теперь это асинхронное средство общения – уведомления меня не отвлекают от состояния потока. Как часто читать чаты? Я стараюсь ориентироваться на 1-3 часа для рабочих и групповых чатов (на мой взгляд, приемлемая скорость реагирования на не-срочные задачи), и 1-3 дня для студентов (в моём случае студентам мгновенная реакция не требуется).

  8. Схему легко расширять, создавая ещё папки для отдельных групп чатов. В ТГ есть лимит по 100 чатов на папку. С помощью Premium его можно расширить до 200 чатов на папку.

  9. Важные чаты можно закрепить, у каждой папки вроде можно закрепить до 5 чатов (и 10 с премиумом).

Конечно, ещё неплохо включить режим "не беспокоить" в нерабочее время. У меня это с 22:00 до 08:00 -_-

Как удобно читать много каналов

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

Как я использую папки в Телеграм для удобства IT, Telegram (ссылка), Telegram, Отвлечение внимания, Уведомление, Прокрастинация, Программирование, Длиннопост

По данным mediascope, в конце 2023 года 84% пользователей читают каналы в ТГ. А у tgstat есть более детальный опрос про количество каналов.

Как я использую папки в Телеграм для удобства IT, Telegram (ссылка), Telegram, Отвлечение внимания, Уведомление, Прокрастинация, Программирование, Длиннопост

Половина аудитории ТГ читают 10 и менее каналов по данным https://tgstat.ru/research-2023

Как я использую папки в Телеграм для удобства IT, Telegram (ссылка), Telegram, Отвлечение внимания, Уведомление, Прокрастинация, Программирование, Длиннопост

Забавно при этом, что многие подписаны на какое-то адовое число каналов. Но не читают.

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

  1. Создаём две папки. Я назвал их К (контент) и S (хрен знает почему...).

  2. В К (контент) добавляем самые важные для вас каналы, которые хочется читать всё время. Когда есть время для прокрастинации, читаем отсюда, пока все каналы не прочитаем.

  3. В S добавляем новые, непроверенные каналы. Читаем, когда всё из К уже прочитано, и хочется чего-то ещё.

  4. Если канал из К долго не читается, удаляем его совсем или переносим в S.

  5. Если канал из S всё время хочется прочитать, переносим в К и читаем всё время :)

  6. Для К я сверху закрепил несколько каналов, которые читаю в первую очередь.

  7. Если постоянно остаются непрочитанные каналы, стоит задуматься и отписаться от не интересного вам.

  8. Для удобства я ещё сделал папку Ch (chats), куда положил домовой чат (и закрепил), плюс все чаты каналов с отдельной подпиской. Но этой папкой я в итоге почти не пользуюсь, кроме время от времени заглядывания в домовой чат.

Такое деление на две группы каналов по приоритету позволяет подписываться на кучу временных каналов (типа, о, что-то прикольное), но при этом не терять основные каналы, которые хочется прочитывать всегда. И теперь вкладку "все чаты" можно игнорировать. Хотя я во "всех чатах" закрепил основные чаты (жена и пара друзей), с которыми я чаще всего веду переписку.

Ещё в какой-то момент Телеграм автоматически создал папки "личное" (куда попадают все личные чаты, то есть не каналы и не боты) и "боты" (где все боты и мини-аппы). Довольно удобно. Я сократил названия до Л (личное) и Б (боты). Личное удобно использовать, чтобы посмотреть последние чаты (из всех папок сразу).

В итоге получаем такую картину папок

Как я использую папки в Телеграм для удобства IT, Telegram (ссылка), Telegram, Отвлечение внимания, Уведомление, Прокрастинация, Программирование, Длиннопост

А в верхнем меню это выглядит так. Блоки S с неважными каналами и чаты Ch не влезают, нужно скроллить.

Как я использую папки в Телеграм для удобства IT, Telegram (ссылка), Telegram, Отвлечение внимания, Уведомление, Прокрастинация, Программирование, Длиннопост

Сейчас болею и даже основые каналы нет сил читать, поэтому накопилось непрочитанных уведомлений в каналах.

Вот такой вышел гайд по применению ТГ для разработчика или тимлида. Или профессионального читателя каналов :)

В DevFM пишу о полезном для разработчика: инструментах вроде Raycast, об архитектурных схемах, записываю видео по FastAPI + Docker для начинающих. А ещё у нас есть бесплатный курс cli-for-dev по Linux на степике.

Показать полностью 5

Мой марафон собеседований на DevOps

Привет, Пикабу! Меня зовут Саша и в IT я уже больше 10 лет. Начинал как системный администратор, настраивал сервер, ковырялся в сетях, чинил всё, что роняли любимые коллеги. Впоследствии перешел в DevOps — ближе к коду, автоматизации и всяким клёвым штукам вроде Docker, Kubernetes и Terraform.

За это время успел поработать в разных проектах — от мелких стартапов до достаточно крупных компаний. В первых привлекали нетривиальные задачи и возможность построить инфраструктуру и настроить процессы с нуля без легаси, доставшегося от предыдущего девопса, а во вторых — понятное дело, зарплата. Кто бы там что ни говорил, что важны и другие вещи, но спасибо в карман не положишь и семью кормить и на что-то жить нужно, поэтому для меня вопрос оплаты очень важен. За эти годы работал с разными инструментами: Terraform, Ansible, Docker, Kubernetes, CI/CD на Jenkins и GitLab — в общем, могу себе позволить повыбирать проект, а не хвататься за первый попавшийся оффер.

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

VK

ВК в последние годы активно развивается, но если «залезть под капот», то там километры устаревшего, правда, вполне рабочего кода. Для тех, кто любит сложности, — самое то. Что касается собеса, то оно проходит в три этапа. На первом меня помурыжил HR типичными вопросами на собеседовании, что-то вроде: «Как вы представляете идеального тимлида?» Но, окей, стандартная, в общем-то процедура.

На техэтапе мне давали задачу настроить CI/CD пайплайн для микросервиса с деплоем на Kubernetes. Потратил на это два часа, при этом все строго таймится. После был разбор с инженером, получил полезный фидбек.

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

Т-банк

От айти в банке ожидал что-то типа работы с Oracle и сверки транзакций. Но нет, здесь оказалось поинтереснее. Собеседование состояло из двух этапов. После стандартного разговора с рекрутером, дали довольно интересное задание — написать скрипт, который анализирует логи и отправляет алерты в Telegram. Как по мне, достаточно объемная задача в качестве тестового задания. Хотя, возможно, просто отбирают в команду лучших, для кого подобное раз плюнуть.

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

До встречи с непосредственным руководителем, к сожалению, не дошел, но вывод сделал: собеседование здесь – это отличный способ проверить свои навыки.

Wildberries

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

Следующий этап — стандартный техсобес. Вроде ничего сверхъестественного, но мозги напрячь пришлось. Из практических задач было — развернуть мониторинг для продакшена или подумать, как обновлять микросервисы без простоев. Были вопросы про Terraform, Kubernetes, даже Helm затронули. Видно, что техспецы у них сильные и ищут таких же в команду, поэтому сначала было ощущение, что разговаривали свысока. Когда поняли, что я неплохо шарю, тон сменили. Но осадочек остался. Да и по деньгам в итоге не сошлись, так что, отказался.

Ozon

Ozon — еще один гигант электронной коммерции в России. От знакомых слышал, что там поинтереснее, чем в ВБ. Для начала пообщался с HR, расспросили о моем опыте, ключевых проектах, инструментах, с которыми работаю, ну, и о мотивации, куда ж без этого. Сразу же обозначили в общих чертах, чем придется заниматься: оптимизация логистики, работа с конкретными данными, внедрение CI/CD. Что понравилось, эйчар был неплохо подкован в технической части, по крайней мере, это не было интервью из разряда «кем вы видите себя через 5 лет?»

В технической части собеседования нужно было описать процесс создания CI/CD-пайплайна для большого количества микросервисов, также были вопросы по мониторингу (Prometheus + Grafana), организации оповещения. На финальной встрече с тимлидом поговорили более подробнее о том, чем нужно будет заниматься, о моем опыте работы с подобными задачами. Всё сухо и формально, не хватило более человеческого подхода, что ли. Отказался, правда, не из-за этого, предлагаемые задачи — не совсем то, что мне интересно в роли devops.

МойОфис

Эта компания привлекла перспективами и интересными продуктами. Если кто не в курсе, ребята, по сути, предлагают замену популярным офисным решениям от забугорного разработчика. Не особо рассматривал их изначально, но в процессе стало очень интересно и в итоге лично мне туда хотелось прям попасть, а не просто пройти собес опыта ради.

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

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

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

Подведем итог

Пройдя не одно собеседование, могу сказать, что это не просто возможность найти работу, но и отличная проверка своих сил. Если есть хороший фидбек (а в моем случае был почти везде), можно выявить свои слабые стороны и получить парочку полезных советов.

Кроме того, это отличная возможность, понять чем ты хочешь (или не хочешь) заниматься, так как в большинстве компаний в технической части собеседования дают задачки, которые нужно будет впоследствии решать на практике. И если еще на этапе собеса они показались скучными или наоборот слишком сложными, возможно, стоит поискать что-то другое.

Показать полностью

Обзор с видео года программирования

Исследовал интернет и наткнулся на GitHub Unwrapped. Он на основе активности в GitHub автоматически создаёт видео, где можно увидеть часто используемые языки, часы спонтанной работы, звёзды и всё остальное за этот год. Код открыт.

Сделано с использованием Remotion — тоже с открытым кодом, которая позволяет автоматизировать создание видео на React. Увидел это и решил, что круто, надо поделиться!

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

Показать полностью

Что я увидел в своих собеседованиях, часть 1

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

❌ В самом начале собеседования возникала какая-то суета: включена ли камера и звук, открыто ли мое резюме, под рукой ли ручка с блокнотом.
✅ Составил небольшой чеклист, по которому пробегался за пару минут до начала собеседования.

❌ Камера смотрела не на меня, а в сторону, при этом я сам не смотрел в камеру, иногда я говорил не в микрофон и меня было плохо слышно. Да, это тоже очень важно. Собеседнику должно быть комфортно с вами общаться.
✅ Заранее настроил камеру, чтобы по умолчанию смотреть на собеседника, сделал в голове заметку говорить в микрофон.

❌ Я спешил ответить на вопрос интервьюера и начинал отвечать до завершения вопроса. Со стороны выглядело так, будто я просто перебиваю собеседника. Более того, иногда вопрос мог оказаться совсем не таким, как я думал.
✅ Пункт "дослушивать вопрос и не перебивать собеседника" отправился в копилку заметок.

❌ Порой меня спрашивали о технологиях, с которыми я не работал и про которые мало знал. В этот момент я терялся.
✅ При более предметном анализе оказалось, что на любую малознакомую технологию у меня в багаже есть аналогичная, решающая поставленную задачу. Я сделал для себя заметку: если не работал с технологией, не теряйся, подумай, как решить задачу знакомым способом. Более глобальная мысль: стараться минусы обращать в плюсы. И не забывать постоянно изучать разные технологии.

В DevFM пишу о полезном для разработчика: инструментах вроде Raycast, об архитектурных схемах, записываю видео по FastAPI + Docker для начинающих. А ещё у нас есть бесплатный курс cli-for-dev по Linux на степике.

Каждый год зимой происходят странности

Например, что-то пропадает. У одних важные вещи, у других новогоднее настроение. В этот раз — потерялись помощники Деда Мороза. Но есть хорошая новость: вы можете их найти! Вернее, помочь им найтись…

Кто есть кто в мире онлайн IT образования

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

Учитель. Учит детей в школе. Поэтому, если вы хотите учить детишек писать код, вам туда🙃 Я не работал в школе и включил этот пункт исключительно, чтобы обозначить "потенциальную возможность".

Репетитор. Проводит индивидуальное обучение. Подразумевается, что репетитор будет нянчиться со студентом и изучать тему до тех пор, пока студент "не останется доволен". Спокойно относитесь к тому, чтобы на протяжении месяца разбирать тему циклов? Вам сюда. Потенциальные клиенты - это в основном новички без опыта в программировании, которые хотят выучить C++ быстро и желательно с минимальными затратами, или школьники-студенты с низкой мотивацией, которых привела мама. Как результат, стартовая ставка в час критически ниже, чем у преподавателя и ментора. Стоит рассмотреть, если у вас нет опыта разработки, но вы студент профильного it-вуза, либо как один из способов развития личного бренда.

Преподаватель. Проводит занятие с группой студентов по заранее подготовленному материалу. Занятия повторяются из потока в поток, меняются лишь студенты (да и то не всегда). Сейчас я преподаю в OTUS и для меня это один из комфортных вариантов делиться знаниями. Есть возможность глубоко покопать тему, подобрать примеры из коммерческой практики, скорректировать материал для нового потока в зависимости от текущих потребностей рынка или реакции студентов предыдущего потока. Честно говоря, коммерческий опыт разработки не обязателен, но его наличие повышает презентабельность преподавателя в глазах студентов. Практически всегда преподавание ведется в какой-либо онлайн-школе, а это обеспечивает стабильный поток студентов из года в год и ставку в час на уровне синьёра.

Ментор. Через свой опыт помогает менти в достижении его целей. Цель запроса к ментору может быть абсолютно разной: от "разобрать арифметику указателей" до "подготовить резюме" и "пробить потолок 300к". Ментор в отличие от преподавателей и репетиторов не разжевывает тему, а указывает на пробелы в знаниях студента и прорабатывает со студентом путь к преодолению проблем. Опыт разработки обязателен. Я занимаюсь менторство уже более двух лет и мне нравится эта деятельность по двум причинам:
- нестандартные запросы, с которыми действительно интересно работать. А не вот это вот в 100 раз "помогите мне решить задание с шифром Цезаря" (пасхалочка для моих бывших коллег из Skillfactory)
- возможность помогать менти в достижении их целей. Особенно, если цель - это офер, а менти без опыта в IT=) Работу в онлайн школах я могу сравнить со случайным прохожим, у которого студент спросил, как дойти из пункта А в пункт Б. "У красного здания повернуть направо". Дойдет студент до цели - не понятно. Ментор - это навигатор: тут поверни направо, а вот тут сэкономим пару месяцев твой жизни и пройдем коротким путем, ты у цели, поздравляю, маршрут окончен😎

Наставник. Да, это перевод слова "ментор". Но в онлайн образовании используется несколько в ином контексте. Наставник прикрепляется к курсу, потоку или стажировке и выполняет роль человека, к которому можно обратиться за помощью в решении технического вопроса, составлению резюме или в целом за порцией мотивации. Я несколько раз занимал роль наставника. Последний раз это была на стажировке в НТР. По окончанию стажировки более 70 % моих студентов получили офер от НТР. Не исключаю, что это совпадение, но воспоминая все равно приятные🙂

Показать полностью
Отличная работа, все прочитано!