Госпадя да харе уже, сначала уволили, потом наняли. OpenAI скрывает - плохо, Anthropic стращает про 50% - хорошо. Кто вообще вам сказал, что это и есть правда?
У меня есть опыт, если посидеть в спокойной обстановке подумать - то вполне можно ее решить. За день например. Но без подготовки, вот сразу на собес прийти - неа. Будет решено частично или не оптимально. А там ведь толпа других кандидатов, которые ее решали на предыдущем собесе например. Они ее решат «лучше» с точки зрения интервьюера. А это значит отказ.
Ну в том числе и комменты подтверждают, что с нуля за час такую задачу не решить. А сидеть писать статью в удобном кресле и попивая кофеек - это совсем другое.
Остается только вызубрить решения подобных задач, собственно как и олимпиадных по кодингу.
2000 рублей за два дня (16 часов) - это 125 рублей в час, в 2017 году, ага ага.
В 2017 у меня ставка на удаленке была уже 30 баксов в час, порядка 2000 рублей. То есть это должно было стоить 16 * 2000 = 32 000 рублей чисто за работу + раз это фриланс, а не постоянный full time и надо покрыть риски, налоги, отпуска, больничные - это минимум х2. То есть это должно было стоить минимум 64 000 рублей!
В далеких 2008-2009 пробовал найти заказы на веблансере и fl. Такое количество идиотов в одном месте я нигде не встречал.
Народ за свои жалкие копейки хотели то, что сами не понимали. Больше всего позабавил заказ «хочу полную копию одноклассников. Бюджет 10000 руб.» я тогда работал в госухе и зп у меня была 24000 руб. Серьезно? Чел хотел за две недели получить полную копию одноклассников???
Фриланс - это 95% частников или даже компаний, которые хотят сэкономить на эникейщике. За все время попался только один заказ на вебансере, где адекватно пообщались. Ничего не вышло. Но из разговора показалось, что они в принципе случайно сюда зашли и уже сваливают.
Fl - отдельная дичь была в то время. Чуть более адекватные заказы были под плашкой про. За которую надо было платить. К тому времени я уже понял, что тут происходит и не было никаких гарантий, что там хоть что-то мне перепадет. Но экономика уже не сходилась - как я могу платить за про, если я не получил еще ни одного заказа? Продавцы лопат заработали больше всех на золотой лихорадке?
В 2010 я нашел таки удаленку в найме и забыл этот фриланс как страшный сон.
Кстати, если рассматривать Go как процедурный паскаль на стероидах с нативной поддержкой http и асинхронности - пожалуй и ниче так. Но это сразу ограничивает применимость в моей голове и ожидание больших граблей.
Насколько я могу судить - "энтепрайзные" языки предоставляют определенных подход как оформлять контроллеры, бизнес-слой и так далее. Это зашито в их фреймворках, интерфйсах, документации и книгах.
В случае c Go - видимо этого нет и все пишут как бог на душу положит. Программист, который начал с Go - даже не знает, что все это дефолтные вещи для других программистов из "энтепрайзных" языков.
Мне как-то на хабре попалась статья - там чел на Go написал руками все то, что в C# из коробки - контроллеры и все вот это вот. Еще подача такая была типа для него это в новинку. А я уже лет 10-15 так пишу на C#. И все так пишут. Приходишь в новый проект и там все в целом знакомо - знаешь что ждать от контроллеров, от бизнес слоя, от слоя данных и так далее. То есть в голове у толпы людей вырисовывается некая общепринятая иерархия и структура.
Формально все эти вещи в C# - это тоже отдельные либы, это не стандартная (но namespace aka package обычно начинаются с System.*** или Microsoft.***). Их надо подключать. Просто IDE настолько дружелюбная, что когда пишешь в редакторе кода AddVersioning или AddRateLimiter - она услужливо автоматом предлагает подключить нужную либу. И создается ощущение единого фреймворка.
Да, знаете, привык наверное уже. Понадобилось что-нибудь - сначала посмотреть в system. Наверняка что-нибудь найдется, с готовым интерфейсом и настраиваемое. И гугл выдаст за секунду пример как это использовать.
Потом уже, когда проект живет некоторое время - можно наткнутся на ограничение, или найти что-нибудь получше / поинтересней. Но вот недавно товарищ, который писал automapper (либа для маппинга полей туда сюда) сделал ее платной. И все, приехали.
Вот Go и gin просто гугл поиск выдал https://pkg.go.dev/golang.org/x/time/rate - отдельная либа, уже лучше, но AddRateLimiter из коробки от Microsoft все же надежней
Мое мнение - либа написанная на коленке одиночкой, крупным опен-сорус сообществом или крупной коммерческой компанией (Uber) и корпорацией, которая создала и поддерживает сам язык программирования - это три разных уровня доверия и надежности. Одиночка, опен-сорус могут исчезнуть и проект останется без поддержки. Если исчезнет корпорация - придется учить новый язык программирования.
но как правило DI контейнер сами пишем с нуля
Собственно это и главная моя претензия в моем оригинальном комментарии, между строк. Походу много чего надо писать самому руками (это дополнительные ресурсы на поддержку) или использовать сторонние либы. Google не выдал готовый фреймворк уровня asp.net core.
DI контейнер в C# встроенный. И я тут посмотрел доку https://uber-go.github.io/fx/lifecycle.html в разделе lifecycle я не вижу singleton, scoped и transient - это я тоже должен написать руками? В C# проектах это активно используется - http context, orm context / sql connection - это scoped. Всякие фабрики - это singleton, ну а остальное можно transient.
Киллер-фича Go это компиляция в бинарь и быстрый запуск + легковесный рантайм
Не увидел разницы с asp.net core / kestrel для первых двух. docker образы по размеру не сранивал. exe файл у C# легче (150кб, вместо 28 Мб), но у C# еще куча подключенных либ - общий весь примерно такой же (30 Мб)
Я тут Go попробовал на праздниках (основной мой язык - это C# как раз). Давно уже хотел.
Сначала я решил написать простейший калькулятор, как в универе на паскале.
Началось все с того, что после билда консольного приложения, касперский мне выдал что в exe-шнике троян.
Гифка со звуком
Далее у меня начал ломаться аналог Console.ReadLine, там внутри какие-то сайд эффекты, если ввести "абврылг" вместо 4.5. Я спросил чат гпт, что с этим делать и он предложил вариант, где я должен руками написать что-то вроде чтения из потока из stdin/out. Че серьезно?
Потом я решил закодить rest api.
Оказалось, что Microsoft как разработчик языка C# поддерживает и развивает довольно качественные и функциональные фреймворки, чем пожалуй задает некий стандарт наличия таких вещей в экосистеме - asp.net core для rest api, ADO.NET / EF / EF Core для доступа к данным и так далее.
В случае с Go - Google ничего такого не делает. Я там нашел пару фреймворков на гит хабе (gin-goinc и какой-то от Uber). Но создалось ощущение, что это какие-то собранные на коленке штуковины. И только с тем функционалом, который понадобился условном опен-сорусеру или тому же уберу. А все остальное будь добр пили руками сами.
Не, в экосистеме C# тоже есть nuget и сто тыщ питцот миллионов собранных на коленке библиотек различного качества. Но не глобальные же вещи типа rest api и orm?
Идем дальше - ООП в Go по сути нет, есть структуры, интерфейсы (без привязке к структуре), процедурщина в виде конструкторов / методов чуть ли не в глобальной области видимости (package aka namespace помогает чуть-чуть). Это если бы я на C# все писал с использованием extension methods.
DI / IoC тоже нет. В связи с этим я теперь начал угорать с вакансий на Go
Как я теперь это читаю: http api какое-то обрезанное и собранное на коленке, ООП обрезанное, зачем его требовать? SOLID? как вы это сделаете без ООП и DI / IoC в том числе?
Насчет горутин и каналов - это короче аналог Task.Run + Channels в C#. Чат гпт можно попросить написать один и тот же код на Go и на C# и увидеть схожесть и разницу. Каналы я в C# не использовал. Это по сути очередь в памяти и она теряет данные при перезагрузке сервера.
И тут я вспомнил, как мой самый первый начальник на самой первой работе сказал, еще в 2007 году, что C# это очень абстрактный язык. Вот, он был прав.
На C# можно просто писать код, без сайд эффектов внутри. Вот как ты думаешь - так и пишешь. Что ты ждешь от него, то он тебе и выдает. Есть "промышленные" фреймворки, поддерживаемые самой корпорацией, кто изобрел язык. Microsoft и C# короче разбаловали меня.
Go - какое-то недоразумение, понавставлял кучу палок в колеса, и это я еще не пробовал писать ничего сложнее калькулятора. Хорошо что дженерики есть
Я типа сениор, вот как вы в статье написали - тащу проект / продукт, и в день происходит до 12-15 переключений между задачами от архитектурных до поддержки 3-ей линии плюс приходиться пинать нерадивых джунов, идентифицирующие себя мидлами как мимнимум.
По итогу - ничего хорошего. У меня бесконечный поток вопросов и задач, у меня нет времени все это успеть, под нож идут мои программистские задачи, а потом приходят менеджеры и расстраиваются, что я не сделал какую-то одну конкретную задачу, которая внезапно стала более приоритетной.
И еще я начинаю кучу всего пропускать и делать «херак херак и в продакшен». Опять же, ничего хорошего.
В итоге я и есть bottleneck.
И это у нас еще выделенный dev ops есть. То есть облаком я не занимаюсь.
Госпадя да харе уже, сначала уволили, потом наняли. OpenAI скрывает - плохо, Anthropic стращает про 50% - хорошо. Кто вообще вам сказал, что это и есть правда?
У меня есть опыт, если посидеть в спокойной обстановке подумать - то вполне можно ее решить. За день например. Но без подготовки, вот сразу на собес прийти - неа. Будет решено частично или не оптимально. А там ведь толпа других кандидатов, которые ее решали на предыдущем собесе например. Они ее решат «лучше» с точки зрения интервьюера. А это значит отказ.
Ну в том числе и комменты подтверждают, что с нуля за час такую задачу не решить. А сидеть писать статью в удобном кресле и попивая кофеек - это совсем другое.
Остается только вызубрить решения подобных задач, собственно как и олимпиадных по кодингу.
А какие такие за реальные микросервисы? И почему у twilio они якобы другие?
2000 рублей за два дня (16 часов) - это 125 рублей в час, в 2017 году, ага ага.
В 2017 у меня ставка на удаленке была уже 30 баксов в час, порядка 2000 рублей. То есть это должно было стоить 16 * 2000 = 32 000 рублей чисто за работу + раз это фриланс, а не постоянный full time и надо покрыть риски, налоги, отпуска, больничные - это минимум х2. То есть это должно было стоить минимум 64 000 рублей!
А qa-щикам то нахрена олимпиадные задачи?
Вот уж где галера - так это фриланс.
В далеких 2008-2009 пробовал найти заказы на веблансере и fl. Такое количество идиотов в одном месте я нигде не встречал.
Народ за свои жалкие копейки хотели то, что сами не понимали. Больше всего позабавил заказ «хочу полную копию одноклассников. Бюджет 10000 руб.» я тогда работал в госухе и зп у меня была 24000 руб. Серьезно? Чел хотел за две недели получить полную копию одноклассников???
Фриланс - это 95% частников или даже компаний, которые хотят сэкономить на эникейщике. За все время попался только один заказ на вебансере, где адекватно пообщались. Ничего не вышло. Но из разговора показалось, что они в принципе случайно сюда зашли и уже сваливают.
Fl - отдельная дичь была в то время. Чуть более адекватные заказы были под плашкой про. За которую надо было платить. К тому времени я уже понял, что тут происходит и не было никаких гарантий, что там хоть что-то мне перепадет. Но экономика уже не сходилась - как я могу платить за про, если я не получил еще ни одного заказа? Продавцы лопат заработали больше всех на золотой лихорадке?
В 2010 я нашел таки удаленку в найме и забыл этот фриланс как страшный сон.
Эт че скоро и кубики Лего будут с иишечкой внутри? 😅
Кстати, если рассматривать Go как процедурный паскаль на стероидах с нативной поддержкой http и асинхронности - пожалуй и ниче так. Но это сразу ограничивает применимость в моей голове и ожидание больших граблей.
Насколько я могу судить - "энтепрайзные" языки предоставляют определенных подход как оформлять контроллеры, бизнес-слой и так далее. Это зашито в их фреймворках, интерфйсах, документации и книгах.
В случае c Go - видимо этого нет и все пишут как бог на душу положит. Программист, который начал с Go - даже не знает, что все это дефолтные вещи для других программистов из "энтепрайзных" языков.
Мне как-то на хабре попалась статья - там чел на Go написал руками все то, что в C# из коробки - контроллеры и все вот это вот. Еще подача такая была типа для него это в новинку. А я уже лет 10-15 так пишу на C#. И все так пишут. Приходишь в новый проект и там все в целом знакомо - знаешь что ждать от контроллеров, от бизнес слоя, от слоя данных и так далее. То есть в голове у толпы людей вырисовывается некая общепринятая иерархия и структура.
А понял, все же тут не совсем так.
Формально все эти вещи в C# - это тоже отдельные либы, это не стандартная (но namespace aka package обычно начинаются с System.*** или Microsoft.***). Их надо подключать. Просто IDE настолько дружелюбная, что когда пишешь в редакторе кода AddVersioning или AddRateLimiter - она услужливо автоматом предлагает подключить нужную либу. И создается ощущение единого фреймворка.
Да, знаете, привык наверное уже. Понадобилось что-нибудь - сначала посмотреть в system. Наверняка что-нибудь найдется, с готовым интерфейсом и настраиваемое. И гугл выдаст за секунду пример как это использовать.
Потом уже, когда проект живет некоторое время - можно наткнутся на ограничение, или найти что-нибудь получше / поинтересней. Но вот недавно товарищ, который писал automapper (либа для маппинга полей туда сюда) сделал ее платной. И все, приехали.
Вот, следующий я попробую Rust. Интересно как там сложится.
Да, вот, тоже сложилось впечатление, что зп у сениоров гошников выше, чем у сениоров си-шарпников, потому что страдать приходится больше. Что обидно.
Ну вот я ткнул пальцем в небо - rate limit
Вот C# и asp.net core https://learn.microsoft.com/en-us/aspnet/core/performance/rate-limit?view=aspnetcore-10.0 - вызываешь AddRateLimiter, прописываешь опции, все из коробки
Вот Go и net/http https://pkg.go.dev/net/http#pkg-examples - поиском не находит rate limit
Вот Go и gin просто гугл поиск выдал https://pkg.go.dev/golang.org/x/time/rate - отдельная либа, уже лучше, но AddRateLimiter из коробки от Microsoft все же надежней
Мое мнение - либа написанная на коленке одиночкой, крупным опен-сорус сообществом или крупной коммерческой компанией (Uber) и корпорацией, которая создала и поддерживает сам язык программирования - это три разных уровня доверия и надежности. Одиночка, опен-сорус могут исчезнуть и проект останется без поддержки. Если исчезнет корпорация - придется учить новый язык программирования.
Собственно это и главная моя претензия в моем оригинальном комментарии, между строк. Походу много чего надо писать самому руками (это дополнительные ресурсы на поддержку) или использовать сторонние либы. Google не выдал готовый фреймворк уровня asp.net core.
DI контейнер в C# встроенный. И я тут посмотрел доку https://uber-go.github.io/fx/lifecycle.html в разделе lifecycle я не вижу singleton, scoped и transient - это я тоже должен написать руками? В C# проектах это активно используется - http context, orm context / sql connection - это scoped. Всякие фабрики - это singleton, ну а остальное можно transient.
Не увидел разницы с asp.net core / kestrel для первых двух. docker образы по размеру не сранивал. exe файл у C# легче (150кб, вместо 28 Мб), но у C# еще куча подключенных либ - общий весь примерно такой же (30 Мб)
Я тут Go попробовал на праздниках (основной мой язык - это C# как раз). Давно уже хотел.
Сначала я решил написать простейший калькулятор, как в универе на паскале.
Началось все с того, что после билда консольного приложения, касперский мне выдал что в exe-шнике троян.
Далее у меня начал ломаться аналог Console.ReadLine, там внутри какие-то сайд эффекты, если ввести "абврылг" вместо 4.5. Я спросил чат гпт, что с этим делать и он предложил вариант, где я должен руками написать что-то вроде чтения из потока из stdin/out. Че серьезно?
Потом я решил закодить rest api.
Оказалось, что Microsoft как разработчик языка C# поддерживает и развивает довольно качественные и функциональные фреймворки, чем пожалуй задает некий стандарт наличия таких вещей в экосистеме - asp.net core для rest api, ADO.NET / EF / EF Core для доступа к данным и так далее.
В случае с Go - Google ничего такого не делает. Я там нашел пару фреймворков на гит хабе (gin-goinc и какой-то от Uber). Но создалось ощущение, что это какие-то собранные на коленке штуковины. И только с тем функционалом, который понадобился условном опен-сорусеру или тому же уберу. А все остальное будь добр пили руками сами.
Не, в экосистеме C# тоже есть nuget и сто тыщ питцот миллионов собранных на коленке библиотек различного качества. Но не глобальные же вещи типа rest api и orm?
Идем дальше - ООП в Go по сути нет, есть структуры, интерфейсы (без привязке к структуре), процедурщина в виде конструкторов / методов чуть ли не в глобальной области видимости (package aka namespace помогает чуть-чуть). Это если бы я на C# все писал с использованием extension methods.
DI / IoC тоже нет. В связи с этим я теперь начал угорать с вакансий на Go
Как я теперь это читаю: http api какое-то обрезанное и собранное на коленке, ООП обрезанное, зачем его требовать? SOLID? как вы это сделаете без ООП и DI / IoC в том числе?
Насчет горутин и каналов - это короче аналог Task.Run + Channels в C#. Чат гпт можно попросить написать один и тот же код на Go и на C# и увидеть схожесть и разницу. Каналы я в C# не использовал. Это по сути очередь в памяти и она теряет данные при перезагрузке сервера.
И тут я вспомнил, как мой самый первый начальник на самой первой работе сказал, еще в 2007 году, что C# это очень абстрактный язык. Вот, он был прав.
На C# можно просто писать код, без сайд эффектов внутри. Вот как ты думаешь - так и пишешь. Что ты ждешь от него, то он тебе и выдает. Есть "промышленные" фреймворки, поддерживаемые самой корпорацией, кто изобрел язык. Microsoft и C# короче разбаловали меня.
Go - какое-то недоразумение, понавставлял кучу палок в колеса, и это я еще не пробовал писать ничего сложнее калькулятора. Хорошо что дженерики есть
Я типа сениор, вот как вы в статье написали - тащу проект / продукт, и в день происходит до 12-15 переключений между задачами от архитектурных до поддержки 3-ей линии плюс приходиться пинать нерадивых джунов, идентифицирующие себя мидлами как мимнимум.
По итогу - ничего хорошего. У меня бесконечный поток вопросов и задач, у меня нет времени все это успеть, под нож идут мои программистские задачи, а потом приходят менеджеры и расстраиваются, что я не сделал какую-то одну конкретную задачу, которая внезапно стала более приоритетной.
И еще я начинаю кучу всего пропускать и делать «херак херак и в продакшен». Опять же, ничего хорошего.
В итоге я и есть bottleneck.
И это у нас еще выделенный dev ops есть. То есть облаком я не занимаюсь.
А у меня такой был
Че-то вспомнилось - не рой яму другому, сам в нее попадешь /s
Точно же, было время - у меня была Sound Blaster Audigy и к ней колонки Sven 5.1