Pull to refresh

Comments 183

Даже не узнал сходу статью от короля разработки, потому что нет фирменной картинки с кодом. Начал читать — что-то подозрительно, пришлось проверить автора...

Когда у тебя высокий грейд, ты можешь не писать код.

А можешь писать, да такой, который целые индустрии переворачивает. Например, Торвальдс не только ядро для ОС написал, но и git. Что важнее?

Важнее иметь громкое имя, например. Тогда и кривая поделка (git) задавит более продуманного конкурента (hg).

Я думал как ответить на это.


  1. Проигнорировать.
  2. Сказать, что hg — кривая поделка, а гит — хорош.
  3. Пожурить за обесценивание.
  4. Сказать, что люди, выбиравшие межу git и hg, сказали своё слово.
  5. Рассказать про взрыв мозга от branch model у hg.
  6. Запостить этот список "как есть".
UFO just landed and posted this here

Последний раз, когда я ребейзил свой фичебранч относительно убежавшего вперёд master'а, бранчи были на месте и ими можно было пользоваться.


… С другой строны, вас кто-то заставляет использовать git для своих проектов? Вы автор — какую систему хотите, такую и используйте.

UFO just landed and posted this here

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


выбирайте любой: https://www.mercurial-scm.org/wiki/MercurialHosting


Зачем вам "популярность" сервиса, если вы там свой код храните?

UFO just landed and posted this here

А как выглядит тогда rebase на более свежий "родительский" бранч?

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

Я хочу менять не как попало, а так, чтобы оно доставило наименьший wtf при мерже.


Мерж при коммите возможен, если нет конфликтов. А они могут возникать, и чем крупнее проект, тем более нежелательны лишние мержи. Идеально, каждая фича делается как набор нескольких коммитов по-делу (с осмысленными описаниями), без рандомных мержей и фиксов где попало чего попало.

UFO just landed and posted this here

В mercurial не страдают, вас это устраивает и вы используете mercurial. Те, кто хочет иметь более читаемую историю кода (не личных заслуг отдельных бранчей) используют git.


Все счастливы. В чём ваша претензия к git'у? Вас кто-то заставляет использовать git? В соседней конторе зарплата на +800 евро больше, но дресс-код. Я к ним не хочу. Что вас держит в компании, которая заставляет вас использовать git?

Git сейчас практически стандарт де-факто. В подавляющем количестве вакансий или git, или вообще VCS нет.Крайне-крайне редко SVN встречается ещё.

Слухи про неизменность истории в меркуриал очень давно устарели.
Для переписывания истории там не один инструмент (rebase, histedit, mq, evolve), но, в отличие от git (а может и вообще всех остальных) позволяет делать это безопасно (evolve). Более того, существуют даже официально переписываемые публично ветки (topic). Попробуйте переписать публичную ветку в git, когда вы в ней не один. А в меркуриал это не приносит проблем.

Ну а я страдаю переписыванием истории, по мне так понятней, т.к. меньше мусора. Что за плагин и насколько сложно им пользоваться?

UFO just landed and posted this here
Так делайте малые изменения, на свежей кодовой базе, делайте быстро. Тогда мастер от вас далеко вперед не убежит.

Ага, осталось ещё CI уговорить быстро проходить. У меня много раз уже было — пишешь фичу, всё хорошо. Пока CI пройдёт, в мастере уже десяток коммитов и всё устарело. Сделал rebase, попушил, должно мержиться хорошо, но тут CI снова начал всё проверять, пока проверяет, опять конфликты.

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

Девопс это же не только про CI/CD

На деле у вас где-то есть узкое и тормозное звено, которое вполне возможно даже не обязательно к прохождению, но всё так сложилось…

Я смотрю, вы большой эксперт с CI/CD. Возможно, вы хотите помочь? Проект довольно маленький, несколько десятков тысяч программистов, под сотню репозиториев, несколько тысяч компаний, сотни разных CI серверов.
Вот примерный обзор проблемы:
https://zuul.openstack.org/status

К сожалению, у меня пока больше опыта в борьбе с внутренней бюрократией гораздо более маленькой команды, так что задачка сильно выше головы :)

Видите, ваши советы в крупных проектах не работают.

