Последствия оставления пасхального яйца в коде?

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

Если обнаружат, каковы вероятные последствия, пока я работаю или после?

 

Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .

Ответы (10)

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

Я видел случаи, когда разработчиков увольняли за добавление несанкционированного пасхального яйца. Проблема в том, что почти по определению пасхальным яйцом был код, который не прошел рецензирование и делал что-то, что не было должным образом задокументировано. Если разработчик может проникнуть в код, который показывает его собственное изображение без какой-либо проверки, опасения заключались в том, что он мог так же легко вставить черный ход, который позволил бы им скомпрометировать систему в будущем. Компания отнеслась к этому так же, как к обнаружению любого неавторизованного кода в производственной среде (что, вероятно, сделало проверку ссылок для этих разработчиков довольно проблематичной в будущем).

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

Однако, учитывая огромные потенциальные недостатки и минимальные преимущества, рисковать не имеет смысла. Либо получите официальное одобрение, чтобы добавить его (что, по-видимому, будет означать, по крайней мере, выбор более всеобъемлющего изображения), либо не включайте его.

Отличная проработка тех моментов, о которых я думал. +1
Развернутый и аргументированный ответ. Я полностью согласен с вашей оценкой. Пасхальные яйца — это что-то вроде реликвии в современной разработке программного обеспечения.
@Lilienthal: Например, TDD делает почти невозможным включить их по прихоти, потому что к тому времени, когда вы закончите писать тест, чтобы убедиться, что он есть, вам уже надоела эта идея ;-)
А поскольку код пасхального яйца не проверяется/не тестируется должным образом, он может содержать уязвимости, что увеличивает поверхность атаки приложения.
Следует отметить, что пасхалки в современных играх наверняка пересматриваются, тестируются и одобряются.
Я бы добавил, что самая большая причина, по которой пасхальные яйца в наши дни не одобряются, заключается в том, что все программное обеспечение настолько взаимосвязано с бурным развитием облачных вычислений, что любой неавторизованный или непроверенный код может создать серьезную угрозу безопасности. Даже если нет угрозы безопасности, какая-то процедура где-то может случайно подключиться к этому коду, а затем нарушить обработку.
@SteveJessop Однако недостатком является то, что вы должны использовать TDD.
Не говоря уже о том, что я работал с командами QA, которые почти наверняка нажали бы кнопку 25 раз, чтобы посмотреть, не сломается ли что-нибудь. И они сказали бы мне исправить это через дефект, который будет зарегистрирован против меня.
Даже в большинстве игровых студий несанкционированное пасхальное яйцо может быть запущено (и если пасхальное яйцо попало в новости неблагоприятным образом, компания с радостью бросит вас под автобус по имени).
В этой ветке разговора нет проблем с написанием кода пасхального яйца — просто не отправляйте его в систему управления версиями.
Независимо от того, является ли он технически огнеопасным, это говорит вашей компании, что этот парень невероятно непрофессионален и несет огромную ответственность . Весть об этом могла дойти до потенциальных будущих сотрудников. Представьте, что через пять лет вы проходите собеседование на потрясающую работу, и интервьюер говорит: «Итак, Боб из SynergyLeverage рассказал мне о пасхальном яйце, которое вы сделали — хотите поделиться со мной своими мыслями по этому поводу?». Ты захочешь умереть.
Я думаю, что отличным примером того, насколько сложным может быть это, является import thisPython, который печатает The Zen of Python, короткую поэму о мышлении Python. Он был добавлен в код на 11-м часу, отключив хуки фиксации, которые защищают код от таких вещей, зафиксировав его, а затем снова включив их. Единственная причина, по которой им это сошло с рук: это сделал Гвидо фон Россум, создатель Python. Почти по определению это можно было бы квалифицировать как «получение одобрения руководства».
Я, кажется, помню, что пасхальное яйцо было найдено в популярной видеоигре (хотел бы я вспомнить, в какой) примерно через год после ее выпуска с фотографией голой задней части разработчика. ESRB фактически изменил рейтинг игры задним числом, что, несомненно, стоило компании больших денег в виде штрафов и потерянных продаж.
@WoodrowBarlow думаю, вы имеете в виду это: polygon.com/2015/4/14/8382089/bungie-butt-microsoft-halo
@ХайкоКорюн, ага! прекрасный пример закопанного пасхального яйца, на которое команда была уверена, что никто не наткнется случайно, что в конечном итоге вызвало серьезные проблемы.

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

