DMdev talks
3.24K subscribers
156 photos
13 videos
89 links
Авторский канал Дениса Матвеенко, создателя DMdev - обучение Java программированию

То, что все ищут по Java:
https://taplink.cc/denis.dmdev

P.S. Когда не программирую - я бегаю:
https://t.me/dmdev_pro_run
Download Telegram
Обзор будет краткий - одна фотка. Фото вместо тысячи слов и 10 митнутного видео)

Я люблю портативность, поэтому года 4 назад перешел со стационарного компа и кучей мониторов - на ноутбук.

На работе в офисе тоже только за ноутом сижу.

Интересно посмотреть, как выглядят ваши рабочие места - кидайте фотки в комментарии 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38👍143
✉️Приглашение на менторство DMdev!
Только для тех, кто готов погрузиться на глубину, разложить Java по полочкам и заложить крепкий фундамент для последующего роста в карьере backend разработчика.

Стартуем через месяц - 2 сентября
(самое время, чтобы красиво полезно закончить год и поставить "галочку")

Что внутри?
- недельные спринты с уроками, домашним заданием и дедлайном
- два раза в неделю живые созвоны с практикующим ментором-разработчиком (на второй ступени со мной)
- еженедельное code review
- безлимитное общение в чате с ментором


🎞Результат первой ступени менторства - готовый веб-проект в CV, написанный чисто на Java Core.
🎞 Результат второй ступени - веб-проект в CV, написанный на Java с использованием фреймворков (Hibernate, Spring)

Проекты не шаблонные, можно выбрать по своему желанию, чего душа желает

🤚Забронировать место, узнать подробности:
Первая ступень менторства (осталось 5 мест)
Вторая ступень менторства (осталось 2 места)

Старт: 2 сентября
Продолжительность: 3,5 месяца
Количество участников: до 12 человек

(Если тебя все еще гложат сомнения или
важные вопросы остались не отвеченными
—> просто напиши
@karina_matveyenka)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍4❤‍🔥3
Как я использую AI в работе?

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

Что-то внедрили уже несколько лет назад, что-то только недавно, и конечно же скоро будет еще и еще.

Приведу примеры того, что мне нравится больше всего:

1️⃣ Code Review tools
Я могу просто написать комментарий, что неправильно или что можно улучшить, и AI сам меняет код на основании контекста и моего комментария. Автору кода остается лишь нажать "Apply suggestion or cancel". Более того, порой я не знаю как реализовать те же параметризованные тесты на незнакомом мне языке или фреймворке. Я просто пишу комментарий в своем же коде "Лучше было бы заменить на параметризованные тесты" - и дело сделано (даже все импорты подставит).

2️⃣ Email/chats
Также дополняет твои предложения на основании контекста и того, что ты сейчас пишешь. Например, ты пишешь "I would like to recreate" + tab - и AI за тебя дописывает. Очень удобно и ускоряет переписку, на которую довольно много времени уходит.

3️⃣ Написание design docs
Также, что и пункт 2, только ты можешь еще дополнительно попросить, например, сравнить 5 разных инструментов для реализации scheduled jobs, со всеми плюсами и минусами. И если достаточно контекста есть/дашь - то даже подскажет, что лучше использовать именно для твоего проекта. Круто делает и резюме по уже написанному, что удобно больше не только тому, кто пишет, а тому, кто хочет просто прочитать вывод из огромного пласта информации.

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

Есть те, кто еще не носит умные часы? 🙂
👍52🔥10🤩41
Почему у меня двое часов?

Не секрет, что невозможно создать инструмент, который бы отлично подходил для всего, что-то вроде швейцарского ножа. Да и в программировании есть такое заимствованное понятие one-size-fits-all, которое говорит все о том же.

Точно также и full stack разработчки никогда не смогут достичь высот более узкоспециализированных инженеров.

Поэтому и я ношу двое часов, чтобы лучше удовлетворить свои нужды:

