Программисты — это не игра
200 subscribers
45 photos
1 video
45 links
Записки программиста, который больше 18 лет морочил голову студентам, а потом решил на практике узнать то, чему учил, и ушел в индустрию.

https://www.fb.com/dmitry.barabash
https://www.linkedin.com/in/dmitrybarabash
https://github.com/dmitrybarabash
Download Telegram
Тут годноту подвезли

Сережа Гречко, один из моих тимлидов, у которого я очень многому научился (в первую очередь — взгляду на профессию как на инженерную дисциплину), завел свой YouTube-канал. Там много Linux'а и его тулинга, но главное — много сути происходящего, что, на мой взгляд, будет полезно и тем, кто работает с Windows. Так что очень рекомендую.

#youtube #softwareengineering
11👍6👏1
Маленькие радости .NET-разработчика

Вы не поверите, но в EF Core 10 (ну, технически — в LINQ to Entities) завезут нормальные LeftJoin и RightJoin. Наконец-то. 🤦🏻‍♂️

Не сказать, конечно, что реализовать LEFT / RIGHT JOIN в LINQ раньше было нельзя. Можно, конечно, а то не понятно тогда было бы как вообще работать. Какие были варианты?

1. Связка GroupJoin + SelectMany + DefaultIfEmpty, чтобы реализовать LEFT JOIN. Ну, два метода вместо одного — это еще ладно. А вот неочевидность и плохая читабельность этого подхода — на лицо. Кстати, RIGHT JOIN можно было реализовать только через LEFT JOIN записью наоборот, что еще больше добавляло неочевидности и еще больше ухудшало читабельность. Ну, хоть работало не только для LINQ to Entities, но вообще для LINQ to Objects, т.е. в таком виде саму операцию можно было применять к любым IEnumerable-коллекциям, не только к EF Core'ному IQueryable.

Как-то так это выглядит сейчас:

var booksByOldFashionedWay = context.Books
.GroupJoin(
context.Authors,
book => book.AuthorFk,
author => author.Id,
(book, authors) => new { book, authors })
.SelectMany(
left => left.authors.DefaultIfEmpty(),
(booksAndAuthors, author) => new
{
booksAndAuthors.book,
author
})
.Select(x => new
{
AuthorName = x.author.Name,
x.booksAndAuthors.book.Name
});


2. Метод расширения LeftJoin из прекрасной библиотеки LinqKit. Только для LEFT JOIN, кстати, RIGHT JOIN и там нет, но поскольку библиотека вообще не про это, главная ее фишка в другом, так что и за LEFT JOIN большое спасибо, вот правда.

И вот теперь прямо можно будет по-человечески писать (ровно как в LinqKit):

var booksByShinyNewWay = context.Books
.LeftJoin(
context.Authors,
book => book.AuthorFk,
author => author.Id,
(book, author) => new { book, author })
.Select(x => new
{
AuthorName = x.author.Name,
x.book.Name
});


Плюс аналогичный RightJoin, которого в LinqKit нет.

Неизвестно пока одно: это только в EF Core 10 / LINQ to Entities завезут или в LINQ to Objects для всех тоже?

#dotnet #dotnet10 #efcore #linq
👍5🔥3😍2
Хорошая новость с Build'а

Ну, наконец-то. Начиная с .NET 10 на C# можно будет писать скрипты: https://www.youtube.com/watch?v=98MizuB7i-w. Ну, т.е что угодно, не обязательно только скрипты в классическом понимании, можно хоть API-сервис так поднять (в видео, кстати, это тоже есть), но понятно, что если нужна простенькая программка в одном cs-файле, то на какую-то мегафунциональность мы по-любому не замахиваемся.

Ни файла проекта, ничего не нужно, только cs-файл:
dotnet run script.cs


А под Линуксом так вообще #!: поддерживается, прямо как в лучших домах Ландона:
#!/usr/bin/dotnet run

Console.WriteLine("Hi!");


Запускается, соответственно, как и любой скрипт, если, конечно, ему предварительно атрибут соответствующий задать:
$ chmod +х script.cs

$ ./script.cs


И, конечно, argv работает, так что можно и параметры передавать. В общем, песня.