У гита был гитхаб, у меркуриала — не было (

UFO just landed and posted this here

Битбакет и сейчас по многим параметрам не дотягивает до гитхаба даже не современного. :(

По каким по многим (если не брать в расчет их маркетплейсы)?
навскидку: сразу встроенный CID, Trello, Jira

Удобство код-ревью, например. Что по функциональности типа треккера задач, то в битбакете даже зачатков нет, только глубокие интеграции с другими продуктами Atlassian

Трекер задач еще недавно был, но его выпилили. Но он был настолько примитивен, что ну его нафиг. Проще в блокнот записывать. Или купить селф-хостет джиру за 10 баксов.

Вот сразу навскидку: при просмотре кода в "raw"-режиме используется хз какая кодировка, из-за чего вместо кириллицы кракозябры.
Жутко бесит.

На то они raw, какую положили, та и показывается, нет? Я, кажется, уже много лет не встречал проблем с кодировками кириллицы в принципе. Может если ссылку дадите конкретную, проще будет.

UFO just landed and posted this here

Я на 100% уверен, что у меня в PyCharm выставлена UTF-8 кодировка.
Код: https://bitbucket.org/mastergroosha/bitbucket-raw-encoding-fail/src/master/app.py
Открываем в RAW: https://bitbucket.org/mastergroosha/bitbucket-raw-encoding-fail/raw/5919ee46ba00cebc9a3026577724e157b114b6bc/app.py


Ну и чтобы не было сомнений.
Вот тот же репозиторий на GitHub (сверьте хэш коммита)
https://github.com/MasterGroosha/Bitbucket-Raw-Encoding-Fail/blob/master/app.py
Он же в RAW: https://raw.githubusercontent.com/MasterGroosha/Bitbucket-Raw-Encoding-Fail/master/app.py


Имею все основания полагать, что это косяк Bitbucket, а не мой.


sumanai Вы неправы, всегда UTF-8

Ага, Bitbucket возвращает "content-type: text/plain", в то время как GitHub возвращает "Content-Type: text/plain; charset=utf-8".


Но я всё ещё не уверен, что это именно косяк. У гитхаба нет никаких оснований думать, что там именно Utf-8, а не что-то ещё.

На обывательском уровне у меня есть предположение, что при выставленном charset=utf-8 "попаданий" в кодировку будет больше, чем без него.
Собственно, это было одной из причин ухода от битбакета, т.к. их мобильный интерфейс уж очень неказистый, а в RAW-режиме невозможно читать комментарии и текст на русском. Увы.

UFO just landed and posted this here

Можно много чего сделать самому вместо Atlassian, но зачем тогда мне нужен этот сервис? :)

Думаю тот косяк именно браузера, считающего кодировкой по умолчанию именно ASCII в соответствии с устаревшей спекой.

Western кодировку ФФ показывает, не ASCII

У меня в ФФ указана кодировка "Юникод".
Вид -> Кодировка текста

Не вижу никакой разницы между гитхабом и битбакетом — везде русский читается. Браузер Chrome Version 84.0.4147.105 (Official Build) (64-bit) on Ubuntu 20.04.1 LTS Что я делаю не так?

Любопытно. На текущей машине (Windows 10):
Firefox 80: кириллица не читается
Chrome Portable 85.0.4183.83: кириллица не читается


На виртуалке (Kubuntu 18.04.5) в Firefox 79 кириллица тоже не читается.


Вы в raw-режиме открываете?

Да, по чётным ссылкам кликаю.


В Firefox 79.0 (64-bit) кириллица на битбакете не читается, на гитхабе читается.


P.S. Очередное косвенное указание на причины по которым bitbucket и firefox проигрывают конкуренцию. Для обычных людей, включая обычных программистов, UX важнее строгого следования спецификациям и/или выбора какого-то разумного дефолтного варианта в условиях неопределенности, пускай и иногда он будет ошибочным

На Google Code был выбор между svn и mercurial, но Google Code сам помер…

..7. F...ck you, a..hole. Извините, не сдержался

Не хватает пункта Прибегнуть к аргументации "Сперва добейся!" (ну типа, а где твоя некривая поделка, которую используют миллионы)
:)

А можете рассказать чем он продуманнее?

Что я со своей колокольни вижу:
— изменения истории нет. Джун залил гигабайты мусора в репу — теперь живём с этим
— множество голов веток? — да пожалуйста, живите дальше в проклятом мире, который сами и создали

Чего от Hg не отнять, так это простоты и отказоустойчивости. Отстрелить себе ногу не получится (примеры выше — это скорее навешивание гири).

Исходя из этих причин, на его примере хорошо обучать новичков концепциям контроля версий, а потом уже подпускать к гиту, на котором можно и ногу себе отстрелить, и голову (git push --force master) и другие интересные части тела.

Продолжая аналогии, Hg — пила, Git — пилорама, которую нужно знать как свои три пальца.

Да всем. Те же ветки являются объектами первого класса, а не воображаемыми. Человеческая система команд. Кроссплатформенные хуками, не зависящие от установленных на клиенте рантаймов. Явный трекинг истории перемещений/копирования файлов, а не угадывание при чтении.


Изменение истории есть, но по умолчанию отключено. Пассаж про головы не понял.

UFO just landed and posted this here

Множество голов в одной ветке… что-то мне это напоминает… ах да, гит.

UFO just landed and posted this here
а не угадывание при чтении