1️⃣ Garmin
Лучшие умные часы для занятия спортом. Причем покрывают практически все циклические виды, тренажерный зал, фитнес, воркауты и т.д. Без них я не представляю как делал бы все свои тренировки по бегу, потому что я ленив, чтобы ездить чуть дальше, чем подъезд твоего дома.

2️⃣ Fitbit
Как хороши бы ни были Garmin для спорта, но мне не очень нравится качество/точность, с которым они трэкают мои health metrics: HR, RHR, HRV, sleep, stress, etc. Именно поэтому я отдаю предпочтение Fitbit. Тем более я работаю над ПО для этих часов, что тоже помогает в тестировании написанного функционала.
____________
И да, мне весьма комфортно носить двое часов.
У меня есть лишь одно требование -> зарядка должна держать не менее 5-7 дней.
👍38🔥6❤‍🔥4🤔4
🚂 Для любителей последнего вагона...
...осталось ОДНО место на 1 и 2 ступень менторства DMdev

Отправляется в путь ровно через две недели - 2 сентября!

Условия учатстия:
Первая ступень менторства
Вторая ступень менторства

Кто забирает и присоединяется к нам?
✍️Пиши @karina_matveyenka
🔥12❤‍🔥4👍2😁1
Искандер прям как будто сорвал с языка - подписываюсь под каждым словом 😅
😁20💯6❤‍🔥31
инстаграм заблокировали, ютюб замедлили, телеграм посадили. видит Бог, я пытался быть блогером, но похоже не судьба.
😁74💯14
Чем проще, тем лучше

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

Но искусство программирования в другом - в простоте


Чем проще решение, тем проще его изменять, поддерживать, оно понятно менее опытным разработчикам, оно меньше подвержено багам (ведь чем проще механизм - тем меньше причин для его поломки).

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

Но главное помнить, что даже самую сложную задачу возможно представить в виде множества более простых, которые будут понятны каждому!
🔥63👍23💯145
#21 Мой путь

15 января 2018 года - я стою в аудитории напротив 20 человек. Сбылось то, к чему я шел 2 месяца. Лучшее место и время не придумать, чтобы начать прокачивать свою социальную сферу жизнедеятельности. И, хочу сказать, на практике это оказалось гораздо сложнее, чем я даже предполагал. Очень сложно что-то говорить на публику людей, когда они все молча смотрят на тебя и пытаются понять твои объяснения. Все-таки, это также разные вещи: что-то “объяснять” или просто “рассказывать”.

Я помню, что от волнения мне было очень жарко, я сильно краснел, и у меня так дыхание перехватывало, что даже сложно было говорить - как будто воздуха не хватало. Поэтому приходилось останавливаться как после пробежки и переводить дыхание. И то чувство постоянной жажды я помню до сих пор. Во рту очень сильно пересыхало от долгого говорения, ведь занятие было довольно длинным и включало в себя 4 академических часа с перерывом в 10 минут между парами.

Вообще, обучение было интенсивным. Мы встречались 3 раза в неделю по 4 часа на протяжении 3 месяцев, чтобы выучить весь Java Core, SQL, JDBC, и Servlets. И тогда не было записанных лекций, которые можно было бы пересмотреть. Что усвоил, то усвоил - повтора не будет. Это сейчас на своем менторстве я увеличил и время обучения на месяц, и пересматривай мои лекции в записи столько, сколько пожелаешь. Все познается в сравнении!

Каждый вечер перед каждым занятием я сидел готовился. Т.е. это еще 3 дня в неделю для меня. И плюс проверка домашнего задания по воскресеньям, которая занимала в среднем по 4 часа (18-20 человек по 10-15 минут на проверку каждого). Поэтому мое волнение на лекциях довольно быстро прошло, и уже на второй-третьей неделе я чувствовал себя очень комфортно и уверенно. И это было конечно же заметно студентам, ведь человек быстро подмечает на интуитивном уровне вот такие вещи.

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