Кому как, а я давно такое хотел. Под Windows хотел, не под Linux, просто скрипты на C# для личного пользования, вот это всё. 👍

P.S. Продают они это, конечно, как очередное понижение порога вхождения в C# для начинающих. Мол, у всех так можно, у Python, у JavaScript/Node.js, у Go, даже у Rust, говорят, можно, а теперь, мол, и у нас. Ну, не знаю, наверное, кому-то это поможет на начальном этапе, хотя лично я бы всё равно так людей не учил — это, на мой взгляд, порочный путь. Но если задача — просто побороться с Python за неокрепшие умы, пишущие что-то простое и не собирающиеся в программисты, то, возможно, и сработает, да.

P.P.S. И заметьте, это, видимо, первый доклад на Build, где ни разу не вставили упоминание AI. 😁 Даже удивительно как-то. Хотя вполне можно предположить, что они именно из-за AI у Python'а кусок рынка и собрались откусить. 😉

#csharp #dotnet10
🔥9👍2😱1
Новая SQL Server Management Studio

Несколько дней назад Microsoft таки обновила SQL Server Management Studio.

Предыдущие версии базировались Visual Studio 2017. Т.е. 32-bit и очень плохо с асинхронностью — постоянные мелкие и не очень подвисания, вот это вот всё. На это народ уже просто устал жаловаться.

И вот, наконец-то, SSMS переехала на базу актуальной версии Visual Studio. Будем надеяться, что станет отзывчивее на тяжелых операциях. В остальном функциональность вроде осталась той же.

Сносить 20-ю версию, кстати, не обязательно, новая становится параллельно и, более того, теперь вообще использует инсталлятор Visual Studio.

#базыданных #ssms #microsoft
6🔥6
Пятиминутка ненависти

Так. Мне надо выговориться.

Кто у меня учился, тот знает, что я всегда был требователен к следованию стилю оформления кода. Суть сутью, но форма тоже важна. Однако без приведения всех студентов к какому-то одному стилю. В прокрустово ложе именно того стиля, который нравится лично мне, я никого не загонял. Главное — это консистентность. Поэтому я говорил, что можете в этом вопросе сходить с ума любым способом, который вам нравится, но только одним конкретным в рамках одного проекта. Ну, и желательно, чтобы код был по большей части понятен не только вам. А потом в реальных проектах выбора у вас всё равно не будет, будете использовать тот стиль, который принят на проекте.

Реальность, конечно, же ещё жёстче. Людей много, представления о прекрасном у всех свои, и отказыватьсят от них никто по доброй воле не хочет. Поэтому стиль, который принят на проекте, не просто где-то описан, и, если что, правится на code review. Нет, процесс автоматизируется. Не удовлетворишь инструменту проверки стиля — PR не смерджишь. И ладно бы только стиль, он же еще и общие советы по улучшению качества кода дает!

Так вот, у нас используется SonarQube. И как же он меня достаёт иногда. 🤦🏼‍♂️ Понятно, что всё можно настроить, но, видимо, обычно используются настройки по дефолту, и он порой выступает феерически мелочно и тупо. "У вас целых пять новых строк кода не покрыто тестами, а можно только четыре!". Или "У вас вот эти пять строк повторяются дважды, переделайте, чтобы всюду был DRY!". Я утрирую, конечно, но иногда он просто бесит. 🤬

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

Всё, пятиминутка ненависти закончена. Спасибо, что выслушали. ❤️ Пойду править его двенадцать очень дельных замечаний. 🤦🏼‍♂️

#style
19😁7👍1🔥1
Индийский код

Я тут в живой природе увидел, что такое тот самый «аутсорс в Индию».

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

Сначала, я увидел, что такое разница в культуре. Публикуют они PR, синьор из моей команды идет смотреть и пишет замечания. На мой взгляд, вполне по делу. Не много, но есть. И, конечно, она делает это вежливо, местные иначе просто не могут. Так вот, ответы я бы охарактеризовал словом «огрызаться». Я уже отвык от такого, прямо резануло. Они всё исправили, конечно, но прямо пахнуло знакомым до боли хамством.

