Кодинг мертв, да здравствует Вайб-кодинг! [часть 1]
🎩 Йоу!
Сейчас пишу один пет-проект и с самого его начала хотелось попробовать ИИ в написании кода, ну чтобы не ковыряться пару часов в docker-compose или в доке MongoDb, в общем, чтобы получить тот же результат, но за меньшее время. Вторая часть мотивации была зарыта в том факте, что это тема дико популярная, а я в ней до сих пор ноль.
Собственно так я и сделал.
Всякими чатами с GPT-4.5 или Claude Sonnet 3.7 я начал пользоваться раньше, но естественно каждый раз интегрировать их в рабочий процесс задача еще та, поэтому это скорее про “разово задать вопрос, попросить написать код и пойти дальше”.
Поэтому выбор падает на агентов, на этом поприще уже есть много “давно” существующих и новых решений, я решил выбрать самое хайпующее - Cursor, это IDE на основе Visual Code с встроенным агентом.
🤔 Как это базово работает - вы открываете проект через Cursor, он индексирует все файлы в проекте и у вас появляется чат с нейронкой отдельной вкладкой, ну и к примеру, если вам нужно реализовать какой-то IOrderRepository, вы пишите промпт “реализуй методы репозитория”. Дальше агент находит нужный файл или файлы, пару секунд… хоп и он вам предлагает изменения, которые применяются по кнопке, ахуй, если честно. Даже когда я впервые увидел все эти ИИ приколы еще несколько лет назад, включая чат или генерацию картинок, я не ощутил такой волны прогресса.
🤔 Насколько же все это хорошо работает? В целом очень даже, уточнял запросы иногда приходилось, но полностью выкидывать код и говорить, что это мусор - нет. Плюс эта IDE круто мне помогла сделать docker-compose, прописав все роуты от одного приложения к другому, мне нужно было всего пару строчек поправить, чтобы у меня все запускалось и в контейнере и без него.
🤔 Будет ли это работать на больших проектах? Не проверял(ленивый), но думаю - это вполне возможно, если предподготавливать данные по проекту и добавлять нелинейности в их выборе, скорей всего так уже делают.
😳 В общем, когда Дженсен Хуанг сказал, что 90% кода будет писаться ИИ, все порофлили с этого, но похоже так и будет. Правда с важным уточнением о том, что пользоваться этими агентами будут по прежнему программисты. Тут думаю по аналогии с self-driving машинами, когда довольно с низкой вероятностью возникает ситуации, в которой ИИ ведет так, как от него не ожидается и поэтому отдавать управление полностью нельзя. Только там особо не имеет смысл переключатся с куска мяса на железо, так как это тупо не удобно и опасно, в то время с программированием применимость и польза гибридного подхода более очевидна.
#статья_общая
Сейчас пишу один пет-проект и с самого его начала хотелось попробовать ИИ в написании кода, ну чтобы не ковыряться пару часов в docker-compose или в доке MongoDb, в общем, чтобы получить тот же результат, но за меньшее время. Вторая часть мотивации была зарыта в том факте, что это тема дико популярная, а я в ней до сих пор ноль.
Собственно так я и сделал.
Всякими чатами с GPT-4.5 или Claude Sonnet 3.7 я начал пользоваться раньше, но естественно каждый раз интегрировать их в рабочий процесс задача еще та, поэтому это скорее про “разово задать вопрос, попросить написать код и пойти дальше”.
Поэтому выбор падает на агентов, на этом поприще уже есть много “давно” существующих и новых решений, я решил выбрать самое хайпующее - Cursor, это IDE на основе Visual Code с встроенным агентом.
#статья_общая
Please open Telegram to view this post
VIEW IN TELEGRAM
32🔥6❤4
Кодинг мертв, да здравствует Вайб-кодинг! [часть 2]
😳 Не сжимается ли у вас что-то, когда вы представляете, как вместо кода вы в основном пишите промпты и лишь иногда что-то правите?
Признаюсь честно, я был именно из таких, хоть и не долго. Объясняю почему, в IT есть прям культ написания кода - слепая печать, красивые клавы, настроенные IDE, сниппеты для кода и так далее, и я ей отчасти был пропитан, ведь то чувство, которое я ловлю когда сажусь в час ночи покодить под Skeler - невероятно, и промиптинг как будто не сильно с этим матчится. К тому же я почувствовал на себе ощущение, когда ценность какого-то навыка, который ты нарабатывал годами, упала на глазах.
😎 Но я не пусси, чтобы долго убиваться этим, ибо это естественный ход прогресса. Но это заставило меня задуматься о том, а как все таки переход на такого рода инструменты повлияет на рынок. Казалось бы СМЕРТЬ, КАРАХ, УПАДОК💀 Но чисто логически мне слабо верится в такую картину, ведь весь вопрос в том, а как же сильно ИИ повысит продуктивность разрабов. И чисто теоретически, не очень-то и повысит, особенно, если мы говорим про работу в средних и больших корпорациях. Ведь агенты помогают писать код, а много ли кода в день пишут программисты, ну несколько сотен строк в день в среднем, потому что основное кол-во времени уходит на согласования, уточнение требований, оформления и формирования понимания у себя в голове “а как же все таки надо”. Да, возможно отдельные небольшие команды или индихакеры смогут повысить свой перфоманс даже в разы, но это меньшинство, да и флаг им в руки, это будет их рассвет.
🥲 ФАН ЧАСТЬ
Да-да, тут есть над чем порофлить. Как всегда ютуб не подводит и наваливает кучу смешных видосов на тему “гыгыгы программисты тупеют используя ИИ, качество кода падает”, что меня естественно бесконечно веселит, особенно когда эти видео от zero-code блогеров.
😐 Почему?
Да потому что люди наступают на одни и те же грабли, они не видят разницу между этим и тейками на подобии - “гыгыгы люди перестают читать книги, сейчас все отупеют”, “гыгы уже костер не можем развести двумя камнями, деградация”.
А еще комичность заключаются в том, что некоторые думают, что именно описывание логики кодом является, чем-то особенным и ключевым, но по факту - это лишь более удобный способ структуризировать идею и набор сопутствующих решений. И если человеку будет удобнее и эффективнее формулировать логику именно обычными словами и предложениями, а потом переводить все это в код, то так оно и будет. Было: Код-Байты-Исполнение, стало: Промпт-Код-Байты-Исполнение, иными словами классическое добавления еще одного слоя абстракции, а они могут и протекать и это нормально.
😉 Станут ли программисты хуже писать код?
Да, если ты генеришь большинство кода, то навык в определенной степени атрофируется, это как, если бы мы сейчас попробовали написать код в обычном блокноте.
Но это и не проблема, ведь навык решать задачу теми же инструментами и в тех же условиях остается и нарабатывается, ведь ИИ в большинстве случаев не выдаст вам полное решение с нуля и вряд ли скоро сможет, так как это была бы фантастика, способная поставить под сомнения надобность большинства людей в работе головой. А следовательно вам так или иначе придется разбираться во всем, что вы пишите или же оно не будет работать, как вам нужно. У начинающего программиста нет выбора, ему придется углубляться.
Какое у вас мнение по этой теме? Пользовались ли вы AI тулзами для оптимизации работы?
Спасибо за прочтение👒
Дайте реакцию🪙
#статья_общая
Признаюсь честно, я был именно из таких, хоть и не долго. Объясняю почему, в IT есть прям культ написания кода - слепая печать, красивые клавы, настроенные IDE, сниппеты для кода и так далее, и я ей отчасти был пропитан, ведь то чувство, которое я ловлю когда сажусь в час ночи покодить под Skeler - невероятно, и промиптинг как будто не сильно с этим матчится. К тому же я почувствовал на себе ощущение, когда ценность какого-то навыка, который ты нарабатывал годами, упала на глазах.
Да-да, тут есть над чем порофлить. Как всегда ютуб не подводит и наваливает кучу смешных видосов на тему “гыгыгы программисты тупеют используя ИИ, качество кода падает”, что меня естественно бесконечно веселит, особенно когда эти видео от zero-code блогеров.
Да потому что люди наступают на одни и те же грабли, они не видят разницу между этим и тейками на подобии - “гыгыгы люди перестают читать книги, сейчас все отупеют”, “гыгы уже костер не можем развести двумя камнями, деградация”.
А еще комичность заключаются в том, что некоторые думают, что именно описывание логики кодом является, чем-то особенным и ключевым, но по факту - это лишь более удобный способ структуризировать идею и набор сопутствующих решений. И если человеку будет удобнее и эффективнее формулировать логику именно обычными словами и предложениями, а потом переводить все это в код, то так оно и будет. Было: Код-Байты-Исполнение, стало: Промпт-Код-Байты-Исполнение, иными словами классическое добавления еще одного слоя абстракции, а они могут и протекать и это нормально.
Да, если ты генеришь большинство кода, то навык в определенной степени атрофируется, это как, если бы мы сейчас попробовали написать код в обычном блокноте.
Но это и не проблема, ведь навык решать задачу теми же инструментами и в тех же условиях остается и нарабатывается, ведь ИИ в большинстве случаев не выдаст вам полное решение с нуля и вряд ли скоро сможет, так как это была бы фантастика, способная поставить под сомнения надобность большинства людей в работе головой. А следовательно вам так или иначе придется разбираться во всем, что вы пишите или же оно не будет работать, как вам нужно. У начинающего программиста нет выбора, ему придется углубляться.
Какое у вас мнение по этой теме? Пользовались ли вы AI тулзами для оптимизации работы?
Спасибо за прочтение
Дайте реакцию
#статья_общая
Please open Telegram to view this post
VIEW IN TELEGRAM
22❤16🔥8
Меня время от времени просят на собесах закодить какую-то задачку по многопоточности, где нужно синхронизировать потоки. И каждый раз падаю лицом в грязь🤤 потому что в продакшене такое ни разу не приходилось делать, максимум Parallel и Interlocked вызывать. Сейчас уже во второй раз позвали на собес в компанию, которая занимается HFT, а это априори означает, что ты должен уметь работать с памятью и естественно сечь за многопоточку.
Но не о собесе сейчас речь, сел я сегодня за комп, чтобы углубить свои знания по этой теме. Подумал, что с теорией плюс минус знаком, так как сотню раз её рассказывал на собесах, поэтому решил приступить к практике. Вот только как практиковать?
Книги, курсы, сборники задач - довольно долго и топорно, ну вы уже поняли, что я выбрал. Тупо пошел у гпт спрашивать задачи. Иииии какой же кайф🫦 начинает с чего то попроще и постепенно усложняет уровень задач, и в итоге я дошел, то того кода, что ниже буквально за 2-3 часа, постоянно отвлекаясь на прослушивание рэпа. При этом главное не разрешать чату писать код за вас во время обучения, так как это по факту уже ответ, просто скидывайте ему свои варианты кода и спросите его оценить и намекнуть на ошибки. Наверное рано или поздно он запнется об сложность реализации и не сможет вам подсказать куда двигаться, но думаю к тому времени, если вы во всем разбирались сами, то уже сами сможете придумать решение или отправиться к более серьезным источникам.
Я это к чему - да просто очень крутой способ упростить себе обучение вот в таких небольших кейсах, так как поиск практических задач и их разбор - это всегда было чем-то очень сложным и кривым.
#опыт
Но не о собесе сейчас речь, сел я сегодня за комп, чтобы углубить свои знания по этой теме. Подумал, что с теорией плюс минус знаком, так как сотню раз её рассказывал на собесах, поэтому решил приступить к практике. Вот только как практиковать?
Книги, курсы, сборники задач - довольно долго и топорно, ну вы уже поняли, что я выбрал. Тупо пошел у гпт спрашивать задачи. Иииии какой же кайф
Я это к чему - да просто очень крутой способ упростить себе обучение вот в таких небольших кейсах, так как поиск практических задач и их разбор - это всегда было чем-то очень сложным и кривым.
public class PriorityTaskSchedulerV2(int maxParallelTasks)
{
private readonly Lock _lock = new();
private readonly SortedDictionary<int, Queue<Func<Task>>> seq = new();
private readonly SemaphoreSlim rateLimiter = new(maxParallelTasks, maxParallelTasks);
private readonly SemaphoreSlim enqueueWaiter = new(0);
public void Enqueue(Func<Task> taskFactory, int priority)
{
lock (_lock)
{
if (!seq.ContainsKey(priority))
seq[priority] = new Queue<Func<Task>>();
seq[priority].Enqueue(taskFactory);
enqueueWaiter.Release();
}
}
public async Task RunAsync(CancellationToken cancellationToken = default)
{
var tasks = new List<Task>();
while (!cancellationToken.IsCancellationRequested)
{
await enqueueWaiter.WaitAsync(cancellationToken);
Func<Task> taskFactory;
lock (_lock)
{
var firstPriority = seq.Keys.First();
taskFactory = seq[firstPriority].Dequeue();
if(seq[firstPriority].Count == 0)
seq.Remove(firstPriority);
}
var task = WrapInSemaphore(taskFactory);
tasks.Add(task);
}
await Task.WhenAll(tasks);
}
private async Task WrapInSemaphore(Func<Task> task)
{
try
{
await rateLimiter.WaitAsync();
await task.Invoke();
}
finally
{
rateLimiter.Release();
}
}
}
#опыт
Please open Telegram to view this post
VIEW IN TELEGRAM
26🔥14👍2
Еще мне тут достался набор всех вопросов с ответами от одного бигтеха, в том числе были практические задачи, и я вот что подумал. Сейчас сильно набрала популярность такая тема сливов вопросов с собеса(разными путями: через паравозики собесов, просто записи или кто-то из сотрудников сливает) и эта проблема, как мне кажется, является одним из краеугольных камней в проверке компетенций. Опустим то факт, что задания бывают херовыми и тупо не реливантными, идеальное собеседование в любом случае должно содержать лайф кодинг, так как это ближе всего к реальной работе. И я реально не понимаю почему HR не борются со сливами именно генерацией новый задач под каждый собес, так как генерация новой задачи занимает минут 15 и вот уникальная проверка готова. Что ж, надеюсь HR'ы не читают мой блог😑
В прочем и кандидат может сидеть с ИИ, который будет ему подсказывать, а это проблему уже сложнее решить😏
В прочем и кандидат может сидеть с ИИ, который будет ему подсказывать, а это проблему уже сложнее решить
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍8🔥2
Long time no see, yooooo 😎
Завязка
Не считая предыдущего поста, я не светился почти три месяца, и на это есть причина.
Одна из двух больших целей на этот год - это покупка квартиры. Не сказать, что я мечтал о ней или мне это было критически необходимо, скорее наоборот думал, что квартира станет обузой, так как у меня нет и не было планов задерживаться в каком либо месте. Но мое мнение поменялось на 180 градусов, когда я услышал аргумент про то, что своя квартира - это отличная возможность жить стабильно за копейки, а возможности я люблю. Если жить не супер роскошно, то зачастую съем - это половина(а то и больше) расходов за месяц, то есть время, которые мы можем провести за счет накопленный возрастает вдвое, что потрясающе.
Ну и конечно ипотека в 6% ощущается как подарок при ставке в ~20%, поэтому я решил действовать... И через пол года начал🙃
Превозмогание
Я не ожидал, но это оказалось действительно сложной задачей. Столько решений как в предыдущие 5 месяцев, я не принимал за последние пару лет, от выбора города, где купить квартиру, до выбора цвета обоев. К тому же я хотел как можно быстрее закончить процесс заселения и вернуть тот уровень комфорта, который был на предыдущем месте. Все это полностью парализовало мою работу за последний месяц, буквально все активности пошли под нож.
Если кто-то тоже планирует впервые купить себе квартиру, то задавайте вопросы, постараюсь ответить.
Есть конечно и второй минус - пока ипотека не выплачена, я ограничен РФ и работой на компании с аккредитацией до полного погашения. Все это довольно значительно, поэтому я скорей всего буду выплачивать ипотеку как можно быстрее(многоработничество🤔 ), хоть это и не особо выгодно с текущей инфляцией.
Счастливый конец
И все же It's done😎 и я постепенно собираюсь возвращаться в ритм, который был в конце 2024, так как ВУ сама себя не найдет и ютуб падпищеков не накинет.
Кста, если есть кто из Калининграда, отзовитесь, а то в Ростове было пару интересных сообществ, а тут не понятно.
Еще я написал кучу постов на LinkedIn за последние несколько месяцев, так что буду благодарен за реакции, комменты. Один из них даже набрал 6к охвата:
Ноль
Раз
Два
Три
Четыре
Пять
Шесть
Семь
Восемь
Девять
Десять
Завязка
Не считая предыдущего поста, я не светился почти три месяца, и на это есть причина.
Одна из двух больших целей на этот год - это покупка квартиры. Не сказать, что я мечтал о ней или мне это было критически необходимо, скорее наоборот думал, что квартира станет обузой, так как у меня нет и не было планов задерживаться в каком либо месте. Но мое мнение поменялось на 180 градусов, когда я услышал аргумент про то, что своя квартира - это отличная возможность жить стабильно за копейки, а возможности я люблю. Если жить не супер роскошно, то зачастую съем - это половина(а то и больше) расходов за месяц, то есть время, которые мы можем провести за счет накопленный возрастает вдвое, что потрясающе.
Чиллить без работы целый год?
Почему бы и да!
Ну и конечно ипотека в 6% ощущается как подарок при ставке в ~20%, поэтому я решил действовать... И через пол года начал🙃
Превозмогание
Я не ожидал, но это оказалось действительно сложной задачей. Столько решений как в предыдущие 5 месяцев, я не принимал за последние пару лет, от выбора города, где купить квартиру, до выбора цвета обоев. К тому же я хотел как можно быстрее закончить процесс заселения и вернуть тот уровень комфорта, который был на предыдущем месте. Все это полностью парализовало мою работу за последний месяц, буквально все активности пошли под нож.
Если кто-то тоже планирует впервые купить себе квартиру, то задавайте вопросы, постараюсь ответить.
Есть конечно и второй минус - пока ипотека не выплачена, я ограничен РФ и работой на компании с аккредитацией до полного погашения. Все это довольно значительно, поэтому я скорей всего буду выплачивать ипотеку как можно быстрее(многоработничество
Счастливый конец
И все же It's done
Кста, если есть кто из Калининграда, отзовитесь, а то в Ростове было пару интересных сообществ, а тут не понятно.
Еще я написал кучу постов на LinkedIn за последние несколько месяцев, так что буду благодарен за реакции, комменты. Один из них даже набрал 6к охвата:
Ноль
Раз
Два
Три
Четыре
Пять
Шесть
Семь
Восемь
Девять
Десять
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥13👍6
Ради эксперимента бахнул только что около 50 откликов на hh с 4+ лет опыта, с условиями удаленка и 300к, посмотрим какая будет конверсия в приглашение на первый созвон.
Из интересного🤔
• Много вакансий гибрид или офис.
• Так же довольно много вакансий для челов с нулем опыта или < 3 лет.
• В целом вакансий реально мало, я хотел откликнутся на 100, но их тупо нет😔
• Если в вакансии есть вилка, то в 90% - это копейки.
Результаты через 1-2 недели кину. Мой предикт - 2 приглашения🙃
Из интересного
• Много вакансий гибрид или офис.
• Так же довольно много вакансий для челов с нулем опыта или < 3 лет.
• В целом вакансий реально мало, я хотел откликнутся на 100, но их тупо нет
• Если в вакансии есть вилка, то в 90% - это копейки.
Результаты через 1-2 недели кину. Мой предикт - 2 приглашения
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍17❤5🔥3😁2
Делаете ли вы небольшие заметки в течении дня? Если да, то где?
Anonymous Poll
8%
Notion
6%
Google Keep
6%
Apple Notes
23%
Telegram "Saved Massages"
0%
Evernote
28%
Obsidian
6%
Да, но в другом приложении (обязательно напиши в каком в комментах)
23%
Нет, не делаю
underground dev
Ради эксперимента бахнул только что около 50 откликов на hh с 4+ лет опыта, с условиями удаленка и 300к, посмотрим какая будет конверсия в приглашение на первый созвон. Из интересного🤔 • Много вакансий гибрид или офис. • Так же довольно много вакансий для…
Все, подвожу итоги🤓
По самим цифрам могу сказать, что результат ожидаемый🚬 ощущается, что довольно мало компаний сейчас ищут людей, особенно на 300к+, к тому же лето. Мой предикт был почти правильным, подал бы я еще в ozon, тогда точно было бы два собеса). Подожду октября-ноября закину еще откликов, посмотрим, что будет.
Собес кстати был в Альфу, я уже на нем побывал. Делал код ревью почти на полтора часа, довольно прикольно, без топ 100 вопросов.
Ну и hh конечно помойка еще та, как будто там половина вакансий вообще не действующих, на 4-5 вакансий мне вообще сразу отказ прилетел, хотя откликался я в 12 часов ночи. Хотя главный фактор - это конечно куча "полезных" фич, по типу оценки знаний с помощью тестов(хахаха) или автоотклики и автоподнятие резюме, сами проблему создали, сами её решили, сами наградили себя медалькой🤡 Очевидно все это делается, чтобы скосить немного бабок с инвесторов, а то акции бьют все анти рекорды, оно и понятно почему.
Думаю, что через месяц, проведу еще эксперимент - пооткликаюсь на более нишевых площадках, в тг и посмотрю какая там будет конверсия.
PS: я там добавил карту канала в описание(понял, что теги фигня) и обновил пост-знакомство, можете посмотреть/перечитать🙈
11 - в архиве
16 - отказов
17 - ожидание
2 компании написали, 1 собес
По самим цифрам могу сказать, что результат ожидаемый
Собес кстати был в Альфу, я уже на нем побывал. Делал код ревью почти на полтора часа, довольно прикольно, без топ 100 вопросов.
Ну и hh конечно помойка еще та, как будто там половина вакансий вообще не действующих, на 4-5 вакансий мне вообще сразу отказ прилетел, хотя откликался я в 12 часов ночи. Хотя главный фактор - это конечно куча "полезных" фич, по типу оценки знаний с помощью тестов(хахаха) или автоотклики и автоподнятие резюме, сами проблему создали, сами её решили, сами наградили себя медалькой
Думаю, что через месяц, проведу еще эксперимент - пооткликаюсь на более нишевых площадках, в тг и посмотрю какая там будет конверсия.
PS: я там добавил карту канала в описание(понял, что теги фигня) и обновил пост-знакомство, можете посмотреть/перечитать
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍16❤3😁3🤯3🔥2
Как говорил в предыдущем посте, я побывал на собесе в Alfabank.
Это был нормальный собес на полтора часа с разбором кода, который был очень похож на задачу с озона, только объемней.
Забегая на перед, я его не прошел, но получил фидбэк. Выложу его по позже, так как там есть пара забавных моментов, а вы пока смотрите сам собес.
https://youtu.be/QcYXkWahr5g
Кстати, вы бы лучше реакции ставили так, как голосовали😏
ЗЫ: Я запорол немного качество видео, так что лучше смотрите с компа, соре
Это был нормальный собес на полтора часа с разбором кода, который был очень похож на задачу с озона, только объемней.
Забегая на перед, я его не прошел, но получил фидбэк. Выложу его по позже, так как там есть пара забавных моментов, а вы пока смотрите сам собес.
https://youtu.be/QcYXkWahr5g
Кстати, вы бы лучше реакции ставили так, как голосовали
ЗЫ: Я запорол немного качество видео, так что лучше смотрите с компа, соре
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Техническое собеседование в Alfabank | Senior Developer | Команда кэшбека
Актуальную информацию по собеседованиям и другие материалы, вы всегда можете найти в ТГ: https://t.me/undergrounddev_v1
7👍44🔥11
И так по поводу фидбэка c Альфы😏
Для начала хочу сказать, что мне его не дали и тупо заигнорили в личке, классика.
Но знаете... у меня был отпуск и я подумал почему бы не заставить поработать других пока я отдыхаю🙂 хотя бы немного. Так как сам рекрутер не ответил, я подумал написать на hr почту, её я не нашел на сайте. Дальше пошел в LinkedIn поискать кого то начальника отдела или типа того, но не нашел этого рекрутера. В итоге пришлось писать в VK, на их HR аккаунт.
И вуаля, через полтора часа мне все же отвечают на мое сообщение в телеграмме🥲 Сначала общим "Продолжили общаться с другим кандидатом", но после того, как я написал, что мне вообще собеседующий обещал фидбэк, скинули сам фидбэк.
Какой вывод с этого можно сделать? Если вы считаете, что нормально прошли собес, но вас игнорят с фидбэком, а он вам интересен - можно писать кому-то повыше и спрашивать "А игнор кандидатов - это часть вашего HR бренда?" только более формально. Так как большие компании обычно заботятся о бренде, вероятно они что-то да сделают.
Давайте же взглянем на этот фидбэк🤔
В этом фидбэке, хорошо все. Даже не знаю с чего начать, может с того, что все время собеседования я потратил на разбор ошибок и времени больше не было; или с того, что пути к проектам были указаны парой строк комментариев из 250 строк кода, что превращается скорее в тест на внимательность, чем на знания; а может с того, что я вскользь упомянул, что у классов не хватает интерфейсов; ну и на последок упомянутая мной надобность асинхронной обработки нотификации, статистики(кликхаус), кэш - конечно же не архитектура👍 . Ну давайте опустим все эти не технические вопросы, может фидбэк вообще шаблонный. Я хочу поднять другую тему.
Главный вопрос, который у меня возник "А с какого я вообще должен реализовывать именно Чистую архитектуру? Какие есть предпосылки к этому?"
То что я вижу в большинстве проектов под понятием "Чистая архитектура" - использование DI, локализация зависимости и оборачивание её в интерфейс, а так же раскидывания всего по проектам Api, BusinessLogic, Infrastracture и тп.
Но разве это плохо? Скорее нет, хотя меня иногда меня забавляет высокая озабоченность решением о, том что в какой проект засунуть, как будто если разместить все в одном, то что-то кардинально изменится, это просто удобство, важны лишь реальные зависимости между классами(не говоря о проектах с тестами, дистрибуции сборок и тп). НО зачем всему этому давать такое громкое название как "Читая архитектура" мне не понятно, если вместо этого можно говорить более конкретно.
Что я имею ввиду? Если вы используете инверсию зависимости, то так и говорите; если в используете rich объекты вместо анемичных, то так и говорите; если вы избавляетесь от сайд-эффектов в бизнес логике, то так и говорите. Все это намного более конкретные термины.
Для начала хочу сказать, что мне его не дали и тупо заигнорили в личке, классика.
Но знаете... у меня был отпуск и я подумал почему бы не заставить поработать других пока я отдыхаю
И вуаля, через полтора часа мне все же отвечают на мое сообщение в телеграмме
Какой вывод с этого можно сделать? Если вы считаете, что нормально прошли собес, но вас игнорят с фидбэком, а он вам интересен - можно писать кому-то повыше и спрашивать "А игнор кандидатов - это часть вашего HR бренда?" только более формально. Так как большие компании обычно заботятся о бренде, вероятно они что-то да сделают.
Давайте же взглянем на этот фидбэк
К сожалению кандидат увидел явные и бросающееся в глаза ошибки в коде, при этом кандидат не увидел проблемы связанные с архитектурой приложения (нарушен подход чистой архитектуры на всех слоях приложения), поэтому весь пласт вопросов связанный с проектированием приложения не удалось задать.
В этом фидбэке, хорошо все. Даже не знаю с чего начать, может с того, что все время собеседования я потратил на разбор ошибок и времени больше не было; или с того, что пути к проектам были указаны парой строк комментариев из 250 строк кода, что превращается скорее в тест на внимательность, чем на знания; а может с того, что я вскользь упомянул, что у классов не хватает интерфейсов; ну и на последок упомянутая мной надобность асинхронной обработки нотификации, статистики(кликхаус), кэш - конечно же не архитектура
Главный вопрос, который у меня возник "А с какого я вообще должен реализовывать именно Чистую архитектуру? Какие есть предпосылки к этому?"
То что я вижу в большинстве проектов под понятием "Чистая архитектура" - использование DI, локализация зависимости и оборачивание её в интерфейс, а так же раскидывания всего по проектам Api, BusinessLogic, Infrastracture и тп.
Но разве это плохо? Скорее нет, хотя меня иногда меня забавляет высокая озабоченность решением о, том что в какой проект засунуть, как будто если разместить все в одном, то что-то кардинально изменится, это просто удобство, важны лишь реальные зависимости между классами(не говоря о проектах с тестами, дистрибуции сборок и тп). НО зачем всему этому давать такое громкое название как "Читая архитектура" мне не понятно, если вместо этого можно говорить более конкретно.
Что я имею ввиду? Если вы используете инверсию зависимости, то так и говорите; если в используете rich объекты вместо анемичных, то так и говорите; если вы избавляетесь от сайд-эффектов в бизнес логике, то так и говорите. Все это намного более конкретные термины.
//----------------------------------------------------------------------------------------------------------------------
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍18🔥5🤡1
Обращаясь к оригиналу, а именного книге Роберта Мартина...🤓 Ну чего там только не написано, и про ООП, и про ФП, и про SOLID, но четкого определения нет. Чел просто вкратце написал, все что знал)
Можно посчитать, что главный принцип - это "Зависимости в исходном коде должны быть направлены внутрь, в сторону
высокоуровневых политик(ака бизнес логики)". Что это блин значит?
Если вы подумали, что вот же есть инверсия зависимостей, она то и решает эту проблему💡 ! Честно говоря, для меня это выглядит как копиум😣 . Вот у меня обращения в БД, вот логи пишу, вот метрики собираю, я все это вижу, оно прям в бизнес логике! Конечно я могу подменить реализации, но я остаюсь зависим от них! К тому же часто ли вам приходилось подменять зависимость без изменения интерфейса(не считая юнит-тестирования)? Я понимаю, когда например делают какой-нибудь ICache, так как он может быть шариться между разными микросервисами, без него будет реально тяжело заменить реализацию. Но если у вас в небольшом микросервисе, есть репозиторий или сервис, зачем там интерфейс?🤨 У него вероятно будет не больше 20-ти вызовов. Его в любом случае будет легко заменить.
Есть конечно и "трушный" способ избавляться от зависимостей - это выделять детерминированную и идемпотентную логику, ака писать чистые функции(хаха, опять чистые😄 ). Насколько это практически применимо? Ставлю сотку, что почти не применимо 🙅♂️ . Вспоминаем про логгирование, метрики и тп; это менее производительно, так как данные нужно подтягивать все и заранее, а не постепенно и по ходу выполнения бизнес логики; некоторая логика тесно связано с транзакциями. Есть конечно мизерное кол-во логики на некоторых проектах бэка, которую можно так выделить , но это обычно не то, о чем говорят.
Короче подводя итог, мне тупо не нравиться термин "Чистая архитектура", и другие схожие с ним из-за их размытости. Причем, если задуматься, то большинство вещей в построении архитектуры все же имеют прозрачное определение - очереди, кеш, фича слайсинг, различные паттерны и тп.
Ну и полезной практикой для любого разработчика, особенно начинающего, я считаю будет задавать себе вопросы
Не делайте все на автомате➕
Может я что-то реально упускаю в своих рассуждениях? Пишите в комментах, желательно с реальными примерами)
PS: меня позвали еще на один собес, так что мой предикт в 2 собеса на 100% оправдался😕
Можно посчитать, что главный принцип - это "Зависимости в исходном коде должны быть направлены внутрь, в сторону
высокоуровневых политик(ака бизнес логики)". Что это блин значит?
Если вы подумали, что вот же есть инверсия зависимостей, она то и решает эту проблему
Есть конечно и "трушный" способ избавляться от зависимостей - это выделять детерминированную и идемпотентную логику, ака писать чистые функции(хаха, опять чистые
Короче подводя итог, мне тупо не нравиться термин "Чистая архитектура", и другие схожие с ним из-за их размытости. Причем, если задуматься, то большинство вещей в построении архитектуры все же имеют прозрачное определение - очереди, кеш, фича слайсинг, различные паттерны и тп.
Ну и полезной практикой для любого разработчика, особенно начинающего, я считаю будет задавать себе вопросы
Зачем я добавляю очередную модель, репозиторий, сервис, абстракцию? Что будет, если не добавлю? Тяжело ли будет добавить потом?
Не делайте все на автомате
Может я что-то реально упускаю в своих рассуждениях? Пишите в комментах, желательно с реальными примерами)
PS: меня позвали еще на один собес, так что мой предикт в 2 собеса на 100% оправдался
//----------------------------------------------------------------------------------------------------------------------
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍18🔥5🌚2
Короче был недавно на собесе на Senior разраба, были примерно такие вопросы:
Q: Как сделать так, чтобы только определенные потребители в группе Кафка обрабатывали сообщения?
(10 мин спустя)
Q: Расскажите про try/catch, как он работает? Что такое finally?
Вот так я себя чувствовал пока отвечал на второй вопрос: 😡
Q: Как сделать так, чтобы только определенные потребители в группе Кафка обрабатывали сообщения?
(10 мин спустя)
Q: Расскажите про try/catch, как он работает? Что такое finally?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🌚1
А вы знали, что тернарки можно писать в свитч стиле? 😳
Но и из буханки белого можно сделать троллейбус, но зачем?
На первый вопрос у меня ответ все же есть. Если вы перепишите этот код на switch или даже if, то ef core не транслирует это в SQL, а жаль😔
Правда я так и не придумал как этот метод переделать так, чтобы я мог его переиспользовать для конвертации двух статусов в один для использования вне ef🤔
Короче паттерн матчинг, тернарный оператор - 0:1
Но и из буханки белого можно сделать троллейбус, но зачем?
На первый вопрос у меня ответ все же есть. Если вы перепишите этот код на switch или даже if, то ef core не транслирует это в SQL, а жаль
Правда я так и не придумал как этот метод переделать так, чтобы я мог его переиспользовать для конвертации двух статусов в один для использования вне ef
Короче паттерн матчинг, тернарный оператор - 0:1
Please open Telegram to view this post
VIEW IN TELEGRAM
Решил, спонтанно записать видос по деплою, думал минут на 20 будет, не получилось. Сел записывать еще вчера, а закончил минут 10 назад 👍 Короче целый интенсив получился. Но самое забавное, что где-то 20% из запланированного все же не сделал🙃
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍15🔥6❤1
Давайте голосовалку!
✍️
Деплоил ли ты когда либо свое приложение с нуля?
Деплоил ли ты когда либо свое приложение с нуля?
Anonymous Poll
60%
Да
39%
Нет
2%
Нечего деплоить, не бэкендер, не фронт и тп.
underground dev
Давайте голосовалку!
✍️
Деплоил ли ты когда либо свое приложение с нуля?
Деплоил ли ты когда либо свое приложение с нуля?
Что ж, это шанс для 39% проголосовавших исправиться 😗 так на канале вышел новый видос по деплою:
https://youtu.be/hWtdhRt7ziY
ЗЫ: лайк не забудьте поставить
Ссылки из видоса🤩
Схема(diagrams.net): https://drive.google.com/file/d/14g294QTy6GgeFSoFd79rKbLq0zzqp6wF
Проект: https://github.com/dannythehumbleguy/easy-devops-example
https://youtu.be/hWtdhRt7ziY
Ссылки из видоса
Схема(diagrams.net): https://drive.google.com/file/d/14g294QTy6GgeFSoFd79rKbLq0zzqp6wF
Проект: https://github.com/dannythehumbleguy/easy-devops-example
Please open Telegram to view this post
VIEW IN TELEGRAM
119🔥23👍1
Вчера словил невероятнейший баг, следите за руками, дамы и господа.
Есть два сервиса, один grpc клиент A, другой сервис B.
Делал фичу, где нужно было добавить новый эндпоинт на А и вызвать из B.
После завершения кодинга, пришло время немного потестить локально, поднимаю два сервиса, думаю сейчас лайтово😎 за часик накидаю данных в бд и позапускаю свои фичи. Но вскоре вижу ошибку на клиенте:
Думаю ну наверное proto файлы разошлись, скопировал полностью файл, ошибка сохраняется.
Пошел дебажить, вижу, что мой код на сервере действительно отрабатывает без ошибок и передает управление дальше по пайплайну обработки запроса.
Иду спрашивать GPT🤪 , что происходит. Он посоветовал dotnet clean, сравнить версии пакетов, проверить proto, эндпоинты, фактически сгенерированные файлы самой Grpc либой, включить trace-логирование grpc. Все хорошо, но ошибка сохраняется.
Дальше он предложил отправить запрос напрямую через grpcurl aka исключить клиент из уравнения, совет хороший. Не считая того, что я где-то 40 минут потратил💀 , чтобы запустить это из под powershell.
И тут я вижу:
После этого становится кристально понятно, что ошибка на самом деле на сервере, хотя в логах ничего такого не было👍
На этом моменте GPT начал галлюцинировать, и как сумасшедший повторять одно и то же "проверь proto, проверь версии..." и так далее. Помощник был потерян👨🔬
Думаю ну ладно, если мои новые методы не работают — подергаю старые, которые точно работают в проде. Иииииии... они сука тоже не работают, тут уже я начал шизеть🎧 , так как этот лайтовый вечер уже постепенно превращался в 5 часов беспрерывного дебага.
Дальше думаю "хмм, когда-то я точно тестил этот сервер локально и он работал нормально", начинаю откатываться по коммитам и пробовать запускать старые версии, хотя идея кажется бредовой, ведь сейчас на проде все работает.
1 релиз назад все еще сломано, 2 релиза назад тоже сломано, и вот 3 релиза назад все работало локально, бинго.
Смотрю, что там вообще было такого добавлено, а там даже grpc никаким образом не трогали, WTF?🤔
И единственное, что было сделано — это добавлено подробное логгирование всех HTTP запросов, которое включалось по флагу в переменных окружения, чтобы можно было отдебажить конкретный сервис, если там что-то произойдет. Его настройка выглядит так, сама фича дефолтная и от майков:
При локальном же запуске используется статический конфиг, где эта настройка включена, так как локально полные логи могут быть удобны. Дальше я отключаю это логгирование в своей ветке с новой фичей, и тут происходит невероятное - все работает😬
Есть два сервиса, один grpc клиент A, другой сервис B.
Делал фичу, где нужно было добавить новый эндпоинт на А и вызвать из B.
После завершения кодинга, пришло время немного потестить локально, поднимаю два сервиса, думаю сейчас лайтово
Grpc.Core.RpcException: 'Status(StatusCode="Internal", Detail="Failed to deserialize response message.").
Думаю ну наверное proto файлы разошлись, скопировал полностью файл, ошибка сохраняется.
Пошел дебажить, вижу, что мой код на сервере действительно отрабатывает без ошибок и передает управление дальше по пайплайну обработки запроса.
Иду спрашивать GPT
Дальше он предложил отправить запрос напрямую через grpcurl aka исключить клиент из уравнения, совет хороший. Не считая того, что я где-то 40 минут потратил
И тут я вижу:
Request metadata to send: (empty)
Error invoking method "persons.v1. PersonsGrpc/GetPartnerIdByBioId": grpc call for "persons.v1. PersonsGrpc.GetPartnerIdByBioId" failed: EOF
После этого становится кристально понятно, что ошибка на самом деле на сервере, хотя в логах ничего такого не было
На этом моменте GPT начал галлюцинировать, и как сумасшедший повторять одно и то же "проверь proto, проверь версии..." и так далее. Помощник был потерян
Думаю ну ладно, если мои новые методы не работают — подергаю старые, которые точно работают в проде. Иииииии... они сука тоже не работают, тут уже я начал шизеть
Дальше думаю "хмм, когда-то я точно тестил этот сервер локально и он работал нормально", начинаю откатываться по коммитам и пробовать запускать старые версии, хотя идея кажется бредовой, ведь сейчас на проде все работает.
1 релиз назад все еще сломано, 2 релиза назад тоже сломано, и вот 3 релиза назад все работало локально, бинго.
Смотрю, что там вообще было такого добавлено, а там даже grpc никаким образом не трогали, WTF?
И единственное, что было сделано — это добавлено подробное логгирование всех HTTP запросов, которое включалось по флагу в переменных окружения, чтобы можно было отдебажить конкретный сервис, если там что-то произойдет. Его настройка выглядит так, сама фича дефолтная и от майков:
if (config.Logging.FullHttpLogging)
builder.Services.AddHttpLogging(logging =>
{
logging.LoggingFields = HttpLoggingFields.All;
logging.RequestBodyLogLimit = 4096;
logging.ResponseBodyLogLimit = 4096;
logging.RequestHeaders.Add(HeaderNames.Authorization);
});
При локальном же запуске используется статический конфиг, где эта настройка включена, так как локально полные логи могут быть удобны. Дальше я отключаю это логгирование в своей ветке с новой фичей, и тут происходит невероятное - все работает
Please open Telegram to view this post
VIEW IN TELEGRAM
6❤12
Казалось бы grpc и логгирование запросов от ASP.NET Core — не сильно связанные вещи, но это только кажется. Я до сих пор не понимаю, почему такой баг происходит, так как мы еще не проводили ресерч, просто решили забить на фичу логгирования, может даже я чего-то не так сконфигурировал, но это забавно🙅♂️
Какой же можно вывод сделать?
Подобные приколы, когда приходится рвать волосы на голове, чтобы понять причину бага, редко, но происходят.
И я понял, что в целом решение таких проблем строится одним образом, есть несколько приемов.
У вас часто происходит подобное веселье?🚬
Какой же можно вывод сделать?
Подобные приколы, когда приходится рвать волосы на голове, чтобы понять причину бага, редко, но происходят.
И я понял, что в целом решение таких проблем строится одним образом, есть несколько приемов.
1) Сужайте область проблемы. В текущем примере, я исключил клиент, что мне помогло. В других примерах это может быть исключение или разделение кода, дебаг исходников и т. п.
2) Откатывайтесь на версии назад и проверяйте корректность. Одна из причин, почему итеративность очень важна в разработке.
3) Приближайте окружение к тому, на котором возник баг. Даже если кажется, что прод и локальный запуск похожи, а результат разный — значит тебе только кажется. Все уже поднять у тебя вряд ли получится, но обычно до этого и не доходит, копировать нужно тоже итеративно.
У вас часто происходит подобное веселье?
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥12👍9
Мой коммент к видосу ниже:
Для меня всегда программирование было с вайбом андеграунда. Даже если ты живёшь в ПГТ на 1000 человек, тебе не свезло с родителями, в кармане только на дошик, но у тебя есть ноут с интернетом, то ты в игре. Нужно лишь научится и доказать, что ты умеешь кодить, и все.
Никаких олимпиад, экзаменов, зависимостей от преподов, годик подучить 10 лишних предметов, "базы".
Если это реально будет будущее, то эта шиза даже рядом не стоит с накруткой.
PS: тезис про то, что диплом нельзя купить и выступление на конференции обязательно что-то значат - нереалистичны.
https://youtu.be/aQ3ltJ7wOC0?si=lNwt3O2B1lBK4nd8
Для меня всегда программирование было с вайбом андеграунда. Даже если ты живёшь в ПГТ на 1000 человек, тебе не свезло с родителями, в кармане только на дошик, но у тебя есть ноут с интернетом, то ты в игре. Нужно лишь научится и доказать, что ты умеешь кодить, и все.
Никаких олимпиад, экзаменов, зависимостей от преподов, годик подучить 10 лишних предметов, "базы".
Если это реально будет будущее, то эта шиза даже рядом не стоит с накруткой.
https://youtu.be/aQ3ltJ7wOC0?si=lNwt3O2B1lBK4nd8
YouTube
Я хочу уволить всех айтишников без образования
В этом видео я разрушу мифы о нехватке айтишников и покажу как вылечить найм айти специалистов в 2025 с помощью олимпиадной системы имени StepOne
#кризис #работа #айти
#кризис #работа #айти
6🔥11🤯5❤2👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁26🤡4
Короче... если брать весь контент Антона, который существует, то самое лучшее, что у него есть - это стримы с разбором ошибок\ситуаций\искажений людей, с которыми он общается. Все остальное даже на половину не лучше этого. Таких стримов было под десяток и мысли иногда повторяются, но если вы не видели ни одного, то недавно был новый и это моя рекомендация персональная: https://www.youtube.com/live/jg2m7X39vqw?si=Y1apTTV8njPzZ4GW&t=4323
PS: идеи там ценны не зависимо от того на каком вы этапе.
PS: идеи там ценны не зависимо от того на каком вы этапе.
YouTube
Споткнувшиеся о соломинку / Топ ошибок айтишников с зп 500к+
Продолжение стрима про SaaS, мои установки и подбор команды: https://boosty.to/m0rtymerr/posts/2642b189-ec24-4388-96cd-82e5a116ed59?share=post_link
В этом году я провел больше 10 мероприятий для айтишников и опросил ±300 человек лично. Мы подробно общались…
В этом году я провел больше 10 мероприятий для айтишников и опросил ±300 человек лично. Мы подробно общались…
👍10❤4