Простота должна быть во всем, но чтобы научиться делать сложные вещи просто - это уже искусство, которое требует большого труда и колоссального времени.


Еще очень запомнился случай, когда прямо на одной из лекций я встречал свой 26-ой день рождения. И от неожиданности был приятно удивлен, когда меня поздравили ребята в аудитории. Хотя я никому не говорил - как-то сами все разузнали!

Эти 3 месяца пролетели очень быстро для меня. Уже пора было сдавать экзамен, который заключался в том, чтобы презентовать свой финальный проект - полноценное веб приложение на Java Core. Все, кто успешно его сдал - могли идти на следующую ступень, которая длилось 2.5 месяца и представляла собой написание такого же самого приложения, но с использованием самых распространенных Java инструментов и фреймворков: Maven, JUnit, Hibernate и Spring. И конечно же мы все вместе пошли в тот вечер в кафе, чтобы отметить такое значимое событие как для меня, так и для моих студентов!

Я еще много групп вел после, но именно первая мне запомнилась больше всего, потому что именно с ней у меня были связанны самые сильные эмоции, как приятные, так и не очень.

PS. Напоминаю, что мой путь с самого начала можно почитать под хэштегом #my_little_story

#my_little_story
🔥69👍16❤‍🔥75👏1🤯1
Mono vs multi repository

Я помню, что лет 8-10 назад, когда в моду вступала микросорвисная архитектура, мы на проекте создавали под каждый сервис отдельный git репозиторий. А почему бы и нет, ведь так все делали? Да и это казалось логичным - ведь и раньше тоже создавали репозитории под каждый проект.

У тебя 5 микросервисов - значит нужно создавать 5 репозиториев под каждый из них, плюс 1 репозиторий под рутовую pom. Плюс репозитории под общие модули. Это выглядело как действительно нечто мощное! Микросервисное!

Со временем, на первый-второй год разработки, приходило понимание, что что-то сложно становится. Тебе нужно обновить версию рутовой pom или общего модуля, а потом идти по остальным 5 репозиториям, которые зависят от них, чтобы и там обновить эти версии. А чем больше изменений, тем больше таких манипуляций приходилось делать.

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


Теперь все знают, что нет ничего лучше моно-репозитория в git, где каждый сервис представляет собой лишь отдельный модуль в Maven/Gradle. А обновление версии не стоит тебе никаких накладных расходов.

Сейчас это кажется обычным, но до этого тоже нужно было дойти через кровь и боль сотен и тысяч программистов! Ведь когда-то и числа 0 тоже не было, и вряд ли о его изобретении сейчас задумывается обычный человек :)
👍55🔥73❤‍🔥2😁2💯1
Logs vs Metrics

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

Это две разные концепции, которые часто путают начинающие разработчики:

1. Логи
мы используем для траблшутинга в случае инцидентов и багов. Другими словами говоря, для точечного применения. Например, мы берем конкретный запрос пользователя и проверяем, что именно пошло не так и в какой момент

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


Если еще более простым языком: метрики нам нужны, чтобы убедиться, что система работает исправно и уведомить разработчиков, если это не так. А логи уже используем, чтобы понять что именно не так. Сначала 2, потом 1!

PS. А как определить и когда алертить разработчиков в случае "не здорового поведения приложения" - это уже тема другого поста :)
👍45🔥13❤‍🔥61
Forwarded from DMdev PROбег
11.11.2024, Bieg Niepodległości, 10k, 37:13

3 разряд по бегу взят с итоговым временем 37:13!

Все-таки удалось достичь своей цели, что ставил еще год назад 😎

Разложился вообще отлично, с запасом. Как сделали последнюю тренировку в среду по 3:45-50, так я и бежал всю дистанцию (на скрине смотри как ровно темп держал).

На последних 2.5 км понял, что еще много сил есть, поэтому начал еще больше разгоняться, поэтому последний км вышел по 3:28 мин/км.