Дальше — больше. Я увидел, что такое «индийский код». Дали им сделать важный новый микросервис. Не добавить что-то в существующий, а прямо с нуля. А поскольку он важный, то мой тим-лид попросил всех посмотреть, потому что нам потом всем пользоваться его результатами. Так вот, я думал, что «индийский код» — это что-то такое корявое, типа того, что пишут начинающие студенты, там плохо всё, начиная со стиля, и дальше со всеми остановками. Неееет. «Индийский код» — это код, который внешне выглядит более-менее, но начинаешь вчитываться — мамадарагая.

Во-первых, всё выкатили целиком: огромный PR, сиди, разбирайся. Только за первые два дня им написали 70+ замечаний по половине проекта! Попросили их в будущем так не делать, а выкатывать PR'ы вменяемого размера. А во-вторых, всё в кучу. Что такое Clean Architecture хотя бы в общих чертах они знают, но, видимо, не считают важным ему следовать. Про SOLID боюсь спрашивать. До тестов я не дошел, но полагаю, что при таком подходе там сплошная профанация, потому что такой сильно связный код нормально покрыть тестами невозможно. В чисто майкрософтовских делах типа Azure Functions проигнорировали даже best practices от Майкрософта, которые английским по белому в документации прописаны. И всё это не везде, а то там, то тут. Видимо, часть девлоперов в курсе как надо делать, а часть — не очень.

В PR'е с ними были очень вежливы и замечания были по делу. Никакого «ату их». Их тим-лид оказался вменяемым, на все комментарии в этот раз отвечал только он. Видимо, дали понять, что так, как остальные девелоперы общались в прошлый раз — так не надо. Он не огрызался, и они молча исправляли всё, что их просили. В общем, через две с половиной недели PR им заапрувили.

Было прямо интересно за этим всем следить. 😁

#трудовыебудни #культурапрограммирования #психопатологииобыденнойразработки
😁9🔥41
Bye-bye, Bitbucket

Когда в свое время (да, это было давно, я старый, я знаю 🙂) я знакомился с системами контроля версий и выбирал из них распределенную систему для своих личных задач, я выбрал Mercurial. У него не было индекса (промежуточного слоя между working directory и repository), как в Git, но во всем остальном он был лучше и проще. На рынке тогда между ними был паритет и воевали они не между собой, а с еще весьма популярной тогда централизованной SVN, так что выбор Mercurial'а был вполне вменяемым.

Выбор системы контроля версий — это только половина проблемы. Надо было выбрать и онлайн-сервис хостинга исходников, поддерживающий эту систему контроля версий. Тогда всё было очень просто: из больших сервисов на Git'е был построен GitHub, а на Mercurial'е был построен Bitbucket. Так что после выбора Mercurial'а в качестве системы контроля версий выбор сервиса хостинга был очевиден. На Bitbucket'е я и стал хостить свои проекты и проекты для студентов. И самих студентов к тому же приучил.

Но победив централизованную SVN, распределенные Git и Mercurial сцепились уже между собой. И Git явно начал побеждать. Сначала Bitbucket добавил поддержку Git (при создании нового репозитория вы могли выбрать для него систему контроля версий). А я же все-таки был преподавателем, и учить студентов надо было актуальным и более востребованным вещам, так что я разобрался с Git'ом, перешел на него сам и студентов перевел. Mercurial мне по-прежнему нравился, но чего уж там — эта война была проиграна. Тем более, что, не считая индекса, в Git всё было примерно так же, хоть и он и был сделан Чужими для Хищников. В смысле, Линусом Торвальдсом в первую очередь для себя, и только потом уже для подобных ему разработчиков ядра Linux. Как он сам о себе говорил: «Я пишу на таком странном Си. Результат людям не очень понятен, но мне нравится». Ну, вот и Git до сих пор несет на себе этот же отпечаток руки мастера, хотя сейчас Git, конечно, немного человечнее стал.

Насколько я знаю, из больших компаний только Facebook всё еще сидит на Mercurial и вкладывает в его развитие идеи и деньги. Без него Mercurial бы уже загнулся, а так еще жив. Что, ИМХО, хорошо, пусть цветут все цветы.

