Pull to refresh
11
0.6
Send message

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

с отсутствием банальнейших синтаксических конструкций

Каких именно?

Если бы это было истиной, то 99% бэкэндов были бы написаны на Python

На самом деле очень много проектов на рынке написано на питоне. Даже в энтерпрайзе лично видел большие монолитные финтех молотилки написанные целиком на питоне.

разрешите узнать, в какие конкретно компании рос бигтеха вы проходили интервью за последнее время

Яндекс и Авито. Май-июнь прошлого года. Приходил на собесы с опытом на джаве, получил офферы в команды, которые только на Го пишут. Но по итогу никуда отказался и никуда не пошел, так как требовали быть в РФ в офисе.

Повышение по грейду и по зарплате в 2026? Забудьте. Не выгнали на мороз и на том спасибо.

Низкая популярность дотнета обусловлена тем, что где-то до середины 2010х годов его нельзя было запустить под линукс. То есть надо было держать windows server, чего почти никто делать не хотел.
Потом конечно когда стало понятно, что linux+контейнеры это будущее, а Сатья сменил Балмера, в MS таки сделали версию для линуха, но было уже чутка поздновато, так как все бигтехи к тому моменту уже плотно сидели на java, питоне, руби, пхп и прочих кроссплатформенных решениях. Собственно поэтому нигде в американском бигтехе кроме самого MS нет .NET.

А платить майкрософту - фууу, старье дорогое

Ну так и есть. А зачем платить майкрософту, когда есть бесплатные опенсорсные решения? Я вот никогда не возьму win server за деньги вместо бесплатного linux.

Ну, справедливости ради .NET и прочие технологии тоже с запада привезли, а не откуда-то еще. И Microsoft тоже с российского рынка нынче ушел, как и Гугл, и Оракл.

В моем универе так вообще Microsoft целые лекции организовывал в середине 00х годов, на которых рекламировали .NET. В целом дотнет был популярен в России какое-то время, но сейчас эти времена прошли окончательно, судя по рынку вакансий и на чем в больших ру компаниях пишут.

С LLM стало проще читать чужие статьи, это факт.

Но вот писать статьи? Не знаю. Сам был вынужден не так давно писать статьи в научные журналы для галочки, к счастью достаточно было журналов РИНЦ, поэтому я нашел те, где нет рецензирования и где за деньги любой шлак публикуют... В итоге нагенерил огромное количество нейрослопа, даже читать его не стал, оплатил и опубликовал. И я думаю такого все больше и больше в науке будет. Даже в уважаемых журналах, где публикуют только статьи с рецензиями.

как он считается

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

насколько вообще релевантен и актуален

Почти нисколько.

основной его смысл - генерация новостей для технических сайтов

Так и есть.

Реальные рейтинги можно у гитхаба посмотреть. Там явно лидируют очевидные лидеры - Typescript и Python.

выгребает говно, созданное всей командой из-за выбранного языка

В любом языке полно неочевидных моментов и костылей. Полно таких же статей про Rust/Python/C#/C++ и другие языки. Го тут ничем не отличается. Все нюансы языка, которые в статье перечислили, иногда спрашивают у джунов и стажеров при трудоустройстве, это довольно известные недостатки языка, про которые везде написано и про которые все знают.

Каких-то супер специфичных знаний в гигантском объеме у гошников нет, этот язык кратно проще чем Rust или C++.

Есть просто люди, которым в целом нормально писать на Go, а есть те, которые по каким-то причинам яростно этому сопротивляются. Есть и люди, которые яростно сопротивляются Rust (и которые пишут на Go/C++/Java) и наоборот. Это просто психология такая. В реальном проде в целом все равно на язык, чем проще, тем лучше.

Поэтому при трудоустройстве в бигтех компании никто досконально не спрашивает тонкости java или с++ или python. Есть алгоритмические секции (которые все решают на питоне) и дизайн секции, где код писать почти никогда не нужно. И алго секция идет в режиме зачет/незачет, а вот грейд кандидата уже оценивается по дизайн секции. Можно всю кодинг секцию сдать на питоне, но прийти в команду писать на С++ или на Go или Java.

Это финтех. Гигантский монолит на джаве и несколько микросервисов вокруг него на питоне. Вся эта машинерия в сутки считает миллионы долларов. Довольно серьезный уровень, где нужно чтобы все работало 24/7. Вполне энтерпрайз, имхо...

Да и российские маркетплейсы, которые на Go написаны, вполне очень хардкорный уровень. Пусть и не энтерпрайз в классическом понимании.

А чем отличаются требования на Го сеньора и требования на Java (или .NET) сеньора?

Лично видел людей, которые становились го сеньорами, которые до того писали много на джаве. Скорее важен общий опыт в бекенде, умение строить микросервисную архитектуру, опыт с kafka, базами, телеметрией итд итп. Язык тут в целом вторичен. Поэтому многие компании нанимают людей без привязки к конкретному языку.

И не понятно, почему эти требования считаются высокими. Как по мне, далеко не высокие, а вовсе обычные.