Пасхальные яйца:

  • не должно смущать пользователя. Ваш делает.
  • не должны причинять вред пользователю.
  • не должны сбивать пользователя с толку относительно того, нанесен ли ему вред. Я не могу не подчеркнуть этого достаточно, и половина ваших пользователей подумает, что это вирус.
  • Должен соответствовать голосу компании. У вас почти наверняка нет.
  • Должна быть одобрена заинтересованными сторонами. У вас нет. Службе поддержки потребуется некоторое время, чтобы отследить это до вас, и они будут раздражены, когда они это сделают.
  • Должен продвигать корпоративную культуру каким-то значимым образом. «Не бойтесь показаться причудливым, но вы можете доверить нам свои данные» — это тренд первоапрельских шуток прямо сейчас. Ваш не подходит под эту категорию.
  • Не должен быть скрытным. Точно так же ни одна часть разработки не должна быть секретной. Это не исключение только потому, что вы называете это пасхальным яйцом.
  • Должен следовать обычному процессу проверки и состоять из качественного кода. У вас нет.
  • Следует следовать обычной проверке безопасности всех вещей. Злоумышленник 1) будет искать эти вещи и 2) сразу поймет, что это самый плохо проверенный фрагмент кода на всей веб-странице? Быть «пасхальным яйцом» — это не форма безопасности.

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

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

Мне действительно это нравится. Я думаю, что если ОП пойдет к боссу и скажет: «Знаете, я сделал ошибку. Я думал, что это будет забавно, но я больше так не думаю. Я хотел бы удалить этот код». ОП сохранит лицо, устранит любое потенциальное смущение в будущем и может даже получить немного уважения / доверия.
«половина ваших пользователей подумает, что это вирус». Это самая большая проблема. Ваше пасхальное яйцо — это именно то, как вирусы выглядят в фильмах! ( Один из памятных примеров — оригинальный « Парк Юрского периода» ).
«Пасхальные яйца — это инициатива компании, а не предательская инициатива». Кроме того, что в SimCopter . (Отказ от ответственности: да, парень потерял работу, но пасхалка осталась)
Другими словами, хорошие пасхальные яйца — это командная работа.
@fredsbend Хотелось бы думать, что я сказал намного больше: P

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

Менталитет во многом тот же. Вы рисуете граффити на объекте, которым не владеете, без разрешения, и считаете, что вас не поймают, так что с вами все в порядке, верно?

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

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

«Цифровое граффити». Люблю это выражение.
Мне нравится аналогия с граффити в отношении порчи чужой собственности. К сожалению, аналогия рушится, если учесть, что граффити иногда игнорируется полицией (несмотря на то, что это уголовное преступление) , потому что преступник известен . Может быть, ОП сойдет с рук, если они станут известными первыми.
Не уверен, что смысл аналогии с граффити ... у малышей на самом деле нет «менталитета», и даже тогда «мои родители сочли бы это забавным, или я ребенок, поэтому они позволили мне избежать неприятностей (а-ля программисты причудливый и делать причудливые вещи)» были бы довольно реалистичными менталитетами. На самом деле аналогия просто указывает на то, что разрешение не имеет большого значения, когда вы просто остаетесь самим собой.
@djechlin Возможно, мне следует использовать фразу «Мыслительный процесс», а не менталитет (который довольно хорошо определен, но, возможно, у вас есть коннотация, не соответствующая словарю). Несмотря на это, аналогия предполагает, что любому, кто думает, что его граффити можно использовать на чужом продукте, не хватает эмпатии и ответственности — двум вещам, которым малыши не учатся, пока они не станут намного старше. По сути, это эгоистичный, детский поступок, которому нет места в профессии. Если вы получили разрешение, продолжайте, но если вы делаете это тайно, то вы ничем не лучше вандала, какие бы оправдания вы ни приводили.

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

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