Угадывание происходит также при rebase/merge. И если не угадал, то есть шанс, что он молча вольет левые изменения не туда. Спасает git только то, что у такой ситуации малая вероятность (нужно чтобы файлы были похожи и место вливания похожи).
Громкое имя не на пустом месте появилось. Ну и видимо не такая кривая раз пользуются. На одной рекламе не выедешь. Рынок решает. Причем необязательно это будет технически лучший продукт. Достаточно хороший и удобный — уже заявка на успех. На рынке важно что выберет большинство, а не сотни лучших умов
Достаточно хороший и удобный

Вот только хорошим и удобным оказался не git, а GitHub, что и определило выбор. И выбирали не гит, а GitHub. А далее и вовсе не выбирали, ибо считать выбором «везде требуют гит, потому выбираем гит» просто наивно.

таки гит а не GitHub, потому что с гитом я лично с 2013 работаю и куча людей рядом — тоже, а то и дольше, а с гитхабом начал только в прошлом году. И гит до гитхаба был 3 года и не гугл на базе него делают геррит и гит лаб не на ровном месте растет. Если технологию или подход выбирают по умолчанию, то это может значить что она достаточно хороша или более-менее универсальна. Я бы сказал что гит хаб дал гиту «квантовый» скачок. Но что рандомное или убогое средство лежит в основе такого гиганта — маловероятно
UFO just landed and posted this here
ок, не убогий. Воспринял как то что гит без гитхаба — ниочем. С чем не согласен и что собственно не так.
Исходя из ваших слов вы не проводили опытное сравнение с альтернативами. Вы выбрали гит, потому что он «на слуху» или «более популярен». А популярность гиту обеспечил авторитет автора и гитхаб. Так что «начал только в прошлом году» не является аргументом.

Но что рандомное или убогое средство

Если сравнивать гит с другими по принципу «давать программисту как можно больше, а мешать как можно меньше», то гит выглядит как любительская поделка. Но ко всему можно привыкнуть. Любой инструмент можно освоить и не стрелять себе в ногу. Вот и гит там же. И то что альтернативы проще (в освоении, а не в фичах), удобнее и безопаснее — роли уже не играет, ведь «уже освоился и привык, зачем мне альтернатива»
я об этом и говорю. Гит может быть не лучшим решением, но оно достаточно хорошее что бы стать популярным. Собственно гит таким и стал не только потому что Линус или ГитХаб а потому что и сам по себе неплохое решение а комбинация всех факторов и обеспечила рост. Еще раз, лидеры рынка необязательно лучше в техническом плане. Так всегда и везде. Ну и то что «альтернативы проще». Это объективное мнение или субъективное?
Проще осваивать инструмент когда есть рядом коллеги или люди его использующие. То есть возвращаемся, есть классный инструмент с крутой документацией и есть гит который используют коллеги, знакомые и по которому +100500 туториалов. Кому то проще доку почитать, а кому то коллегу спросить
оно достаточно хорошее что бы стать популярным.
Вы действительно считаете, что тулз, для работы с которым нужно читать тонны документации, спрашивать коллег или на форумах и при всем при этом все равно иметь урезанные возможности (пресловутое «нам это не нужно») — это хороший тулз?

Это объективное мнение или субъективное
Первое конечно. Продуманный инструмент всегда проще в освоении, чем тот, где нужно тщательно читать много документации. Как по вашему, насколько интуитивен отсоединенный комит? Насколько интуитивно то, что ваши комиты считают мусором?

Концепт подхода гита к веткам отличается от привычного. Имеет право на жизнь, почему ж нет. Но в остальном косяки вызывают недоумение.

То что они вызывают дело второе. А доку или мануал какой бы крутой тула не была — читать надо, ну или коллегу спросить. Вот гит выиграл по этим пунктам в силу разных причин. Может и хуже, но выиграл.

Сколько доку не читай, а гит:
  1. не запишет за мной имя ветки (да да оно не нужно. я слышал много раз)
  2. не позволит мне откатить неудачный ребейс (если я не сделал бекап в виде git push)
  3. не отследит переименования файлов, и, как минимум, может не помочь, а как максимум — вообще намусорить левым кодом в мерж/ребейс
  4. не подскажет мне в рамках какой ветки был комит в истории файла
  5. обманывает меня в истории с --follow, потому что играет в угадайку
  6. система поиска в истории достаточно примитивна


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

На этом предлагаю закруглиться. Почему? Вместо ответа я лучше скопипастю цитату с того же хабра

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

Я записал в плюсы не необходимость а наличие информации и её распростанненость.
А это плюс. Согласен что пора заканчивать.

Примечательно, что самый популярный хук для гита — добавляющий имя ветки в сообщение коммита.

Не очень понимаю в чём проблема с откатом ребейза.
git reflog
git reset --hard

Или вы про что?
Согласен, однако, что это довольно неинтуитивно( и работает практически только сразу после ребейза )

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