Но я отвлекся. Поскольку Bitbucket в тот момент уже поддерживал обе системы контроля версий, то переход на Git не требовал смены сервиса хостинга исходников. К тому же, в тот момент времени Bitbucket бесплатно давал не только публичные, но и приватные репозитории, а GitHub — только публичные. Пару лет назад Bitbucket решил всё-таки закопать стюардессу и прекратил поддержку Mercurial-репозиториев (мне это к тому моменту уже давно было не важно), а GitHub добавил приватные репозитории для всех и даром (а вот это было важно). Но я по-прежнему оставался на Bitbucket'е. До сегодняшнего, блин, дня.

Я не знаю, что там у них вчера вечером и сегодня утром происходило, но работал он через... Хреново, в общем, работал. И что-то я сломался. Перенес и публичные, и, главное, приватные репозитории на GitHub. Ну, потому что всё, хватит. Теперь моя очередь закапывать стюардессу.

Спасибо, Bitbucket, это была славная охота, но прощай.

#vcs #git #mercurial #hg #bitbucket #github
❤‍🔥13😭3👍1
Скоро на экранах: .NET 10

Грядет ноябрь, а с ним и .NET 10, и Стивен Тауб разразился еще одним монструозным постом в своем стиле в официальном блоге (читать это всё нет никаких сил, но можно пролистать) про улучшения перформанса, которые наш ждут. Хорошо улучшили, особенно LINQ (там до 100% до 1000% прирост скорости на некоторых операциях и от 50% до той же 1000% уменьшение аллокаций).

«Десятка» будет LTS-релизом, так что понятно, почему упор на оптимизации, а не на фичах. Фичи будут через год в .NET 11. Может, это даже будут discriminated unions в C#. Не обещают, что прямо будет или что будет целиком, но спецификацию опубликовали и сказали, что работают над ними.

Visual Studio 2026 тоже будет в ноябре. В целом, всё то же, но будет некоторое обновление визуального стиля. Судя по скриншотам — в лучшую сторону. Главное, чтобы мою любимую стандартную тему Blue не испортили, а то были уже прецеденты. 😡

Ну, поглядим. 🤔

#dotnet #csharp #visualstudio
❤‍🔥61🔥1
Индийский код, часть 2

История с индийской командой потихоньку продолжается. 🙂

Выкатили они еще один PR. Качество в этот раз нормальное, получили несколько комментариев, но ничего серьезного. Но! PR опять дикого размера. А ведь их просили.

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

«Ну, ничего, мы подождем» (с). 😁

#трудовыебудни #культурапрограммирования #психопатологииобыденнойразработки
😁10
День программиста 😎

Да, 256-ой (2^8) день в году, все таки.

С профессиональным праздником нас, коллеги! Пусть по-прежнему будет интересно всем этим заниматься, не смотря ни на что! 😉🤝🥳

#devsarenotagame #программистыэтонеигра
🍾232❤‍🔥1
Шутки SQL Server Management Studio

Заводит наша QA баг, в котором пишет, что одно достаточно длинное текстовое поле (nvarchar(max)) в нашей БД обрезается. Ладно, запустил SSMS и пошел смотреть.

И таки да, обрезается. Но очень как-то подозрительно обрезается — ровно до 64КБ. Проверяю отладчиком в нашем коде — неа, всё в порядке, в БД всё правильно хранится и нашим кодом правильно считывается. Значит, думаю, дело в SSMS.

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

Блин, Microsoft, предупреждать же надо. 🤦🏻‍♂️

#microsoft #ssms #databases
😁112👨‍💻1
Год на текущей работе

Сегодня 11.11, а значит прошёл уже год, как я работаю в TCG. По ощущениям — вроде и пролетел, а вроде и много времени прошло и много чему научился.

Здесь мне не помогала моя репутация, так что было самому интересно как я потяну чистый эксперимент. Результатами доволен, скажем так. Технологическая сторона — не проблема вообще. Не в смысле, что всё знаю (aha, far from it), а в смысле, что всего хватает, чтобы со всем, что нужно, разобраться. Проблема только с моим английским, которым я по-прежнему сильно недоволен. С другой стороны, преподавать мне здесь не надо (там язык — основной инструмент), а для общения с коллегами по рабочим вопросам мне хватает.

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