Виртуальных тредов в Rust из коробки нет. Надо использовать Tokio, что почти всегда сложнее чем горутины и каналы в Go. Без GC писать тоже кратно сложнее чем на языке с GC.

С PHP? Лол

Ну я пришел в Go после нескольких лет джавы. Проект рабочий сйчас мигрирую с джавы и питона на Go.

О покрытие всего этого тестами я вообще молчу

я не знаю, как на этом писать код, у которого можно проверить гарантированную корректность работы

А в чем проблема? Тестовый пакет есть в стандартной либе. Тестконтейнеры тоже есть. Не вижу каких-либо отличий в том, как тестируют на Python/Java/C# и как это делают в Go.

Есть целая бесплатная опенсорсная книжка про то, как писать тесты для Go кстати. Очень хорошая, всем рекомендую. https://quii.gitbook.io/learn-go-with-tests

а вместо нормальных dto

Вполне используем DTO для джейсончиков и для походов в базу.

каждый новый микросервис уникален и не похож ни на что другое, виденное ранее

А в чем уникальность?

А преувеличение чего? Async/await однозначно делит мир на два отдельных мира - сихронный и асинхронный, между которыми приходится прокладывать довольно сложные и причудливые мосты. В Go все синхронное.

Добавить в язык async/await - однозначно и навсегда выполнить это разделение. Поэтому в джаве и не стали так делать, хотя в общем-то могли и обсуждали.

Тут трейдофф есть очевидный.

Можно в стандартную либу пихать много и всякого. Как в общем-то и делали на заре Java и .NET, где старались добавить абсолютно все, чего угодно разработчику, даже собственную GUI библиотеку (Swing/AWT, Winforms, WPF и прочее).

Либо делать стандартную либу максимально урезанной и без ничего (как например в чистом Си).

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

Но в случае с минимальной либой как в чистом Си банально сложно писать код. Где нет ни map, ни list, ни нормальной работы со строками.

Имхо Go попытался попасть в середину так чтобы нигде никому не навредить и отчасти им это удалось. Но местами вышло явно неудачно, например отсутствие нормальных коллекций из коробки на старте языка и довольно причудливое API для взаимодействия с ними. Но что есть, то есть...

Не совсем понятно, куда переезжать с Go. А на Go много кто уже переехал и переезжает прямо сейчас.

По-хорошему в бекенде нужен язык как Java, но:

  • без наследования (но с интерфейсами)

  • с виртуальными тредами

  • с нормальными дженериками

  • с легковесным рантаймом

  • компилирующийся в бинарь со всеми зависимостями

  • с наличием GC

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

тысяча бывших таксистов пришла, потом тысяча ушла

Про таксистов конечно же wishful thinking, на Go вполне тяжелые проекты пишут, где вчерашние таксисты с курсов вряд-ли потянут... Да и вообще на Go обычно переходят с других языков, либо студентов из хороших универов на стажировки берут.

А какой именно магии? Шедулер горутин и netpoller? Кроме GC это единственная магия, которая в Go есть. Все остальное крайне простое и топорное.

В Rust есть раскраска функций как минимум, в Go ее нет. Писать на Go проще, потому что везде вы работает с синхронными функциями. Это сильно проще чем асинхронщина, для которой в случае Rust придется еще и Tokio изучать.

В общем-то в джаве и пошли по пути зеленых потоков (они же virtual threads в java или goroutines в go), просто потому что это проще для разрабов, чем async/await.

Concurrency в Go сделано на порядок лучше (имхо) чем в c#, js, python и ruby. Rust - гораздо более сложный и тяжелый для чтения язык. Фишка Go как раз в том, что код очень прозрачный, нет никакой магии рефлексии, AOP, прокси и всякого синтаксического сахара - можно в любой точке проекта поставить брейкпоинт и дебажить без боли. Нет невидимых действий под капотом, кроме разве что GC и шедулера горутин.

На питоне так вообще разрабатывать что-то больно. Если mypy с самого начала не завезли, то все, пиши пропало...

rate limit

А зачем он в стандартной библиотеке?

https://pkg.go.dev/golang.org/x/time/rate - вот эта либа как раз и написана разрабами из гугла и ими поддерживается. Просто решили не тащить его в стдлибу, вот и все.

Походу много чего надо писать самому руками

В целом нет. Вся необходимая обвязка пишется за пару часов руками или за 10-20 минут при помощи LLM, дальше разработка бинес-логики почти не отличается от того, как это на джаве/питоне/сишарпе происходит.

В целом если раньше это был аргумент, то в эпоху LLM, когда все типовое генерится за пару минут, уже не особо. Да и без LLM можно гошные сервисы вполне удобно генерить при помощи стандартной генерилки, главное шаблон настроить правильный.

Вряд ли. Кроме MS в дотнет никто денег не вкладывает. Для постоянного развития языка и CLR нужна команда разработчиков на зарплате. И если условную Java еще пытаются как-то допиливать в недрах Amazon или RedHat, то .NET целиком и полностью существует за счет MS.

1

Information

Rating
1,788-th
Registered
Activity