Ну вот для меня есть две конкурирующие (а, скорее, конкурировашие) достаточно хорошие и универсальные технологии: git и mercurial(hg). Но у первой случился github, а у второй — нет. Сам лично выбрал hg, но потом перёшел на git, потому что все нтересующие меня проекты хостились на гитхабе, а использовать две аналогичные (по крайней мере для меня) СКВ или заморачиваться с плагинами какими-то, обеспечивающими какую-то совместимость, не понравилось.

вот я об этом выше и говорил, а мне начали доказывать что гит хуже)))
вот я об этом выше и говорил, а мне начали доказывать что гит хуже)))
Ну вы даете. Товарищ явно написал, что его переход на git был обоснован не личными качествами git, а потому что гитхаб.
Перемотайте в начала ветки и посмотрите с чего начался наш спор )))

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

Когда у тебя высокий грейд, ты можешь не писать код.

Чтобы не опозориться? :)
Один лишь заголовок выдаёт его с головой.

И даже самого важного: тега F# нет!

Наверно, админы автоматизировали его удаление.

На словах «Знаете почему я этого не знал? Да, потому что я никогда их не использовал» я стал что-то подозревать. Вернулся к началу — посмотреть автора — всё верно!

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


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

>зачем эта статья здесь?
За деньги же, очевидно? Это же корпоративный блог, а не авторский.
Спасибо за статью!
Вижу две причины, по которой люди стремятся развиваться — это деньги и признание. Как только человек получает и то, и другое, то стимул идти вперёд уже сложнее и сложнее получить. Я восхищаюсь людьми, которые делают сложные и крутые вещи, это всегда отличный пример, к чему надо стремиться. Но, к сожалению, их не так много, большинство, впрочем как и я, хочет просто хорошо жить и ни в чем не нуждаться. Благодаря таким текстам лично мне становится определённо ясно, что надо постоянно развиваться и делать что-то полезное, то, что можно применить в жизни.
Будем творить!
Вижу две причины, по которой люди стремятся развиваться — это деньги и признание. Как только человек получает и то, и другое, то стимул идти вперёд уже сложнее и сложнее получить.

Есть люди, которые не могут не делать что-то — им просто интересно копаться и узнавать новое, а вдобавок это еще приятные побочные эффекты имеет.

Это как желание сходить в туалет — такие люди просто не могут не идти против своего желания.

А еще есть 2 причины — это страх потерять эти деньги и призвание
> Поймите правильно, о чем вообще может стать 22-х летний пацан?
> Он мечтает стать крутым дядькой.

Крутой дядька в это время мечтает с точностью до наоборот, да.
Да, но крутой дядька уже был 22-летним пацаном, а 22-летний пацан может и не станет крутым дядькой.
UFO just landed and posted this here
Как-то всё-это подозрительно. Если у синьёра не хватает компетенции, то это видно по его пул-реквестам и предложениям на митингах.
Обычно нормальные сеньёры выкупают дутых синьёров довольно быстро. Особенно если был опыт работы с синьёрами-индусами.
Кто сказал, что на работе автора окружают нормальные сеньёры?
Его же прособеседовал кто-то, правильно?

Автор привел интересную аналогию с билетами на экзамене — выучил один, но побывал на 10 экзаменах и прошел.
Мне кажется, что вполне реально на Н-ое собеседование встретить человека, который абсолютно не разбирается в вопросе, и просто да-кает, и принимает соискателя.
Собес пройти — можно, залечить про то, какой ты синьёр тоже реально.
А вот быстро въехать в предметку и кучу кода — это уже сложнее, а уж делать там потом какие-то рациональные предложения совсем не просто.
В общем, через месяца 3 уже все поймут, кого наняли.

Ну… Многие прогеры так говорят, презрительно смотря в сторону спецов по переходу на +$500. Но, по факту, что-то очень уж редко не закрывают прогерам ИС. Вылететь по некомпетентности это тоже лотерея, причём шанс остаться сильно выше 50%

UFO just landed and posted this here
В общем, через месяца 3 уже все поймут, кого наняли.

Все проще и банальней.

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

И, внезапно может оказаться, что главная задача такого тим-лида — не писать божественный код, а объединять программистов и владельцев бизнеса. Быть промежуточным слоем, адаптером, который абстрактные и оторванные от реальности хотелки «бизнеса» приводит во что-то похожее на ТЗ для программистов.

В моей компании именно так. Тим-лид не является для меня образцом для подражания в техническом плане, но он выполняет свою роль, и если его не станет (и мне предложат занять его место) — я сразу уволюсь, потому что ну нахрен общаться с этими далекими от разработки людьми с деньгами. Проходили, нервы дороже.
Однажды Сисадмин пожаловался Учителю:

– Наш Директор совершенно не разбирается в ИТ. Я не могу ему объяснить. И его указания всегда такие нелепые.

Инь Фу Во ответил:

– Это нормальный порядок вещей. Его забота – люди и деньги. Твоя забота – техника и программы. Вы разговариваете на разных языках.

Сисадмин согласился и спросил:

– Как нам изучить язык друг друга?