А вам спасибо, что вы со мной всё это время. To be continued. 😎

#devsarenotagame #программистыэтонеигра #tcg #english #адаптация
🔥18❤‍🔥3🤝3🏆1
.NET 10 и все-все-все

Через пару часов представят .NET 10. Я думаю, все уже в курсе, что там будет. Там, конечно, хорошее будет, но, если честно, я не столько жду .NET 10, сколько Visual Studio 2026. Очередной релиз .NET — это одно, а вот установка, настройка и переезд на новую Студию — это совсем другое дело. Очень надеюсь, что она будет уметь при установке импортировать все настройки Visual Studio 2022. А если ещё и расширения с их настройками подхватит, то вообще будет супер, благо совместимость самих расширений уже анонсировали.

Не люблю я эти переезды. Ну, поглядим. 🙂

#dotnet #dotnet10 #csharp #microsoft #tooling #visualstudio
10👌1
Visual Studio 2026

Первые впечатления — очень положительные. Действительно, как обещала Microsoft, всё стало быстрее. Улучшенный визуальный язык мне нравится больше, чем тот, что был в 2022-й. Аналог предыдущей стандартной темы Blue — тема Cool Breeze — и сама очень пристойная, так еще и Mads Kristensen (главный в Microsoft по Visual Studio и автор очень многих отличных расширений и тем для нее) сделал на ее основе еще более похожую на Blue тему, она доступна на маркетплейсе. При этом все визуальные изменения — это не революция, а эволюция, что опять же хорошо.

При установке 2026-я подхватила практически все настройки, мои клавиатурные сочетания и сторонние расширения из 2022-й, за что опять же ей жирный плюс. Часть расширений, конечно, надо настраивать заново, но у меня это 10 минут заняло, так что вообще не проблема.

Про стабильность делать выводы рано, слишком мало времени прошло. Тем не менее, на личном лэптопе у меня с Community Edition вообще никаких проблем не было, а вот на работе Professional Edition уже дважды зависала при запросе в окне GitHub Copilot'а в Agent-режиме. В Professional моделей больше — возможно, от этого как-то зависит, но я не успел поэкспериментировать, чтобы выявить закономерность (если она, конечно, есть). Я не запомнил какие были выбраны модели, когда она зависала, но у меня это по-любому либо GPT-5, либо Claude Sonnet 4.5. Так что здесь еще понаблюдаю. В остальном всё хорошо.

В целом, новой Студией доволен. На личном лэптопе 2022-ю я уже снес, на рабочем пока оставил — на всякий случай. Но работаю везде уже на 2026-й.

Хорошо, что Microsoft не стала придумывать очередной, очень оригинальный, но никому не нужный велосипед, и всё портить, как она это умеет, а просто улучшила то, что было. В общем, в этот раз зачет. 👍

#microsoft #visualstudio
❤‍🔥10👍3
Aspire

Если вы не сталкивались, Aspire — это система оркестрации от Microsoft. Вместе с нашим приложением позволяет поднять и БД, и Redis какой-нибудь, и Azure-сервисы, если надо, и вообще вот это вот всё, там очень много интеграций уже реализовано для очень много всего. Вот раньше писали декларативный docker-compose.yml, а теперь создаем проект в нашем солюшене (технически создаются два проекта, но не суть) и на императивном C# описываем всю нашу инфраструктуру. При этом чудес не бывает, сами отдельные сервисы, кроме нашего приложения, Aspire всё равно запускает в Docker'е.

Но основное предназначение Aspire — это не продакшен, а локальная разработка. Т.е. изначально это инструмент для девелоперов, позволяющий поднять все необходимые сервисы локально для отладки и тестирования того, как это всё работает вместе, прямо на своей машине. То, что уже сделано, выглядит, в целом, очень достойно (особенно дашбоард — прямо красава). При этом на Aspire направлено очень много усилий, Дэйвид Фаулер (главный по ASP.NET Core), говорит, что это сейчас основная точка приложения сил команды.

Мы попробовали Aspire на своем текущем проекте. Красота, конечно, хотя надо еще освоиться.