Но вы спросили о последствиях, вот что я думаю.

  • В частности, ваши руководители могут усомниться в вашем профессионализме, поскольку вы явно (как упоминалось в комментариях Стива Джессопа, доказательство теперь находится в системе управления исходным кодом) не работали, когда вам платили за работу, когда вы писали пасхальное яйцо. Это повлияет на их впечатление о вас, что может привести к вашей будущей работе в рекомендациях.
  • Ваши коллеги также могут негативно относиться к пасхальному яйцу, особенно если некоторые проекты задерживаются в сроках поставки или ресурсах, и они могли бы использовать несколько часов вашей помощи для решения проекта.

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

Привет @Marion, спасибо за ваш ответ. Я не боялся быть обнаруженным, но сказал об этом брату, и он спросил, могут ли быть последствия. Так что это заставило меня задуматься.
@zundi, я более консервативен, чем некоторые из моих сверстников, поэтому в моем ответе перечислены реакции, которые могут не относиться к более непринужденному рабочему месту или компании. Спасибо за ответ; Я надеюсь, что вы найдете ответ, который вы ищете!
«Вы предоставили им ясный способ отследить пасхальное яйцо до его источника, оставив свою фотографию» — так что вы говорите, изменить ее на фотографию того, кто сидит рядом с вами? А если серьезно, то авторство устанавливается системой контроля версий.
Мне не нравится идея, что делать что-то творческое на работе — это «бездельничать» и стоить бизнесу денег. Разработчики программного обеспечения — это не машины для создания кода с определенной производительностью в минуту. Расслабление и «игры» — важные части моего рабочего дня, которые поддерживают мою мотивацию, творческий подход и гибкость мышления. - Если ваш менеджер был доволен вашим выступлением в то время, вы использовали его правильно. - Внедрение этого игрового кода в производство, конечно, проблема.
Иногда в карьере приходится предпринимать действия, в которых не уверен.
@SteveJessop: Что касается контроля версий, это на самом деле серьезная дополнительная ответственность, которую компания может понести из-за пасхальных яиц. Помещая контент в репозиторий управления исходным кодом, который может быть получен из чего-либо, защищенного авторскими правами третьих лиц, без соответствующей разрешающей лицензии, статус авторского права всей истории исходного кода искажается. Это может повлиять на лицензирование/продажу проекта третьим сторонам или будущие попытки сделать его открытым. Удаление пометки — дорогостоящая операция редактирования истории, которая уничтожает все внешние ссылки на ревизии путем изменения хэшей.
У меня нет проблем с бездельем во время работы или с пасхальными яйцами в целом. Людям нужен отдых, иначе они выгорят. Но, как красноречиво выразился мой друг, теперь вы оставили доказательство того, что не работали.

Пасхальные яйца были крутыми 25 лет назад. Они уже не крутые. Не делай этого.

Установка несанкционированной пасхалки открывает перед вами всевозможные неприятные вопросы:

  • почему вы занимались личными вещами на работе? Вам заплатили за время, которое вы потратили на это пасхальное яйцо, не так ли?
  • почему вы нарушили правила кодирования и политику качества, внедрив в продукт непроверенный и непроверенный код? Если этот код содержит ошибки, как вы планируете доказать, что не сделали этого намеренно?
  • если ваше пасхальное яйцо выглядит как черный ход для эксперта по безопасности, как вы докажете, что это не так? Готовы ли вы платить за независимую оценку безопасности?

IANAL, но многие аспекты ваших действий могут легко стать поводом для увольнения или того хуже.

"10 лет назад"? Скорее 25 лет. А теперь убирайтесь с моей лужайки, молодые панки.
@CarlWitthoft Готово, дедушка. Могу я пойти поиграть на улице?
Пасхальные яйца были в программном обеспечении намного дольше, чем 25 лет назад. 25 лет назад были 90-е, а лучшие пасхалки появились в 70-х и 80-х.
@ Дэн, но в 90-х они все еще были крутыми. В то время ОП мог легко поместить свою фотографию в программный продукт и сойти с рук.
Да ребята, они уже совсем не крутые! Ламео!
Забавный факт: Ада Лавлейс запрограммировала первое пасхальное яйцо. Забавный факт: фактоид — это вымышленный факт, который считается правдой, потому что он появляется в печати.
@DmitryGrigoryev Напоминает мне пасхальное яйцо Windows 3.1 : список всех людей в команде.