– Это почти невозможно, – сказал Учитель. – Для этого Директору пришлось бы несколько лет проработать сисадмином, но он не пожелает. Для этого тебе пришлось бы несколько лет проработать руководителем, но тебя не допустят.

– Как же понять друг друга тем, кто говорит на разных языках? – спросил Сисадмин.

Инь Фу Во ответил:

– Специально для этих целей создан промежуточный язык, доступный обоим. Имя ему – «ГОСТ-17799».

– Как просто! – воскликнул Сисадмин и ушёл просветлённый.
… который не знают ни руководитель ни сисадмин
Зависит от «моневрености» и команды. Можно прийти как миссия, фиксить, что то простое, до чего ни у кого руки не дошли, заниматься само рекламой.
Т.е. ты берешь простое и заметное, а следы своей жизнедеятельности и легаси оставляешь другим, при это ходишь и сокрушаешся как можно было так запустить проект. Все ты любимчик, ты сделал кнопку которую отдел разработки вафлил полгода и главбух Марииванна тебя уже обожает, а что после тебя три мидла неделю убирать должны, так у кого до этого рефакторинга когда руки доходили?
Пять лет, дальше, я сделал все что мог и в другую не ИТ компанию с повышением.
К это моменту он уже находит другую работу. Он же прям так и написал))

В компании, где я работаю, один фронтенд архитектор и непосредственно, один из моих начальников, имеет познания ниже чем у большинства средних джунов и с ним ничего не сделаешь, хотя все вокруг осознают его 'полезность', но у него хорошая крыша. Что он такой, я понял после 15 минут расспросов по тому, как мы планируем ядро проекта делать, что настраивать и тп.). Единственное, что можно с такими сделать, это минимизировать контакты с ними. Что у меня пока что, вроде выходит

Видно, это правда. Но разве у вас никогда не было ситуации, когда вы явно видите, что синьёр дутый, но решения о найме принимает ПМ, которому значительно важнее просто продать разработчика забугорному заказчику? А забугорному заказчику плевать, насколько хорош конкретный чувак, если в целом команда фигачит нормальный продукт. А тимлид уволить дутого синьёра не может, потому что ПМ уже обеспечил финансовый поток за условных 3 синьёров, 2 мидлов и 3 джунов на команду, и ему не нравится идея терять поток бабла за уже проданного синьёра.

В итоге все всё понимают, но ничего не меняется.
Забавно, что видел подобное, но в продуктовом бизнесе. Только вместо
ПМ уже обеспечил финансовый поток за условных 3 синьёров, 2 мидлов и 3 джунов на команду, и ему не нравится идея терять поток бабла за уже проданного синьёра

HRы говорили, что увольнения портят HR бренд
Так всё же, что не так с конструктором по умолчанию у структур?
Его нельзя удалить или переопределить, значит структуру всегда есть шанс создать некорректным образом. А дальше уже дело за законом Мерфи.
С одной стороны это так, но я всегда воспринимал структуру как value type — грубо говоря, что-то подобное Int32 или Bool, соответственно, дефолтный конструктор создает именно что default value — всё семантично и предсказуемо. Но вообще, конечно, вопрос я задал шутки ради, не думаю, что стоит в этом треде рассуждать о структурах в дотнете)
Это как классы, но хранятся на стеке, и работают не по ссылке, а по значению.

Вы походу и сейчас не знаете о работе структур :) Структуры не обязательно хранятся на стеке. Простой пример: куда запихнутся миллион инстансов структур? Никакого стека не хватит. К тому же структуры можно передать и по ссылке с помощью модификаторов ref и out, об этом тоже не стоит забывать. А еще структуры весят меньше, потому что не нужно хранить индекс синхронизации, который есть у объектов (из-за этого, кстати, нельзя делать lock на структурах).

Распакованная структура на стеке, причем тут миллион инстансов? Я что то пропустил?
Еще при передаче по ссылке структура не упаковывается.

Я к тому, что "хранятся на стеке" — это верно в определенных условиях, но не всегда.

Ну я понял что про это, читать умею, вот и ответил на вопрос про миллион инстансов. Структура в куче может оказаться только при вызове инструкции упаковки box. Это если на пальцах объяснять, то когда приводишь к ссылочному типу.
Эм, вообще если создадите очень крупную структуру ( тысячей полей типа long например) то она тоже окажется в куче и без всякой упаковки.
Каким образом создадите? Покажите код и код на IL.
И еще накину про упаковку. Вот есть byte[]. byte это структура. Где по вашему будут хранится цифры которые будут добавляться в этот список на стеке или на куче? Будут ли они при этом box?
Массивы ссылочный тип.
Структура в куче может оказаться только при вызове инструкции упаковки box


Это не так.

public class Foo
{
	public Guid Bar;
}


Или вы полагаете, что при создании объекта типа Foo его поле Bar будет упаковано, либо храниться на стеке?
Так в вашем случае структура изначально часть ссылочного типа. Ну лежит она в куче, с этим никто и не спорит. Автор коммента утверждает что есть много объявленных структур на стеке и они как то могут оказаться потом в куче, ну я так понял.