Но я о другом. Microsoft же не может не «порадовать» как-то по особенному. Раньше версия Aspire соответствовала версии .NET. Т.е. пока был актуален .NET 9, и Aspire был 9-й. И тут выходит .NET 10, а Aspire внезапно перескакивает на версию... 13. 😮

Фаулера спросили: почему 13-то? В общем, оказалось, что аппетит растет во время еды. Если раньше Microsoft делала его для .NET-разработчиков, то теперь Aspire — это a full polyglot application platform. Так и пишут на новом сайте Aspire. Поддерживается не только C#, но и Java, Go, Python и JS/TS. Поэтому выбрали такой номер версии, чтобы не совпадал с версиями новых .NET и C#. Ну, а раз не 10 и не 14, то пусть будет 13, ясное же дело. 😁

Цирк, конечно. Но сама штука интересная, ИМХО. По-любому буду копать в ее сторону.

Для желающих приобщиться есть даже плейлист на YouTube, где Фаулер с подельниками зовут автора какого-нибудь известного open-source проекта и прямо в live-режиме все вместе переводят проект на Aspire: AspiriFridays. Много шума, видео длинные, но зато весело. 😉

#aspire #microsoft #dotnet #csharp #docker
❤‍🔥6👍5
С Новым годом!

С Новым годом, други! Спасибо вам, что были со мной весь этот год. ❤️

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

Люблю вас всех. Stay tuned. 😎

#программистыэтонеигра #devsarenotagame #softwareenineering
22🎉7🎄2🫡1🎅1
Про AI

Начало года получилось сложное, да и писать особо было не о чем — обычная рабочая рутина. Но пройти мимо AI сегодня всё же нельзя.

Тут, конечно, надо разделить — AI-ассистенты для всякого разного и AI-ассистенты (а то и агенты) для программирования.

По рабочему стеку технологий понятно, что мы Microsoft-ориентированные, поэтому выбор тут был не большой — Copilot 365 для всякого разного и GitHub Copilot для кода. Причем нам прямо сказали: «Copilot is your best friend». Нас прямо поощряют им пользоваться. Причины очевидны: и производительность увеличится, и освоение новых инструментов будет, отставать нельзя. Ни один здравый смысл при этом не пострадал: Copilot'ом пользовался или сам написал — дело твое, но результат — это по-прежнему твоя ответственность. И code review никак не поменялся. Выкатил фигню в PR'е — тебя в нее вежливо, но уверенно ткнут, и пойдешь переделывать. Так, чтобы навайбкодил что-то и, не вчитываясь, выкатил PR — неа, такой номер не пройдет. Короче говоря, по уму всё.

Что касается «для всякого разного», то по работе мне это не особо надо, да и Copilot 365 на меня впечатления не произвел. Для личных нужд я сначала несколько месяцев пользовался ChatGPT Plus, потом перешел на Gemini Pro, и оба лучше чем Copilot 365 — на мой субъективный вкус, конечно. Завтра как раз на очередные несколько месяцев перейду на Claude Pro — не потому, что Gemini не нравится (как раз нравится), а потому что хочу их всех попробовать + отдельно хочу попробовать Claude Code. Но это всё, повторюсь, для личных нужд и домашних экспериментов.

А по работе для кода у нас выбора нет, есть только GitHub Copilot. Сначала я начал активно им пользоваться при работе с TypeScript/Angular-фронтендом. В качестве моделей пробовал OpenAI Codex и Claude Sonnet. И надо сказать, что он еще полгода назад вполне адекватно рассказывал мне и как там у нас в не маленькой кодовой базе всё устроено, и как что-то новое можно сделать — обе модели прекрасно справлялись с фронтендом уже тогда. Но скакать между моделями было утомительно и я остановился на Claude Sonnet. Первый качественный скачок я заметил с выходом Sonnet 4.5. Прямо вот как-то заметно лучше всё стало. Второй — вот совсем недавно с выходом Sonnet 4.6. Теперь всё стало не просто лучше, а прямо хорошо.

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

Есть, конечно, среди моделей еще Claude Opus. Но он в три раза дороже и нас просили использовать его только, если действительно надо. Мне пока вот настолько не было надо, Sonnet вполне справляется. 😉