Если вы работаете в Microsoft, вас уволят, как только это обнаружится.

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

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

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

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

В лучшем случае, вы посмеетесь. В худшем случае вы посмеетесь, пока HR не отдаст вам документы. Это ваше решение, насколько вы цените смех.

Последствия вашего ухода: В худшем случае ваша старая компания подаст на вас в суд. Если это произойдет в США, вас могут засудить по любой причине. И лучший возможный результат судебного иска - это то, что вы оплачиваете свои судебные издержки, которые не будут дешевыми. Опять же, это ваше решение, насколько вы цените смех.

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

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

«на вас могут подать в суд по любой причине» — так что либо никогда не предпринимайте никаких действий (потому что вас могут засудить за это), либо полностью игнорируйте проблему (потому что вас все равно могут засудить за то, что вы едите завтрак, пасхальное яйцо). Анализ с точки зрения риска предъявления иска полезен только в том случае, если вы действительно оцениваете риск судебного преследования.
Извините, но судебный иск не обязательно означает, что вам придется оплачивать судебные издержки. Если судья сочтет иск работодателя легкомысленным или пустяковым, он может заставить его оплатить ваши расходы.
«Если это произойдет в США, на вас могут подать в суд по любой причине» — вопреки распространенному мнению, во многих европейских странах, и я считаю, почти во всем мире, вы можете подать в суд на кого угодно за что угодно — будь то получить увольнение судьей - это другое дело, но "свобода подачи иска" не является специфичной для США.
Ничто в этом ответе не зависит от темы. Вопрос мог быть просто «помогите, я внес ошибку в программное обеспечение на работе».

Здесь будет три основных фактора:

  • Преобладающая культура вашего работодателя (они крутые и заводные или прямолинейные и серьезные?)
  • Вероятное отношение клиентов/воздействие - если этот код работает на атомной подводной лодке, заказчик, скорее всего, отнесется к этому весьма смутно. Если это приложение для пердежа, никто не будет возражать.
  • Природа пасхального яйца: может ли оно вызвать обиду, тревогу, расстроить, заставить неосторожного клиента или пользователя подумать о проблеме, остановить работу программного обеспечения и т. д.?

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

Вы также должны быть чертовски уверены , что это абсолютно никак не может повлиять на работу программного обеспечения — как гласит закон Пратчетта: «Шансы миллион к одному случаются в девяти случаях из десяти».

Мое личное мнение: не помещайте туда свое имя или фотографию своего глупого лица, такие вещи, вероятно, будут такими же неловкими через 5 лет, как и ваши детские фотографии, и попахивают тщеславием, а не весельем. Есть несколько хорошо задокументированных (и любимых) пасхальных яиц, которые распечатывают кредиты команды разработчиков и забавные маленькие сообщения, но просто засовывать туда себя кажется немного самовлюбленным.

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

Я бы рассмотрел возможность того, что кто-то, кто нажимает одну и ту же кнопку 25 раз, возможно, не имеет большого опыта ни со своим компьютером, ни с вашим программным обеспечением.

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

В любом случае, если это так, и ваша фотография появляется вместе с каким-то глупым мемом, это плохо для вас закончится!

Другой распространенный случай: у меня были случаи, когда что-то падало на мою клавиатуру, и срабатывало много событий. Если эта кнопка имеет фокус, пограничный случай может проявиться довольно легко. Я уверен, что другие люди видели функции типа «StickyKeys» или «Dictation Assistant», которые иногда блокируются при удержании нажатой или > 3n Shift случайно нажатых клавиш при быстром наборе текста или игре. Я действительно думаю, что пасхальные яйца могут быть хорошо сделаны, но они как анимация — у них должна быть цель. Вознаграждайте пользователя за то, что он ковыряется в эклектичных функциях, восхищайтесь, не удивляйте его типом сделки.

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

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

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

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

Эй, я попал в беду из-за внесения несанкционированных изменений в программное обеспечение, которые действительно улучшили его функциональность.

Да, я сам подкладывал пасхалки в софт. Я бы не стал делать это снова, не согласовав это с руководством.