Не "как-то", а именно как написано в комментарии выше. Или через массив.

Обертка класс и массив уже в куче, причем тут это?
Структура, объявленная внутри ссылочного типа будет лежать в куче.

public class Test { 
public MyStruct ValueType {get;set;} = new MyStruct();
}
...
var t = new Test();
...


создаем экземпляр класса, смотрим в кучу и видим, что значение спокойно себе лежит прямо в ней.
Я ответил выше на подобное, контекст коммента автора: много структур на стеке и как то они потом окажутся в куче. Про обертку из ссылочного типа там что то есть?
Я просто оставлю это здесь:
docs.microsoft.com/ru-ru/archive/blogs/ericlippert/the-truth-about-value-types

Если коротко — вся эта дискуссия — треш и содомия.
То, что система типов имеет какое-либо отношение к стратегии выделения памяти — ошибочное утверждение.
То, что система типов имеет какое-либо отношение к стратегии выделения памяти — ошибочное утверждение.

Да, так написано по ссылке. И там же написано опровержение этого утверждения:


the storage locations of instances of reference types are always treated as though they are long-lived, even if they are provably short-lived. Therefore they always go on the heap.
Угу, но это только для
Now we come to implementation details. In the Microsoft implementation of C# on the CLR:

Так что надо определиться с предметом обсуждения — мы обсуждаем язык, мы обсуждаем спецификацию системы исполнения, или конкретную систему исполнения кода на этом языке

Еще накину: если привести структуру к обджекту, то можно сделать лок на ней.
Который на ревью пройдёт только у тимлида, подобному автору статьи. Ибо самый бесполезный лок в мире. :)

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


никто и никогда уже не будет "определять индустрию". лет 30 назад еще может быть, а сейчас время хайпа, и хорошо если не проплаченного хайпа.

Смотря что понимать под термином "определять индустрию". И сейчас можно определять, просто это будет не так заметно, как 30 лет назад, а работать, наоборот, надо будет больше. Впрочем, это касается и любой другой индустрии: попруйте сейчас в одиночку что-нибудь определить в математике или физике. В айти даже больше возможностей.

Хайп — тоже разновидность определения индустрии.

Мне первый пример, что в голову приходит Node.js, Даль вполне себе переопределил индутрию

Поэтому ты, братец, никогда не определишь индустрию. И правильно, не пытайся.

Эм, структуру можно эффективно использовать и пофиг на то что нельзя пререопределить конструктор по умолчанию. Guid и DateTime пример такого использования. Типичные такие ValueObject с заранее известным состоянием по умолчанию.
Ну, так жизнь устроена. Директор автосервиса тоже не умеет перебирать двигатели так же хорошо, как Лёха-дизелист и рихтовать кузов лучше чем Серёга-жестянщик.

Но на месте директора сервиса зачастую – вчерашний рихтовальщик, который в какой-то момент принял решение "замутить свою СТО-шку".
Самозванец-лотерейщик на месте директора? Ну, только если очень редкий случайный прецедент. И то сложно представить, какого фуагра он решил применить свой талант Остапа Бендера на таком уровне.

Слышали выражение «эффективный менеджер»? Это выпускники «менеджерских курсов» без знаний предметной области. Они отлично ездят по ушам на собесах, а потом машут шашкой на должности. А потом меняют работу.
А затем приходит вопрос, что круче: мечта стать гуру технологий или мечта стать хорошим менеджером?

Ок.
Рассказал.
Рубаху на себе рванул.
Вскрыл и просигналил.
Ты прав, мы это видим вокруг.
Спасибо.


А ещё нам иногда на Хабре рассказывали сами люди с непростыми диагнозами, как они в крутые менеджеры выходили и добивались ролей с властью над многими людьми.
Всегда чиал с интересом к фактуре и уважением к авторам.


Теперь — просьба нижайшая — придумайте что и как с этим (весьма, кстати, распространенным) явлением делать?


Нам вскм, не обладающим. Иногда подчинённым, иногда — коллегам из соседнего отдела.

Огласите цифру. Какую сумму "кусок говна", по выражению автора, считает большими деньгами?

UFO just landed and posted this here
Я знал, что сорвал шальной куш, и одновременно был горд, что наконец стал синьором.

→2 years later←
перегорел… у меня синдром самозванца...


Executive producer
Stephen Hillenburg

выглядит как типичная матрица интерес/компетентность — habr.com/ru/company/stratoplan/blog/201242

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

Возможно потому что на самом деле денег не куча.

UFO just landed and posted this here
Потому прыгать между компаниями с каждым годом сложнее, а после 40-45 ты должен быть очень крут или стремительно начинаешь терять доход.
Я знал одного начинающего программиста, который эмигрировал в США по какой-то еврейской программе. Там он устроился программистом на большие деньги и нанимал программировать свои задачи по работе удаленщиков из России, Украины и Беларуси. На разницу в оплате жил и ни в чем себе не отказывал.
Надо устраиваться на позицию по рангу