И конечно же как положено отработал финишное ускорение. Заключительные 100 метров шел по 2:41 мин/км.

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

Когда завершал прошлогодний сезон, то результат был 39:49. Получается, 2:36 мин снял.

Что в переводе на метры выходит около 650. Т.е. на полтора круга на стадионе обошел бы себя самого в прошлом году - это прям очень сильно мотивирует!!!

Во многом тут заслуга тренера. Под четким руководством выполнял все тренировки. Так что спасибо ей большое!

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

Сегодня ровно 2 года, как мы с тренером начали сотрудничать. Так что ровно 2 года мне потребовалось для достижения 3 разряда. Надеюсь, что к следующем году мы если и не возьмем 2 разряд, то будем очень близки к нему!

https://www.strava.com/activities/12874608741/overview
🔥62👍16🎉92👏1
Почему постоянство (consistency) важнее других правил?

Здорово, когда на проекте во всем соблюдаются best practices. Но, во-первых, это не панацея, а во-вторых, не всегда это возможно по многим причинам.

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

Простейший пример
Если ни в одном из проектов/модулей нет lombok, то не нужно его подключать во время реализации вашей задачи, чтобы не генерировать boilerplate code самому. В таком случае только ваш модуль и только ваша часть кода будет его использовать. Других разработчиков это введет в заблуждение при написании кода в других модулях, а также возникновении потенциальных багов и ошибок с тем же equals, hashCode, etc.

Еще один пример из моей практики
У меня как-то раз тестовый flyway скрипт накатился на prod базу данных. А все потому, что именно в этом проекте не работал стандартный шаблон именования скриптов, которые накатываются только на тестовое окружение и больше нигде. Во всех остальных проектах работало именно так. Т.е. не было consistency между всеми модулями, тем самым разработчик сделал предположение, что должно работать именно так.

И это было правильное предположение разработчика, потому что большинство вещей мы делаем на автомате, полагаясь на некий шаблон - это экономит очень много времени и энергии. Только представьте, как застопорилась бы работа, если бы человек думал над каждой строчкой кода, потому что не было бы уверенности без consistency: а точно ли я правильно пишу или нет?
👍49🔥7💯61
Эффект бабочки

Сейчас я отдыхаю с семьей на Кипре. И в прошлое воскресенье мы встретились с моей самой первой ученицей Полиной, когда я еще менторил ребят в it-academy в Минске в далеком 2018 году. А это почти 7 лет назад 😱

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

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

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


Так и решение пойти ко мне на менторство стало одним из поворотных, и оно полностью перевенуло жизнь Полины.
👍71🔥3620💯1
Не мог не поделиться еще одной историей в комментариях к моему посту. Возможно, тоже кого-то замотивирует.
Вот какая может жизнь быть людей. И вот такие люди становятся очень сильными, характером и духом!
👍19
Forwarded from Ratibor Axyonov
2019 год.. от меня ушла жена оставив меня с ребенком инвалидом на руках, не было своего жилья, остался на улице, меня приютил сельский священник, жил одно время у него в комнатке с ребенком куда влезало одно спальное место, потом комнатка побольше, работал у него на стройке, вставал в 4 учил java, в 8 отдавал малыша матушке, и шел на стройку, в 6-7 заканчивал , забирал ребенка и сидел с ним стараясь учиться дальше. Был совершенно истощен морально , психически и физически, в 8-9 выключался, дальше опять в 4 подьем и по кругу, поюс ко всему пеленки, готовка, уборка, кто знает что такое ребенок - тот поймет… и так около года, дальше первые собесы, работа, встреча второй половинки которая стала помогать с ребенком. Прошло уже 6 лет, а все как вчера. Впереди еще много проблем, и позади уже многое, главное не сдаваться. Сейчас java разработчик в крупной компании уже 6 лет в профессии. Денис спасибо тебе! Твои курсы очень помогали мне в обучении, дай Бог тебе здоровья , любви и благополучия!
❤‍🔥171🔥23🙏22
#22 Мой путь

