Авторский канал @xpinjection - опытный Java Tech Lead, Delivery Manager и консультант с 15+ лет опыта в IT.
Я пишу о Java, распределённых системах, Agile, процессах разработки, инженерных практиках, QA, конференциях, инфраструктуре и многом другом...
Сегодня продолжу делиться интересными кейсами использования ChatGPT в разработке. И начну с самого неожиданного для меня.
Я скормил ему OpenAPI спеку и попросил на основании нее написать реализацию приложения с использованием указанного мной стека технологий. Оказалось, что из структуры спеки ChatGPT вытянул максимальное количество полезной информации и реализация оказалась очень близкой к идеальным ожиданиям.
Дальше все по накатанной:
- добавление бизнес логики в сервис (он тут появился почему-то сразу);
- переход на DTO;
- переход на миграцию схемы БД с Flyway;
- покрытие API тестами;
- добавление негативных тестовых сценариев.
Особенно меня порадовало, что ChatGPT расписывал каждый шаг словами и потом уже выдавал код. Через 15-20 минут готовое решение по всем канонам с зелеными тестами.
Второй очень впечатлявший меня кейс связан с оптимизацией Dockerfile. Я скормил ему реальный Dockerfile одного из сервисов и спросил, какие потенциальные проблемы он видит. В ответ получил положительную оценку текущего состояния и список из 4 очень грамотных улучшений.
Дальше я начал задавать такие же вопросы с указанием интересующей меня области (безопасность, размер образа и т.д.). Везде получил реально очень грамотные рекомендации на уровне синьора или даже эксперта. Из всех списков выбрал самые важные и попросил применить только их. На выходе получил отличный Dockerfile с инлайн комментариями по каждому блоку. Напомнило работу в паре с опытным экспертом.
Последний кейс касается сложного кода и рефакторинга. Как я уже говорил, тут самое сложное в грамотной передаче полного контекста. Поэтому я нашел более-менее изолированный класс с визуально очень сложным для восприятия кодом и попросил объяснить мне его.
В ответ получил пошаговый разбор происходящего в коде. После этого спросил у него, как можно улучшить данный код. Выбрал понравившиеся рекомендации и попросил применить. Потом запросил генерацию тестов на изначальный код, включая негативные сценарии. Успешно перенес предложенный код в IDE и после упрощений IDE подсветил еще несколько минорных улучшений. Зеленые тесты и кейс закрыт.
Что интересно, ChatGPT не знает ваших предпочтений и может генерировать противоречивые рекомендации. Например, он рекомендовал избавиться от var, потому что тогда кожаный мешок будет явно видеть типы данных. :) В общем, без интеграции в IDE это пока все еще кейс не с такими крутыми ожиданиями. Ждём Copilot X. :)
Мир разработки безвозвратно изменился после революционного скачка в развитии 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-эффектом? Делитесь в комментариях!
Я часто слышу от разных людей в компаниях или на собеседованиях, что им не приходилось работать в «настоящем Scrum». Часть из них даже уверена в том, что «настоящий Scrum» - это некий выдуманный радужный единорог, который в чистом виде не существует и вообще никому не нужен.
У меня подобные мнения всегда вызывают удивление. Что именно недостижимо или не нужно компаниям/командам?
Итеративная разработка, чтобы иметь регулярные точки адаптации целей, своих процессов и практик?
Или фокус на понятных общекомандных целях, которые все понимают одинаково и стремятся достичь в рамках итерации?
Или управление разработкой из единого бэклога со сквозной приоритезацией, за которую отвечает выделенная роль Product Owner?
Или периодическое выравнивание всей командой на тему того, что было достигнуто и что важно делать дальше?
Про Daily Scrum я даже не упоминаю, потому что он есть в каком-то виде даже у команд, в которых Scrum-а никогда не было. :)
Если вы из упомянутой группы неверующих в Scrum, накидайте в комментариях доводов. Мне реально очень любопытно! :)
Результаты опроса о коммуникационных платформах показали, что 14% используют Telegram. Может я конечно не знаю о каких-то скрытых фичах, но как вы обходитесь без следующих возможностей?
1. Тредов для обсуждения конкретных вопросов в общем канале.
2. Настраиваемых групп для упоминания в сообщении (типа backend, qa и т.д.).
3. Возможности удалить сотрудника из всех чатов при увольнении.
4. Возможности быстро создать новый канал с нужными группами людей.
5. Двухсторонних интеграций со всеми остальными рабочими инструментами.
6. Настройки удобных упоминаний и нотификаций из разных каналов.
Собрал только самые критичные пункты и пронумеровал для удобства обсуждения в комментариях. Любители Телеги, поделитесь секретами! :)
Я иногда встречаю команды, которые ведут все командные коммуникации в Телеграмме. У меня аж глаз начинает дергаться от хаотического полотна сообщений по сравнению с работой в платформах как Slack или Teams. И мне стало интересно, кто что использует сейчас в качестве основной платформы для коммуникаций в команде/компании. Поучаствуйте пожалуйста в анонимном опросе.
Давно не було анонсів цікавих онлайн-конференцій. 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)
Формат: одноденна онлайн-конференція.
Участь безкоштовна!
👉 Дізнатися більше та зареєструватися
Я обещал поделиться своим видением причин, по которым сокращения в IT компаниях сильно коснулись Agile/Scrum ролей. Во время сокращений компании пытаются оценить пользу от каждого сотрудника и насколько она соответствует расходам на него. И тут начинается самое интересное…
Многие люди на позиции ScrumMaster не могут четко сформулировать, какую пользу они приносят компании. Я провожу достаточно много собеседований на эту позицию и обязательно задаю 2 вопроса:
1. Какие ожидания от вашей роли у руководства компании и команды? Как вы их доносили/согласовывали?
2. Представьте, что для CEO компании ScrumMaster - это новая роль и ему интересно узнать в деталях как выглядит ваша рабочая неделя. Как бы вы ее описали?
Удивительно, но только 15% собеседуемых осиливают первый вопрос и практически никто (за все время было буквально пару кандидатов) не добирается в ответе на второй вопрос дальше среды.
При этом, зарплаты ScrumMaster-ов нельзя назвать небольшими. Медиана по рынку Украины в 2021-2022 была $3500. Мне понравился комментарий одного из кандидатов по поводу сокращений SM в его предыдущей компании: «Это luxury роль для тех компаний, у кого достаточно денег, чтобы ее себе позволить».
Я надеюсь, что этот кризис вернет индустрию к более прагматичному пониманию Agile/Scrum и снизит влияние культов в компаниях.
Сегодня у меня для вас есть интересный наброс. :) Как вы наверняка знаете, за последние полгода по большому количеству 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
В продолжение предыдущего поста хочу привести пример как проходит работа с джунами в подавляющем большинстве компаний, которые не вкладываются в упомянутые мной факторы.
Джуны сначала отбираются по результатам поверхностных типовых собеседований или тестовых заданий. Потом на финальных собеседованиях отбираются лучшие из них в конкретные команды. Будущие менторы не всегда участвуют в процессе.
И вот джун нанят за $400-800. Компания радуется экономии. Джуну выделяют ментора, которому это менторство даром не сдалось. В более редких случаях, это часть их согласованных обязанностей как тим лида или синьор уровня. У ментора без того хватает работы, поэтому джуном он занимается по остаточному принципу, тратя на него до 10% своего времени. Мол, он же мотивирован и сам разберется, главное вектор развития указать.
Джун начинает «высасывать знания» из организации, цепляясь за разных людей и занимая их время. Так как серьезной системы онбординга нет, то в этот процесс затягивается много людей. В это время ценность от джуна очень посредственная. А вот суммарные неявные затраты могут легко быть на уровне 10-20% времени одного синьора. И вот уже джун обходится компании в дополнительные $600-1200.
Проходит 6-8 месяцев, джун стал более самостоятельным, напитался знаниями от организации и понимает, что может получать больше. Но в компании пересмотр зарплат делается раз в год, а джунам добавляют минимально $200-300. Ведь они «обязаны» компании, которая их пригрела и взрастила.
Джун выходит в поисках на рынок как «джун с практическим опытом» или даже миддл (так как в индустрии размытое понимание этого уровня), получает предложение на $1000+ и уходит из компании. Теперь он уже никому не обязан и может начинать полноценную карьеру.
Выиграла ли компания от такой стратегии? Очень сомнительно! Что думаете?
#найм
Интересная ситуация сейчас образовалась на IT рынке труда в Украине. Количество вакансий особо не растет, а вот количество доступных специалистов постоянно увеличивается. Причем, среди них очень большой процент джунов. Раньше их радостно набирали аутсорсинг компании ради самой большой маржи, но сейчас часть проектов у них закрывается или сокращается.
И вроде, с одной стороны, на рынке можно найти классных джунов за небольшие деньги на любой вкус. А с другой стороны, компании не особо хотят нанимать джунов. В основном из-за того, что не умеют получать от них максимум пользы. На мой взгляд, успех в этой области имеет 3 составляющих: менторство, онбординг и программа развития джунов.
Без хорошего ментора джуны могут приносить больше вреда чем пользы. Причем, речь идет именно о добровольном менторстве, а не о насильном назначении. Самая натуральная мотивация стать ментором появляется у части зрелых специалистов, когда просто делать работу уже скучно, а хочется кого-то наставлять и делиться своим опытом. На втором месте в натуральной мотивации идет желание делегировать свои рутинные задачи. Замыкает тройку лидеров хорошая финансовая мотивация (помните, вы ведь сэкономили на найме джунов). Ну и конечно же, менторам нужно достаточно свободного времени для этой роли.
Программа эффективного онбординга джунов нужна, чтобы минимизировать усилия других специалистов и получать предсказуемый результат. Хорошо структурированная база знаний, пошаговые туториалы по решению типовых задач, максимально простые настройки рабочей среды и доступов, видео уроки или курсы по продукту и технологическому стеку… Причем, система онбординга должна быть «живой», чтобы улучшаться с каждым прошедшим ее человеком.
Ну и наконец, самое больное место для большинства компаний - программа долгосрочного развития. Сегодняшний джун через какое-то время (вам выгодно чтобы побыстрее) вырастет в мидла. Он захочет больше денег, сложнее задач и шире зоны ответственности. И если текущая компания не сможет это обеспечить, то он просто уйдёт в другую. Интересный факт, многие джуны стесняются просить повышения в своей первой компании и предпочитают поискать лучшие варианты на рынке. Поэтому программу развития нужно иметь прозрачной и продуманной. Это позволит не только не потерять джунов, в которых вы вложились, но и получить более лояльных сотрудников.
В результате, получается что джуны обходятся не так уж и дешево. И с высокой текучкой, если нет программы развития. Поэтому многие компании, особенно продуктовые, не готовы вкладываться долгосрочно в такую стратегию найма. Но из-за начинающегося в индустрии кризиса, возможно ситуация изменится и больше компаний попробуют найм джунов.
А в вашей компании нанимают джунов? Насколько эффективно выходит?
Год назад случилось то, что с трудом укладывается в голову любого цивилизованного человека, живущего в 21-ом веке. Прямо в центре Европы, ради имперских амбиций одного карлика, началась масштабная жестокая война за Украину. Война с планами по уничтожению украинской культуры и государственности.
Прошел целый год, полный боли и ненависти. Год постоянных эмоциональных качелей. Но самое главное, это год гордости за наших людей. Которые сплотились и не дали врагам осуществить свои планы ни за 3 дня, ни за 3 месяца, ни за год. Каждый на своем месте делал максимум для общей победы. А многие отдали самое дорогое - свои жизни. :(
Этот год навсегда изменил каждого из нас и жизнь уже никогда не будет такой как до 24 февраля 2022 года. :(
Слава ЗСУ! Наши люди - сила!
Русне гореть в аду!
Ми продовжуємо наш збір на 20 комплексів Wing Pro та резерв 10-15 крил для заміни втрачених, від виробника «Небесна кара».
🚀 Загалом нам потрібно 4 500 000 грн.
🕶 Ці птахи надійні «очі військових» за помірну ціну.
☝️ Але давайте поглянемо, що ще вони вміють.
Гортайте галерею та дізнавайтесь про те, яких крутих помічників для ЗСУ виготовляють наші українці.
Долучитись до збору можна за посиланням: http://go.koloua.com/nebesna-kara
Почти месяц ничего не писал, так как дикая загрузка по работе и постоянные эмоциональные качели. Буду исправляться. Есть несколько интересных тем, которыми бы хотелось поделиться. А пока небольшой анонс про найм.
Я снова ищу 2-3 SM в продуктовую финтех компанию для старта Agile трансформации. Поначалу у SM будет одна команда в пилотном продукте, дальше будем масштабировать. Будет сложно, но интересно.
А еще мы в поисках сильного Java Tech Lead или hands-on Solution Architect в новый крутой продукт. Финтех, нагрузка, микросервисы, K8S и другие прелести в комплекте. ;)
За деталями стучитесь в личку!
Этот год без преувеличений стал самым сложным и трагичным годом. Он принёс в нашу страну полномасштабную войну, которую сложно было вообразить в современном мире.
Этот год забрал так много у огромного количества людей. Кто-то потерял на войне родных и близких, кто-то остался без крыши над головой, кто-то вынужден был оставить свой дом и стать беженцем… Год бесконечной боли…
В то же время, этот год для Украины стал годом стойкости, несокрушимости и веры в людей. Столько сделано практически невозможного. Того, во что даже теоретически мало кто верил. Героические воины ЗСУ, добровольцы в ТРО, железнодорожники, пограничники, энергетики, волонтёры, наши с вами соседи по Европе - это далеко неполный список героев этого года.
Я не знаю, что принесёт 2023-й год, но озвучу желание всех украинцев. Надеюсь, он принесёт нам долгожданную победу в этой войне и смерть нашим врагам. А также, станет годом восстановления и новой истории независимой Украины в Европе. С наступающим вас Новым Годом! Слава Украине!