Обложка канала

xpinjection. Страница 2

Авторский канал @xpinjection - опытный Java Tech Lead, Delivery Manager и консультант с 15+ лет опыта в IT. Я пишу о Java, распределённых системах, Agile, процессах разработки, инженерных практиках, QA, конференциях, инфраструктуре и многом другом...

  • xpinjection

    Пятничное на злобу дня по поводу переживаний насчет ChatGPT и сенситив данных. ;)
  • xpinjection

    Сегодня продолжу делиться интересными кейсами использования ChatGPT в разработке. И начну с самого неожиданного для меня. Я скормил ему OpenAPI спеку и попросил на основании нее написать реализацию приложения с использованием указанного мной стека технологий. Оказалось, что из структуры спеки ChatGPT вытянул максимальное количество полезной информации и реализация оказалась очень близкой к идеальным ожиданиям. Дальше все по накатанной: - добавление бизнес логики в сервис (он тут появился почему-то сразу); - переход на DTO; - переход на миграцию схемы БД с Flyway; - покрытие API тестами; - добавление негативных тестовых сценариев. Особенно меня порадовало, что ChatGPT расписывал каждый шаг словами и потом уже выдавал код. Через 15-20 минут готовое решение по всем канонам с зелеными тестами. Второй очень впечатлявший меня кейс связан с оптимизацией Dockerfile. Я скормил ему реальный Dockerfile одного из сервисов и спросил, какие потенциальные проблемы он видит. В ответ получил положительную оценку текущего состояния и список из 4 очень грамотных улучшений. Дальше я начал задавать такие же вопросы с указанием интересующей меня области (безопасность, размер образа и т.д.). Везде получил реально очень грамотные рекомендации на уровне синьора или даже эксперта. Из всех списков выбрал самые важные и попросил применить только их. На выходе получил отличный Dockerfile с инлайн комментариями по каждому блоку. Напомнило работу в паре с опытным экспертом. Последний кейс касается сложного кода и рефакторинга. Как я уже говорил, тут самое сложное в грамотной передаче полного контекста. Поэтому я нашел более-менее изолированный класс с визуально очень сложным для восприятия кодом и попросил объяснить мне его. В ответ получил пошаговый разбор происходящего в коде. После этого спросил у него, как можно улучшить данный код. Выбрал понравившиеся рекомендации и попросил применить. Потом запросил генерацию тестов на изначальный код, включая негативные сценарии. Успешно перенес предложенный код в IDE и после упрощений IDE подсветил еще несколько минорных улучшений. Зеленые тесты и кейс закрыт. Что интересно, ChatGPT не знает ваших предпочтений и может генерировать противоречивые рекомендации. Например, он рекомендовал избавиться от var, потому что тогда кожаный мешок будет явно видеть типы данных. :) В общем, без интеграции в IDE это пока все еще кейс не с такими крутыми ожиданиями. Ждём Copilot X. :)
  • xpinjection

    Мир разработки безвозвратно изменился после революционного скачка в развитии AI. Copilot в своей первой версии кажется детской поделкой на коленке по сравнению с ChatGPT 4. Я на прошлой неделе перешел на платную версию ChatGPT и считаю это лучшей инвестицией в свою эффективность для большинства IT специальностей. Сегодня в посте приведу несколько практических примеров использования, которые меня впечатлили. Я пропущу тему написания разнообразных текстов, потому что она более актуальна для менеджеров. А мы поговорим о сугубо технических. Начнем с первой задачи. Мне нужно было через JIRA API создать ряд сущностей. Я делал это в прошлом и поэтому знал где искать детали. Но нужно было найти конкретный API, разобраться с параметрами, подставить свои значения и подготовить удобный запрос. У меня в сумме заняло минут 20. Я сформулировал ту же задачу в 2 предложения ChatGPT. В ответ получил детальную пошаговую инструкцию, сформированные API вызовы и готовые curl команды. Потраченное время 2-3 минуты. Ускорение в 7-10 раз. С ChatGPT очень круто писать код, потому что он держит в памяти весь контекст диалога. Можно улучшать код, пока он не получится желаемого вида. Я за 10 минут прошел следующий путь: - создание нового API эндпоинта в Spring Boot по чисто логическому описанию без конкретного описания бизнес модели; - выделение логики обработки данных в сервис; - добавление валидаций; - сохранение данных в MongoDb; - выделение DTO и маппинг в сущности (никто не любит это делать руками); - написание набора тестов на бизнес логику (с отличной генерацией тестовых данных); - написание набора API тестов с использованием TestContainers и RestAssured (включая все негативные сценарии). Разработчики синьор уровня должны с такой задачей справляться за 2-3 часа. Мидлы и джуны тратят 4-8 часов. При грамотном использовании ChatGPT, я получил весь работающий код за 10 минут. Еще минут 5-10 понадобилось на перенос кода в IDE, мелкие улучшения и запуск всех тестов. Итого 15-20 минут на всю задачу. Даже если округлить до получаса, то это ускорение в 4-6 раз даже по сравнению с уровнем синьора. Для мидлов и джунов у меня грустные новости… Что можно сказать о качестве сгенерированного кода? Вполне неплохо. Не везде оптимально или как бы писал я, но все работает и можно под прикрытием тестов потом сделать любой рефакторинг. Генерация тестов - это вообще one love! И очень круто работает пошаговое улучшение кода по конкретным замечаниям. И тут мы приходим к очень важному фактору. Чтобы улучшать код, нужно знать что получилось не очень хорошо в существующем коде. А это требует изначально определенного уровня экспертизы и опыта. Поэтому в руках синьоров инструмент может работать шикарно, избавляя от кучи рутины. Но у ChatGPT есть ограничение в отсутствии персонализации. Он не может подстраиваться под ваш стиль разработки, используемые фреймворки и библиотеки. Для этого ему нужно знать контекст проекта и анализировать существующий код. Ну и конечно же, хочется делать генерацию кода сразу в IDE. Это позволит еще существенно упростить и ускорить процесс. Поэтому я с нетерпением жду Copilot X. На следующей неделе поделюсь другими практическими примерами. А вам удалось где-то применить ChatGPT с wow-эффектом? Делитесь в комментариях!
  • Реклама

  • xpinjection

    Завтра хочу написать пост на тему AI в разработке, а пока пятница и время расслабиться. :)
  • xpinjection

    Я часто слышу от разных людей в компаниях или на собеседованиях, что им не приходилось работать в «настоящем Scrum». Часть из них даже уверена в том, что «настоящий Scrum» - это некий выдуманный радужный единорог, который в чистом виде не существует и вообще никому не нужен. У меня подобные мнения всегда вызывают удивление. Что именно недостижимо или не нужно компаниям/командам? Итеративная разработка, чтобы иметь регулярные точки адаптации целей, своих процессов и практик? Или фокус на понятных общекомандных целях, которые все понимают одинаково и стремятся достичь в рамках итерации? Или управление разработкой из единого бэклога со сквозной приоритезацией, за которую отвечает выделенная роль Product Owner? Или периодическое выравнивание всей командой на тему того, что было достигнуто и что важно делать дальше? Про Daily Scrum я даже не упоминаю, потому что он есть в каком-то виде даже у команд, в которых Scrum-а никогда не было. :) Если вы из упомянутой группы неверующих в Scrum, накидайте в комментариях доводов. Мне реально очень любопытно! :)
  • xpinjection

    Результаты опроса о коммуникационных платформах показали, что 14% используют Telegram. Может я конечно не знаю о каких-то скрытых фичах, но как вы обходитесь без следующих возможностей? 1. Тредов для обсуждения конкретных вопросов в общем канале. 2. Настраиваемых групп для упоминания в сообщении (типа backend, qa и т.д.). 3. Возможности удалить сотрудника из всех чатов при увольнении. 4. Возможности быстро создать новый канал с нужными группами людей. 5. Двухсторонних интеграций со всеми остальными рабочими инструментами. 6. Настройки удобных упоминаний и нотификаций из разных каналов. Собрал только самые критичные пункты и пронумеровал для удобства обсуждения в комментариях. Любители Телеги, поделитесь секретами! :)
  • xpinjection

    Я иногда встречаю команды, которые ведут все командные коммуникации в Телеграмме. У меня аж глаз начинает дергаться от хаотического полотна сообщений по сравнению с работой в платформах как Slack или Teams. И мне стало интересно, кто что использует сейчас в качестве основной платформы для коммуникаций в команде/компании. Поучаствуйте пожалуйста в анонимном опросе.
  • xpinjection

    Давно не було анонсів цікавих онлайн-конференцій. 30 березня запрошуємо на Cloud Builders: Java Conf!🌟 Долучайтеся до виступів спікерів з акцентом на кодинг та практичні кейси, а також не пропустіть інтерактив – Java code puzzle. Програма дійсно насичена: - AI зараз у топі, і ми детально заглибимось у тему OpenAI, який може допомогти мільйонам; - Сode-focussed session “Java Patterns and Practices for Serverless Applications”; - Практичні кейси про “Amazon CodeGuru and CodeWhisperer for Java Developers on AWS”; - JVM Performance Engineering - Inside OpenJDK and the HotSpot Java Virtual Machine; - The Hacker’s Guide to Kubernetes. Поговоримо також про Spring Cloud Function & Azure Functions, підводні камені Java 20, Event Streaming і Apache Pulsar. 📆 30 березня о 10:00 (GMT +3) Формат: одноденна онлайн-конференція. Участь безкоштовна! 👉 Дізнатися більше та зареєструватися
  • xpinjection

    Я обещал поделиться своим видением причин, по которым сокращения в IT компаниях сильно коснулись Agile/Scrum ролей. Во время сокращений компании пытаются оценить пользу от каждого сотрудника и насколько она соответствует расходам на него. И тут начинается самое интересное… Многие люди на позиции ScrumMaster не могут четко сформулировать, какую пользу они приносят компании. Я провожу достаточно много собеседований на эту позицию и обязательно задаю 2 вопроса: 1. Какие ожидания от вашей роли у руководства компании и команды? Как вы их доносили/согласовывали? 2. Представьте, что для CEO компании ScrumMaster - это новая роль и ему интересно узнать в деталях как выглядит ваша рабочая неделя. Как бы вы ее описали? Удивительно, но только 15% собеседуемых осиливают первый вопрос и практически никто (за все время было буквально пару кандидатов) не добирается в ответе на второй вопрос дальше среды. При этом, зарплаты ScrumMaster-ов нельзя назвать небольшими. Медиана по рынку Украины в 2021-2022 была $3500. Мне понравился комментарий одного из кандидатов по поводу сокращений SM в его предыдущей компании: «Это luxury роль для тех компаний, у кого достаточно денег, чтобы ее себе позволить». Я надеюсь, что этот кризис вернет индустрию к более прагматичному пониманию Agile/Scrum и снизит влияние культов в компаниях.
  • xpinjection

    Пятничное фото счастливых Java разработчиков, которых еще не заменил AI. ;)
  • xpinjection

    Сегодня у меня для вас есть интересный наброс. :) Как вы наверняка знаете, за последние полгода по большому количеству IT компаний прокатилась волна сокращений. Это коснулось и больших международных корпораций и уютных продуктовых компаний. Но вот что интересно, появляется все больше обсуждений, что непропорционально сильно эти сокращения коснулись «Agile ролей». В отдельном посте я расскажу о моём видении причин чуть подробнее. Но мне кажется, одной из назревших проблем стал «культ Agile», который в больших компаниях породил чуть ли не целые департаменты с новыми должностями. И все из-за активно распространяющихся в Agile сообществах мифов: - Вы не можете делать настоящую продуктовую разработку, если у вас не Scrum. - Ваш Scrum наверняка неправильный, если его вам внедрял не Agile Coach. - У вас не получится работать по Scrum, если не нанять ScrumMaster-а и желательно с сертификатами. - Чтобы понять что вы работаете по LeSS, пригласите экспертов по LeSS оценить ваш кейс. Иначе это не LeSS. - Вы не поймете сути Agile/Scrum/LeSS, если не сходите на тренинг. Ну и вообще, что с вами обсуждать, если вы не были на тренинге. - Чтобы провести успешную Agile трансформацию нужен Agile Coach. - Agile процессы в большой компании должна формировать внутренняя группа Agile Coach-ей или ScrumMaster-ов. И удивительным образом мы получили забавную нишу в индустрии, в которой можно что-то только «осознать и постигнуть» только через тренинги от «просветленных гуру». Что думаете? Вы сталкивались с подобными мифами в своей работе? #agile #scrum
  • xpinjection

    В продолжение предыдущего поста хочу привести пример как проходит работа с джунами в подавляющем большинстве компаний, которые не вкладываются в упомянутые мной факторы. Джуны сначала отбираются по результатам поверхностных типовых собеседований или тестовых заданий. Потом на финальных собеседованиях отбираются лучшие из них в конкретные команды. Будущие менторы не всегда участвуют в процессе. И вот джун нанят за $400-800. Компания радуется экономии. Джуну выделяют ментора, которому это менторство даром не сдалось. В более редких случаях, это часть их согласованных обязанностей как тим лида или синьор уровня. У ментора без того хватает работы, поэтому джуном он занимается по остаточному принципу, тратя на него до 10% своего времени. Мол, он же мотивирован и сам разберется, главное вектор развития указать. Джун начинает «высасывать знания» из организации, цепляясь за разных людей и занимая их время. Так как серьезной системы онбординга нет, то в этот процесс затягивается много людей. В это время ценность от джуна очень посредственная. А вот суммарные неявные затраты могут легко быть на уровне 10-20% времени одного синьора. И вот уже джун обходится компании в дополнительные $600-1200. Проходит 6-8 месяцев, джун стал более самостоятельным, напитался знаниями от организации и понимает, что может получать больше. Но в компании пересмотр зарплат делается раз в год, а джунам добавляют минимально $200-300. Ведь они «обязаны» компании, которая их пригрела и взрастила. Джун выходит в поисках на рынок как «джун с практическим опытом» или даже миддл (так как в индустрии размытое понимание этого уровня), получает предложение на $1000+ и уходит из компании. Теперь он уже никому не обязан и может начинать полноценную карьеру. Выиграла ли компания от такой стратегии? Очень сомнительно! Что думаете? #найм
  • xpinjection

    Интересная ситуация сейчас образовалась на IT рынке труда в Украине. Количество вакансий особо не растет, а вот количество доступных специалистов постоянно увеличивается. Причем, среди них очень большой процент джунов. Раньше их радостно набирали аутсорсинг компании ради самой большой маржи, но сейчас часть проектов у них закрывается или сокращается. И вроде, с одной стороны, на рынке можно найти классных джунов за небольшие деньги на любой вкус. А с другой стороны, компании не особо хотят нанимать джунов. В основном из-за того, что не умеют получать от них максимум пользы. На мой взгляд, успех в этой области имеет 3 составляющих: менторство, онбординг и программа развития джунов. Без хорошего ментора джуны могут приносить больше вреда чем пользы. Причем, речь идет именно о добровольном менторстве, а не о насильном назначении. Самая натуральная мотивация стать ментором появляется у части зрелых специалистов, когда просто делать работу уже скучно, а хочется кого-то наставлять и делиться своим опытом. На втором месте в натуральной мотивации идет желание делегировать свои рутинные задачи. Замыкает тройку лидеров хорошая финансовая мотивация (помните, вы ведь сэкономили на найме джунов). Ну и конечно же, менторам нужно достаточно свободного времени для этой роли. Программа эффективного онбординга джунов нужна, чтобы минимизировать усилия других специалистов и получать предсказуемый результат. Хорошо структурированная база знаний, пошаговые туториалы по решению типовых задач, максимально простые настройки рабочей среды и доступов, видео уроки или курсы по продукту и технологическому стеку… Причем, система онбординга должна быть «живой», чтобы улучшаться с каждым прошедшим ее человеком. Ну и наконец, самое больное место для большинства компаний - программа долгосрочного развития. Сегодняшний джун через какое-то время (вам выгодно чтобы побыстрее) вырастет в мидла. Он захочет больше денег, сложнее задач и шире зоны ответственности. И если текущая компания не сможет это обеспечить, то он просто уйдёт в другую. Интересный факт, многие джуны стесняются просить повышения в своей первой компании и предпочитают поискать лучшие варианты на рынке. Поэтому программу развития нужно иметь прозрачной и продуманной. Это позволит не только не потерять джунов, в которых вы вложились, но и получить более лояльных сотрудников. В результате, получается что джуны обходятся не так уж и дешево. И с высокой текучкой, если нет программы развития. Поэтому многие компании, особенно продуктовые, не готовы вкладываться долгосрочно в такую стратегию найма. Но из-за начинающегося в индустрии кризиса, возможно ситуация изменится и больше компаний попробуют найм джунов. А в вашей компании нанимают джунов? Насколько эффективно выходит?
  • xpinjection

    Год назад случилось то, что с трудом укладывается в голову любого цивилизованного человека, живущего в 21-ом веке. Прямо в центре Европы, ради имперских амбиций одного карлика, началась масштабная жестокая война за Украину. Война с планами по уничтожению украинской культуры и государственности. Прошел целый год, полный боли и ненависти. Год постоянных эмоциональных качелей. Но самое главное, это год гордости за наших людей. Которые сплотились и не дали врагам осуществить свои планы ни за 3 дня, ни за 3 месяца, ни за год. Каждый на своем месте делал максимум для общей победы. А многие отдали самое дорогое - свои жизни. :( Этот год навсегда изменил каждого из нас и жизнь уже никогда не будет такой как до 24 февраля 2022 года. :( Слава ЗСУ! Наши люди - сила! Русне гореть в аду!
  • xpinjection

    Очень крутой сбор на дроны от фонда KOLO и ДОУ. Если в феврале еще не выбрали куда донатить, то вот вам отличный вариант!
  • Реклама

  • xpinjection

    Ми продовжуємо наш збір на 20 комплексів Wing Pro та резерв 10-15 крил для заміни втрачених, від виробника «Небесна кара». 🚀 Загалом нам потрібно 4 500 000 грн. 🕶 Ці птахи надійні «очі військових» за помірну ціну. ☝️ Але давайте поглянемо, що ще вони вміють. Гортайте галерею та дізнавайтесь про те, яких крутих помічників для ЗСУ виготовляють наші українці. Долучитись до збору можна за посиланням: http://go.koloua.com/nebesna-kara
  • xpinjection

    Почти месяц ничего не писал, так как дикая загрузка по работе и постоянные эмоциональные качели. Буду исправляться. Есть несколько интересных тем, которыми бы хотелось поделиться. А пока небольшой анонс про найм. Я снова ищу 2-3 SM в продуктовую финтех компанию для старта Agile трансформации. Поначалу у SM будет одна команда в пилотном продукте, дальше будем масштабировать. Будет сложно, но интересно. А еще мы в поисках сильного Java Tech Lead или hands-on Solution Architect в новый крутой продукт. Финтех, нагрузка, микросервисы, K8S и другие прелести в комплекте. ;) За деталями стучитесь в личку!
  • xpinjection

    Этот год без преувеличений стал самым сложным и трагичным годом. Он принёс в нашу страну полномасштабную войну, которую сложно было вообразить в современном мире. Этот год забрал так много у огромного количества людей. Кто-то потерял на войне родных и близких, кто-то остался без крыши над головой, кто-то вынужден был оставить свой дом и стать беженцем… Год бесконечной боли… В то же время, этот год для Украины стал годом стойкости, несокрушимости и веры в людей. Столько сделано практически невозможного. Того, во что даже теоретически мало кто верил. Героические воины ЗСУ, добровольцы в ТРО, железнодорожники, пограничники, энергетики, волонтёры, наши с вами соседи по Европе - это далеко неполный список героев этого года. Я не знаю, что принесёт 2023-й год, но озвучу желание всех украинцев. Надеюсь, он принесёт нам долгожданную победу в этой войне и смерть нашим врагам. А также, станет годом восстановления и новой истории независимой Украины в Европе. С наступающим вас Новым Годом! Слава Украине!