В общем, вошел в жизнь и работу этот ваш AI. Еще один хороший инструмент на вооружении. И хорошо. 🙂

#dotnet #csharp #typescript #angular #copilot #ai
👍13🔥51
Oracle, ну елки-палки...

Docker-образ Oracle Database Free занимает... 14ГБ. И первое, что пишется в лог: «Starting Oracle AI Database FREE».

Все с ума посходили, честное слово. 🤦🏼‍♂️

#databases #oracle #ai
🤯5😁4🍾1
Про AI

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

Все эти Claude Code, OpenAI Codex, GitHub Copilot и иже с ними я буду дальше называть AI-агентами.

Так вот, на данный момент AI-агенты — это хороший инструмент в руках инженера-программиста. В выделенном, на мой взгляд, все слова важны. Это инструмент, сам по себе он ничего не может или может плохо. Без инженера-программиста это всё разваливается.

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

Ну, т.е. всё банально: в точке координатора целого должен быть квалицированный человек. И качество результата будет прямо пропорционально качеству (квалификации) человека, а не качеству какого-то одного из аспектов целого, какого-то одного из инструментов. Как и всегда, тут ничего нового.

Я предполагаю, что нынешнее безумие на рынке закончится пониманием бизнесом и менеджментом как раз вот этого. Что AI-агент без классного погонщика — это тупик и деньги на ветер. Что, если убрать из целого качество инженера-программиста, а оставить только AI-слоп, то продукт будет загублен.

Станет ли сложнее с работой? В среднем по больнице — думаю, да. На некоторое время. Для синьёров (настоящих синьёров, а не формальных) в целом ничего не изменится. Потрясет, конечно, вместе с рынком, но потом устаканится. Мидлам может быть сложнее, но терпимо. Джунам будет плохо, как это не печально. Поэтому пока что не понятно, как будут заходить на рынок новые специалисты, которые в будущем должны дорасти до синьёров. Я верю в рынок, он как-то порешает, но как именно я пока не понимаю.

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

Сами AI-агенты — очень удобная штука в руках инженера-программиста, но только того, кто квалифицирован, кто трезво смотрит на ситуацию и кто не шарахается из стороны в сторону. Если хватит адекватности смотреть на AI-агента просто как на пусть и очень удобный, но все-таки инструмент, а не «я теперь могу вообще не думать, он за меня там всё подумает», то он как инженер, теперь еще и с AI-агентом в руках, станет только лучше. И быстрее, и точнее, и вот это всё.

Надо ли сегодня вкладываться в освоение AI-агентов? По-моему, необходимо. Потому что, а как им качественно погонять, если не знаешь, что он предлагает и «где у него кнопка»? Настройка и эффективное использование того же Claude Code — это целая история. Разумно сегодня разобраться с ней и сделать свою собственную обвязку для него. Чтобы было как мне удобно. Заточить инструмент под себя. Потому что там же далеко не только и не столько в промпте дело, сколько вот в этой обвязке.

Ну как-то так мне это всё видится в данный момент.

#ai #программистыэтонеигра #devsarenotagame
👍10🔥7👏1
Лучше поздно, чем никогда

Из сегодняшней статьи про то, как AI влияет на образование:

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

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


(неприлично ржу) Ква-ха-ха-ха!

2026 год на дворе. Понадобился AI, чтобы они догадались, что диалог и устная защита — это надежный гарант проверки мышления, знания и понимания. Более глубокий сдвиг у них запустился, надо же.

(продолжая хихикать) Извините, призраки прошлого не отпускают. 😁

#преподавание #собеседования #ai
😁21🤣1
Ещё вдогонку про AI

Думал как кратко сформулировать то, что длинно написал здесь. И таки сложилось:

AI-агент не является субъектом разработки.

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

Если на вопрос "Что происходит в твоём PR'е?" вам отвечают: "Не знаю, Claude Code/Codex/Copilot сгенерировал", то перед вами человек, вообще не понимающий ни что происходит в профессии, ни важности собственной субъектности, и в результате тем самым убивающий продукт, над которым работает.

#ai #программистыэтонеигра #devsarenotagame
👍9👏5💯1