На позицию по рангу пусть устраиваются те, кого мама-папа кормят, а квартира от бабки внутри Садового кольца в наследство осталась.

Мне же приходится ПОКУШОЦ покупать, и квартиру мне тоже никто не подарит.

Тут и так морали едва хватает только на то, чтобы в «Единую Россию» не вступать, а мне рассказывают, что надо поголодать ради высших ценностей. Спасибо, не хочу. Вы уж там сами как-нибудь «определяйте индустрию», без меня.
Но если бы я мог отмотать время назад, я бы все сделал по другому. Стать действительно хорошим старшим специалистом можно не играя в 23-х летнего синьора. Надо устраиваться на позицию по рангу, причем желательно во всякие яндексы, где твой трехлетний джуновский опыт действительно сделает тебя мидлом, а трехлетний мидловый — начинающим синьором. Да, лет пять-шесть ты будешь получать меньше, чем я. Но. Даже низкая джуновская зп в айти — это хорошие деньги. У тебя все равно будет синдром самозванца, но в отличие от меня, самозванцем ты не будешь. А самое главное — я то уперся в свой потолок, и никогда уже не стану разработчиком, который определяет индустрию. А вот ты сможешь. Ты охренеть как сможешь.

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

Соглашусь что стартапы тоже хороши, как место получения нового опыта, но там можно скорее получить широту технической эрудиции, а не глубину, ибо все мы знаем про средний срок жизни «стартапа», и сколько из них доживает до сколь-либо большой аудитории, когда можно похвастаться успехами проекта.
Ну, и вы скорее всего знаете, какого уровня качества код подавляющего большинства стартапов (то что код далеко не идеальный — это не то что плохо, просто есть необходимость писать код быстро и «делать фичи», а не оптимизацию/рефакторинг/красивую архитектуру).
К сожалению, то что я видел на крупных проектах в больших фирмах тоже не выглядело как хороший код (я уж не говорю про какую-то близость к идеалу). Работа в режиме постоянного аврала, с переработками в выходные, большое количество джунов на проекте (хуже всего те, которые уже немного «прошаренные», человек, например, изучил дженерики, и твердо решил, что теперь ни строчки кода без них не напишет). Проблемы в организации разработки. Например, на том проекте, на котором я работал, ради ускорения, практически отменили кодревью — то что получилось на выходе, можете, я думаю, себе представить. И это код, написанный с нуля, если говорить о легаси — там, зачастую, вообще «адЪ и ИзраильЪ».

Разумеется, так не везде, у меня опыт работы в крупных фирмах сравнительно небольшой, и возможно, мне просто так «повезло». Недавно в стартапе работал — там с кодом все было отлично, хоть и писался он в сжатые строки — был очень высокий уровень разработчиков, по факту там были только синьоры (реальные, а не по регалиям). Проект не взлетел не из-за плохого кода, а из-за проблем с маркетингом — не сумели продать идею.

Иногда на собеседовании сложно понять проект и команду. На словах всё, что вы описали есть и даже больше, а по факту ожидания не оправдываются. А оффер они сделали на 500$ больше, а когда понял, что ловить на проекте в плане развития особо нечего, уходить на меньшую сумму уже как-то не хочется.

и такое бывает, да.
у меня друг работает в одной известной компании связанной с добычей богатств из природных недр на позиции тимлида, хороший программист с хорошими софтовыми скиллами, уважаем в группе, но работает по графику с 9:00 и до «первой звезды», но при этом третий год делает проект, которым _пользуется_ 10 топов внутри компании, при этом на нем задействовано около 15-ти разработчиков, и то что на предыдущем месте он бы сделал за два месяца — тут растягивается на полтора года согласований.
Плюется при личных беседах на всё это, но — машина-кредит, квартира-ипотека, маленький ребенок — и работает за зарплату на ~30-40% больше чем можно найти в Москве.
UFO just landed and posted this here
«до первой звезды» всё-таки не каждый день, а в моменты какой-нибудь «внезапно срочной сдачи этапа работы послезавтра». Негативные факторы не столько в переработках, сколько в не очень осязаемом смысле самой работы и корпоративных процессах, где довольно токсичное взаимодействие между разными департаментами, как во всей мне известной нефтянке.
UFO just landed and posted this here
Прочел статью.
Прочел комменты.
Посмотрел автору в профиль. В профиле по прежнему написано «Король разработки». Странно, после такой статьи я бы поменял подпись на бастарда разработки, или там Лжедмитрия…

Так король же ничего сам не делает обычно, делегирует )