По окончании первой группы я был на столько опустошен, что хотел взять отпуск. О своих намерениях я решил рассказать заведующей it-academy. Беседа закончилась тем, что я буду вести ту же самую ступень, а не идти дальше. Все-таки, обучать по накатанной программе в разы проще, где уже все мне известно и материал готов. Это означало, что мою первую группу будет вести новый ментор на второй ступени обучения Java.

Прошло немного времени. Мои ребята уже начали продлевать обучение, оформлять документы, и вдруг узнали, что дальше с ними буду идти не я. И какое было мое удивление, когда они написали заявление, что в качестве ментора должен быть я и никто другой, собрав подписи с 15-ти человек в группе! А дальше мне пришлось рассказывать о своем решении и почему я так захотел сделать. Слово за слово, и я уже не в силах был сопротивляться и даже захотел продолжить путь. Все-таки, связь между нами была построена действительно сильная. Такого не воссоздашь с помощью online образования, которое заменило все остальное в период Covid.

2 недели спустя (именно столько длился обычно перерыв между двумя ступенями обучения) - я нахожусь в аудитории it-academy, открываю первую лекцию по теме Apache Maven, стоя напротив своей любимой группы.

Так пролетели следующие 2.5 месяца. В течение этого периода я успел уволиться из Godel Technologies, проработав там ровно 2 года по контракту. Потом устроился в Red Alpha, не задержавшись там больше чем на месяц. А затем и Synesis.

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

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

И вот 6 августа 2018 года - я сижу в новом офисе в двух шагах от 5 корпуса БГУИР, который я закончил 4 года назад! Поэтому первое время часто охватывала ностальгия об универовских годах, все-таки каждый будний день проезжал мимо него и ходил на обед неподалеку.

Как-то раз даже зашел в столовую БГУИР. Конечно, к тому времени я уже отвык от такой студенческой еды. Маленькие порции, переваренный рис, какая-то второсортная колбаса, кисель с комочками - даже не верится, что этим я питался когда-то и мне даже нравилось. Ко всему хорошему, включая еду, быстро привыкаешь. Больше туда я не заходил.

#my_little_story
👍53🔥17❤‍🔥62🤔1
Официально открываю 15-ый набор на менторство DMdev 🚀

📆 Старт 27 января 2025г.
Продолжительность: 3,5 месяца

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

На вторую ступень - бывалых, тех, кто знает основы Java Core и не только!
Тех, кто уже работает разработчиком и хочет укрепить свои знания для повышения зп или смены компании

Что внутри?
✔️недельные спринты с уроками, домашним заданием и дедлайном
✔️два раза в неделю живые созвоны с практикующим ментором-разработчиком (на второй ступени со мной)
✔️еженедельное code review
✔️безлимитное общение в ламповом чате с группой и ментором


Результат: реализуешь свой собственный веб-проект по лучшим практикам разработки 👨🏻‍💻

Программа и запись:
1️⃣ Первая ступень менторства - осталось 5 мест 3 места
2️⃣ Вторая ступень менторства - sold out

🎁 Бонус для тех, кто забронирует место до Нового Года -> курс по «Docker»!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍5❤‍🔥2😁2
Отключение монетизации для ребят из РБ

К сожалению, есть не очень хорошие новости - YouTube деактивирует AdSense аккаунты для ребят из РБ с сегодняшнего дня 13 декабря.

AdSense используется для монетизации контента на YouTube и поменять страну там невозможно.


По этой причине пришло письмо без права выбора - принудительная деактивация моего AdSense аккаунта.

Буду думать, как решить этот вопрос, если это вообще возможно. В худшем случае я теряю платформу для своих курсов, т.е. останутся только Udemy и GetCourse.

❗️PS. Напоминаю, что все мои курсы доступны для любых стран только на платформе GetCourse https://dmdev.getcourse.ru/courses
😭15😱107🤯6👍1👎1