Ещё компании среднего размера в том же вебе обычно платят от 200
Не платят, по опыту могу сказать.
Также некоторые мапят баксовые работы на рубли, тут платят в среднем намного больше в большинстве юрисдикций во всех типах компаний и просто тонна стартапов которым СНГ разработчики только и вмещаются в раунд - где условно лимит на разраба 120-150к на год, из-за чего в том же США тир 1 спецов не могут нанять
Если вы пропустили последние 4 года, с этим в РФ сейчас есть некоторые проблемы.
Всякие здоровенные аутсорсинги для джунов и мидлов типа epam вообще вряд ли нанимают меньше чем на 3к+
Погуглил - epam с начала известно чего не работает с Россией прям вообще.
Я бы сказал в статистике по большей части нижняя часть пирамиды РФ рынка участвует
Если бы это было так, то работающих людей в вебе с ЗП в районе 100к сейчас бы не могло существовать - их бы тупо уже через месяц спылесосили, потому что работающий специалист в 10 раз надёжнее безработного соискателя (возможно, уволенного или выгоревшего).
Это просто особенность русского менталитета - у нас быть "выше среднего" = буржуйство. Поэтому каждый, увидев среднюю ЗП меньше своей текущей, будет доказывать, что, мол это неправда и перекошенная выборка, средняя ЗП - это как у меня или даже вот чуть больше, чисто по ощущениям.
Цените, если у вас ЗП выше, не так много ещё таких мест осталось.
Это как с ситуацией, когда Зам. Директора по закупкам получает больше, чем Директор. Потому что "директор", он может быть чего угодно директор, хоть чебуречной. А "зам" бывает только в уже средне-крупных компаниях, а там и у топ-менеджмента ЗП соответствующие.
Так и тут. В мелких компаниях не может быть отдельно фронтэндеров и бэкендеров - просто не хватает пула задач, чтобы держать их постоянно занятыми. А в больших компаниях нет смысла держать много фулстеков, если задач по одному из направлений много.
И когда вы будете нанимать разработчиков на доработку вашего продукта поверьте, ценник вас неприятно удивит.
Вы не учитываете важный ньюанс - эти самые разработчики в современности будут переделывать проект не "по старинке", а с использованием ИИ-агентов, что заметно сокращает время и ценник.
А вот вайбкодинг очень-преочень хочет казаться мега архитектором и синьором, которому и социальную сеть написать под силу, поэтому спустя n недель вайбкодинга, ваш проект станет утыкан такими конструкциями, от которых у разработчиков глаза не то, что на лоб полезут, я боюсь они просто вылезут.
У меня есть опыт работы с плохой архитектурой, переделкой, и как раз это - одна из задач, с которой ИИ справляется лучше всего (меньше всего ошибается). Это не "додумай систему по огрызку кода и пофикси баг, который физически не можешь воспроизвести", это не "напиши тысячу идеально верных строк кода на одну строку промпта". Тут вся нужная информация есть в контексте.
Да, старые инстинкты заставляют вздрагивать, когда видишь, например, SQL-запрос такого размера, что он не умещается на экране, или функцию-бога на тысячу строк. Да что там, даже
уже заставляет волосы шевелиться везде, при том что это всего лишь безобидная валидация email-адреса по RFC 5322.
"Ух, ё... Это ж сколько времени и головной боли займёт всё это переделывать по-нормальному?"
А потом ты просто пишешь промпт с точным описанием того, как это должно быть (потому что знаешь, как оно должно быть), и уходишь на обед, а возвращаешься уже к свежему коду, где всё уже в целом переделано и читаемо. Потестировал, доработал напильником и готово.
Такие задачи можно сравнить с переделкой всего кода большого проекта под полное соответствие какому-то строгому стандарту. На первый взгляд, без опыта, кажется - титанический труд, "да я выгорю быстрее, чем это всё доделаю". На деле - со знанием линтеров, инструментов и опытом - недолгая и ненапряжная задача.
Вот и с ИИ сейчас многие проблемы, которые раньше считались фатальными, переосмысляются и становятся менее пугающими.
Один из прошлых руководителей рассказывал. Около-гос-контора.
Давно работал, захотел стол себе хороший поставить. "Бюджета на такое нет, но за свои - ставь". Ну что делать, купил, поставил.
Через несколько лет - инвентаризация. Клеют бирку на его стол, а он говорит "нет, это мой", а ему в ответ "вся мебель должна быть инвентаризирована, таковы правила, мы просто пометку поставим в списке, что это ваш".
Ещё через несколько лет он решил проверить - нет, говорят, стол сейчас числится как собственность конторы, ничего не знаем.
И тогда даже никакой камеры не нужно будет, достаточно будет на микрофон записать как очередная бабушка причитает "Ой, как тижало теперь всё стало... Тааак... Ноооль... Четыыре... Пяяять... Один!"
Не пробовал Opencode, но звучит так, что вы кодите "в режиме чата", вручную скармливая LLM крохи контекста. Особенно с учетом фразы "Но чаще всего не работающего, особенно с первого раза".
Так даже топовые модели ерунду пишут (и настаивают на своей правоте) и так никто сейчас не делает. Попробуйте Cursor или любую другую современную AI IDE. Он сам находит нужный контекст, анализирует, где на проекте уже что-то подобное делалось и почему именно так. Он грепает по файлам со скоростью света - вы ещё не успеете прочитать, что он ищет, а он уже нашёл, прочитал, сделал выводы и пошёл искать следующее.
Озвученных проблем уже несколько лет не встречал, пока не решил однажды на пробу в режиме чата с одной из свежих Sonnet написать простенький скрипт по текстовому описанию. Написало криво, с ошибками в коде и логике, как какой-нибудь ГигаЧат, ей богу, разница очень значительная.
А тут уже вероятности. Сначала попробуют школьника, потому что 200р не жалко, а сервер потом всегда откатить можно.
И если раньше, с StackOverflow или с ChatGpt 3.5 школьник бы и забуксовал, то сейчас с Cursor всё чаще и чаще проблема просто берёт и решается. И достаточно одного удачного раза, чтобы бизнес округлил глаза от экономии и принял долгоиграющее решение о том, с кем он в дальнейшем будет работать.
Так и фраза "Курсор, пожалуйста, сделай чтобы работало" точно также передаёт задание внешней подсистеме. И если поставить температуру ЛЛМки в 0, то можно даже получить один и тот же детерминированный результат.
Только вы заранее не знаете, какой именно это будет результат, поэтому его детерминированность не имеет значения. Так же, как вы заранее не знаете, как именно отработает mail().
Как раз таки компетентность нужна, чтобы понимать, что бизнесу не важна детерминированность компиляции. А важно им, например, чтобы письма с формы обратной связи уходили на ящик отдела продаж. Или чтобы весь сайт не падал с ошибкой.
И вот спросили они школьника с ИИ-шкой, сколько это займёт. Школьник ответил "по простому - 15 минут, а если не получится, то хз, ковырять надо. Но рано или поздно доковыряю."
А потом спросили синьора-помидора старой закалки... и получили тот же самый ответ.
Только школьник стоит 200 р в час, а синьор - 2000. А вот это для бизнеса уже измеримая разница.
Бухгалтер может был бы и рад, чтобы новую версию 1С-Бухгалтерии переписали на чистом ассемблере, там где хитрыми фокусами с памятью и математикой можно добиться того, чтобы оно летало на любом железе и весило меньше, чем главная страница Хабра. Объективно лучше любого другого языка программирования. Но есть ньюанс, почему этого никто не делает.
Он упадёт с ошибкой? Вернёт true или false? Письмо дойдёт до получателя? Каждый раз одинаково отработает или есть вероятности?
Детерминированность у кода была бы, если бы результат запуска всегда соответствовал тому, что программист у себя "скомпилировал в уме", но за пределами примитивных задачек с литкода, в реальных production системах человеческая голова как-то не особо с этим справляется, поэтому и результат выполнения программы никогда не будет полностью предсказуемым.
А представьте себе совсем другую историю, несколько десятилетий назад.
"Я - матёрый программист на ассемблере, мне дали джуна с этим вашим новомодным Delphi".
"Он даже ни одной ассемблерной команды не знает."
"Дал ему задачу - потом смотрю ассемблерный код, это просто ужас, там даже hello world в несколько килобайт, там 90+% мёртвого кода, и это я даже про оптимизацию и более сложные задачи не говорю".
"Кто потом с этим будет разбираться, как это поддерживать?"
"А если версия компилятора сменится, то он сгенерит совсем другой код, который никто даже не прочитает и не сравнит. Это чистый рандом".
"Ещё и библиотеку подключил к проекту. Которую он сам не писал, которую он даже не читал. Просто в интернете нашёл. А вдруг там баги?"
"Не, это точно временное поветрие просто. Наиграется молодёжь с этим, потом у них все проекты застопорятся, разрастутся до сотен мегабайт и будут сплошь и рядом багованные. И тогда бизнес поймёт, что что-то не так, уволит их всех и вернётся к нам, настоящим программистам."
В зависимости от браузера, соединения либо возобновляются, либо остаются открытыми даже после перезагрузки браузера или устройства, на котором он запущен.
Вот это, похоже, единственное что позволяет хоть как-то выделять эту уязвимость в отдельную. А так, всё это и многое другое уже и так может происходить, если хакер каким-то образом нагонит много пользователей на подконтрольный ему вебсайт, никаких Browser Fetch не требуется.
Ну уволил да и уволил, фиг бы с ним, чем компания-то таким занимается, что потеряла 97% капитализации? Вот про это интереснее было бы почитать. В NFT вложились?
Вместо отдела кадров в Bolt теперь небольшая команда People Ops
Сейчас в компании работает около 100 человек
Т.е. у него теперь в компании на 100 человек есть несколько специалистов HR. А раньше было ещё больше зачем-то. Вот и вся новость.
Приведите примеры типов некачественных решений, которые вы встречаете.
Потому что звучит так, что это как раз та самая ошибка переобучения, про которую я писал выше - что конкретно по этому языку в обучающей выборке слишком много плохих примеров и они влияют на качество кода.
За исключением совсем специфических случаев, хороший код стуктурируется одинаково на всех языках определённого типа. См. Паттерны проектирования, ООП и пр.
Базовых данных уже достаточно, их скорее даже больше чем нужно и приходится фильтровать.
LLM уже сейчас вполне может написать рабочий код на придуманном вами языке без сотен примеров кода, просто по документации. Или подключить написанную вами функцию в нужном месте кода, опять же, без примеров применения, просто прочитав её структуру.
От "кожанных" остаётся только выбирать стилистику и следить за ошибками переобучения.
Если бы данные не были краеугольным камнем уже сейчас бы LLM писали на ассемблере
Технически, они и сейчас могут - уж чего, а примеров ассемблерного кода сейчас более чем достаточно. Просто ассемблер "многословный" и хуже подходит для LLM - жрёт кучу токенов и кратно увеличивает вероятность ошибки в коде (просто потому что самого кода на выходе больше и потому что "слова" везде одни и те же).
Единственное, за что я бы снял тут полбалла – проблемы с нумерацией глав. У нас есть нулевая глава и в принципе всё.
Вы отправили ChatGPT писать рецензию на написанный им же текст и он вам сгаллюцинировал недостаток, отсутствующий в тексте, потому что главы пронумерованы словами, а не цифрами?
Ну вот я знаю таких коллег - вообще пофиг, посреди созвона на 10 человек открывают свой ТГ или почту, чтобы показать сообщения от заказчика, а там на пол-экрана слева личные переписки с женой, друзьями или оповещения типа "ваши анализы готовы".
Я так не могу, а им вообще норм.
А есть другие, которые даже со скриншотов адресную строку браузера убирают, чтобы не было видно запущенных плагинов.
Мы в определённый момент поставили демо с заказчиком и сказали ему: вот, чувак, назови любой срок, когда тебе будет удобно показать на демо. Когда будет всё готово, на твой взгляд. То есть вообще никаких ограничений, любое число назови и всё.
И отчего же он тогда не сказал "100 лет"? Какая объективная причина этого не делать?
Не хотел просто так получать всю жизнь зарплату?
Или всё-таки были какие-то ограничения, как минимум предполагаемые, но ему проще было уже сказать что-нибудь "на отвали" с потолка, чем объяснять глупым людям, что они задают глупые вопросы и принимают не задумываясь глупые иррациональные ответы?
Не платят, по опыту могу сказать.
Если вы пропустили последние 4 года, с этим в РФ сейчас есть некоторые проблемы.
Погуглил - epam с начала известно чего не работает с Россией прям вообще.
Если бы это было так, то работающих людей в вебе с ЗП в районе 100к сейчас бы не могло существовать - их бы тупо уже через месяц спылесосили, потому что работающий специалист в 10 раз надёжнее безработного соискателя (возможно, уволенного или выгоревшего).
Это просто особенность русского менталитета - у нас быть "выше среднего" = буржуйство. Поэтому каждый, увидев среднюю ЗП меньше своей текущей, будет доказывать, что, мол это неправда и перекошенная выборка, средняя ЗП - это как у меня или даже вот чуть больше, чисто по ощущениям.
Цените, если у вас ЗП выше, не так много ещё таких мест осталось.
Как бы да, но не только.
Это как с ситуацией, когда Зам. Директора по закупкам получает больше, чем Директор. Потому что "директор", он может быть чего угодно директор, хоть чебуречной. А "зам" бывает только в уже средне-крупных компаниях, а там и у топ-менеджмента ЗП соответствующие.
Так и тут. В мелких компаниях не может быть отдельно фронтэндеров и бэкендеров - просто не хватает пула задач, чтобы держать их постоянно занятыми. А в больших компаниях нет смысла держать много фулстеков, если задач по одному из направлений много.
Иногда для оцифровки книги её быстрее/дешевле распилить на листки (т.е. по сути уничтожить).
Вы не учитываете важный ньюанс - эти самые разработчики в современности будут переделывать проект не "по старинке", а с использованием ИИ-агентов, что заметно сокращает время и ценник.
У меня есть опыт работы с плохой архитектурой, переделкой, и как раз это - одна из задач, с которой ИИ справляется лучше всего (меньше всего ошибается). Это не "додумай систему по огрызку кода и пофикси баг, который физически не можешь воспроизвести", это не "напиши тысячу идеально верных строк кода на одну строку промпта". Тут вся нужная информация есть в контексте.
Да, старые инстинкты заставляют вздрагивать, когда видишь, например, SQL-запрос такого размера, что он не умещается на экране, или функцию-бога на тысячу строк. Да что там, даже
Вот такой вот regex
(?:[a-z0-9!#$%&'*+\x2f=?^_
\x7b-\x7d~\x2d]+(?:\.[a-z0-9!#$%&'*+\x2f=?^_\x7b-\x7d~\x2d]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9\x2d]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9\x2d]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9\x2d]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])уже заставляет волосы шевелиться везде, при том что это всего лишь безобидная валидация email-адреса по RFC 5322.
"Ух, ё... Это ж сколько времени и головной боли займёт всё это переделывать по-нормальному?"
А потом ты просто пишешь промпт с точным описанием того, как это должно быть (потому что знаешь, как оно должно быть), и уходишь на обед, а возвращаешься уже к свежему коду, где всё уже в целом переделано и читаемо. Потестировал, доработал напильником и готово.
Такие задачи можно сравнить с переделкой всего кода большого проекта под полное соответствие какому-то строгому стандарту. На первый взгляд, без опыта, кажется - титанический труд, "да я выгорю быстрее, чем это всё доделаю". На деле - со знанием линтеров, инструментов и опытом - недолгая и ненапряжная задача.
Вот и с ИИ сейчас многие проблемы, которые раньше считались фатальными, переосмысляются и становятся менее пугающими.
А бывает и наоборот.
Один из прошлых руководителей рассказывал. Около-гос-контора.
Давно работал, захотел стол себе хороший поставить. "Бюджета на такое нет, но за свои - ставь". Ну что делать, купил, поставил.
Через несколько лет - инвентаризация. Клеют бирку на его стол, а он говорит "нет, это мой", а ему в ответ "вся мебель должна быть инвентаризирована, таковы правила, мы просто пометку поставим в списке, что это ваш".
Ещё через несколько лет он решил проверить - нет, говорят, стол сейчас числится как собственность конторы, ничего не знаем.
И тогда даже никакой камеры не нужно будет, достаточно будет на микрофон записать как очередная бабушка причитает "Ой, как тижало теперь всё стало... Тааак... Ноооль... Четыыре... Пяяять... Один!"
Не пробовал Opencode, но звучит так, что вы кодите "в режиме чата", вручную скармливая LLM крохи контекста. Особенно с учетом фразы "Но чаще всего не работающего, особенно с первого раза".
Так даже топовые модели ерунду пишут (и настаивают на своей правоте) и так никто сейчас не делает. Попробуйте Cursor или любую другую современную AI IDE. Он сам находит нужный контекст, анализирует, где на проекте уже что-то подобное делалось и почему именно так. Он грепает по файлам со скоростью света - вы ещё не успеете прочитать, что он ищет, а он уже нашёл, прочитал, сделал выводы и пошёл искать следующее.
Озвученных проблем уже несколько лет не встречал, пока не решил однажды на пробу в режиме чата с одной из свежих Sonnet написать простенький скрипт по текстовому описанию. Написало криво, с ошибками в коде и логике, как какой-нибудь ГигаЧат, ей богу, разница очень значительная.
А тут уже вероятности. Сначала попробуют школьника, потому что 200р не жалко, а сервер потом всегда откатить можно.
И если раньше, с StackOverflow или с ChatGpt 3.5 школьник бы и забуксовал, то сейчас с Cursor всё чаще и чаще проблема просто берёт и решается. И достаточно одного удачного раза, чтобы бизнес округлил глаза от экономии и принял долгоиграющее решение о том, с кем он в дальнейшем будет работать.
Так и фраза "Курсор, пожалуйста, сделай чтобы работало" точно также передаёт задание внешней подсистеме. И если поставить температуру ЛЛМки в 0, то можно даже получить один и тот же детерминированный результат.
Только вы заранее не знаете, какой именно это будет результат, поэтому его детерминированность не имеет значения. Так же, как вы заранее не знаете, как именно отработает mail().
Как раз таки компетентность нужна, чтобы понимать, что бизнесу не важна детерминированность компиляции. А важно им, например, чтобы письма с формы обратной связи уходили на ящик отдела продаж. Или чтобы весь сайт не падал с ошибкой.
И вот спросили они школьника с ИИ-шкой, сколько это займёт. Школьник ответил "по простому - 15 минут, а если не получится, то хз, ковырять надо. Но рано или поздно доковыряю."
А потом спросили синьора-помидора старой закалки... и получили тот же самый ответ.
Только школьник стоит 200 р в час, а синьор - 2000. А вот это для бизнеса уже измеримая разница.
А зачем бухгалтеру писать программы?
Бухгалтер может был бы и рад, чтобы новую версию 1С-Бухгалтерии переписали на чистом ассемблере, там где хитрыми фокусами с памятью и математикой можно добиться того, чтобы оно летало на любом железе и весило меньше, чем главная страница Хабра. Объективно лучше любого другого языка программирования. Но есть ньюанс, почему этого никто не делает.
Так а он ещё раньше начинается. Что произойдёт при запуске PHP кода
mail("someone@example.com","My subject","Hello, world");Он упадёт с ошибкой? Вернёт true или false? Письмо дойдёт до получателя? Каждый раз одинаково отработает или есть вероятности?
Детерминированность у кода была бы, если бы результат запуска всегда соответствовал тому, что программист у себя "скомпилировал в уме", но за пределами примитивных задачек с литкода, в реальных production системах человеческая голова как-то не особо с этим справляется, поэтому и результат выполнения программы никогда не будет полностью предсказуемым.
А представьте себе совсем другую историю, несколько десятилетий назад.
"Я - матёрый программист на ассемблере, мне дали джуна с этим вашим новомодным Delphi".
"Он даже ни одной ассемблерной команды не знает."
"Дал ему задачу - потом смотрю ассемблерный код, это просто ужас, там даже hello world в несколько килобайт, там 90+% мёртвого кода, и это я даже про оптимизацию и более сложные задачи не говорю".
"Кто потом с этим будет разбираться, как это поддерживать?"
"А если версия компилятора сменится, то он сгенерит совсем другой код, который никто даже не прочитает и не сравнит. Это чистый рандом".
"Ещё и библиотеку подключил к проекту. Которую он сам не писал, которую он даже не читал. Просто в интернете нашёл. А вдруг там баги?"
"Не, это точно временное поветрие просто. Наиграется молодёжь с этим, потом у них все проекты застопорятся, разрастутся до сотен мегабайт и будут сплошь и рядом багованные. И тогда бизнес поймёт, что что-то не так, уволит их всех и вернётся к нам, настоящим программистам."
Вот это, похоже, единственное что позволяет хоть как-то выделять эту уязвимость в отдельную. А так, всё это и многое другое уже и так может происходить, если хакер каким-то образом нагонит много пользователей на подконтрольный ему вебсайт, никаких Browser Fetch не требуется.
Ну уволил да и уволил, фиг бы с ним, чем компания-то таким занимается, что потеряла 97% капитализации? Вот про это интереснее было бы почитать. В NFT вложились?
Т.е. у него теперь в компании на 100 человек есть несколько специалистов HR. А раньше было ещё больше зачем-то. Вот и вся новость.
Приведите примеры типов некачественных решений, которые вы встречаете.
Потому что звучит так, что это как раз та самая ошибка переобучения, про которую я писал выше - что конкретно по этому языку в обучающей выборке слишком много плохих примеров и они влияют на качество кода.
За исключением совсем специфических случаев, хороший код стуктурируется одинаково на всех языках определённого типа. См. Паттерны проектирования, ООП и пр.
Базовых данных уже достаточно, их скорее даже больше чем нужно и приходится фильтровать.
LLM уже сейчас вполне может написать рабочий код на придуманном вами языке без сотен примеров кода, просто по документации. Или подключить написанную вами функцию в нужном месте кода, опять же, без примеров применения, просто прочитав её структуру.
От "кожанных" остаётся только выбирать стилистику и следить за ошибками переобучения.
Технически, они и сейчас могут - уж чего, а примеров ассемблерного кода сейчас более чем достаточно. Просто ассемблер "многословный" и хуже подходит для LLM - жрёт кучу токенов и кратно увеличивает вероятность ошибки в коде (просто потому что самого кода на выходе больше и потому что "слова" везде одни и те же).
Вы отправили ChatGPT писать рецензию на написанный им же текст и он вам сгаллюцинировал недостаток, отсутствующий в тексте, потому что главы пронумерованы словами, а не цифрами?
Ну вот я знаю таких коллег - вообще пофиг, посреди созвона на 10 человек открывают свой ТГ или почту, чтобы показать сообщения от заказчика, а там на пол-экрана слева личные переписки с женой, друзьями или оповещения типа "ваши анализы готовы".
Я так не могу, а им вообще норм.
А есть другие, которые даже со скриншотов адресную строку браузера убирают, чтобы не было видно запущенных плагинов.
Какой-то корреляции с компетентностью не замечаю.
И отчего же он тогда не сказал "100 лет"? Какая объективная причина этого не делать?
Не хотел просто так получать всю жизнь зарплату?
Или всё-таки были какие-то ограничения, как минимум предполагаемые, но ему проще было уже сказать что-нибудь "на отвали" с потолка, чем объяснять глупым людям, что они задают глупые вопросы и принимают не задумываясь глупые иррациональные ответы?