… И тут я обрел просветление…
джуниор на решетке открыл для себя struct
Древнее знание сделало его Избранным
У структур Шарпа есть конструктор который лишь задает дефолтные значения переменных, потому что если был бы нормальный конструктор и вы создали бы массив структур, начался бы вызов конструкторов каждого элемента — это могло бы занять очень много времени. В этом как раз один из смыслов использования структур, кроме расположения в стеке.
Это совсем другая штука, переназначить такой конструктор нельзя, это везде написано сразу для начинающих. Однако, я в свое время экспериментировал и в результате максимум что можно сделать:
public struct ИмяСтруктуры{
   public ИмяСтруктуры(bool костыль=true){}
}

и по идее его бы можно вызвать без параметров, но он естественно не переназначает конструктор без параметров, а чтоб его вызвать надо обязательно указывать параметр
ИмяСтруктуры МояСтруктура=new ИмяСтруктуры(true);

Я уже стал поздабывать эту тему, простите если что перепутал. Просто это было забавно )
Мораль сей басни такова:
Не идите по моему пути, а то разведется слишком много «самозванцев» и некому будет делегировать задачи по разработке и вообще практически по всему.

По хорошему, мне бы сгореть от стыда, и уйти с головой в обучение — но уже не получится. Я взрослый мужик, у меня есть дела и поважнее, чем корпеть над учебниками. И жизнь не требует этого. Если ты просто хочешь хорошенько отдыхать, и рубить бабло — нужно делать все точно как я.
Я, кстати, так и не понял почему нельзя получить оффер сеньора и продолжить учиться?
Некоторые вещи нужно планировать под рост так как отсутствие роста это очень плохо. За год -два вполне можно стать тем самым сеньором.
А я вот на 100% не согласен с автором. Надо всегда стараться прыгнуть повыше. Когда ты прошел собес на позицию, до которой нужно дотягиваться, ты научишься гораздо быстрее, и это будет в удовольствие. Если ты прошел собес без запинки, значит ты шагаешь назад и тебе наскучит через месяц. Конечно, бывают исключения, но я с большей охотой возьму чуть менее опытного человека, у которого глаза горят, чем уставшего от жизни академика.
«Прыгнуть повыше» совершенно не обязательно означает «больше денех» или «сияющее название должности».

Когда ты прошел собес на позицию, до которой нужно дотягиваться

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

Автор в целом прав, но все-таки в истории разработки есть примеры сильных последствий наподобие Therac-25. В наше время такие громкие провалы, конечно, редкость, но и гораздо более безобидные баги все равно могут приводить к неприятным последствиям. Хорошо, если такой разработчик не плодит баги в медицине, но вообще, если перебрать все отрасли, тяжело представить такую сферу, где описанный в статье персонаж не будет изредка приносить мелкий материальный или какой-то ещё ущерб. Разве что в индустрии игр (хотя многие и с этим не согласятся). Статья полезная в том плане, что вдохновляет новичка не быть самозванцем, несмотря на синдром оного.
Реклама Яндекса как HR бренда?
Да вы будете зарабатывать меньше, чем в среднем по рынку, но вы получите огромный опыт))
Ну да, ну да, по факту единственное чему отлично учит Яндекс это как представить результаты своей работы, как что то великое и грандиозное, без этого о карьере можно забыть.
Честно говоря, не совсем понимаю, зачем автор пишет такие статьи. Они, конечно, очень душевные и откровенные, но прочитав такую статью, я бы автора в свою команду бы не нанял. Самовредительство какое-то
Эта статья не то что бы перевернула мой взляд на мир, но заставила основательно пересмотреть свой подход. Я как раз планировал (и уверенно двигался) по первому пути, когда с минимумом знаний ищешь способ хакнуть успешно пройти собеседование, чтобы потом уже на работе наверстать упущенное :)
PS: Хотя хабр я читаю уже несколько лет, из-за этой публикации я зарегился, специально чтобы написать этот комментарий и выразить автору свою благодарность.

UFO just landed and posted this here
Ты прошел собес, и на новой работе никто не пытается доказать, что тебя взяли зря.


Автор мал и жизни не видал. Если место, на которое попал — синекура, то там найдется человек 5 минимум, желающих доказать что взяли такого-то зря и что они более достойны занять эту должность. Впрочем, такое и без синукуры получается, когда деньги в конторе на исходе, а руководству и другим кандидатам на выход надо найти легитимный повод кого-то другого выставить на мороз.
Фил, вас не беспокоит мысль, что вы рубите сук на котором сидите? Даже если вас не знают HR, думаю, хоть кто-то из разработчиков в любой конторе вас наверняка узнает и иллюзий относительно вашей компитентности в коллективе уже не будет.
UFO just landed and posted this here
Карма растет от того, что его откровения импонируют людям. Но будет ли это также работать при найме? Например, что будут думать мидлы, зная что с ними работает синьор, который получает больше их, а на самом деле такой же мидл, к тому же еще и ленивый? Да и начальству комфортнее пребывать в иллюзии, что они никому не переплачивают.

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

Sign up to leave a comment.