Pull to refresh

Comments 1335

Согласен. Метросексуальный макияж на ядро линукса был последней каплей.
Даешь суровый олдскул!!!
UFO just landed and posted this here
UFO just landed and posted this here
Звёздочки выглядят как детский сад.
Где твои яйца?
Тем более что там совсем безобидное БЛЕЯТЬ!
Там даже через а было, чтобы не было путаницы с овечьими звуками.
Скорее чтобы имитировать дифтонг, которых в русском какбы нет.
«безобидное». Фу. Какой тогда смысл это писать?
Это ведь тоже детский сад
корова не моя… я ее в инторнетах нашел
Ох уж эти бунтари. Бунтуют, бунтуют… а потом пойдут доедать свои печеньки)

Переходи на тёмную сторону. У нас есть печеньки!


Печеньки


А добро вообще разное бывает
У нас есть печеньки!

Но жрать их запрещено.

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


В R&D отдел срочно требуются Middle Mad Scientist, имеющие опыт работы с магическими кристаллами и плазменным оружием, либо желающие его получить. Гибкий график, оформление по ТК. Молодой и дружный коллектив непризнанных гениев. Белоснежный халат и курсы по злобному смеху за счёт компании.

Я думаю, это достойно внимания авторов эпического фэнтези!
Уже. См. Рудазов, «Властелин».
-Герой,- кричали мне,- переходи на Тёмную сторону! У нас есть печеньки!
В ответ я доставал из рюкзачка бутерброд с колбасой и демонстративно поедал. Нашли чем приманивать! У Светлых со снабжением полный порядок. А тут какие-то печеньки… Cо временем я смеяться перестал. C нашей стороны всё было замечательно. Свой паёк я получал и мог на выпад Тёмных показать то рябчика, то ананас, другие деликатесы. Они предлагали печеньки. Cтранно. Нет, я сознавал, что у нас не каждый может себе позволить рябчиков с ананасами, но это только справедливо! Кто получает меньше, кто больше, но в целом все довольны, голодающих нет. И строй самый лучший, экономика процветает. А с Тёмной стороны мрак и беззаконие, и разруха, и коррупция, и военная диктатура… ужас творится! И всё-таки… у Тёмного всегда есть печеньки. Символический, но прожиточный минимум. Каждому, без исключения. Не хватает других вещей — лекарств, жилья, боеприпасов — но печеньки есть всегда. Для всех, без обмана. Это внушало уважение. И настал день, на обычный окрик «Эй, Светлый, не хочешь к нам? У нас есть печеньки!» я неожиданно для себя, но совершенно искренне ответил «хочу!» С той поры я на Тёмной стороне. Да, несладко. Да, у нас тут бывают проблемы. Зато у меня есть печеньки! Полные карманы! Светлая сволочь разбудит меня среди ночи и спросит: «Ну, и где..?» — я всегда готов их показать. Печеньки не кончатся никогда! Есть их категорически запрещено.

— Из комментариев к произведениям Давыдова Сергея
UFO just landed and posted this here
не печеньки, а запасная печень
Как знать, может быть, печеньки — это картриджи для кластерного протеза печени?
Т.е., ударение там на первую «е»? Пе́ченьки?
Переходи на тёмную сторону. У нас есть печеньки!


Брауни?
Попивая смузи у себя на работе)
UFO just landed and posted this here
На комментарий VIkrom не может быть дан ответ да или нет. Поэтому я пошутил с отсылкой к анекдоту на женскую логику. Разумеется, я уважаю женщин, но шутка основана на стереотипе.
И нет, я не блондинка. Я брюнет.
UFO just landed and posted this here
Геолог и профессия и субкультура. Курьер — профессия. Альпинист и профессия и субкультура. Продавец — профессия. Субкультура это не только панки и скинхэды, но и, например, учёные. Так понятнее моя мысль?
UFO just landed and posted this here
Применимо, разумеется:

…«Субкультура может отличаться от доминирующей культуры собственной системой ценностей, языком, манерой поведения, одеждой и другими аспектами[1][2]. Различают субкультуры, формирующиеся на национальной, демографической, профессиональной, географической и других основах»…

Вы путаете профессиональную деформацию и субкультуру.

Одно ведь другому не противоречит и вполне сочетается. Писать скрипт, который будет знакомым девушкам из контакт-листа на 8 марта автоматически поздравления рассылать, не брить свитер и не стирать бороду — это профессиональная деформация. Обмениваться мало кому «из внешнего мира» понятными шуточками из мира ИТ — это как раз профессиональная субкультура. Ездить на сисопки каюсь, уже давно никто не ездит на сисопки :( на хакатоны, активно общаться на сайтах вроде Хабра — это как раз штуки, которые присущи определённому профессиональному кругу, и в общем-то действительно составляют субкультуру.

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


Ездить на хакатоны, активно общаться на сайтах вроде Хабра

И что? С каких под посещение хакатонов и активность на Хабре стали частью профессии? Это сугубо опциональные вещи, весьма слабо влияющие на уровень вашего профессионализма.
Безусловно, среди программистов есть уйма представителей самых различных субкультур, но сама профессия — это ни разу не субкультура, поскольку вы без труда найдёте 2 программистов, у которых не будет ничего общего в плане систем ценностей, языка, манеры поведения и одежды.

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

Именно так. Я просто описал некоторые внешние проявления, которые являются следствием изменения восприятия. Обычный человек не будет писать скрипт, рассылающий поздравления. Не потому, что не умеет писать скрипты, а потому, что понимает, что автоматические поздравления получать на самом деле неприятно :) А вот программист наоборот, может подумать, что это же прикольно — сделать поздравляющего девушек бота. И сделает.

поскольку вы без труда найдёте 2 программистов

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

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

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

Ну так панки давно уже на несколько субкультур разделились.

Как геолог, назвал бы свою профессию не субкультурой, а образом жизни. это несколько другое, как мне кажется. Жена -ученый, морской биолог, однако, смею надеяться, мы относимся к одной «субкультуре» по своим взглядам на жизнь, художественным вкусам, и прочему. А так — да, оба бродяги.
Любой особый образ жизни неизбежно формирует свою субкультуру
любой носитель субкультуры склонен считать её образом жизни
У любого носителя субкультуры особенности образа жизни во многом будут определяться этой субкультурой
UFO just landed and posted this here
А в чем принципиальная разница? В геологи тоже идут типа по призванию. Внезапно — есть люди, которым не нравится сидеть в офисе и жить в городе.
UFO just landed and posted this here

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


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

UFO just landed and posted this here

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


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

UFO just landed and posted this here
Само название «планктон» — уже немного оскорбительное, вы не находите? А субкультура людей, которые работают в офисах — конечно есть. Просто у них могут быть очень разные должности и задачи… А субкультура одна, да.
Проблема в том, что вы опять стараетесь уравнять всех под одну гребенку. На хабр иногда приходят не только лишь одни стереотипные программисты, админы и прочие. Могу например сообщить вам, что в море романтики далеко не так много, как кажется с берега. Уже после третьего-четвертого контракта (а зачастую уже после практики и получения рабочего диплома) восторги и романтизм спадают, и гораздо больше волнует возраст и состояние судна, адекватный ли мастер, нет ли филипков или индусов, а к сожалению, есть все чаще, зарплата, овертаймы, из неочевидного — качество еды (вернее даже — качество ее приготовления) и прочие обыденные вещи, к которым примешиваются профессиональные вопросы. Рутина и немного расслабления на переходах, остальное — работа. Так что, простые романтики™ увы, уже не те.
А толку, если геолог \ нефтяник \ моряк получает меньше, чем офисный планктон сеньерского уровня? Получается, что условный геолог по сравнению с офисным планктоном дно, так еще и рисков больше. Получается, что офисный планктон победил.
UFO just landed and posted this here
Да всё нормально с самооценкой у нормальных программистов. Проблема у тех, кто примазывает программистов к планктону.
UFO just landed and posted this here
Примерно в том же, в чём разница между мелким клерком и инженером.
Не все программисты — инженеры.
UFO just landed and posted this here
Мне понравилось определение «офисного планктона» как людей, занимающихся интеллектуальной деятельностью с низкой творческой составляющей.
мне больше нравится определение на лурке:
Офисный планктон (он же «офисное быдло», «канцелярская крыса»,«козявка приказная» и т. п.) — работники умственного труда с пониженной творческой составляющей, проводящие жизнь в офисах и прочих управлениях, но не относимые к инженерам: низшие менеджеры, бухгалтеры, секретутки, и т. д. Являют собой передаточные механизмы, винтики и смазку в механизмах управления, учета, планирования, финансов. Быстрорастущий пролетариат постиндустриального мира.
Это вы офисного работника описываете.
А планктон — это уже другое.
Ну вообще это был сарказм. Программисты толкают мир и прогресс вперед, и когда программисты напишут ИИ для беспилотных кораблей, моряки начнут исчезать как класс (как сейчас исчезают водители).
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Ну или будет человек, конфигурирующий этот ИИ (если ИИ ещё не умеет самообучаться), но это уже не будет бухгалтер в привычном нам понимании
А кто научит ИИ оформлять отчёты?
Переоцениваете сложность отчетов.
T+1 — программисты больше не нужны, бухгалтера обучают ИИ
Часто вникали в работу бухгалтера?
UFO just landed and posted this here
UFO just landed and posted this here

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

Ну посадят вахтёра на судно :)
А настоящая проблема совсем в другом — человек пока банально намного дешевле. Особенно с учётом возможных поломок чего угодно. Стоимость небольшой команды по сравнению с топливом (я уж не говорю про груз) среднего контейнеровоза — просто копейки.
А стоимость пары вооружённых охранников — ещё меньше, чем команды (на большом судне ведь довольно большая команда, верно?).
Экипаж Knock Nevis (длина 450 м) всего 40 человек.
На любом судне крутят штурвал несколько человек посменно. Остальные там с другими задачами. Например, команда механиков всё ещё намного дешевле, чем двигатель который обслужит и починит себя сам.
Ну может быть можно сделать такой двигатель, который не будет выходить из строя в течение рейса хотя бы?
У самолётов ведь нет такой проблемы — иначе падал бы каждый второй рейс.
1. А ведь и отказывают. В кабине всё ещё 2 пилота есть, которые знают что в таких случаях делать.
2. А ещё их обслуживать надо. У самолётов рейсы короче и обычно в родной порт к своим механикам. А иногда они точно так же возят механиков с собой.
3. Устранение одной небольшой поломки на супертанкере на ходу оплатит зарплату механика на годы вперёд.
И как результат всего выше, авиационный двигатель намного дороже изначально и в эксплуатации.
Зато программистам надо работать мозгами. В отличие от :)
Внезапно, существуют программисты, которые в отпуске выглядят как настоящие альпинисты.
Более того: есть и которые на работе так выглядят…
Пожалуй соглашусь — был такой опыт, коллега… что ни отпуск, так вечно она «в лесах/горах/походах».
А для вас геолог — это обязательно тот, кто с молотком по горам лазает? Открою тайну, сейчас большинство геологов в поле только на студенческой практике бывало, да и керн не всегда носом нюхало. Сидят себе в тепле, уюте, и попивают смузи, рисуя модельки на мощных тачках с качественными дисплеями. Они ж геологи, а не буровики или трубопроводчики. Да даже и геологи-сейсмики не особо в поле катаются, что там делать-то на постоянной основе в 21-м веке?
А про лётчиков — почитайте в блоге Туту.ру, как пилотам живётся, посмотрите видео. Вполне себе комфортная работа в большинстве.
UFO just landed and posted this here
В полку офисного планктона прибыло, значит.

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

А вы сами попробуйте каждые пару дней туда-сюда летать то ночью, то днём, то в 5 утра, да по гостиницам ночевать — специфическое удовольствие, даже если просто паксом.

бгг, и эти люди запрещают ковыряться в носу «планктоном» обзываются
Просто человек из разряда «а баба Яга против». Душа требует возразить по любому поводу, то не так, это не этак.
«в интернете кто-то неправ!» ;))
UFO just landed and posted this here
Ну кстати термин какой то не очень ясного для меня происхождения. Лично у меня единственное что ассоциируется с планктоном это что то совсем тупое, без мозгов, абсолютно не развивающееся, безучастно плавает в воде и нифига не делеает и т.п.
Вы бы сначала с сутью термина разобрались, а потом бы применяли к месту, глядишь, не вызывали б столько нареканий.
Офисный планктон — современное жаргонное выражение, используемое для обозначения «белых воротничков» — мелких офисных служащих ( (с) Вики)
Ну ептыть. А вы попробуйте в 3 ночи вставать по звонку потому что «У нас тут сплит брейн на проде, давай сука чини бегом, заказчик уже три раза звонил, ЕТА спрашивал».
UFO just landed and posted this here
— Я сам служу, сударыня. Каждый день к 9 утра я должен идти в магистрат. Я не скажу, что это подвиг. Но, вообще, что-то героическое в этом есть.
© Тот самый Мюнгхаузен.
Туше, сударь.
Но тем не менее. Сложно сказать что отнимает больше времени и нервов — работа руками и ногами в поле или работа в офисе, но с постоянными найтшифтами и наркоманским графиком.
Руками/ногами, очень часто, в целом, поздоровее занятие, чем просиживать почти неподвижно весь день.
Про геологов и альпинистов не знаю, ученые не субкультура.
Никто не спрашивает, нужна вам субкультура или не нужна. Ваше мнение вообще ничего не значит в данном случае.

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

Ваш Капитан Очевидность.
Вот забавно, за статью в защиту токсичности плюсуют, а за токсичный ответ в слегка одесском стиле — сыпанули минусов…

Двуличная субкультура!!!
А это потому, что здесь представители не одной субкультуры. Красноглазый линуксоид и фронтендер со смузями профессионально относительно близки, но культурно между ними мало общего.
Не соглашусь. Оба из них принадлежат к одной субкультуре. Как артисты, хех.
Любая субкультура производит культурные явления — обычаи, предметы, символы, идентифицирующие ее и при этом доступные для наиболее бедных из ее членов.

И такая вещь есть. Во-о-он тот пласт под понятиями OpenSource / Freeware. Явления, которое в равной степени существуют и затрагивают сферу каждого — и красноглазого линуксоида, и фронтендера со смузями.
С трудом можно представить условного булочника, приходящего с работы, встающего к печи и затем раздающего булки на улице. Однако же строки кода, как и строки стихов, сегодня доступны каждому.
Понятно, что не всё так примитивно. Два фронтендера с одинаковыми скиллами могут быть мужчиной и женщиной, чёрным и белым. Моя мысль в том, что для фронтендера хипстерская субкультура может быть важней субкультуры айти. Поэтому одни на Хабре постят токсичные статьи, а совcем другие люди минусят токсичные комментарии. Личная культура пересекается примерно как венн диаграмма, и когда в комментариях встречаются люди с противоположных «лепестков», начинается весёлое кидание какашками :) Просто не понимают друг друга.

Тут вспоминается цитата из "Ведьмака":


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

Вот это — нормальная реакция здорового человека.
А жалоба на то, что кто-то с твоим мнением не согласен — ну тааакооооее...

Вот, кстати, живой пример мой коммент в соседней теме habr.com/post/353422/#comment_19481122 собрал тридцать минусов и половина минусов в карме. Думаю, автор топика имел ввиду примерно это. Формируется некая закрытая среда, которая занимается вытеснением неугодных мнений и людей. В результате получается некий бульон из «своих» омерзительно сладковатый на вкус
Хабраюзеры в массе своей не хотят читать глупости. Воистину это сговор и цензура.
Для меня лично 3D моделирование в Excel — это забивание гвоздей микроскопом. Делать это можно, но бессмысленно. Вот и получается, что образуется сладковатая среда забивателей гвоздей микроскопом и эта среда вытесняет любого, кто хочет это делать другими предметами. Но виноваты здесь не хаброюзеры, а сама среда (то есть площадка), давшая пользователям инструменты для формирования такой среды. Так что у меня здесь претензия не к хаброюзерам, а к площадке, а у автора топика должны быть претензии к работодателю
А может вы не на то акцент ставите? Никто же не призывает к именно «3D моделирование в Excel», но демонстрируют ещё один наглядный способ разобраться с 3D (о чём вам там в комментах и написали)
Простите, а вам что, кто-то заявлял, что делать тридэ графику не в экселе или делать в экселе не тридэ графику — это плохо? Вас заминусовали за статью об одной из этих вещей? Нет. Дерзайте)
3D моделирование это в первую очередь математика. С математикой в Excel более-менее нормально.
Хабраюзеры в массе своей не хотят читать глупости.
Не хотят, поэтому старательно читают, обдумывают, и после даже специально лезут на страницу профиля пользователя, чтобы сирануть в карму. Именно потому, что не хотят, ага :)

Понимаете ли, взрослый, сформировавшийся как личность человек, в отличие от инфантила, если не хочет читать глупости, он их просто… не читает (Внезапно!). А если читает — значит она ему интересна (пусть даже из энтомологического интереса), и здравая форма выражения этого интереса — изложение собственной аргументированной позиции. Конечно, если глупость совсем «за гранью добра и зла» — есть модераторы и почта для жалоб.
Проблематично понять, глупость ты читаешь или нет, пока не прочтёшь. А когда уже прочёл, логично дать обратную связь. Минус комментарию — «такие комментарии здесь не нужны». Минус в карму — «такие пользователи здесь не нужны». Последним, пожалуй, местные несколько злоупотребляют, но я не думаю, что от этого Хабр потерял так уж много.
У нас свободная страна™. Вам никто не мешает создать свой сайт с блекджеком и… и донести ваше, безусловно, очень важное мнение до окружающих.
создать свой сайт с блекджеком

У меня идея одного блекджека давно уже носилась: если персонаж А поставил персонажу Б минус, то персонаж А комеентариев персонажа Б уже не видит, а все остальные — видят. И овцы сыты, и волки целы: персонажа А не раздражает персонаж Б, а персонажа Б не раздражает то, что у него отобрали права голоса.

UFO just landed and posted this here

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

Уже давно на разных форумах есть опция — скрыть сообщения пользователя. Без минусов/СМСок.
UFO just landed and posted this here
Ну мы же не форуме.
Ну, можно что-то и здесь придумать. Как бы, не очень ново.
Да и как же без срача оживлённого обсуждения очередной неоднозначной статьи/новости?
Так идет себе обсуждение, просто не видите сообщения от тех или иных пользователей.
UFO just landed and posted this here
почему вы считаете, что без минусования этого не случится?

Вот смотрите. Заходим в ветку любого *-срача и пишем комментарий, которые близок к нейтральному, но немного склоняется в одну из сторон (например: "по имеющимся у меня данным мне кажется, что в случае X имело место Y, потому что Z" — вполне рациональная позиция: человек описал имеющиеся у него данные и сделаные им выводы, при этом подчеркнул свою готовность изменить мнение, если будут предоставлены новые данные). При этом он тут же огребает минусов от противников этой точки зрения ("ату его, он против нас!") и… ничего от сторонников ("да ну его, он не за нас"). В результате имеем то, что имеем: карма неудержимо катится в минуса, независимо от того, чей Крым.

Я в последнее время только и делаю, что участвую в срачах в комментариях. Не стесняясь при этом высказывать достаточно экстремальные точки зрения. Моя карма за это время чуть-чуть подросла. Что я делаю не так?
UFO just landed and posted this here
Вы в курсе, что людей с отрицательной кармой Хабр начинает постепенно урезать в правах (ограничена частота постов и т.п.)? При чём тут кармодрочерство (если я правильно понимаю суть термина)?
UFO just landed and posted this here
А Вы в курсе, что кармадрочество (= желание иметь максимальную карму любой ценой, насколько я помню) и стремление не быть урезанным в правах — это несколько разные вещи? Или Ваша позиция сводится к мысли «не хотите минусов — не лезьте в комменты»?
В общем-то, тут действует абсолютно то же правило, что и в жизни. Если хочешь, чтобы тебя слушали — убедись в том, что то, что ты говоришь, кому-то интересно. Или хотя бы не очень раздражает. Иначе тебя тем или иным образом выдавят из компании. В жизни — перестанут приглашать на тусовки. На хабре — насыплют минусов.

xkcd_про_свободу_слова.жпг
И мы возвращаемся чуть выше по ветке: получается, что нейтральный по форме и общей позиции, рациональный по сути комментарий здесь в большинстве своём будет «не интересен» и «очень раздражает»? Нет, меня, конечно, тоже не раз называли троллем, когда я всего лишь пытался сделать из слов собеседника какие-то выводы (не здесь, на другом сайте)…
А где вы берёте такие комментарии? Обычно если я вижу комментарий в минусах, то он либо хамский по форме, либо глупый по содержанию. А в идеале — и то, и другое сразу.
Повторюсь, я сейчас ссылаюсь на сказанное чуть выше по ветке: habr.com/post/432700/#comment_19502236 Про конкретные примеры говорить не возьмусь — не настолько слежу за спорами.
То есть мы сейчас обсуждаем явления, с которым ни я, ни вы лично не встречались. Мне кажется, это неконструктивно)
UFO just landed and posted this here
А сейчас ваш комментарий не получил плюсов, а плюс в карму прилетел. Как вам такой контраргумент?)
UFO just landed and posted this here
Вот, кстати, требование оставлять развёрнутое объяснение под каждым минусом в карму я бы поддержал. Видел похожую систему на одном сайте, мне понравилось.
А сейчас ваш комментарий не получил плюсов, а плюс в карму прилетел. Как вам такой контраргумент?)

Я бы с удовольствием послушал оратора. Но ему накидали минусов в карму (-1), но у меня нету прав поставить ему (+1)
В итоге оратора «запинали».
Подозреваю, если человек выскажет свое «глупое, смешное и никому не интересное мнение» в ветке «не по профилю» (про БД выскажется спец по JS/C++), то в своем «профиле» — он уже тоже ничего не сможет сказать :)
Карму слили в «непрофильном» наказав за любопытсво, а в «профильном» это и так спецам понятно, зачем поошрять.

Насчет большинства и интереса: Аристотель как-то написал что у мухи 8 ног и ~2000 лет никто не удосужился это проверить до Карла Линея. Интересно, а скольким до него было сказано «У мухи 6 ног ?! Да ты, парень, идиот. Все знают что их 8!!! Слышишь, неполноценный умственно, 8! С Аристотеля!!!»
Не обижайтесь, но это очень забавно, когда про аристотелей, карлов линнеев и прочих джордано брунов пишут люди, которые ниасилили написать пост и нарастить кармическую подушку безопасности.
Не обижайтесь, но это очень забавно, когда про аристотелей, карлов линнеев и прочих джордано брунов пишут люди, которые ниасилили написать пост и нарастить кармическую подушку безопасности.

Я так понимаю, что по существу приведенного сценария и исторического факта сказать нечего. Разве что добавить язвительности, которая сформировала не плохой эмоциональный посыл, за который поставили +1.
Случайный социальный эксперимент :)

Я бы поддержал Ваше предложение с пояснениями по карме в чуть измененной форме: требование оставлять развёрнутое достаточно нескольких градаций проф/социальный/личное и т.д. объяснение под каждым минусом (плюсом) в карму
А это и было высказывание по существу. Если вы умный и без ваших мыслей Хабр много потеряет — накопите этих мыслей побольше и напишите пост. Если не получается написать такой пост, то имеет место логическое отрицание условия из прошлого предложения.

Пример с мухой — он, мягко говоря, хрестоматийный. А говоря твёрдо — боян. Я его, помнится, приводил ещё на локальном общажном форуме, когда просил меня разбанить после того, как несколько раз высказал своё ценное мнение по различным вопросам. Но одмин был глух к мольбам. И, в общем-то, совершенно правильно. Хреновый из меня тогда был Карл Линней.
А это и было высказывание по существу.

Мой вопрос был прост: Как не имеющий права голоса может высказаться в поддержку того, с чьими высказываниями он согласен, но не согласно «голосующее большинство»? По вашим правилам, порог вхождения крайне высок(запретительный) :)
Если вы умный и без ваших мыслей Хабр много потеряет — накопите этих мыслей побольше и напишите пост.

У Вас не верная предпосылка. Репутация Хабра — любопытная штука, хороший механизм монетизации. Для владельцев ресурса :)
Не очень понятно, почему я должнен мои «гениальные мысли» выложить на Хабр, а не «замутить Свой Крутой Бизнес»? :)
Если не получается написать такой пост, то имеет место логическое отрицание условия из прошлого предложения.

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

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

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

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

P.S. Если что, я не хочу показаться высокомерным. Я в своё время по идеологическим соображениям гордо выпиливался с хабра, имея в активе статьи с рейтингом около 200. Я думал, это что-то будет значить. Неа, практически никто и не заметил. Система работает по принципу взаимозаменяемости винтиков. И это нормально.
UFO just landed and posted this here
Если регулярно выкашивать случайно выбранные 10% популяции, эволюция продолжит работать как ни в чём не бывало

Эволюция невозможна без отбора.

Все верно, за исключением проблемы масштабирования.
Если популяция ниже определеного порога, она вырождается и умирает.
Если будем выкашивать рандомно 10% в коллектие в сотни… тысячи… миллионы единиц- «эволюция» продолжится, но с меньшей скоростью.
А если такое будет в популяции в 5..20..100 единиц?
Не проявится ли «выученная беспомощность» со временем — зачем генерить повторно мысль, если ее выкосили включив в рандомные 10%? Остальным 90% тоже не сахар. Такие прецеденты тоже были в истории :)
Ну, что-то я не вижу здесь недостатка в комментаторах)
Извините, оффтоп. Прокомментирую вашу аналогию.
Если популяция ниже определеного порога, она вырождается и умирает.
Нет.
Есть такое понятие «бутылочное горлышко». Его прохождение часто весьма способствует эволюционным изменениям.
Если будем выкашивать рандомно 10% в коллектие в сотни… тысячи… миллионы единиц- «эволюция» продолжится, но с меньшей скоростью.
Нет.
Высокая численность популяции является эффективным тормозом эволюции. Можете погуглить «кошмар Дженкина» и «дилемму Холдейна».
/оффтоп.
Есть такое понятие «бутылочное горлышко».

Вы имеете ввиду этот «Эффект бутылочного горлышка»
Цифры что я видел: Людей, если меньше 150..200 в племени, вымирает за порядка 5 поколений. Тоже падение устойчивости к внешним воздействиям.
По животным 100..1000 в течении 50..100 лет.
«кошмар Дженкина» ...«дилемму Холдейна»

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

Про горизонтальный перенос генов я еще в детстве слышал, это очень сильно не десять лет. Теория о резких скачках… Не ловлю. Не прерывистого равновесия? Если она, то это 70-е, и несколько не о том.

Ну и да, если что, не развивать тему всегда готов :)
В конце концов, это был оффтоп.

Вы как в том анекдоте.


Грибник заблудилися в лесу и кричит "Ау! Ау!"
На шум из кустов вылезает сонный медведь.
— Мужик, чего орёшь?
— Заблудился я, надеюсь, услышит кто.
— Ну я услышал. Тебе сильно помогло?

Лично мне — нет.

Хм. Вот, кстати, ваш пример меня удивляет. Как вас угораздило?

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

Где вы наловили столько минусов в карму? По одному-два за случайные комменты? Или всё-таки был какой-то центральный момент неприятия вас сообществом?
По одному-два за случайные комменты на протяжении двух лет (последняя моя публицкация была в 2016). Неубывающая карма (после окончания временных «бустов») была, кажется, около 50.
Кстати: а может такое быть, что у мухи, которую исследовал Аристотель, было действительно 8 ног? Возможно, какой-то вымерший впоследствии вид?
Насколько я помню, там вообще какая-то мутная история. В том смысле, что её растиражированная версия не вполне совпадает с тем, что было на самом деле. Но детали моя память не сохранила.
Вымерший впоследствии вид — однозначно нет. Количество ног таксономически различается не на видовом уровне, а на уровне классов. Различия не между человеком и обезьяной, а между человеком и птицей.

Теоретически это могло быть уродство, сбой в онтогенезе. Если дать эмбриологу возможность, он вам Слейпнира вырастит, а не то что муху восьминогую. Ну может, вырастить не получится, но родит запросто.
Раз, два, три… в общем, кто видел источники (пусть даже в переводе) — опровергают.
Так что вопрос больше в источнике байки про то, что Аристотель это писал :)
UFO just landed and posted this here
есть разница между хамством и конструктивной критикой. Из ваших комментариев, как, впрочем, и статьи, очевидно, что вы пропагандируете первое.
Жить в чёрно-белом мире легко и просто. Жалко что наш мир на него не совсем похож.
Хочется, но не можется — отсюда такие истеричные посты, ибо эмоции захлёстывают. Хочется всех послать, но в ответ могут послать дальше и крутое мачо начинает обижаться. Они просто не пробовали когда их только пинают, а стоит немного попробовать.
Программист — это человек, который отдает свое время за деньги. Как врач. Как сантехник. Как уборщица. Он всегда хочет поработать меньше и получить больше. Вот и весь секрет. Это не детский сад и не субкультура. Это — ПРОФЕССИЯ.

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

вот как здесь, например
Люблю работать. Вот прёт бывает и всё. Хоть сутками сиди.
Выходит, я не программист.
Я бы различал несколько профессиональных субкультур в профессии программиста, причём некоторые из них выходят далеко за рамки профессии. Некоторых программистов точно можно отнести к субкультуре «офисный планктон» работников умственного труда с пониженной творческой составляющей :), а некоторых к якки, фрилансерам, дауншифтерам и т. п.
UFO just landed and posted this here

Не волнуйтесь, мне уже за 40, а "от звонка до звонка" всё ещё не хочется — интересно работать жеж, ёпрст!

Программист — это человек, который программирует, а то, что он получает за это, деньги, удовольствие или что-то ещё — это дело третье…
По вашей логике, получается, что некоммерческое/Freeware/OpenSource ПО присылают марсиане.
Ибо под понятие «поработать меньше и получить больше» никак не попадает.
Таки да или нет?
А поцчему Ви спрашиваете?
UFO just landed and posted this here
У меня от слова гик встаёт(ну вы поняли) перед глазами нагеленный полупокер в розовой футболочке с айтишным принтом, тыщачий маникюренными пальцами в айфончик, проставляя лайки в инстушечку.Как в фемили гае, в серии про миллениалов
Небось, ещё и смузи прихлёбывает при этом, закусывая фалафелем.
напрасно. Geek это кто-то, чем-то чрезвычайно увлечённый (не обязательно компьютерами), что от этого иногда страдает внешний вид и социализированность.
Стереотипы не всегда хороши
Глас разума — редкая штука в наше время.
Не совсем ясно, что мешает автору выстроить работу с заказчиком (будь то внутренний или внешний, неважно) так, что есть условная команда матерящихся через слово инженеров, крепко знающих своё дело, но не общающихся с душевно-тонкими личностями с «той стороны» и команда пахнущих ромашками менеджеров проекта, которые как раз и берут задачу «презентации» команды на себя?

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

Или вы заставляете инженеров говорить с бизнесом? Тогда может в этом проблема?
В статье речь о состоянии внутри коллектива, а не про общение заказчик-исполнитель.
Автор говорит о том что в рабочей обстановке в последнее время культивируется «безопасное и мягкое общение» и именно против этого тренда он и высказывается.
Ну так и я про тоже. Выделите тех, кому не нравится «безопасное» общение в отдельный коллектив, пусть общаются между собой, как хотят. Если это повышает производительность — почему бы нет?
Разумеется, такой коллектив и его представителей следует максимально изолировать от тех, кто против их стиля общения.
Это вполне разумно, но на деле всегда могут всплыть нюансы, из-за которых такая четкая изоляция будет невозможна — команды изначально маленькие, дробить еще меньше не выйдет, либо придется делать перестановки, что также скажется на эффективности труда (по крайней мере на первых парах), нового сотрудника зачастую тяжело отнести к тому или иному «лагерю», он может раскрыться только со временем. А даже если удастся поделить именно так, то коммуникацию все равно не прервешь, так или иначе будут видеть друг друга, хоть на той же кухне.
Я все же хочу надеяться, что выделять в отдельный «коллектив» придется все-таки быдло, а не адекватных людей. Хотя судя по рейтингу статьи — до этого еще далеко.
Тонкие метросексуалы сломаются от попыток общения с вечно пьяными матершинниками, и ничего из такой затеи не выйдет…
Но ведь, если такая статья появилась, значит, сегодня выигрывают «метросексуалы»!
UFO just landed and posted this here
Я против культивирования инфантилизма и гиперопеки. Вы спорите с вашими собственными высказываниями. Трамвайные хамы откуда-то взялись… Заранее известно моё мнение обо всех айтишниках… Прямо пособие по демагогии.
UFO just landed and posted this here
Вы приписываете мне утверждение и на этом строите критику. Это называется демагогия. Хотите спорить аргументированно — приводите цитаты из статьи. Я достаточно ясно излагаю свои мысли, они не нуждаются в вашем толковании да ещё и с уничижительными эпитетами.
Я достаточно ясно излагаю свои мысли, они не нуждаются в вашем толковании да ещё и с уничижительными эпитетами.

Вы достаточно ясно излагаете мысли для себя..:


Любые предложения люди понимают иначе, чем тот, кто их вносит.
Следствия:
Даже если ваше объяснение настолько ясно, что исключает всякое ложное толкование, всё равно найдется человек, который поймет вас неправильно.
Если вы уверены, что ваш поступок встретит всеобщее одобрение, кому-то он обязательно не понравится. — Третий закон Чизхолма

PS Я вот ваш текст не осилил — нытьё и плачь, с просьбой вернуть хамство… И откуда-то внезапно берутся розовые сопли и карамельные рельсы… Ау, вы про какой айти-то хоть? Мировое? Нет такого — есть европейское, есть американское и т.д. Нет, ситуация с линуксом, конечно не самая приятная, но на галерах, например, никаких изменений нет. В ынтырпрайзе — тоже не особо заметно (благо галеры наполовину с ним пересекаются).

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

Вы же сами ратуете за прямое, без обиняков выражение мнений. А как получили такое мнение о своей работе — так сразу просьба перестать?))))

UFO just landed and posted this here
Я утверждаю, что конструктивая критика полезна. Пока что все возмущённые конструктивизма не проявляют, зато прямо блещут своей тактичностью. Довольно странно, что люди, не прочитавшие текст приписывают мне какое-то мнение и выражают его в поразительно невежливой форме. Почему меня называют нытиком, плаксой и хамом в комментариях те самые люди, которых до глубины души возмутила моя статья? Потому, что не могут её прочитать и судят на основании своих домыслов?

Чувак, если я "ниасилил" текст, это не значит, что я его не читал. Я осилил (давясь) первые ~40% и последние два абзаца. Чтобы иметь представление о чём речь — достаточно. Если ты умудрился запихнуть в указанный мной кусок все свои "гиперболы" (на самом деле адовые перегибы в большинстве случаев) — сугубо твои, как автора, проблемы, т.к. существенно снижаются твои шансы быть понятым.


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

Позвольте ответить вам вашим стилем.

У вас, вероятно, серьёзные проблемы. Вы не прочитали даже половину текста, но так перевозбудились, что бросились гневно писать комментарий. Мне не особо интересно мнение такого формата.
В общем я «ниасилил» твой текст, а ты «ниасилил» обычную, даже без мата, критику… за которую типа ратовал в текстовке. Никакого уважения такое поведение вызвать не может.

А где там, извиняюсь, критика?

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

Так же, извиняюсь, критика?
UFO just landed and posted this here
не надо его ограждать от критики. Надо говорить «Ваня, ты дибилоид, ну как так можно», в идеале еще показать ошибки и научить как правильно.

Это разные вещи, которые любители хамства не понимают. «Ты дебилоид» — это не критика, это прямое оскорбление. То, что и называется токсичностью.
«Ты накосячил, сделал так, а надо было вот так» — критика. Здесь нет оскорблений, но нет и никакого ограждения от критики.
«Ты накосячил» лучше тоже избегать.

"возможность накричать на приятеля — признак верной крепкой дружбы" ©

Весьма манипулятивная фраза, да и мы не о друзьях говорим, а коллегах. Это не всегда пересекающиеся множества.
А что такое галеры? Извините, тут просто со сленгом проблемы у некоторых)
UFO just landed and posted this here
Вообще мысль автора понятна.
А мне нихрена не понятна: навалена куча каких-то предрассудков, ни грамма логики, никаких выводов. Так и хочется ответить на это:
Идите-ка вы в жопу с вашей «токсичностью»!
чем-то вроде этого:
Иди-ка ты автор в жопу с своими «статьями»! Набросал две страницы ключевых слов и теперь рассказываешь в комментариях «я этого не писал», «вы мне это приписываете». Дай я открою тебе глаза: ты вообще не написал на одной умной мысли кроме того факта, что без критики и честных фидбеков мы никуда никуда не поедем. Вот тебе честный фидбек: засунь ты себе эту статью обратно в жопу черновики. И не связывай рабочие навыки, привычку материться и твердость гениталий. Слово "!@#" тебе, как видишь, никак не помогло.
Дело, на самом деле, в том, что вежливость, как заметили тут многие — это этикет или протокол взаимодействия между работниками. Быть невежливым и вызывать какие-либо втч отрицательные эмоции у других просто мешает работе. Пример с дальнобойщиком и продавщицей здесь неуместен, поскольку, во-первых любая женщина и любой мужчина предпочтёт вежливое обращение к ним вне зависимости от того, как они сами обращаются. Во-вторых, их взаимодействие длится несколько минут от силы, легче потерпеть.

Что касается стрессоустойчивости и «запрет на негатив» — то это просто манипуляция фактами. Админ стрессоустойчив не потому он матерится, и матерится он не потому что он стрессоустойчив. Он матерится потому что он — быдло, а на работе его держат потому что, наверное, достоинства превышают недостатки. И, наконец, если некомпетентный джун тебе пятый раз присылает говнокод на ревью, а ты не видишь никакого решения кроме как «вызвать негативные эмоции» чтобы решить проблему, то ты — некомпетентеный начальник. Когда встречаются два некомпетентных человека ни трэш-ток, ни размазывание розовых соплей не помогают, да.
UFO just landed and posted this here
И вот кроме «джун, ты !@#» тут и не скажешь ничего.
Я так и написал: некомпетентный руководитель. Разве что мне здесь кто-то объяснит зачем вообще человека обзывать !@#ем и как это помогает рабочим отношениям.
Вы же говорите о ситуациях, когда джуна с первой итерацией кода посылают в !@#
Где?
Лично мне проще работать в коллективах «твой отдел — твоя семья», где действительно доверительные отношения и никто ни с кем не сюсюкается.
Вероятно, не у всех ваших сотрудников слово "!@#" — нормальное обращение в семье и вполне возможно, что они страдают из-за вас на работе и вполне возможно, что это отражается на их производительности. Кроме того, лично мне совершенно не нужны ваши семейные отношения на работе.
Но насаждение «этичной толерантности» чуть ли не силой это явный перебор на мой взгляд.
Силой — это бьют, что ли? Заставляют отжиматься? Да, явный перебор, согласен.

Вы передергиваете.


Люди могут страдать не только от того, что кто-то материться, но и от того, что они ощущают давление в направлении рамок.


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


Создать общий свод правил о том, как нужно себя вести, что-бы любой коллектив с любым составом уживался на 5 — невозможно. Вас раздражает семейность, кого-то формальность, кого-то другого что нибудь еще. И каждый может привести доводы, почему такой или иной стиль поведения продуктивней.


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

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

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

погуглил трактовки статьи, спасибо что обратили внимание на заблуждение. буду знать.
Коммуникативный слой русского языка богат и разнообразен. И очень часто (надеюсь, пока) огульно и бездумно до нельзя упрощяется и искажается интерпретаторами. Вот тут введение в тему, очень всем рекомендую: amarinn.livejournal.com/1122199.html
Люди могут страдать не только от того, что кто-то материться, но и от того, что они ощущают давление в направлении рамок.

Самый банальный пример, это когда ЧР делает замечание о том как стоит и не стоит разговаривать людям, которые уже давным давно на ты.
Приватные бесседы — личное дело каждого. Если ЧР слышит приватную бесседу — то она больше не приватная. Если вы открыты к критике так, как бахвалится этим автор, то никакого давления от замечания испытывать не будете.
Создать общий свод правил о том, как нужно себя вести, что-бы любой коллектив с любым составом уживался на 5 — невозможно. Вас раздражает семейность, кого-то формальность, кого-то другого что нибудь еще. И каждый может привести доводы, почему такой или иной стиль поведения продуктивней.
Нет. Во-первых, продуктивность тут вторична. Во-вторых, пилоты используют специальный лексикон на англ языке в полете потому что о нем смогли договориться. Ваши интернеты пользуют доисторический HTTP потому что о нем смогли договориться. Названия живых организмов все на латинском потому что о нем смогли договориться. Люди по умолчанию вежливы друг с другом потому что об этом смогли договориться и свидетельство тому — несколько статей админ кодекса. Вопрос: сможете ли вы договориться на работе повсеместно использовать какой-то другой стиль кроме формального? А если новый сотрудник — то заново договариваться? На это может уйти много времени, что как-то не вяжется с продуктивностью.
Единственный способ создать функционирующее общество, это не вмешиваться в дела, которые вас не касаются.
Это у вас пережиток советского воспитания: «не лезь», «не твое дело», «ты что самый умный?». Об этом можно вести отдельную дискуссию, но суть в том, что это, скорее всего, плохо и неправильно, и, ИМХО, одна из основных причин почему люди из СНГ по-прежнему хотят свалить на запад.
Если кто-то любит материться, пусть матерится.
Так, где границу проведем? По какую сторону от границы будет огнестрельное оружие?
Если вам это мешает — договоритесь. Это отлично работает в современных обществах (меритократический капитализм).
Хер это а не работает. Если вы заглянете в среднестатистический российский подъезд, то вы сразу поймёте, что 50 человек не могут договориться просто ни о чем. Не умеют-с.
В советском воспитании скорее наоборот пропагандировалось постоянно вмешательство «общественности» в личные и семейные дела. А «не твое дело» — это защитная реакция.
Если ЧР слышит приватную бесседу — то она больше не приватная.

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


Во-вторых...

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


Это у вас пережиток советского воспитания

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


Так, где границу проведем? По какую сторону от границы будет огнестрельное оружие?

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


Хер это а не работает.

Это работает лучше чем автократия. Если есть проблема, то ей занимаются те кто замешан, а не все вокруг. А то что в РФ происходит это никак не пример.

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

И вот ее нарушают. Об этом и статья.


Неформальные отношения с хорошо знакомыми людьми на работе мешают этой самой работе — инфа 100%.

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


Вполне вписывается в мои представления об Израиле.

Какие?


Подумайте.

Я подумал, и все равно никакой связи не вижу.


P.S.
Мне не нравится ваш токсичный стиль общения.

Мне не нравится ваш токсичный стиль общения.
Это не стиль общения а объективная критика, см. статью.

Нет, вы токсичный человек и я чувствую себя оскорбленным.


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

Интересно, а что если после того как вы скажите джуну идика ты на @*_#, он вежливо попросил тебя выйти на улицу уточнить лично с ним ваши претензии. Возможно ваш пыл сразу поубаватся. Нельзя давать себя оскорблять, нужно это мгновенно пресекать любым способом, иначе у человека это войдёт в норму. Как тут писали — вежливость и порядочность на работе — это протокол общения

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

Вы намекаете на силовое наказание обидчика. Успешное наказание легко попадает под статью УК, с учетом того, что в травматологии пострадавшего будут едва ли не пытать: «итак, я вам предлагал признаться в том, что вас побили, и вы согласились? Нет? То есть вы решили скрыть факт того, что вас побили? И кто именно вас не побил?..».

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

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

С точки зрения кадровика (и всех помошниц, 90% из которых станут кадровиками других компаний через 5 лет) на корпоративе после выпивки это будут 2 обезьяны с гранатой, а сам случай — опасный прецедент, другие могут взять на вооружение.

С точки зрения топ-менеджмента это как минимум неприятная мелочь, а как максимум: потери репутации.

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

Можно подумать, что быть *вежливым* и «вызывать какие-либо втч отрицательные эмоции у других» — работе не мешает. *Эмоции* — как бы, вообще не та вещь, которая — безусловно — уместна «на работе».
И, наконец, если некомпетентный джун тебе пятый раз присылает говнокод на ревью, а ты не видишь никакого решения кроме как «вызвать негативные эмоции» чтобы решить проблему, то ты — некомпетентеный начальник.

Даже опуская вариант, когда «вызвать негативные эмоции» — это и есть «решить проблему», ваше обобщение с «некомпетентностью»… это такое. Сказать, что «говнокод» — это «говнокод», если и является «некомпетентностью», то несколько в другой области :-)
Ничего не понял. Походу вы с автором на каком-то непонятном наречии пишете. Или да, я дурак.
Сказать, что говнокод — говнокод допустимо в целом, сказать, что его автор — говнокодер — нет.
Допустим, в некотором отделе разработчики отлаживают код перед сдачей — потому что сроки на неделю сдвинули, зато попросили экстренных фич, при этом на сдаче контракта нужен красивый прототип, который примут as is, а потом будет пол-года на устранение багов и это согласовано всеми сторонами.
Но фичи ломают архитектуру и вообще не вписываются, зато ОЧЕНЬ нужны.
В воздухе плавает запах дедлайна, свежих багов и пара топоров, которые не падают из-за густого мата, что не нравится нежным девочкам-тестировщицам и вызывает негативные эмоции.
Внимание, вопрос: и что делать в таком случае?
Отсадить девочек в другой кабинет?
Альтшуллер одобряет.
В итоге — да, но у нас была пара других кабинетов.
А если бы это был модный openspace? Или в других кабинетах не было бы мест?
MVP же делают чтоб было рабочим и манящим. Код совсем прототипов выбрасывается и пилится нормальный с архитектурой, для остальных случаев костыли и затычки превращают в куски архитектуры, возможно накапливая некоторый тех.долг относительно унификации и идиоматики.

Что делать: действовать по принципу "вернуть проблемы тем, кто их породил, на устранение". Для этого провести анализ корневых причин, т.е. собрать фактологию, проявляющую возникновение ситуации. Где-то на верху будут две связанные причины: нарушили технологию разработки, чтобы "отжать" разработчиков (или аутсорсера). А для этого никак не решают вопрос соответствия нагрузки (объёма задач) производительности.

Т.е. проблема возникла намного раньше и выше: на уровне лиц, принявших ошибочные решение. Реакция разработчиков – тщетная попытка сигнализирования и защиты от бессмыленных и вредных перегрузок на уровне психики (т.е. мат и прочие реакции). В целом, это поломанный процесс разработки, где съумничал кто-то из лиц, принявших ошибочное решение и такие условия.

Вернуть им проблему – заставить исправить ошибки в решении, т.е. принудить к выполнению технологии разработки и обеспечению покрытия объёма задач производительностью с запасом 10-15%. И это как раз то место и направление, куда необходимо направлять все реакции в созданной подставе.

Отжимают тех, кто отжимается. Грузят лошадь, которая везёт. Увы, но степень упырства многих "на верху" переходит все вообразимые пределы. И отдела разработки с лихвой хватит, чтобы пару-тройку человек реально испугать (в т.ч. превосходящей физической силой) и заставить правильно учесть и обработать названные выше причины. Не просто так ЛПР закрываются в своей коморке, чтобы "порешать вопросы" скрытно от тех, кому потом прилетит головняк. И да, это всегда вопрос власти и её баланса. Пока его нет, будут отжимать, а значит будут "бухтеть недовольством под нос на весь ёпн-спейс".

UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Кто Вам сказал что людей хантят печеньками? Что у Вас вообще в голове творится?

Это что у Вас в голове творится? Где в статье про то, что хантят печеньками? Автор написал о том, что в вакансиях очень часто есть упоминание про печеньки. Я тоже это постоянно вижу и меня тоже это выводит из равновесия. При этом никто не говорит, что печеньки не нужны, с ними лучше чем без них. Но, блин, есть много вещей важнее этого. Кресло удобное, например. Или не адовый опенспейс на 100 человек, а маленькие кабинеты и т.д.
Просто «печеньки», видимо, один из самых выгодных способов мотивации, как по критерию «эффективность/стоимость», так и по стоимости реализации. Так что их все внедряют, а многие на этом и останавливаются.
UFO just landed and posted this here
Ну, во-первых, мотивировать нужно не только «взрослых профессионалов», но еще и «невзрослых профессионалов», «невзрослых непрофессионалов» и даже «взрослых непрофессионалов». Во-вторых, «печеньки», возможно, должны восприниматься как маркер «тут меня будут холить и лелеять». «Мы будем специально стараться, чтобы вам спокойно кодилось, и ничего не отвлекало… даже в магазин бегать не придется». Возможно, кто-то подсознательно понимает это как «надо будет заниматься только разработкой в свое удовольствие, а всякое другое, что я делать не люблю, не хочу и не умею, возьмет на себя компания». В третьих, едва ли не большая часть когнитивных искажений связана с ошибками выбора и оценки. А в кадровой службе тоже могут работать «взрослые профессионалы», которые психологию знают и умело используют.
UFO just landed and posted this here
чем офис в зловонном подвале с табуретками, пентиумом три вместо компьютера и более высокую зарплату

Про «пентиумы» и «табуретки» как раз никто и не пишет, собственно в этом и проблема.
UFO just landed and posted this here
UFO just landed and posted this here
Вот да. Это было смешно и забавно сколько, 5 лет назад, больше? По меркам интернет мемов это древенее античности и лежит примерно на той же полке что и падонкавский сленг.
Это подмена понятий. «В каждой вакансии пишут про X(печеньки), но не описывают рабочее место, следовательно писать про Х — плохо. » Это неправильно, правильно «Не описывать рабочее место — плохо». Короче говоря, оставьте печеньки в покое)
Давайте писать «у нас в офисе электричество есть и зимой тепло»
и зимой тепло

А давайте. Не приходилось в офисе сидеть в пуховике?
UFO just landed and posted this here
Иногда стоит, у нас, блин, холодно :-)

Ох, очень хотелось бы видеть в вакансиях фразы типа "у нас в офисе нормальная приточная вентиляция и уровень ppm" и "у нас не приняты громкие дебаты и оффтоп в опенспейсе". Вот реально, дал бы скидку 10-20% зарплаты за эти два пункта.

UFO just landed and posted this here
Автор написал о том, что в вакансиях очень часто есть упоминание про печеньки. Я тоже это постоянно вижу и меня тоже это выводит из равновесия.

Так вот для кого safe spaces придумали! :)
UFO just landed and posted this here
Опять уволили за токсичность? Сочувствую, тоже бывало. А теперь по пунктам:

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

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

2.
Человек может раз за разом отправлять вам на ревью код с одними и теми же ошибками и надо отвечать на это вежливостью и улыбкой?

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

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

Конечно же без явных причин! Токсичность и отсутствие компетенций тут не причем, да :)

4.
С годом опыта можно быть специалистом высшего уровня в профессии.

А когда, например, ява программист с 10 летним опытом, 5 из которых на управленческих позициях, начинает писать на PHP. Считаете, у за год не сможет до сеньора дойти? Ну считайте, ваше право :)

5.
Неожиданный факт — программисты не хотят работать без печенек.

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

6.
Через три месяца разговор с HR, в результате которого выясняется, что команда его ненавидит.

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

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

Так и аффтар заметки не писатель :)

У всех свой опыт. Спасибо что поделились вашим. Однако, я не считаю себя абсолютно правым, в тексте много гиперболизаций.
Тут такое дело, нельзя всех причесать под одну гребёнку. А статью стоит рассматривать с юмором а не как крик души отчаявшегося грубияна.
Вот как раз с юмором у вас не получилось :(
> Не соответствует правде. Критика постоянно высказывается, особенно в пулл-реквестах, после работы QA, и пользователями. Я бы сказал большая часть работы программиста — это работа с конструктивной критикой

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

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

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

Критикуйте то, в чем у вас есть набор компетенций. Если вы программист — профессионально критикуйте код, а для профессиональной критики личности есть психологи и психотерапевты, и их этому минимум 10 лет учат.

И это элементарное уважение к человеку как к личности, «нетоксичность» тут вообще не при чем.
Вы слово «недопустима» заметили?
Зачем может в принципе понадобится критика личности человека на рабочем месте? Если вы вы с коллегой приятели, можете обсуждать ваши личные дела, если это работе не мешает, но это к работе не имеет никакого отношения.
Есть люди, которые не могут не критиковать личность человека при критике его работы или её результатов. Ну типа «Ты это сделал? Идиот, переделывай!!!»
Критика постоянно высказывается, особенно в пулл-реквестах, после работы QA, и пользователями.

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


Вежливостью — да, улыбкой — нет. А потом просто вежливо попросить написать по собственному.

А если это не в вашей компетенции? Причем ответственный за проект ты, но задачи раздает и принимает начальник по принципу "работает — и ладно". Если человек коммитит код на Java в 201x году, где коллекции итерируются: for (int i = 0; i < list.size(); i++) list.get(i). А на просьбу переписать как надо жалуется начальнику, что я придираюсь. И кто тут разводит токсичность?


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

Как показывает практика, ненависть и шум в основном разводят хреновые специалисты, как попытку оправдаться. И она всегда направлена против тех, кто в проекте что-то делает ввиде жалоб типа: "он придирается к моей работе", "он не объясняет мне как делать", "он не делится информацией", "он меня ничему не учит". HR, апелируя к жалобам, в итоге в токсичном поведении винят совсем других людей. Поэтому автор здесь прав — IT не детский сад, а спецы не няньки. Если человек некомпетентен, он баласт в проекте и будет только ухудшать климат и портить проект.

Причем ответственный за проект ты, но задачи раздает и принимает начальник по принципу «работает — и ладно»

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

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

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

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

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


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

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

ты есть лид

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

Не успеешь моргнуть, как они уже начинают тобой командовать

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

А по завершении говорят «спасибо» и закрывают таск без всякого разбора полетов

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

какая разница кто виноват

А действительно, кто виноват? Разработчик, написавший гавно, тимлид, пропустивший это в продакшен, тестировщик не увидевший это на тестах, или, может, ПМ, эту задачу поставивший и обозначив недостаточный срок реализации? Кто из них виноват? Или может все вместе накосячили, одной командой?

А может и вины ничьей нет. Так сложились обстоятельства.
for (int i = 0; i < list.size(); i++) list.get(i)

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

Если человек коммитит код на Java в 201x году, где коллекции итерируются: for (int i = 0; i < list.size(); i++) list.get(i)

А что в этом плохого-то? То, что метод size() вызывается каждый раз, и это ухудшает производительность? А разве JVM то не оптимизирует в рантайме?
UFO just landed and posted this here
А вам не кажется, что у вашего варианта читаемость сильно ниже при беглом просмотре кода? Или это у меня только такое, субъективное?

Насчёт линейного времени — зависит от того, что за коллекция. Там может быть ArrayList или Vector, и там время доступа будет константное (но мы можем не знать, что у нас там на самом деле, т.к. интерфейс единый). При маленьких объёмах данных — это вообще, имхо, не суть важно.

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

P.S. Самое главное — я не понимаю, почему для вас стандартный заголовок цикла for(), который, кстати, одинаков вообще для любого C-подобного языка — это «отвлекаться на индексы». Такое вообще пишется (или вставляется по хоткею) на уровне автоматизма… Вот производительность кода — это да, серьёзно.
А вам не кажется, что у вашего варианта читаемость сильно ниже при беглом просмотре кода? Или это у меня только такое, субъективное?

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

P.S. Самое главное — я не понимаю, почему для вас стандартный заголовок цикла for(), который, кстати, одинаков вообще для любого C-подобного языка — это «отвлекаться на индексы».

Если человек не совсем дуб, то при итерации он в самом начале выделит элемент коллекции в переменную, аля var test = testList.get(i); В таком случае встреча индекса и использование коллекции в дальнейшем коде будет означать что-то специфическое. И, в целом, отвлечения на индексы особо не будет(но тут возникает вопрос — зачем? Зачем вручную прописывать создание переменной и использовать for(;;) конструкцию, когда есть более лаконичный foreach?)

А если человек дуб, то он просто везде будет использовать testList.get(i), что увеличит объём кода, уменьшит его читаемость и увеличит шансы случайно пропустить выстрел или логическую ошибку в виде testList.get(j) или testList.get(i-j)

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

Чтобы не создавать итераторы.

UFO just landed and posted this here
Квадратичным оно станет только в случае с настоящим списком (LinkedList, например). Если быть совсем точным — там будет O(n² / 2). В случае с тем же Vector всё будет линейно.
В случае с тем же Vector всё будет линейно.

У меня маленькое замечание не относящееся к делу прямо. Класс Vector остался в джаве только потому, что нельзя ломать спецификацию. Он — тяжёлое наследие прошлого. Использовать его нельзя.

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

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

Это не глупости, это суровая реальность. Если пишешь на Java и нужен динамический массив — нужно использовать ArrayList.


Что касается ArrayList — он как бы есть, но он ничем не лучше. К тому же, он не является потокобезопасным.

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


Если нужна потокобезопасность Vector тоже плохой выбор. Нужно использовать либо обёртки, которые делают любую коллекцию потокобезопасной, такие как Collections.synchronizedList, либо использовать специализированные коллеции, такие как CopyOnWriteArrayList.

приводит к синхронизации потоков

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

Если нужна потокобезопасность Vector тоже плохой выбор. Нужно использовать либо обёртки, которые делают любую коллекцию потокобезопасной, такие как Collections.synchronizedList, либо использовать специализированные коллеции, такие как CopyOnWriteArrayList

А чем они лучше Vector?
В том-то и дело, что обычный код, как правило (могу ошибаться, поправьте) исполняется всегда в один поток (кроме обработки GUI). А раз так — ему пофиг, что использовать.

Даже если код выполняется в один поток — вся машинерия, которая синхронизирует потоки всё равно отрабатывает честно и честно жрёт время процессора. Поэтому нет, не пофиг. ArrayList эту машинерию не задействует вообще, поэтому он быстрее. Разработчики JDK рекомендуют использовать ArrayList там, где потокобезопасность не нужна. Так и написано — If a thread-safe implementation is not needed, it is recommended to use ArrayList in place of Vector.


А чем они лучше Vector?

Обёртки делают практически то же самое, что Vector. CopyOnWriteArrayList обеспечивает потокобезопасность тем, что делает новую копию внутреннего массива при каждом изменении. Его надо использовать если коллекцию в основном читают и иногда в неё что-то пишут.

Прочитал про эти обёртки по Вашей ссылке. Но неужели копирование при каждом изменении — это быстро?.. Всё равно же накладные расходы огромны. Чем это лучше использования Vector?

Вариант Vector:
1 поток на запись, 20 потоков на чтение — стопаем всех при каждом обращении к вектору,
Вариант CopyOnWriteArrayList:
1 поток на запись, 20 потоков на чтение: да потоки на чтение могут получить устаревшую информацию, но они всегда могут прочитать из массива без остановки, блокируют ли друг друга потоки на запись — не помню, надо смотреть спеку.
В общем для ситуации "в основном читаем, изредка пишем" идеальная коллекция.


И да, в промышленной разработке про вектор, к счастью, уже забыли.
Если хотите подробности про мягкие блокировки и какие они плюсы дают — поищите по вкладу Doug Lea в java — он как раз их и разработал для java.


Смотрите, foreach подразумевает то, что о типе итерируемой сущности позаботится рантайм (или компилятор). В случае с JavaScript (я в основном пишу на нём), использование for… in, перебирающего все ключи объекта либо индексы массива — реально очень плохая идея, если у нас обычный массив. for всегда будет быстрее. JS правда, в отличие от Java, не компилируется в байт-код в общем случае (точнее, компилируется в него прямо перед исполнением, и время этой компиляции нам тоже важно).

Ох, юноша, ну куда же вы со своим js в обсуждение java? Ведь надо понимать, что и структуры и алгоритмы под капотом синтаксического сахара сильно разные. В Java foreach это скрытый вызов итератор и обход по нему. И не надо думать, что если в js есть слово java, то они хоть чем-то похожи.


Кстати, на минутку — есть какой-то аргумент, чем итератор лучше цикла for? Тем, что он сохраняет стейт коллекции в момент начала обхода? Так он ничего не сохраняет, там при попытке изменения коллекции исключение выкинет…

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


Полная глупость. Вы сами это хотя бы понимаете? Оптимизация никогда не бывает преждевременной. Она либо окажется полезной (если приложение и объём данных будут расти), либо просто никак не скажется на качестве работы. Но ухудшить ситуацию — она не может. Если не брать случаи серьёзного говнякания архитектуры ради производительности, как Вы верно заметили.

Початайте Кнута, дельные вещи мужик написал. Ещё можете почитать/посмотреть доклады про оптимизации Шипилёва — очень доходчиво рассказывает про трудозатраты vs результаты оптимизаций. Не помню только, говорил ли он, что новичкам в языке лучше вообще не связываться с оптимизацией… Там ведь надо уже понимать как jvm твой код обработает и во что превратит…
В общем случае лучше писать правильный/красивый код, а оптимизации оставить на горячие участки, которые реально нужно ускорять.


Кстати, забыл добавить: выше комментаторы указывали, что создание итератора — это лишние накладные расходы, и в некоторых случаях они могут быть существенными. Тогда зачем использовать foreach вместо for (то, что это сахар — уже замедлит компиляцию в байт-код как минимум на копейки, плюс само наличие итератора, которое может быть нежелательным)? Не говорите только опять про опечатки в буквах, такие ошибки — это даже не уровень школы, серьёзный программист никогда их не допустит (да и IDE не даст).

Нет, создание итератора — не очень дорогая операция и если не жарить её миллионы раз на одной коллекции худо от них не будет точно. Время компиляции в java так же в большинстве случаев пренебрежимо мало и происходит один раз — при сборке пакетов (ну разработчик пару наносекунд подождёт, чего уж там, ага?). Худшее что я видел — пара минут на дофига кода. Гораздо хуже какой-нибудь gwt, который из 1-2к строк будет минуты 3 комплиться. Для кого долго — пусть покомпилят программы на c/c++.
Про опечатки — это хлеб стат. анализаторов и это первое чему они учатся. Да сейчас их встраивают в IDE, но онлайновые всё же далеки от совершенства. И да, даже с ними можно пролететь с опечаткой. Почитайте тематические статьи, если интересно. Но на исходниках > 10к "рассмотреть всё глазками" не работает почти никогда.


С последним утверждением — полностью согласен. Проблема в том, что цикл for — это не «фишка» только JavaScript. Такие циклы можно встретить и в программах на C, C++, ActionScript и PHP, как минимум. То есть это общепринятая конструкция. Да, в Java могут быть лучшие способы итерирования, и не только в Java. Но писать код, понятный программисту на любом языке — имхо, не есть минус…

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


PS простите за комментари n-in-1, минусы отрицательной кармы при недостатке писательских навыков :-)

В общем для ситуации «в основном читаем, изредка пишем» идеальная коллекция.

Согласен. А если у меня вообще поток всего один, и никто никого не блокирует? Можно ещё раз на пальцах, чем Vector медленнее ArrayList в случае одного потока?

И не надо думать, что если в js есть слово java, то они хоть чем-то похожи.

Я так и не думал, вы что.

В Java foreach это скрытый вызов итератор и обход по нему.

Окей, я про это выше уже читал. Создание итератора — в самом деле лишние накладные расходы, которых можно избежать. Зачем нам итератор? От него выигрыш только в случае использования LinkedList. Но если мы решим его использовать, то и несколько циклов в этот момент можно будет переписать, которые с ним работают. В чём проблема-то?

Итератор не сохраняет состояние, он отказывается работать с изменённой коллекцией.

И что тут хорошего? Ошибка в консоль, вылет из метода по не пойманному исключению, программа у пользователя «упала». Может лучше всё-таки отработать с чуть устаревшими данными? А ещё лучше — ещё на этапе написания кода подумать о том, что будет, если коллекцию кто-то попытается изменить. И вот здесь как раз пригодится CopyOnWriteArrayList, о котором Вы выше упоминали. Или можно самому вручную создать копию коллекции, и обходить уже её (в противном случае мы вылетим с ошибкой, если у нас итератор!).

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

Соглашусь :) Именно поэтому я особо и не заморачиваюсь с быстродействием своего Java кода. Ну хотя наверное я начну это делать, только когда всё очень сильно начнёт тормозить…

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

Так никто и не спорит! Там же выше шла дискуссия о том, нужно ли использовать итератор, если он даёт оверхед. Моё мнение — если можно на этом сэкономить, то не стоит: обход по индексам, в случае, если соблюдены все меры предосторожности, даст тот же эффект в случае не списка.

ну разработчик пару наносекунд подождёт, чего уж там, ага?

Да Вы оптимист! У меня не самый большой курсовой проект комплилися на среднем железе (окей, на довольно слабом железе для тех лет) секунд 7-8. Это простой проект. А если что-то тяжёлое? Тут и 1-2 секунды можно лишних получить, особенно если плохой HDD вместо SSD.

Для кого долго — пусть покомпилят программы на c/c++.

Я в курсе про время компиляции программ на C++. Вы правда считаете, что это хорошо? Я вот не понимаю, как люди вообще так живут и работают (в случае, если у них нет супербыстрого корпоративного билд-сервера, а обычный ноут).

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

Онлайновые — это какие? Там имели в виду случай, когда в заголовке или теле цикла перепутана буква итератора. Как минимум любая IDE подчеркнёт ошибку, если мы напишем j вместо i, а такой переменной у нас нет. Да, бывают случаи вложенных циклов, бывает, когда переменная j есть внутри тела цикла, и мы опечатались в каком-то индексе. Ну а отладка на что? Точки останова? Юнит-тесты, в конце концов? Обычное тестирование «руками» на нескольких наборах данных? Такая ошибка обычно всплывает на первом же прогоне!

Но на исходниках > 10к «рассмотреть всё глазками» не работает почти никогда.

Вы что, за раз добавляете и коммитите 10k строк? Нет, вы обычно добавляете строк 100-200, ну в крайнем случае 500. А длина одной функции вообще в идеале должна быть строк 40-50, не больше. И циклов там — ну максимум 2-3. К чему тут обсуждать общий размер кодовой базы проекта вообще?

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

Опять Вы про что-то не то говорите. Стандарт кодирования — это скорее про правила оформления кода. Например, то, что в C# открывающая фигурная скобка класса переносится на новую строку, в отличие от Java. Это да, тут я не спорю, лучше делать так, как рекомендует разработчик языка (хотя даже это можно перенастроить в IDE под себя и делать по-своему — если работаешь не в команде, либо если ты возглавляешь команду и сам определяешь правила оформления кода). Но цикл for-то тут причём? Это вполне себе легитимная конструкция языка Java! Это не какой-нибудь goto, который кое-где ещё есть, но использовать его не советуют. Никто его использовать не запрещает, более того, он для этого изначально и был предназначен — для обхода массивов в том числе. Да, в Java он пришёл скорее всего как наследие из C/C++, но я не видел ещё ни одной статьи, которая утверждала бы, что «for в Java — это зло, по возможности никогда его не используйте».

PS простите за комментари n-in-1

Да нет проблем. Хотя отвечать и правда чуть проще было бы в случае нескольких комментариев поменьше. Но проблему вложенности это не решит, да и объём текста для ответа тоже не уменьшит, так что невелика беда :)
А если у меня вообще поток всего один, и никто никого не блокирует? Можно ещё раз на пальцах, чем Vector медленнее ArrayList в случае одного потока?

Случай с одним потоком это как раз тот случай, когда Vector всегда медленнее. Потому, что любой метод у Vector работает дольше, чем у ArrayList за счёт того, что на каждом методе Vector осуществляется синхронизация. Когда поток один, синхронизация не нужна, но время на неё всё равно уходит.

Это да. Но насколько эта синхронизация замедляет работу? Можно какие-то бенчмарки найти? Ведь мы никого «не тормозим», по идее, раз один поток.
Это да. Но насколько эта синхронизация замедляет работу?

На столько, что из-за этого замедления разработчики JDK и добавили ArrayList

Мне бы в процентах. А лучше — в мс для типового сценария (для списков размеров не больше 100 элементов, например). Я просто не пишу программ, где требуется очень высокая производительность…
Если вы пишете программы, которые будут читать другие разработчики на этом языке, то использовать Vector — дурной тон. Одного этого вам должно быть достаточно, чтобы не использовать его.

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

Вам уже десяток людей сказала — потому что для обычных коллекций в большинстве случаев принято использовать ArrayList.
Почему? Потому что Vector медленнее и в большинстве случаев синхронизация излишняя.

Бенчмарки гуглятся за полторы минуты, будь у вас такое желание.
stackoverflow.com/questions/17471913/java-vector-vs-arraylist-performance-test
www.baeldung.com/java-arraylist-vs-vector

И суммарно, если вы будете использовать Vector, то вы будете этим показывать свой низкий уровень владения языком, поскольку в 95% случаев это будет не оправданным решением, а лишь потому что вы так привыкли и вам так удобнее.

И, помнится, вы так ратовали за то, что использование foreach накладывает оверхед и лучше обходиться простым for с индексацией. Раз вы так боретесь за оверхед, то почему же используете Vector, который его вносит? Не находите противоречие?
И суммарно, если вы будете использовать Vector, то вы будете этим показывать свой низкий уровень владения языком, поскольку в 95% случаев это будет не оправданным решением

Может и так. Я просто не понимаю вот этого вот «дурной тон», как-то очень категорично прозвучало. такое ощущение, что у вас прямо кровь из глаз льётся каждый раз, когда Вы слово «Vector» видите в коде. Несерьёзно как-то :)
Я просто не понимаю вот этого вот «дурной тон», как-то очень категорично прозвучало. такое ощущение, что у вас прямо кровь из глаз льётся каждый раз, когда Вы слово «Vector» видите в коде.

Когда вы, в 2019 году будете писать стандартами 2000 года — это дурной тон. Крови из глаз не будет, однако наладить коммуникацию с коллегами вам будет куда сложнее.
Банально, видя ваши постоянные for и vector — на ревью к вам постоянно будут подходить и, скажем так, вбивать в голову — что так писать нельзя. Есть более подходящие инструменты.
Про veсtor и arrayList прекрасно написано тут, stackoverflow.com/questions/1386275/why-is-java-vector-and-stack-class-considered-obsolete-or-deprecated
Эта ссылка была в бенчмарке, который я кидал выше.

Несерьёзно как-то :)

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

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


такое ощущение, что у вас прямо кровь из глаз льётся каждый раз, когда Вы слово «Vector» видите в коде.

Ну в общем да, ощущение верное. Как только видишь Vector в коде, сразу становится понятно, что там помимо вектора можно запросто встретить вообще всё, что угодно. Например, я встречал вместе с вектором ConcurrentHashMap в однопоточной программе. Код, где есть вектор явно надо вычитывать в поисках проблем, которых в коде человека, знакомого с джавой, просто не может быть. Чаще всего встречается заблуждение, что если используешь Vector, то с синхронизацией можно вообще не заморачиваться, он всё сделает. Поэтому да, "кровь из глаз". На ревью, кстати, код с Vector не пропустят. Поэтому писать такой код бессмысленно.

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

Когда использовал его в первый раз — просто принципиально хотелось выпендриться и сделать не так, как в листингах, которые нам раздали. То есть попробовать что-то своё. Попробовал — получилось, интерфейс-то идентичный. Я там ещё и Hashtable вместо HashMap в одном месте заюзать умудрился. Один раз правда всего)

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

Не всё. Нам в универе рассказывали, в чём нюанс, и в учебнике по Java было это написано. И я это помню прекрасно. Синхронизированы только отдельные операции, общую синхронизацию нужно обеспечивать самостоятельно.

На ревью, кстати, код с Vector не пропустят.

Почему? Производительность? Так не всегда она является узким место. Я вот смотрел сейчас бенчмарк, между прочим, там разница конечно в два раза, но пока это 7ms и 14ms, с этим жить можно.
Когда использовал его в первый раз — просто принципиально хотелось выпендриться и сделать не так, как в листингах, которые нам раздали

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


Почему [Vector не пропустят на ревью]? Производительность? Так не всегда она является узким местом

Возможно когда-то такое не пропускали из-за производительности. Сейчас не пропустят по тем же причинам, по которым не пропускают плохо отформатированный код. Видим Vector — отправляем реквест на доработку.

Возможно когда-то такое не пропускали из-за производительности.

Ещё раз — нам никто из преподов категорически не запрещал использовать векторы (хотя упоминали, что у них довольно плохо с производительностью). Это был 2010-ый год. Java SE 6, на минутку :)

по которым не пропускают плохо отформатированный код

А не проще его доформатировать и принять? Тем более, сейчас есть всякие линтеры и средства бьютификации.
Ещё раз — нам никто из преподов категорически не запрещал использовать векторы

В IT с хорошими преподавателями серьёзная проблема. Те, кто разбирается в предмете редко занимаются преподавательской деятельностью, увы ((.


А не проще его доформатировать и принять?

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

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

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

Предыдущий комментатор говорит про далёкость преподавателей (в том числе ваших аспирантов) от промышленной разработки. Это сказывается и сильно на том, какой и как они дают материал. И да, Vector нерекомендован к применению самими разработчиками java.


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

Предыдущий комментатор говорит про далёкость преподавателей (в том числе ваших аспирантов) от промышленной разработки.

Я бы не сказал так. Тот парень в «ЛАНИТ-Теркоме» работал. Правда, его основной язык таки C++ :)

требования к лабам существенно ниже, чем требования к промышленным программам

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

У него не просто основной язык c++, он в принципе работал(ет) в компании, которая занимается преимущественно разработкой на этом языке (ещё у них там есть мобильщики, ага… но это свой отдельный мир всё же).
В общем вопрос в том, что применять в java технологии c++… это по меньшей мере странно.


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

Привидите пример вашей лабы:


  • какие задачи решает?
  • насколько критична скорость/производительность/потребление?
  • что будет, если будет 100/1000/10000 и больше запросов в минут?
В общем вопрос в том, что применять в java технологии c++… это по меньшей мере странно.

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

Привидите пример вашей лабы

Ну, она не совсем лаба, а семестровая/курсовая, но не суть, не будем раздувать значимость :)

Визуализатор алгоритмов на графах. Задача — выполнять алгоритмы, подсвечивая в риалтайме состояние рёбер и вершин, вести логи операций. Есть встроенный редактор графов и удалённое хранение на сервере даже (не помню уже, зачем это делал). Соответственно, есть сервер под это дело в виде отдельной утилиты (с GUI). Он тоже использует векторы. Но я никогда не проводил нагрузочного тестирования всего этого. Скажем так, 1 клиент с 8-10 запросами в секунду (всего порядка 25-30 запросов, передача данных построчно в текстовом формате без использования даже HTTP протокола) — это не нагрузка.
Но меня он за код с векторами по рукам не бил, я вот о чём. Просто всех призывал учитывать, когда что лучше применять (в том числе учитывая то, нужна ли многопоточность).

А опытный джавист по рукам бы тоже не бил, но призывал всех не использовать Vector, если нет понимания зачем это надо. А если есть понимание, зачем нужна многопоточность, то призывал бы использовать другие решения (вплоть до велосипедов), но не использовать Vector, ибо он многие проблемы решить не способен, но вызывает ложное ощущение защищённости.


Визуализатор алгоритмов на графах. ...

Т.е. получаем:


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

есть подозрение, что jvm у вас кушает больше, чем ваша программа
Не исключаю, что так и есть :)

а что за сервер, не подскажете (какие библиотеки, протокол, ...)?
Никаких библиотек. Текстовый протокол собственного сочинения, обмен через сокеты. И я прекрасно помню, там была проблема нарушения порядка прохождения отдельных запросов (отправляем 1, 2, 3, ..., 10, приходит 3, 4, 1, 6, 5, ...). Я не знал, как пофиксить это по уму, поэтому просто ввёл в протокол нумерацию строк. Кстати, новый коннекшен на каждую строку не делался, просто шла запись в стандартный PrintWriter через println. Могу покопаться в коде и посмотреть, как там было сделано.
Ну у нас по практике преподы были молодые (аспирант по сути). Так что книжки они читали тоже довольно новые, на возраст тут не спишешь.

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


Мне всё-таки кажется, это Вы излишне категоричны в суждениях.

Я категоричен, но не излишне.


То, что вектор неоптимальный вариант и более медленное решение — не мешает его применять

Именно это и мешает.


и получать работающий, и даже не глючащий продукт

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


Опять же — я применял его столько лет

Самое время перестать ))


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

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

Я категоричен, но не излишне.

Категоричность — это плохо :)

Именно это и мешает.

Нисколько. Ваша позиция сейчас напоминает позицию человека, который призывал бы использовать ассемблер вместо C/C++, потому что «так быстрее работает и легче контролировать результат».

Самое время перестать ))

С чего вдруг? Работает же. И даже если его «выпилят» в будущих версиях JVM совсем — те проекты, которые я писал под Java 1.6, так и останутся работать под 1.6 (в крайнем случае, под 1.7). Так что даже это не проблема.

Проблем на код ревью у вас не было либо потому, что не было код ревью

Да, их не было. Было тестирование собственными силами, чтобы понять, есть ли ошибки, и достаточно ли всё оптимально работает. В том числе и в плане скорости.

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

Браво, вы наконец-то это поняли. Так зачем тогда там что-то переписывать, раз она не критична?)
Нисколько. Ваша позиция сейчас напоминает позицию человека, который призывал бы использовать ассемблер вместо C/C++, потому что «так быстрее работает и легче контролировать результат».

Если бы ассемблер и C/C++ ничем, кроме названия не отличались, ваша аналогия была бы хорошей. В данном случае она плохая.


Так зачем тогда там что-то переписывать, раз она [производительность] не критична?)

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

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

Что интересно, и у LinkedList точно такой же интерфейс.


Разница только в производительности

И с LinkedList у ArrayList разница в производительности и ещё в количестве используемой памяти. Но с процессом чтения кода это не связано никак.


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

Что интересно, и у LinkedList точно такой же интерфейс.

И это хорошо. Специально же так спроектировано.

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

Между этими двумя коллекциями разница ещё меньше. Только вот час назад читал отличный вопрос на STO на эту тему :)

По сути, зависит от того, что нам нужно делать чаще: удаление/вставку или доступ к произвольному элементу (да, вставка в LinkedList тоже побыстрее, поиск по нему в среднем N/4, а в случае с ArrayList нам нужно делать сдвиг хвоста, и там в среднем N/2). В плане обхода — вообще без разницы. Оверхед по памяти — есть, но крайне мал, и чем меньше список, тем он меньше в абсолютном значении.

В моём коде, который я писал для браузерного движка, прямой доступ к элементу по номеру почти никогда не используется. Там везде только обходы, поэтому что именно использовать — там почти всё равно (не считая оверхеда по памяти у LinkedList).
Между этими двумя коллекциями разница ещё меньше.

Разница между LinkedList и ArrayList огромна.


В плане обхода — вообще без разницы.

Разница большая, LinkedList не ложится в кеш.


Оверхед по памяти — есть, но крайне мал

LinkedList занимает в памяти где-то в 6 раз больше места, чем ArrayList.


Там везде только обходы, поэтому что именно использовать — там почти всё равно

Так как там только обходы — использовать можно только ArrayList.


P. S. Прошу прощеня за краткость, стараюсь писать только главное. Работа ))

Разница между LinkedList и ArrayList огромна.

Не так и огромна. Посмотрите сами сравнения:
stackoverflow.com/questions/322715/when-to-use-linkedlist-over-arraylist-in-java

LinkedList занимает в памяти где-то в 6 раз больше места, чем ArrayList.

Простите, «лолшто»? Там оверхед в в два указателя на каждый элемент списка, и всё. Вы разве не в курсе, что память под указатель имеет постоянный размер независимо от типа (и количества полей и методов в классе, на который мы ссылаемся)?

Ссылка на объект или массив занимает одно 32-битное слово (4 байта) на 32-битной виртуальной машине JVM или Davlik. A null занимает то же место, что и ссылка. (Он должен, потому что нуль должен быть помещен в слот с типизированным типом, то есть поле экземпляра, локальную переменную и т.д.)

С другой стороны, объект занимает минимум 2 32-битных слова (8 байтов), а массив занимает минимум 3 32-битных слова (12 байтов). Фактический размер зависит от количества и типов полей для объекта, а также от количества и типов элементов для массива.

Для 64-разрядной JVM размер ссылки составляет 64 бита, если вы не настроили JVM на использование сжатых указателей.
Не так и огромна. Посмотрите сами сравнения:

Сравнение неполное, но даже там с самого начала написано, что почти всегда надо использовать ArrayList. В комментарии, кстати, есть уточнение про кеш.


Простите, «лолшто»?

"лолLinkedListбольшеArrayListгде-тов6раз" ))


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

Ну, то есть по вашему мнению LinkedList занимает всего в 3 раза больше, чем ArrayList?


Вы разве не в курсе, что память под указатель имеет постоянный размер независимо от типа (и количества полей и методов в классе, на который мы ссылаемся)?

Ладно, шутки в сторону. В ArrayList на один элемент приходится 1 указатель на объект, то есть 8 байт. В LinkedList — указатель на объект — 8 байт, указатель на следующую ноду — 8 байт, указатель на предыдущую ноду — 8 байт, оверхед на объект с нодой — 16 байт.


Это у нас получает разница в 5 раз. По умолчанию в джаве включена компрессия указателей. Тогда на указатель приходится 4 байта и разница получается не в 5, а в 7 раз. Плюс могут быть различия в зависимости от конкретной реализации JVM. Такие дела.

А если у меня вообще поток всего один, и никто никого не блокирует? Можно ещё раз на пальцах, чем Vector медленнее ArrayList в случае одного потока?

На примере извлечение элемента i:
ArrayList:
Операция 1: берём указатель на внутренний массив (лёгкая операция в малое количество циклов)
Операция 2: извлекаем из массива элемент i (лёгкая операция в малое количество циклов)
Vector:
Операция 1: Входим в монитор (тяжёлая операция в существенно большее количество циклов)
Операция 2: Получаем указатель на внутренний массив (лёгкая операция в малое количество циклов)
Операция 3: Извлекаем элемент i из массива (лёгкая операция в малое количество циклов)
Операция 4: Освобождаем монитор (не помню точно, насчёт сложности операции)
Вот и посчитайте, что выполнится быстрее. Пример приведён исключительно для однопоточного приложения. Для многопоточного доступа (если у нас только чтение — то можно же и из ArrayList-а читать) там будут ещё нюансы, что читает одновременно только один поток, а остальные тупо стоят ждут.


Создание итератора — в самом деле лишние накладные расходы, которых можно избежать. Зачем нам итератор? От него выигрыш только в случае использования LinkedList. Но если мы решим его использовать, то и несколько циклов в этот момент можно будет переписать, которые с ним работают. В чём проблема-то?

Потому что, чем меньше мест где можно накосячить — тем меньше багов в программе. Foreach не даёт возможности накосячить, for через интовый итератор — только в путь. При этом проигрышь по производительности от итератора в большинстве случаев не ощущается от слова никак. А вот там, где ощутили — там и нужна оптимизация. В общем code convention — они не просто так придуманы.


И что тут хорошего? Ошибка в консоль, вылет из метода по не пойманному исключению, программа у пользователя «упала». Может лучше всё-таки отработать с чуть устаревшими данными?

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


А ещё лучше — ещё на этапе написания кода подумать о том, что будет, если коллекцию кто-то попытается изменить. И вот здесь как раз пригодится CopyOnWriteArrayList, о котором Вы выше упоминали. Или можно самому вручную создать копию коллекции, и обходить уже её (в противном случае мы вылетим с ошибкой, если у нас итератор!).

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


Так никто и не спорит! Там же выше шла дискуссия о том, нужно ли использовать итератор, если он даёт оверхед. Моё мнение — если можно на этом сэкономить, то не стоит: обход по индексам, в случае, если соблюдены все меры предосторожности, даст тот же эффект в случае не списка.

Ещё раз — да оверхед по стоимости выполнения (копеечный в общем-то — и по памяти и по процессору), который обеспечивает уменьшение мест для появления багов. Право слово — оно того стоит в 99% ситуаций.


Да Вы оптимист! У меня не самый большой курсовой проект комплилися на среднем железе (окей, на довольно слабом железе для тех лет) секунд 7-8. Это простой проект. А если что-то тяжёлое? Тут и 1-2 секунды можно лишних получить, особенно если плохой HDD вместо SSD.

В java как-то принято в модульность. Реально проектов на 100 тысяч строк и больше не так уж и много, но даже эти проекты собираются за пару минут. Вот тесты могут крутиться уже существенно дольше. И я говорил про оверхед от единичного использования синтаксического сахара.


Онлайновые — это какие?

Онлайновые — это которые IDE запускает во время написания кода и/или простоя самостоятельно.


Там имели в виду случай, когда в заголовке или теле цикла перепутана буква итератора. Как минимум любая IDE подчеркнёт ошибку, если мы напишем j вместо i, а такой переменной у нас нет.

А если такая переменная есть?


Да, бывают случаи вложенных циклов, бывает, когда переменная j есть внутри тела цикла, и мы опечатались в каком-то индексе. Ну а отладка на что? Точки останова? Юнит-тесты, в конце концов? Обычное тестирование «руками» на нескольких наборах данных? Такая ошибка обычно всплывает на первом же прогоне!

Простите, вы собираетесь каждый кусок кода вручную тестировать? Иначе зачем вам эти самые "отладка" и "точки останова"? Нет на это времени практически никогда. К такому способу тестирования прибегают в 2х случаях: есть бага, но не до конца понятно, в какой момент алгоритм лажает, или код совсем уж труднотестируем автоматически — так вручную на паре-тройке наборов прогоняется… Юнит-тесты… Вы слышали о 100% покрытии не в TDD? А большинство работает не по TDD. А вы в курсе, что реально все случае проверить нереально, именно поэтому появилась такая штука как "мутационное тестирование"? В общем способов-то обезопаситься много… но вот foreach реально тупо дешевле. Его использования занимает условно секунду, а тесты/юнит-тесты/прочие радости — минуты, часы, ...


Вы что, за раз добавляете и коммитите 10k строк? Нет, вы обычно добавляете строк 100-200, ну в крайнем случае 500. А длина одной функции вообще в идеале должна быть строк 40-50, не больше. И циклов там — ну максимум 2-3. К чему тут обсуждать общий размер кодовой базы проекта вообще?

Ну бывает, что и по 2к строк за раз в коммит уходит, пусть и крайне редко… Средний коммит, да — 100-400 строк. А длина функции больше 10 строк — это уже сигнал внимательно на неё посмотреть и по возможности разбить… Вот только как всегда, есть нюанс: баги привносятся чаще всего не в том месте, которое изменяют, а в те места, которые от него зависят. И чем больше кодовая база, тем больше случаев взаимного использования разных кусков кода. А опечатки "замыленый" глаз банально не видит даже в 10 строчках (проверено неоднократно).


Опять Вы про что-то не то говорите. Стандарт кодирования — это скорее про правила оформления кода.

Вы не поверите, но использование (или не использование) синтаксического сахара — это тоже часть стандартов кодирования.


Но цикл for-то тут причём? Это вполне себе легитимная конструкция языка Java!

Ну так кто же заставляет от цикла-то отказываться? Только вот количество возможных вариантов его использования снижаются сознательно — выше уже неоднократно писал почему


Это не какой-нибудь goto, который кое-где ещё есть, но использовать его не советуют.

Вот 90% говорящих про вред goto никогда не пользовались goto. В грамотных руках — отличнейшая инструкция… а в ассемблере — так и вовсе никуда без неё.


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

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


Да, в Java он пришёл скорее всего как наследие из C/C++, но я не видел ещё ни одной статьи, которая утверждала бы, что «for в Java — это зло, по возможности никогда его не используйте».

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

Входим в монитор (тяжёлая операция в существенно большее количество циклов)

Спасибо, и правда наглядно. Я примерно так и представлял себе работу вектора. Но я не знаю абсолютно, как в Java устроены мониторы. Надо бы почитать. Просто может ведь оказаться, что не такая уж это страшно тяжёлая операция, как многим кажется :) Это ведь всего лишь специальный объект со своими методами и полями. И если одновременно запущенных потоков — минимум, то на что там может уйти так уж много процессорных тактов, я так и не понимаю.

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

Так я ж писал — нельзя серьёзный алгоритм (который может привести к серьёзным проблемам из-за багов) пихать в прод, толком не протестив. Особенно если программа многопоточная. Сначала юнит-тесты хотя бы сделать и прогнать надо… И даже с точки зрения самого алгоритма — ваш подход не решит проблему, а только сделает её более явной и заметной. А чтобы её решить, надо сам код переписывать. например, перед обходом коллекции делать копию, как я предложил выше.

Половина багов возникает по невнимательности, вторая половина — при изменении изменении зависимого/зависящего от этого куска кода.

За первое надо по рукам бить, второе — пытаться поймать на тестах. Ну или смириться с багами, которые вылезут потом :)

И я говорил про оверхед от единичного использования синтаксического сахара.

Только мест, где Вы будете его использовать, намного больше одного. И да, я вполне представляю проект, которые даже на сегодняшнем железе будет собираться в районе минуты (раз мой собирался 8 секунд при своём малом размере). Наверное, таких проектов даже немало.

А вы в курсе, что реально все случае проверить нереально, именно поэтому появилась такая штука как «мутационное тестирование»?

Все — не реально, но все имхо как правило проверять и нет необходимости. Про мутационное тестирование увы не читал :)

К такому способу тестирования прибегают в 2х случаях: есть бага, но не до конца понятно, в какой момент алгоритм лажает, или код совсем уж труднотестируем автоматически — так вручную на паре-тройке наборов прогоняется…

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

А длина функции больше 10 строк — это уже сигнал внимательно на неё посмотреть и по возможности разбить…

Вы говорите прямо как нас в вузе учили… Да вот только жаль у меня пока не выходит таких коротких функций в реальных проектах, даже там, где логика очень простая :) Примерно 25-30 строк получается.

В грамотных руках — отличнейшая инструкция…

Да-да, нам так же говорили. Я вроде бы даже видел её где-то в исходниках JDK, кажется. Сам лично правда не использовал, не довелось как-то :)

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

Давайте ещё раз. Я охотно верю, что стайлгайды могут многое запрещать, или наоборот, требовать. В том числе использование синтаксического сахара. Но. Обход массива без использования итератора — не такой страшный грех, как goto, всё-таки, на мой взгляд. Возвращаясь к началу — Вы вроде так и не смогли назвать сценарий, где мы получим баг, кроме опечатки в букве (что совсем уж рука-лицо и возможно только при наличии обеих переменных в текущей области видимости) и наличия нескольких потоков. Я вообще говорю про однопоточный вариант — и даже в многопоточном случае использование итератора не избавит от необходимости делать коллекцию иммутабельной каким-либо способом, иначе у нас сгенерируется исключение, и обход массива прервётся, а нам это не годится.

Ну и напоследок. Мне вот очень приятно и привычно видеть обход любой коллекции глазами в коде как for и буковки i (ну привычка такая за много лет сформировалась уже). Использование итератора в чистом виде подразумевает или использование while (и одна доп. строка сверху для создания итератора), или использование for без третьего выражения

for (Iterator it = list.iterator(); it.hasNext(); ) 

Слава богу, конечно, что есть вариант с foreach, это реально позволяет не использовать while и не добавлять лишние строки в код над циклом.
Но я не знаю абсолютно, как в Java устроены мониторы. Надо бы почитать. Просто может ведь оказаться, что не такая уж это страшно тяжёлая операция, как многим кажется :) Это ведь всего лишь специальный объект со своими методами и полями. И если одновременно запущенных потоков — минимум, то на что там может уйти так уж много процессорных тактов, я так и не понимаю.

Смотрите: у нас неизвестная конфигурация машины, например простенький компьютер в серверной стойке — 4 процессора по 4 ядра по 2 потока на каждое. А теперь нам надо удостовериться, что кеш по объекту одинаковый на всех этих потоках. Я не знаю точную реализацию монитора в java (да и зависит это от jvm), но возьмём простейший случай — по аналогии с volatile переменными: при каждом обращении к монитору мы должны загрузить (а после окончания операции — выгрузить) состояние из хипа. Т.е. процессор сбивается с текущей работы и начинает загрузку данных из RAM -> l3 кеш -> l2 кеш -> l1 кеш, после чего возвращается к выполнению инструкций дальше. В интернете достаточно много инфы по сравнению скорости доступа к каждому виду памяти — поищите, если интересно.
Т.е. в худшем случае (если массив не подгружен в текущий кеш) для вектора будет следующая процедура:


  • подгрузка данных монитора из RAM,
  • если монитор свободен — обновление данных монитора в RAM (если нет — вешаем поток и ждём сигнала и это совсем уже не быстрая процедура)
  • подгрузка или выгрузка данных массив из/в RAM (в зависимости от выполняемой операции… но это если кешей нет, а если нужный участок массива в кеше — в RAM не идём)
  • (вот в этой опреации не уверен, но по идее должна быть) загрузка данных монитора из RAM (чтобы освободить следующий поток, если есть такой)
  • сохранение данных монитора в RAM

Это приблизительная схема, как оно реально работает — это надо у разработчиков jvm уточнять.


Так я ж писал — нельзя серьёзный алгоритм (который может привести к серьёзным проблемам из-за багов) пихать в прод, толком не протестив.

Вы точно живёте не в мире розовых пони? Большинство заказчиков не готовы ждать даже просто 100%-ного покрытия тестами...


Особенно если программа многопоточная. Сначала юнит-тесты хотя бы сделать и прогнать надо…

юнит-тесты ничего не проверяют для многопоточной среды. Точнее не гарантируют качественную проверку. Банально во время теста jvm может работать на одном единственном ядре компьютера и фактически будет работать в однопоточном режиме.


И даже с точки зрения самого алгоритма — ваш подход не решит проблему, а только сделает её более явной и заметной.

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


А чтобы её решить, надо сам код переписывать. например, перед обходом коллекции делать копию, как я предложил выше.

Нафиг-нафиг так делать в обычном режиме. Велосипеды это почти всегда плохо. Велосипеды хорошо, когда готового хорошего решения не существует. Или когда они совсем не подходят под какую-то странную ситуацию. А чтобы переписать код — нужно о проблеме узнать (возвращаемся к выбрасыванию логируемого исключения). Я же говорю — это основная проблема, потому что чаще ломается не новый код, а зависимый от изменённого… ну или изменённый, к которому кто-то обращается не по новому протоколу, а этого не заметили.


За первое надо по рукам бить, второе — пытаться поймать на тестах. Ну или смириться с багами, которые вылезут потом :)

Когда искусственный интелект успел захватить мир? Я что-то не заметил, простите. Свойство биомассы таково, что "любой человек допускает ошибки". А ещё бывают криво прописанные требования. Тесты — тоже не панацея. Да и правильный стиль кодирования тоже, но в сумме это позволяет неплохо так повышать качество кода. Никто ж не говорит, что можно ляпать ошибки или не тестировать...


Только мест, где Вы будете его использовать, намного больше одного. И да, я вполне представляю проект, которые даже на сегодняшнем железе будет собираться в районе минуты (раз мой собирался 8 секунд при своём малом размере). Наверное, таких проектов даже немало.

Вы сейчас про сборку или про компиляцию? На сборку саму по себе синтаксический сахар вообще никак не влияет, только на компиляцию. Ваш проект, полюбому, компилировался пару-тройку секунд от силы.
Среднее время сборки не очень крупного проекта (не включая время тестирования) — 30-50 секунд на компьютере с hdd. А вот тесты у меня на текущем проекте ~8 минут суммарно гоняются… Так что те наносекунды, которые сожрёт синтаксический сахар меня совсем не интересуют. (даже если там будут тысячи вхождений — затраченное время всё равно окажется на уровне миллисекунд).


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

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


Вы говорите прямо как нас в вузе учили… Да вот только жаль у меня пока не выходит таких коротких функций в реальных проектах, даже там, где логика очень простая :) Примерно 25-30 строк получается.

Ну значит вам относительно повезло с преподами. А Роберт наш Мартин в своей книжке (чистый код — рекомендуется к прочтению) вообще ратует за функции не длиннее 5 строк, если я правильно помню. Но это на мой вкус — реально уж совсем мельчить. И да, изредка я не против существования функций 20-30 строк, но там должна быть какая-то уж совсем своя логика, которую трудно разбить на подшаги...


Давайте ещё раз. Я охотно верю, что стайлгайды могут многое запрещать, или наоборот, требовать. В том числе использование синтаксического сахара. Но. Обход массива без использования итератора — не такой страшный грех, как goto, всё-таки, на мой взгляд.

Нарушение принятых на проекте конвенций — как раз того же уровня грех (ибо goto запрещён теми же стайлгайдами). Ну и как изначально писали люди — после небольшого привыкания (это если первый раз видите foreach, а раньше пользовались for на индексных целочисленных итераторах) это банально легче читается. А чем легче читается — тем меньше ошибок. Правда-правда. Меньше шансов перепутать переменную индекса (ибо 0), меньше шансов перепутать переменную в которую читается элемент массива (ибо в объявлении цикла), меньше шансов промахнуться мимо нужной переменной в слачае обработки элемента массива.


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

По мне — и этих двух ситуаций хватает, чтобы предпочесть foreach


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

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


Ну и напоследок. Мне вот очень приятно и привычно видеть обход любой коллекции глазами в коде как for и буковки i (ну привычка такая за много лет сформировалась уже).

Поработайте с месяцок только с foreach и вам уже перестанет этот вариант казаться таким уж удобным. Правда. Большинство к этому приходят.


Использование итератора в чистом виде подразумевает или использование while (и одна доп. строка сверху для создания итератора), или использование for без третьего выражения

Ну что вы уж так-то?! Ведь синтаксический сахар foreach раскладывается примерно в следующую картину:


for (Iterator it = list.iterator(); it.hasNext(); SomeClass element = it.next()) {...}

Ну или на while можно аналогичным образом написать.


PS и я бы не сказал, что foreach используется всегда. Приведённый мной пример можно использовать, если есть потребность модифицировать массив (итератор позволяет, как минимум, удалять текущий элемент… возможно поддерживается и операция вставки до/после, но тут я ничего сказать не могу — слишком редко пользуются итератором… впрочем если коллекция такого не позволяет, то попытка изменения через итератор выбросит исключение :-)

Т.е. в худшем случае (если массив не подгружен в текущий кеш) для вектора будет следующая процедура

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

Также хотел бы отметить, что и само обращение к данным иногда идёт через RAM (если поле volatile). И я так понимаю, в случае с Vector JVM попытается обновлять данные массива именно в RAM при каждой записи, чтобы не было проблем у других потоков. Или же такое обновление будет только перед чтением (когда актуальные данные потребуются другому потоку)?

Большинство заказчиков не готовы ждать даже просто 100%-ного покрытия тестами...

Ну позвольте, где я писал про 100%? И вообще, заказчик часто в это вовсе не лезет, ибо не разбирается — и степень покрытия остаётся чисто на усмотрение разработчика. Как по мне, процентов 60-70 уже неплохо.

юнит-тесты ничего не проверяют для многопоточной среды. Точнее не гарантируют качественную проверку. Банально во время теста jvm может работать на одном единственном ядре компьютера и фактически будет работать в однопоточном режиме.

Ясно. А есть какие-то способы тестирования многопоточных программ (автоматизированные)?

это основная проблема, потому что чаще ломается не новый код, а зависимый от изменённого…

И в этот момент мне снова показалось, что хороший юнит-тест, проверяющий совокупную работу нескольких логических модулей в связке, мог бы такие проблемы быстро выявить… Но это я теоретизирую :)

Вы сейчас про сборку или про компиляцию? На сборку саму по себе синтаксический сахар вообще никак не влияет, только на компиляцию.

Про всё в сумме. Команда Build в контекстном меню проекта :)

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

Вот здесь вообще Вас не понял. Лень — это использовать дебаг, или лень когда его не используют? Ваш метод явно сложнее, дольше и контринтуитивнее. Смотрите, у нас идёт какая-то хитрая работа с индексами, и мы знаем, что у нас опечатка, возможно несколько раз. Чем хуже поставить брейкпоинт и посмотреть на реальные значения индексов по сравнению с исправлением «на глазок» и последующим перепрогоном теста? Тем более, если код свежий или вообще писался прямо только что, теста по нему может не быть от слова «совсем».

И да, изредка я не против существования функций 20-30 строк, но там должна быть какая-то уж совсем своя логика, которую трудно разбить на подшаги...

Кстати, когда я писал основу для браузерного движка, у меня получались кошмарно огромные функции. Главной проблемой разбиения на более мелкие методы было то, что в рамках метода у меня доступен целый набор локальных переменных, которые в случае разбиения на несколько вспомогательных методов нужно как-то в них передавать (а их много, и это приведёт к совершенно кошмарным сигнатурам). Делать эти значения полями класса — как-то совсем моветон. Как бы Вы отрефакторили такой длинный метод (речь идёт о Java)?

меньше шансов перепутать переменную в которую читается элемент массива (ибо в объявлении цикла)

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

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

Когда реально плевать — и обычный for не навредит, т.к. один поток. Когда не плевать — согласен насчёт того, что быстрее и легче продиагностировать.

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

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

Ну что вы уж так-то?! Ведь синтаксический сахар foreach раскладывается примерно в следующую картину

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

итератор позволяет, как минимум, удалять текущий элемент

Спасибо, я как-то про это забыл. Тогда я вообще теряю суть — зачем итератор контролирует состояние (модификацию коллекции другими потоками), если он позволяет её модифицировать при обходе в текущем потоке? Я думал смысл как раз в полной иммутабельности при обходе. Я правильно понимаю, что фишка в том, что в данном сценарии мы контролируем происходящие с коллекцией изменения?
Если у нас не серверное приложение, и процессор один (допустим, многоядерный) — то очень может быть, что часть этих пунктов не понадобится, если монитор находится в кэше процессора одного из уровней. Или он в принципе не может там оказаться? Я плохо в этом понимаю, объясните плиз.

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


Также хотел бы отметить, что и само обращение к данным иногда идёт через RAM (если поле volatile). И я так понимаю, в случае с Vector JVM попытается обновлять данные массива именно в RAM при каждой записи, чтобы не было проблем у других потоков. Или же такое обновление будет только перед чтением (когда актуальные данные потребуются другому потоку)?

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


Ну позвольте, где я писал про 100%? И вообще, заказчик часто в это вовсе не лезет, ибо не разбирается — и степень покрытия остаётся чисто на усмотрение разработчика. Как по мне, процентов 60-70 уже неплохо.

Ну вот и не будет у вас список покрыт тестами. А потом в нём ошибка. Какая лучше — с исключением или с испорченными боевыми данными?


Ясно. А есть какие-то способы тестирования многопоточных программ (автоматизированные)?

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


Вот здесь вообще Вас не понял. Лень — это использовать дебаг, или лень когда его не используют? Ваш метод явно сложнее, дольше и контринтуитивнее. Смотрите, у нас идёт какая-то хитрая работа с индексами, и мы знаем, что у нас опечатка, возможно несколько раз. Чем хуже поставить брейкпоинт и посмотреть на реальные значения индексов по сравнению с исправлением «на глазок» и последующим перепрогоном теста? Тем более, если код свежий или вообще писался прямо только что, теста по нему может не быть от слова «совсем».

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


Кстати, когда я писал основу для браузерного движка, у меня получались кошмарно огромные функции. Главной проблемой разбиения на более мелкие методы было то, что в рамках метода у меня доступен целый набор локальных переменных, которые в случае разбиения на несколько вспомогательных методов нужно как-то в них передавать (а их много, и это приведёт к совершенно кошмарным сигнатурам). Делать эти значения полями класса — как-то совсем моветон. Как бы Вы отрефакторили такой длинный метод (речь идёт о Java)?

Ну так я же не вижу реальный пример. Возможные пути:


  • вынести локальные переменные в какой-либо класс и уже их передавать параметром,
  • выделить относительно атомарные действия (даже если найдётся 4 атомарных действия в 2-3 строки длиной, то мы из 25 строк метода получим 17-21 строку, что уже много лучше
  • выбросить старый код и написать новый с новой архитектурой, в которой найти способ изначально ослабить взаимозависимость элементов.
    И да для web-движка это может быть малоэффективным, посколько там бывает много сопряжённых действий.

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

почитайте тут на хабре статейки про статический анализ (особенно выделяется рекламными постами одна компания-производитель дорогово пром. стат. анализатора, не помню сейчас её название — регулярно пишут… и проверка "похоже на опечатку" у них достаточно часто стреляет).


Когда реально плевать — и обычный for не навредит, т.к. один поток. Когда не плевать — согласен насчёт того, что быстрее и легче продиагностировать.

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


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

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


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

А тут уже вопрос к "бизнесу" — какое решение должно быть. Более того, в нормальной ситуации описаный пример будет легко поправить заиспользовав транзакции БД и правильно спроектировав процедуру удаления работника. Но если всё держать "в памяти" — то там тот ещё простор решений, от вашего версионирования до CopyOnWriteArrayList-а и велосипедах на каких-нибудь ReentrantLock.

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

Это и не нужно. Можно просто гонять всё в цикле много-много раз, и рано или поздно такая ситуация всплывёт сама :)

Если есть бага — то код писался ну точно не вот прям счас

С чего Вы взяли? У меня такое сплошь и рядом — написал код только что, а он творит какую-то дичь во время запуска :) И я не против написания теста в дальнейшем, но дебаг в данном случае правда нагляднее и быстрее.

выделяется рекламными постами одна компания-производитель дорогово пром. стат. анализатора, не помню сейчас её название — регулярно пишут… и проверка «похоже на опечатку» у них достаточно часто стреляет

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

до CopyOnWriteArrayList-а

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

И да для web-движка это может быть малоэффективным, посколько там бывает много сопряжённых действий.

Может и так. А может, я просто недостаточно думал над этим вопросом. Могу скинуть Вам в личку код функции отрисовки тени для прямоугольного блока, если интересно. Там вообще какая-то жесть на 100 строк почти.
Это и не нужно. Можно просто гонять всё в цикле много-много раз, и рано или поздно такая ситуация всплывёт сама :)

Если бы! Некоторые вещи даже в проде до существенного повышения нагрузки не сразу всплывают… Тот же классический Java-вский DateTimeFormatter (или как он там называется… запамятовал) — ведь два года в проде провисел, прежде чем начал изредка хрень вносить в данные!


С чего Вы взяли? У меня такое сплошь и рядом — написал код только что, а он творит какую-то дичь во время запуска :) И я не против написания теста в дальнейшем, но дебаг в данном случае правда нагляднее и быстрее.

С того, что бага — это ужепосле перехода формального модульного тестирования к полноценному функциональному. Если речь не про пет/учебный проект, то обычно этим занимается другой человек, а ты уже потерял контекст. А если вы говорите про кривой алгоритм во время модульного тестирования — то это не бага, а ошибка алгоритма… Чисто формальные различия.


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

Так я же сказал — плясать-то надо не от собственного понимания "как надо", а от требований бизнеса. Вспоминая пример — может бизнесу проще отдать последнюю зарплату дорогому сотруднику частично автоматически (а совсем без оплаты там ведь и не будет, если вдуматься в ситуацию, только вручную она там уже должна в такой ситуации обрабатываться), чем если мы потратим лишнюю день-неделю-месяц на разработку (а такое — сплошь и рядом в промышленной разработке).


Может и так. А может, я просто недостаточно думал над этим вопросом. Могу скинуть Вам в личку код функции отрисовки тени для прямоугольного блока, если интересно. Там вообще какая-то жесть на 100 строк почти.

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

Тот же классический Java-вский DateTimeFormatter (или как он там называется…

Называется он SimpleDateFormat, и он действительно не безопасен — потому что на самом деле™ форматирует не java.util.Date, а вовсе даже java.util.Calendar — и оный является полем класса, и на него бывает гонка, о чём есть заметки во всех javadoc'ах по этому семейству классов.


А вот DateTimeFormatter добавлен в java 8, и он потокобезопасный, и это важно — а то так будут ходить слухи, что в "Java нельзя даже нормально время отформатировать в многопоточном приложении". Правда, им уже нельзя форматировать ни java.util.Date, ни java.util.Calendar, ну да туда им и дорога.

и на него бывает гонка
А можно попроще, для новичка — как эта гонка выглядит в псевдокоде и при чём тут то, что кто-то является чьим-то полем?
Выглядит вот так:
class SimpleDateFormat {
    private Calendar calendar = Calendar.getInstance();

    public String format(Date theDate) {
        calendar.setTime(theDate);

        return format(calendar);
    }
    
    private String format(Calendar calendar) {
        ...
    }
}

/**....*/

class Main {
  static SimpleDateFormat formatter =
                   SimlpeDateFormat`yyyy-MM-dd`;

  public static int main(String[] args) {
    ExecutorService exc =
            Executors.newFixedThreadPool(10);

    IntStream.range(0, 1000).forEach(val -> {
      exc.execute(() -> {
        Date theDate = Date.from(
            Instant.now().plus(val, DAYS)
        );
        System.out.println(String.format(
            "Days in future %d, date %s",
            val,
            formatter.format(theDate);
        ));
      });
    });
  }
  exc.shutdown();
  exc.awaitTermination(
      Long.MAX_VALUE, TimeUnit.MILLISECONDS);
}


Мы собираемся печатать дату, которая отличается на val дней от сегодня. Но из-за вызова setTime внутри format(Date) на одном и том же объекте может получиться (а может и не получиться — именно поэтому баг такой гадкий) так, что напечатана будет какая-нибудь другая дата — например, если между вызовом setTime и format(Calendar) в одном треде произойдёт вызов setTime в другом треде, и это значение попадёт в кэш и будет загружено в первый тред. Тогда если сегодня — `2019-04-01`, мы можем увидеть в консоли что-то типа "Days in future 3, date 2019-04-26".
Спасибо, понятно.

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

И ещё — можно ли как-то решить эту проблему путём блокировок? Например, поставить где-то блоки synchronized? Я понимаю, что класс встроенный, и наследоваться от него — наверное идея не очень. Можно ли решить проблему, меняя только вызывающий код?

И с кэшем я не очень понял. Верно ли я понимаю, что экземпляр Calendar.getInstance() — один на все потоки? Тогда вообще всё тривиально конечно.

private Calendar calendar — это вроде бы ссылка на объект. Объект никуда не копируется и лежит в общей памяти. Один поток его изменил — объект изменился для всех потоков. Или объекты могут копироваться в кэш-память процессора как и скалярные переменные?
если у нас однопоточное приложение (это всё-таки наиболее частый случай), то проблем с этим классом нет?

Да. Если компилятор может доказать, что на доступ к полю не будет конкуренции, то он может и synchronized-блоки убрать. Ну, или облегчить.


Я понимаю, что класс встроенный, и наследоваться от него — наверное идея не очень

Нет проблемы наследоваться от любого не-final типа в JDK, если соблюдать LSP. Но если идея здесь — сделать собственный тип с мониторами на внутренний Calendar — думаю, гарантий не прибавится, т.к. нужно видеть полный набор операций, который конкретный поток делает с formatter'ом.


Конкретно эта именно проблема может — и должна, раз уж разработчики JDK не решают сами — быть решена на стороне вызывающего кода, например, синхронизацией на сам formatter — тогда будут гарантии, что каждый поток владеет состоянием formatter'а безраздельно, но при этом и программа становится, фактически, однопоточной:


synchronized(formatter) {
  System.out.println(String.format(
      "Days in future %d, date %s",
      val,
      formatter.format(theDate);
  ));
}

Верно ли я понимаю, что экземпляр Calendar.getInstance() — один на все потоки?

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


Или объекты могут копироваться в кэш-память процессора как и скалярные переменные?

Честно говоря, не уверен. Насколько я понимаю, так копироваться в кеш может ссылка на объект, и при этом не даётся никаких гарантий касаемо happens-before если ссылки/поля не выполняются в контексте какого-нибудь монитора, но я могу сильно ошибаться.


Зато вот нашёл статью про модель памяти, может, там есть ответ: https://habr.com/ru/company/golovachcourses/blog/221133/

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

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

но при этом и программа становится, фактически, однопоточной
Ну есть ещё вариант создавать по инстансу Calendar на каждый поток (но для этого опять же нужно наследоваться и переопределять логику). Возможно, так работать будет быстрее, но и памяти жрать в разы больше :)

Нет проблемы наследоваться от любого не-final типа в JDK, если соблюдать LSP.
Что такое LSP?

Я один раз попытался сделать наследование какого-то класса, потому что стояла очень сложная задача, которую иначе нормально было не решить (что-то связанное с Java2D, вроде нужна была своя реализация скруглённого прямоугольника, потому что дефолтная имеет серьёзные косяки).

Это был настоящий ад — в первую очередь потому, что значительная часть методов, которые использовались в переопределяемых методах, имели модификатор private. И при этом мне нужно было их вызывать. Я не нашёл способа лучше, как копипастить код существующей реализации…

А в другой раз (когда я пытался экспериментировать с «низкоуровневыми» методами вывода строк, и пытался наследовать jLabel), было ещё того хуже: внутри наследуемого класса повсеместно использовался вспомогательный класс, который имел «пакетный», а не публичный доступ. И по понятным причинам я его подключить к себе не мог.
Так вот этот метод при наследовании можно было бы и переопределить.

К сожалению, нет, нельзя — мякотка проблемы находится не там, где происходит setTime, а внутри метода format(Calendar). И состоит она в том, что нет никакого такого метода — есть метод, работающий с полем Calendar, загружая его значение из ссылки this.calendar. Даже если бы мы что-то переопределили и клонировали бы, нам пришлось клонированный экземпляр вписать в поле this.calendar — нас это не спасёт от гонки. Тут может помочь разве что сделать сам публичный внешний метод format synchronized — но решение неполное, т.к. остаются все прочие способы получить доступ к this.calendar, которые уже просто так синхронизировать не получится, бо мы не имеем над ними контроля. Решение поможет в моём псевдокоде, но создаст только иллюзию безопасности в общем случае.


Вы ведь привели проблемный участок кода самого класса SimpleDateFormat

Я привёл только самый простой пример. Есть ещё варианты, когда треды вызывают formatter::setTimeZone или formatter::setLenient перед вызовом formatter::format, и там тоже будут такие же по сути проблемы.


LSP

Liskov Substitution Principle


… Это был настоящий ад...

Этот опыт, что вы описываете, не о том, что сложно переопределить некий тип из JDK — он говорит о том, что сложно переиспользовать private-код из JDK. Здесь нет явной проблемы — в Java действительно не получится переопределить части, для которых не предусмотрена явно такая возможность, и это относится к вообще любому коду на Java.


Однако, ничто вам, в принципе, не помешает сделать


public class MyImmutableList<E>
  extends ArrayList<E> {
  @Override
  public void set(int index, E element) {
    if (!Objects.equals(element, get(index))) {
      throw new UnsupportedOperationException();
    }
  }
}

И как-то так получить список, в который можно добавить элемент, но нельзя заменить элемент, при этом сам список можно будет передавать почти в любой код, и вести он себя будет в соответствии с контрактами ArrayList(+ ваша надстройка) — можно итерироваться, добавлять/удалять элементы, брать размер списка, но попытка заменить элемент или отсортировать — приведут к ошибке.

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

И как-то так получить список, в который можно добавить элемент, но нельзя заменить элемент, при этом сам список можно будет передавать почти в любой код, и вести он себя будет в соответствии с контрактами ArrayList(+ ваша надстройка) — можно итерироваться, добавлять/удалять элементы, брать размер списка, но попытка заменить элемент или отсортировать — приведут к ошибке.
Красивый пример. Но очень простой) Здесь ведь достаточно переопределения одного публичного метода.
Это в каком именно методе происходит?

Да вот в этом. Я вам точно говорю — снаружи синхронизировать будет куда проще.


Красивый пример. Но очень простой

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

Если речь не про пет/учебный проект, то обычно этим занимается другой человек, а ты уже потерял контекст. А если вы говорите про кривой алгоритм во время модульного тестирования — то это не бага, а ошибка алгоритма… Чисто формальные различия.
Да я в курсе про тестировщиков. Но всё равно не очень понимаю. Если в алгоритме нет формальной ошибки — откуда взяться багу? Плохая состыковка API двух разных модулей? Но такое тоже обычно на этапе компиляции всплывает всегда. Если только мы не гоняем что-то в сериализованном виде (например, по сети), и ошибка не закрадётся вот в эти самые данные перед их отправкой другому модулю (т.е. неверный формат исходящих данных).

лучше на гитхабе заведите открытый репо
Для TinyBrowser он есть. Могу дать ссылку

Вы почитайте про самые известные фейлы, некоторые из которых, например унесли реальные жизни, а потом говорите "откуда взяться багу". Как говорится — человеку свойственно ошибаться… а программы пишет человек. Тут и расхождение по бизнеслогике возможны и опечатки и неверно подобранный алгоритм и ещё вагон и маленькая тележка иных багов.


А можно попроще, для новичка — как эта гонка выглядит в псевдокоде и при чём тут то, что кто-то является чьим-то полем?

Опишу в виде примера, в SimpleDateFormat проблема похожая, но не так явно выглядящая. Есть класс A, у него есть поле, например int[] a. А внутри метод вида:


  this.a = a;
  StringBuilder sb = new StringBuilder();
  for (int i =0 ; i < this.a.length ; i++) {
    this.a[i] *= 2;
    sb.append(this.a[i]);
  }
  return sb.toString();
}

А теперь в параллельных потоках вызовем этот метод, в одном с массивом new int[] {2, 3, 4}, в другом с массивом new int[] {5, -2, 10}… и, допустим, случится так, что второй вызов произойдёт когда для первого пройдёт i=0 и перед i=1 (ну по какой-то причине нитка притормозила, например), получится что первый поток получит строку 4-420 (вместо ожидаемой 468), а второй поток получит строку 10-420 (как и ожидалось). Вот состояние, когда несколько потоков конкурируют за один и тот же ресурс и называется гонкой.


Там риски по безопасности сильно растут (особенно если это что-то антивирусное или связанное с передачей данных в облако). В своё время Dropbox вроде именно поэтому поддержку XP прекратил. А насчёт цены разработки — я бы всё же не согласился, не факт, что там всё становится прямо уж в разы сложнее. Что-то наоборот под старые ОС делать проще даже…

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


Ну не знаю. Я вот уже года 3 планирую прочитать книжку про программирование под Android. Как только научусь что-то более-менее писать — Android 2.3 точно буду поддерживать. Тем более у самого он стоит.

Ну вот вы из соображений "сам пользуюсь" "планируете" учитывать 2.3, но даже вы не планируете 2.1 (а то и 1.х), а будь у вас какой-нибудь 3.х/4.х/5.х — вы ба на той версии и остановились.


А почему? Если кому-то так нужны стримы и лямбды (хотя имхо это нужно редко) — ну есть 8-ая в конце концов. Но в основном и 7-ой хватает за глаза и за уши (ладно, с 6-кой я погорячился, она не умеет неблокирующий ввод-вывод толком, и менее гибко работает, например, с атрибутами файлов). В 7-ой версии с этим всё на порядок лучше и приятнее.

Ну вот и в каждой версии (точнее теперь — в каждой LTS версии) есть какие-то вкусняшки, ради которых стоит попробовать, например на 9ку переходить может показаться странным, а на 11, которая включает в себя 9ку — вполне себе, а там, например, собственая модульность, возможность формирования обрезаных пакетов установки (чтобы не тащить с собой всю jdk, если хочется это делать отдельной инсталяцией и не париться по поводу наличия той самой jdk на целевой машине), ещё там в промежутке где-то появился новый сборщик мусора и целая куча подкапотных изменений.


Так оно только в системном L&F — и естественно, работает только на винде. Не вижу причин, почему использовать Windows Forms или WPF можно (при этом разработчик приложения ничего не отчисляет Microsoft за возможность выводить их контролы на экране), а Swing — нет. Если JVM дёргает обычный Windows API в этом случае, то никакие лицензии не нарушены, вроде.

Фишка в том, что это работает на винде. В Linux/MacOs системный будет действительно системным, а не виндовым, соответственно ClearType-а там не будет, если его не поддержит сама система. L&F "а-ля виндовс" с собой технологию не потащит (и даже в винде не факт, что заработает).


transcengopher так и SimpleDateFormat можно пользоваться — другое дело, что нужно своими руками строить потокобезопасность.

и опечатки и неверно подобранный алгоритм
Так это всплывёт на юнит-тестах обязательно.

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

Фишка в том, что это работает на винде. В Linux/MacOs системный будет действительно системным, а не виндовым, соответственно ClearType-а там не будет, если его не поддержит сама система. L&F «а-ля виндовс» с собой технологию не потащит (и даже в винде не факт, что заработает).
А где я предлагал тащить виндовый ClearType повсюду?)) Я понимаю, что главная фишка Java — кроссплатформенность. Но конкретно я хотел именно под Windows иметь браузер с чётким выводом текста. Да ещё и под конкретную её версию (хотя тестировал код и на более новых, и с разным DPI в настройках) :)

По остальному согласен полностью.

Да, если вдруг захотите улучшить тот проект (там ещё до финиша ох как далеко) — то буду очень рад пуллреквестам :)

github.com/popov654/tinybrowser
Так это всплывёт на юнит-тестах обязательно.

при 100% покрытии, спровоцированном TDD — да, проблема опечаток будет решена. На текущий момент TDD распространена достаточно плохо. Проблема неверного алгоритма — в лучшем случае частично решена будет. Однако в части случаев получится так, что на тестовом наборе всё ок, а в проде — ошибки.


Спасибо, понятно. Ну тут на мой взгляд в момент вызова в начале метода надо копию массива делать, а не работать с тем, что есть. Или как-то сделать так, чтобы для каждого потока был свой экземпляр поля (кстати, так вообще можно?).

это была упрощёнyая иллюстрация того, что происходит в SimpleDateFormat. Как с этим борются? Ну три основных способа: а) каждый раз создаём новый SimpleDateFormat (в целом не очень оптимальное решение, но этот класс имеет не сильно большие накладные расходы по памяти… хотя вот по времени исполнения получается уже хуже), б) синхронизация вызовов объекта (и на этом участке получается однопоточное приложение) и в) упаковываем в ThreadLocal — этот объект позволяет создавать инстанс объекта для каждого потока индивидуально (тоже не без минусов — во-первых всё-таки объектов будет больше одного, во-вторых при неправильном обращении с ThreadLocal можно получить неплохую такую утечку памяти). Ну а в приведённом мной примере — да, действительно нужно было просто копию массива делать… или ещё лучше решение — просто не сохранять в переменные инстанса, а передавать по всей цепочки вызовов параметром… но иногда это сложно сделать архитектурно — если требуется много действий… но в такой ситуации надо всю архитектуру переделывать на самом деле.

Теперь есть ещё четвёртое решение — пользоваться чем-то более приятно написанным, чем старые DateTime-части JDK. Например, потокобезопасным форматтером:


  static DateTimeFormatter formatter = ...?profit

  public static String formatMyTime(Date date) {
    ZonedDateTime zdt = date.toInstant()
        .atZone(formatter.getZone());
    return formatter.format(zdt);
  }

В отсутствие Java8 можно "перебиваться" Joda. Если хочется совсем упороться — то взять Time4J.

До принятия йоды в JDK это было мало для кого вариант — всё же одно дело нативные сущности, другое — привнесённые. Удобство использования просто разное. Да и в йоде по удобству АПИ есть сложные моменты. Радует только то, что вопрос именно к удобству. Т.е. если говорить java 7 (и более ранних) — для них существуют по большей части предложенные мной решения. Да и в целом ваше решение — оно уже не решение проблемы потокобезопасного использования заданного класса — оно решение использовать что-то вместо него.

У меня, честно говоря, никогда не стоит прямо задачи "используй экземпляр этого класса потокобезопасно" (разве что в каком-нибудь тесте) — как правило, требование более высокое — "у нас неправильно форматируется время в час пик, почини".


Кстати, для именно более высоко сформулированной задачи в Java7 Joda тоже будет решением, потому что умеет вот так: DateTimeFormatter::print(long millisecond-instant)
— а значит без проблем работает где-нибудь в виде метода-утилиты, и не будет заставлять вас отказываться от использования Calendar'ов в API.


в йоде по удобству АПИ есть сложные моменты

Расскажите про это подробнее.

Ну как простейший пример — попробуйте без дополнительных телодвижений распарсить 2012-11-30 в LocalDateTime или OffsetDateTime. Вылетит исключение, что он не может создать нужные типы, потому что нет таких-то полей (вроде наличие часа в строке хватило бы, не помню уже). Это можно обойти донастроив парсер, чтобы он вставлял 0 если часы-минуты-секунды отсутствуют.

нельзя распарсить 2012-11-30 в LocalDateTime

Логично — ведь в строке не указано время, и не бывает "времени по умолчанию". У вас там дата — значит, работать надо с датой, LocalDate. Это, к слову, намного удобнее чем работать с "моментом, указывающим на начало дня, в базе он хранится как UTC, а клиенту надо будет показать тоже начало дня, но в его часовом поясе, смотри не перепутай".


То же самое с OffsetDateTime — какой часовой пояс вы предлагаете считать "поясом по умолчанию"? Если пояс сервера — юзайте LocalDateTime сразу. Статически задать пояс нельзя пока "Europe/Moscow" означает два или более разных сдвига в зависимости от хотелок политиков.


Я наоборот назову это более хорошим дизайном API — вы сразу знаете, что вы дали на вход и что вы получите в качестве результата. Не как раньше, где в принципе не было понятия каледнарной даты, нельзя было никак выразить требование "каждые два дня в 19:16", а Calendar.getInstance() мог вернуть вам буддийский календарь, и ничего вы с этим просто так не поделаете — сколько кода вы видели, который пишет new GregorianCalendar()?


А ваша проблема действительно решается "донастройкой парсера", и это делается один раз, в утилите:
Либо


var staticFormatter = new DateTimeFormatterBuilder()
    .append(DateTimeFormatter.ISO_DATE)
    .appendOptional(DateTimeFormatter.ISO_TIME)
    .parseDefaulting(ChronoField.NANO_OF_DAY, 0)
    .toFormater();

staticFormatter.parse("2012-11-30", LocalDateTime::from);

new DateTimeFormatterBuilder()
    .append(staticFormatter)
    .parseDefaulting(ChronoField.OFFSET_SECONDS,
//помните, что offset_seconds зависит от "сейчас"?
        ZoneId.systemDefault()
        .getRules()
        .getOffset(Instant.now())
        .get(ChronoField.OFFSET_SECONDS)
    ).parse("2012-11-30", OffsetDateTime::from);

Либо, раз уж так охота не знать, пользуетесь вы форматом для даты, момента или локального момента:



DateTimeFormatter.ofPattern(externalPattern)
    .parseBest(dateString,
        OffsetDateTime::from,
        parsed -> LocalDateTime.from(parsed)
            .atZone(ZoneId.systemDefault())
            .toOffsetDateTime(),
        parsed -> LocalDate.from(parsed)
            .atStartOfDay(ZoneId.systemDefault())
            .toOffsetDateTime()
    );
Статически задать пояс нельзя пока «Europe/Moscow» означает два или более разных сдвига в зависимости от хотелок политиков.
При чём тут хотелки политиков? В конкретный момент времени сдвиг для Москвы всегда однозначен, и для временных зон всё это хранится (вся история изменений). То есть для каждой временной метки в UTC можно однозначно посчитать её локальное представление. В чём здесь проблема-то?

То, что я вижу в коде выше, выглядит громоздко и страшно, как по мне…
То есть для каждой временной метки в UTC можно однозначно посчитать её локальное представление

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


выглядит громоздко и страшно, как по мне…

Код выглядит громоздко от того, что изначально постановка задачи предполагает, что кто-то должен сделать много допущений. Как вы (должно быть) знаете, OffsetDateTime — это как раз момент времени, специфическая его форма, когда часовой пояс представлен неким смещением относительно UTC. При этом, в строке "2012-11-30" содержится только дата. То есть, чтобы составить из этой даты момент времени, нам не хватает "всего-то" остатка совы — времени и смещения относительно UTC. Вы кому предлагаете эти данные "родить" — разработчикам стандартной библиотеки, которые о специфике вашей программы ничего не знают? Нет, согласно дизайну java.time допущений следует делать как можно меньше (в идеале — не делать вообще), и все необходимые данные нужно предоставить разработчику, так как это он лучше должен знать, какие допущения можно делать, а каких — нельзя. Вот второй блок кода как раз этим и занимается, кстати — говорит, что делать парсеру если данных недостаточно, а OffsetDateTime всё-таки нужен. Причём, вот это всё вообще можно вынести в соответствующую утилиту, назвать метод getOffsetDateTimeFromAnyString, и там в комментариях объяснить всю степень редисочности вашей внешней системы, которая меняет формат кодировки дат непредсказуемым образом.


С другой стороны, если вам всегда приходит yyyy-MM-dd, и вам, опять же, всегда нужен оттуда OffsetDateTime на момент начала дня в Мадриде, нет ничего проще:


private static
DateTimeFormatter frmt = DateTimeFormatter
    .ofPattern("yyyy-MM-dd");

public static
OffsetDateTime parse(String input) {
    return LocalDate.parse(input, frmt)
        .atStartOfDay(ZoneId.of("Europe/Madrid"));
        .toOffsetDateTime();
Спасибо, возьму на заметку. Похоже, подход и правда верный (хотя мне кажется, было бы неплохо, если бы указание всех этих зон и смещений от полуночи было опциональным, а по дефолту бралась бы полночь по Гринвичу). Или там так и реализовано, и эту цепочку вызовов можно не чейнить, если и правда нужен Лондон на начало суток?

Нет, именно всякоразличных умолчаний там практически нет. Пожалуй, кроме возможности получить
XxxDateTime.now(),
которое, по сути, XxxDateTime.now(Clock.system(ZoneId.systemDefault())
(время по системным часам в часовом поясе машины).


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


Если вы из просто даты всегда хотите получать момент в UTC (не Лондоне!) на начало суток, то самое простое что я могу придумать — это сделать один раз соответстующий парсер со значениями по умолчанию. Как-то так


new DateTimeFormatterBuilder()
  // или append(DateTimeFormatter.ISO_LOCAL_DATE)
  .appendPattern("yyyy-MM-dd")
  .parseDefaulting(ChronoField.NANO_OF_DAY, 0)
  .withZone(ZoneOffset.UTC)
  .build();

Это достаточно делать один раз и сохранить в статическое поле — новые парсеры, в отличие от старого SimpleDateFormat потокобезопасные. Но вот "умолчаний" в парсерах нет. Они даже часовой пояс машины не используют — потому что если парсер дёргать из нескольких потоков и вдруг кому-то придёт в голову светлая идея поменять TimeZone.default… я думаю, вы понимаете.

> при 100% покрытии, спровоцированном TDD — да, проблема опечаток будет решена.

Не решена, а уменьшится количество инцидентов. Банально одна и та же опечатка может быть допущена и в тесте, в и коде. Причём просто возвести в квадрат вероятность опечатки нельзя — нередко это связанные события, события причина которых в особенностях конкретного человека, клавиатуры или IDE.
UFO just landed and posted this here
почему закопали Vector

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

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

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

Никто его не использует.


Особенно, если синхронизация действительно нужна.

Особенно важно не использовать Vector, если нужна синхронизания.

UFO just landed and posted this here
Создать один итератор (константная, притом мизерная, память и практически константное и опять же мизерное время)

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


или превратить линейное время итерации в квадратичное,

А каким образом время итерации превратится в квадратичное? Если мы передадим туда не ArrayList, а что-то другое? Не то чтобы это совсем невероятно, но само наличие коллекции типа LinkedList, передаваемой туда, где ждут List — это уже очень подозрительно и обычно отсекается на уровне пул реквеста.

UFO just landed and posted this here
Повторюсь, что это [создание итератора для foreach] небольшие константные расходы

Да, совершенно верное. Но, если коллекция — очень маленький ArrayList то использование итератора легко может замедлить обход коллекции раза в 2 (пишу безответственно, не измерял), а потом ещё создаст нагрузку на сборщик мусора. Константные расходы это почти всегда хорошо, за исключением тех случаев, когда величина константы велика.


LinkedList редко, но используется.

Я не помню, когда видел последний раз и не заменил на ArrayList.


А еще не все коллекции бывают списками.

Ну как я понял мы тут говорим только об интерфейсе List.


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

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


Кстати, если подходить к вопросу педантично, то в случае с итераторами есть ещё вызов метода next у итератора, который пусть немного, но медленнее, чем инкремент i. ))

UFO just landed and posted this here
Как говорил Кнут, преждевременная оптимизация хуже преждевременной эякуляции.

Вы цитируйте, не стесняйтесь )). А лучше, я процитирую.


In established engineering disciplines a 12% improvement, easily obtained, is never considered marginal; and I believe the same viewpoint should prevail in software engineering.

На русский переводится примерно так:


В сложивщейся инженерной дисциплине улучшение на 12% легко получаемое никогда не считают незначительным; и я верю, что та же самая точка зрения должна господствовать в разработке программного обеспечения.

А теперь насчёт преждевременной оптимизации. У меня сложилось впечатление, что вы думаете, что кто-то прямо в процессе написания кода использует циклы вместо итераторов. Такое, конечно, бывает, но редко.


Обычно код запускают, профилируют, находят узкие места и, если одним из таких узких мест оказывается итерация по коллекции — с помощью IDE заменяют там foreach на стандартный for. А потом проверяют помогло, или нет.

UFO just landed and posted this here
Тут может быть противоположное мнение: пока не показано, что цикл for узкое место будем использовать его по умолчанию. Просто соглашение команды об умолчаниях.
UFO just landed and posted this here
Что лучше читается — дело привычки. Есть люди, для которых foreach читается хуже, потому что оставляет слишком много вопросов без детального изучения документации. Например порядок обхода
UFO just landed and posted this here
Смотрите, foreach подразумевает то, что о типе итерируемой сущности позаботится рантайм (или компилятор). В случае с JavaScript (я в основном пишу на нём), использование for… in, перебирающего все ключи объекта либо индексы массива — реально очень плохая идея, если у нас обычный массив. for всегда будет быстрее. JS правда, в отличие от Java, не компилируется в байт-код в общем случае (точнее, компилируется в него прямо перед исполнением, и время этой компиляции нам тоже важно).
UFO just landed and posted this here
Чем именно код портится от использования обычного цикла for? Ещё раз, опишу, как это работает в JS: при обходе через for key in obj (аналог forEach в Java) мы в переменную key получаем ключ. В случае объекта мы получим все поля (включая поля из цепочки прототипов, что может быть для нас лишним, поэтому в теле цикла нужно проверять, что у нас за поле), а в случае массива — там будут целочисленные индексы. И хотя в JS массив — это тоже объект, просто особого класса, всё же использование for… in влечёт некоторые дополнительные проверки. Как бы то ни было, на реальных бенчмарках, которые делали энтузиасты в разных браузерах в 2010-2011 году, производительность при использовании for… in проседала более чем вдвое. Собственно, тот же случай, что с использованием Vector, от использования которого вы меня здесь дружно отговариваете.

Да, Java — совсем другой язык, и там совсем другая картина. И best practices другие. Но просто у меня есть некоторые привычки (писать циклы именно так), и я пишу так абсолютно в любом языке, потому что единообразие — это удобно с точки зрения скорости кодинга и быстроты «переключения» на другой язык.

Как бек, с навыками фронта (не дотягиваюя до звания фуллстека) могу вам с уверенностью сказать: в каждом языке лучше применять best practices конкретно этого языка.
И for… in в js это совсем не то же самое, что foreach в java.


А я не знаю, почему его не сделали. Множествами я тоже не пользуюсь. Как по мне, это очень неудобная коллекция — например хотя бы потому, что для её обхода необходим итератор (то есть нельзя проитерироваться по ней в цикле for, что, я настаиваю, является самым интуитивным подходом). И не сделав метод get (хотя да, он не имеет смысла, потому что у элементов нет уникальных ключей, а если они будут, то это будет уже хэш-таблица), разработчики JDK серьёзно подпортили универсальность интерфейса, т.е. независимость реализации от типа используемой фактической коллекции.

Всё разработчики JDK очень грамотно посчитали — Set вполне имеет своё уникальное предназначение и лишние методы (а-ля get) ему не нужны. Ну а вы из-за своих привычек просто отказываетесь от полноценного использования языка.

Извините за глупый вопрос, и где же лучше всего использовать Set? Назовите реальный, не придуманный пример, плиз. Или хотя бы приближённый к реальности. Всё, что мне приходит на ум — решается проще и нагляднее с помощью Hashtable/Hashmap.
Hashtable/Hashmap

Да сколько можно! Во-первых не используйте слово Hashtable в приличном обществе, во-вторых названия классов — HashTable и HashMap. Меня от каждого такого вашего комментария как демона от святой воды трясёт ))


Извините за глупый вопрос, и где же лучше всего использовать Set? Назовите реальный, не придуманный пример, плиз

Везде, где вы не хотите писать дополнительные комментарии, что Map используется не как Map, а как Set. То есть любой случай, когда вам надо проверить есть ли объект у чего-то, а больше ничего не надо. Классический пример — принадлежность пользователя к какой-нибудь группе.

во-вторых названия классов — HashTable и HashMap
Извините, случайная опечатка. И кстати, про Hashtable вы совершенно не правы. Именно так, как я написал. Вот фрагмент кода из моего серверного модуля к GraphBuilder:

private Socket sock;
private static boolean guiEnabled = false;
private static int max_index = 0;
private static int last = -1;
private static String sessionName = "";
private static String sessionKey = "0";
private static Date writeTime = new Date();
private static String[] newGraph;
private static Vector<String[]> dataStorage =
     new Vector<String[]>();
private static Hashtable<String, Integer> names =
     new Hashtable<String, Integer>();

Везде, где вы не хотите писать дополнительные комментарии, что Map используется не как Map, а как Set. То есть любой случай, когда вам надо проверить есть ли объект у чего-то, а больше ничего не надо. Классический пример — принадлежность пользователя к какой-нибудь группе.
Не убедили. Смотрите, у нас есть некое хранилище, где объекты — это пользователи (вы только что предложили, да и я вчера об этом думал). Если мы выберем Set — то мы не сможем быстро получить конкретного пользователя по ключу. А если там подробные данные о нём, или например хранится его последний чат (если мы анонимный чат пишем)? Или если там в одном из полей хранится ID этого самого чата? Или список ID чатов? В итоге нам придётся обходить всё множество, и сложность будет линейной. Имхо, хэш-таблица решила бы проблему лучше.
Не убедили. Смотрите, у нас есть некое хранилище, где объекты — это пользователи (вы только что предложили, да и я вчера об этом думал).

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

А, тогда хороший пример. Хотя можно было бы просто сделать класс-наследник для Vector ArrayList с кастомным методом add, проверяющим значение на уникальность :)

Но наверное, использовать стандартные коллекции — правильнее.
Хотя можно было бы просто сделать класс-наследник для Vector ArrayList с кастомным методом add, проверяющим значение на уникальность :)

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

Я вам по большому секрету скажу — HashSet под капотом — HashMap, ага.


Почему HashSet, а не HashMap? А зачем мне лишние сущности? Это будет отвлекать от основной цели объекта, да и оптимизировать хранение "значения" будет не совсем просто — всё-таки не даром HashSet это специальная реализация HashMap под капотом.


Почему не HashTable — потому же, почему не Vector. Мне не нужен устаревший синхронизированный класс.


Зачем использовать? Кеш объектов, словарь объектов, список объектов — которые нужны или целиком, или в которых нужен поиск по объекту… И нужно гарантировать, что элемент в списке будет ровно один (а в некоторых случаях дубли просто противопоказаны).


Не вижу никакой проблемы в поддержке кода с циклом for на индексах вместо цикла forEach. Вы какую-то проблему из пальца высасываете, честное слово…

Ну вот зачем вы свою психотравму из js тащите в java?! Объясню просто: нет никакого foreach в Java, есть синтаксический сахар for для обхода коллекции. На этом предлагаю спор о целесообразности тащить ужасные привычки из одного языка в другой закрыть.


PS Кстати, а стримов вы наверное совсем боитесь?

да и оптимизировать хранение «значения» будет не совсем просто
Не очень понял, что вы имеете в виду под оптимизацией. Быстрая проверка наличия объекта именно по объекту, а не по ключу? Окей, допустим. Возможно, если он оптимизирован лучше, чем HashMap, то и правда лучше использовать его. Про Hashtable понятно. Опять же, я использовал в одном проекте именно Hashtable, но не просто так: там хэш-таблица была в серверном модуле, и в неё действительно могли читать (а также одновременно в неё писать) несколько потоков. Я понимаю, что это не панацея, и у меня всё равно могло всё поломаться, потому что надо полноценные блокировки было вводить. Но имхо если бы я использовал HashMap, поломалось бы ещё быстрее и ещё хуже…

которые нужны или целиком, или в которых нужен поиск по объекту…
Поиск полным обходом что ли, с линейным временем? Вы сказали, что в HashSet оптимизирован поиск по значению, а не по ключу — но я не очень понимаю, как это поможет искать нам объекты по значениям отдельных полей, не строя какие-то дополнительные индексы своими силами…

Объясню просто: нет никакого foreach в Java, есть синтаксический сахар for для обхода коллекции.
Так его выше комментаторы окрестили как forEach, я-то при чём? В JavaScript, кстати, у массивов есть такой метод, принимающий как аргумент функцию.

На этом предлагаю спор о целесообразности тащить ужасные привычки из одного языка в другой закрыть.
Окей, но для меня всё же проще придерживаться одинакового стиля на всех языках, а не перестраиваться каждый раз. Мне даже переход с JavaScript на PHP 5.3-5.4 доставляет боль (потому что объявление ассоциативных массивов через => вместо :, произвольный объект надо объявлять как ассоциативный массив, если хочешь сделать это быстро и аккуратно, объединение строк через . вместо +, и доллары перед каждой переменной, что тратит время при наборе кода).

Кстати, а стримов вы наверное совсем боитесь?
Я знаю, что есть потоки в C++. Стримы появились только в Java 8, я пока ещё о них не читал, к сожалению. Но почитаю, спасибо. Если это что-то удобное — зачем их бояться, наоборот, надо использовать. Другое дело, я ради совместимости с более старыми ОС вряд ли вообще на 8-ой версии буду что-то разрабатывать. Я слышал, там некоторые вещи могут работать не очень.
Не очень понял, что вы имеете в виду под оптимизацией. Быстрая проверка наличия объекта именно по объекту, а не по ключу?

Оптимизация по памяти.


. Опять же, я использовал в одном проекте именно Hashtable, но не просто так: там хэш-таблица была в серверном модуле, и в неё действительно могли читать (а также одновременно в неё писать) несколько потоков. Я понимаю, что это не панацея, и у меня всё равно могло всё поломаться, потому что надо полноценные блокировки было вводить. Но имхо если бы я использовал HashMap, поломалось бы ещё быстрее и ещё хуже…

Для этого существует ConcurrentHashMap. Там есть всякие computeIfAbsent и прочие неблокирующе-синхронизирующие методы.


Поиск полным обходом что ли, с линейным временем? Вы сказали, что в HashSet оптимизирован поиск по значению, а не по ключу — но я не очень понимаю, как это поможет искать нам объекты по значениям отдельных полей, не строя какие-то дополнительные индексы своими силами…

Изучайте матчасть. В HashSet/HashMap сперва идёт поиск bucket, хранящий элемент по значению hashCode, после чего уже, да, идёт линейное сравнение для элементов, имеющих одинаковый hashCode. Поэтому для нормального функционирования этих коллекций необходимо чтобы ключ (для мапы) или значение (для сета) был корректно реализован метод hashCode.


Так его выше комментаторы окрестили как forEach, я-то при чём? В JavaScript, кстати, у массивов есть такой метод, принимающий как аргумент функцию.

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


Окей, но для меня всё же проще придерживаться одинакового стиля на всех языках, а не перестраиваться каждый раз. Мне даже переход с JavaScript на PHP 5.3-5.4 доставляет боль (потому что объявление ассоциативных массивов через => вместо :, произвольный объект надо объявлять как ассоциативный массив, если хочешь сделать это быстро и аккуратно, объединение строк через. вместо +, и доллары перед каждой переменной, что тратит время при наборе кода).

Я (правда исключительно теоретически) могу писать на java, c, c++, assembler, delphi, js и php. И в каждом языке придётся писать в соответствии с особенностями этого языка. Вы же не пишете xml в стиле json? так а чем полноценные-то языки хуже? Сосредоточтесь на 2-3 языках… если так хочется — обновляйте список каждые пару лет. Тогда и глупого желания писать как в других языках будет меньше. Ну и полезно годик-два повариться в ентерпрайзе, даже если потом к нему прикасаться не будете.


Я знаю, что есть потоки в C++. Стримы появились только в Java 8, я пока ещё о них не читал, к сожалению. Но почитаю, спасибо. Если это что-то удобное — зачем их бояться, наоборот, надо использовать. Другое дело, я ради совместимости с более старыми ОС вряд ли вообще на 8-ой версии буду что-то разрабатывать. Я слышал, там некоторые вещи могут работать не очень.

простите но вот это — первостатейный бред. Везде где jvm заданной версии запускается (а это более-менее все ОС, кроме совсем уж устаревших) все фишки заданной версии будут работать корректно.

Изучайте матчасть. В HashSet/HashMap сперва идёт поиск bucket, хранящий элемент по значению hashCode, после чего уже, да, идёт линейное сравнение для элементов, имеющих одинаковый hashCode. Поэтому для нормального функционирования этих коллекций необходимо чтобы ключ (для мапы) или значение (для сета) был корректно реализован метод hashCode.
Я знаю, что это за метод и что он делает. Вы вообще похоже меня не поняли, по ходу дела. У нас HashSet раскидывает элементы по бакетам в соответствии с хэш-функцией. Это так. Но как это нам поможет найти объект по значению какого-то отдельного поля в нём? Вот и получается, что поиск по сету объектов в общем случае, если у нас нет полной копии (которая вернёт тот же хэш-код) — будет линеен. А если у нас есть полная копия, то и искать как бы ничего не надо…

Поэтому я и предлагаю отказаться от путающего вас названия и пользоваться наименованием инструкции.
Хорошо.

Вы же не пишете xml в стиле json?
А это вообще как? Мой мозг отказывается такое представить.

Ну и полезно годик-два повариться в ентерпрайзе, даже если потом к нему прикасаться не будете.
Согласен, но при чём тут нелюбовь к «переключению» на другой язык и работа в крупной компании? Вы к тому, что там неизбежно придётся писать на нескольких языках параллельно?

Везде где jvm заданной версии запускается (а это более-менее все ОС, кроме совсем уж устаревших) все фишки заданной версии будут работать корректно.
Я неверно выразился, простите. Вот смотрите, при установке JRE 8 на WinXP установщик настоятельно рекомендует обновить версию ОС. А ещё там прогресс-бар выглядит при установке… Ну, странновато по дизайну. Это достаточный аргумент, чтобы остерегаться использовать на XP даже версию 8? Вот напишу я красивую форму на Swing — а у меня вот так же что-нибудь сломается. Нет, возможно там ничего не ломается, и это всё моя больная фантазия. Но если они даже инсталлятор сделали вот так вот тяп-ляп…
Я знаю, что это за метод и что он делает. Вы вообще похоже меня не поняли, по ходу дела. У нас HashSet раскидывает элементы по бакетам в соответствии с хэш-функцией. Это так. Но как это нам поможет найти объект по значению какого-то отдельного поля в нём? Вот и получается, что поиск по сету объектов в общем случае, если у нас нет полной копии (которая вернёт тот же хэш-код) — будет линеен. А если у нас есть полная копия, то и искать как бы ничего не надо…

А если вам нужно искать по какому-то отдельному полю, то у вас выбор: или линейная сложность или дополнительный расход на кеширующую мапу с ключём по этому вашему полю...


А это вообще как? Мой мозг отказывается такое представить.

Это примерно так же, как на java писать в стиле js. Те кто пишут на java в регулярном режиме в лучшем случае будут плеваться про себя.


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

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


Я неверно выразился, простите. Вот смотрите, при установке JRE 8 на WinXP установщик настоятельно рекомендует обновить версию ОС. А ещё там прогресс-бар выглядит при установке… Ну, странновато по дизайну. Это достаточный аргумент, чтобы остерегаться использовать на XP даже версию 8? Вот напишу я красивую форму на Swing — а у меня вот так же что-нибудь сломается. Нет, возможно там ничего не ломается, и это всё моя больная фантазия. Но если они даже инсталлятор сделали вот так вот тяп-ляп…

И снова — учите матчасть. В пределах одной версии swing на всех компьютерах будет отображаться строго одинаково — это UI, который целиком и полностью строится на java. Вот если вы будете работать с AWT или SWT (или как там она называется) — тогда да, в каждой ОС всё будет выглядеть по-разному, т.к. UI будет строиться с использованием системных элементов.


PS ну и вообще вспоминать сейчас win XP в разработке не каких-нибудь станков, а обычных "формочных" приложений — моветон. Слишком маленький за ними рынок остался, чтобы на них реально затачиваться.


Можно ссылку на цитату разработчиков, где они такое говорят? И аргументацию, почему эти коллекции не были удалены из JDK?

Не удаляются — исходя из старого java-вского "обратная совместимость гарантируется". Из-за этого же не меняются контракты методов. Рекомендации не использовать эти коллекции — в javadoc этих классов, например в openjdk это звучит так, абзац со строки 65, а в javadoc к sun-овской/оркаловской jdk, насколько помню было прописано более негативный прогноз использования.

Это примерно так же, как на java писать в стиле js.
Ну вы всё же слишком разные вещи сравниваете. Java и JS — оба построены на ECMA Script, тогда как у JSON и XML вообще практически ничего общего (кроме общих понятий вроде «сущность» и «свойство»).

В пределах одной версии swing на всех компьютерах будет отображаться строго одинаково
А вы точно в этом уверены? Я читал, что элементы Swing — «легковесные». Но тем не менее, они выглядят абсолютно нативно, и ведут себя тоже нативно. Даже ClearType сглаживание работает совершенно одинаково на jLabel из Swing и на обычных Label из AWT (чего нельзя сказать о выводе строки или символа через API c помощью методов вывода, где сглаживание как раз не работает как надо, используя некий кастомный grayscale алгоритм, явно не имеющий отношения к ОС). Отсюда у меня есть сильные подозрения, что «под капотом» там вызывается совершенно стандартное API Windows, которое и рисует эти самые компоненты UI, а JRE только передаёт ему на вход нужные параметры отрисовки.

ну и вообще вспоминать сейчас win XP в разработке не каких-нибудь станков, а обычных «формочных» приложений — моветон. Слишком маленький за ними рынок остался, чтобы на них реально затачиваться.
Напрасно вы так. Не важно, какой там рынок, я вот ещё полгода назад видя ситуацию с окончанием поддержки Firefox пытался написать простой веб-браузер, который обрабатывал бы HTML, CSS и исполнял JS код, и при этом нормально работал бы на Win XP (и выводил там корректно сглаженный текст, с чем у того же Chrome большие проблемы были даже в версиях 22-49, а сейчас и вовсе который не поддерживается).

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

а в javadoc к sun-овской/оркаловской jdk, насколько помню было прописано более негативный прогноз использования
Вот здесь не понял. Что значит «более негативный прогноз»? И вообще, зачем начинать с openJDK, когда стандарт де-факто в отрасли, которым 90% людей пользуется — это JDK и JRE от Sun/Oracle? Она же бесплатная, верно? В чём там загвоздка, разве не логичнее использовать авторскую разработку, а не форк с неё, который к тому же непонятно, насколько совместим?

P.S. Прочитал вашу ссылку.

Unlike the new collection implementations, Vector is synchronized. If a thread-safe implementation is not needed, it is recommended to use ArrayList in place of Vector
Тут не сказано «вы никогда не должны использовать, любое использование крайне не приветствуется». Тут сказано «если потоко-безопасная реализация не нужна, рекомендуется использовать альтернативы». Это сильно иначе звучит, не находите? :) Хотя да, я понимаю, что случай, когда она не нужна — самый частый, а рекомендации лучше соблюдать.

UPD: Я кажется понял, почему мы не поняли друг друга насчёт Swing. То, что писал я — применимо к моему опыту работы с System Look&Feel (который имитирует системный UI, а по факту, как оказалось, просто делегирует значительную часть операций отрисовки ОС). Для кастомных Look&Feel, включая тот, что установлен по умолчанию, вы несомненно правы — на любых ОС отображение будет одинаковым.

Но касаемо ClearType сглаживания у меня кстати есть большие вопросы, работает ли оно вообще в кастомных L&F. Судя по тому, что я вижу на XP при включенном ClearType (и корректно настроенном под монитор) — скорее нет, чем да: очень похоже на хороший grayscale, причём опять же реализованный внутри самой JVM. В принципе оно и логично: ClearType является частью шрифтового рендерера Windows, а Swing как раз призван обеспечить отображение независимое от ОС, чтобы было «всё везде одинаково». Потому и шрифт рисуется напрямую рантаймом.
Ну вы всё же слишком разные вещи сравниваете. Java и JS — оба построены на ECMA Script, тогда как у JSON и XML вообще практически ничего общего (кроме общих понятий вроде «сущность» и «свойство»).

Простите, что? Смотрим вики (русскую)[https://ru.wikipedia.org/wiki/ECMAScript] — Java повлиял на ECMAScript, не наоборот,
смотрим (английскую)[https://en.wikipedia.org/wiki/ECMAScript] — Java повлиял на ECMAScript, не наоборот. Так что сравнение в полной мере корректное.


Напрасно вы так. Не важно, какой там рынок, я вот ещё полгода назад видя ситуацию с окончанием поддержки Firefox пытался написать простой веб-браузер, который обрабатывал бы HTML, CSS и исполнял JS код, и при этом нормально работал бы на Win XP (и выводил там корректно сглаженный текст, с чем у того же Chrome большие проблемы были даже в версиях 22-49, а сейчас и вовсе который не поддерживается).

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


Вот здесь не понял. Что значит «более негативный прогноз»? И вообще, зачем начинать с openJDK, когда стандарт де-факто в отрасли, которым 90% людей пользуется — это JDK и JRE от Sun/Oracle? Она же бесплатная, верно? В чём там загвоздка, разве не логичнее использовать авторскую разработку, а не форк с неё, который к тому же непонятно, насколько совместим?

openJDK — 100% совместимая реализация языка + на неё рекомендовал для дальнейшего бесплатного использования переходить сам Оракл (в 11ой версии поменялось лицензионное соглашение для oracleJDK, резко ограничив бесплатные варианты использования). Так что эти доли сейчас сильно поменяются. А под "более негативным прогнозом" я подразумеваю то, что в оркаловой jdk, 6ой, кажется версии было написано именно о не-рекомендованности его использования.


Java в swing не поддерживает ClearType

Java повлиял на ECMAScript, не наоборот
И что?)) Это отменяет тот факт, что Java и JS схожи по синтаксису? :)

Дорого, долго и профита нет.
Где из моих слов следует, что дорого и долго (хотя на самом деле, любой масштабный проект с нуля таким и бывает)? А про профит я вообще молчал. Да, может его и нет. Но это не значит, что в принципе нет пользователей, которые хотели бы иметь на XP исправный рабочий браузер. Притом удобный и без глюков, и поддерживающий современный JavaScript, чтобы сайты работали.

openJDK — 100% совместимая реализация языка
Но она написана не разработчиком языка и JVM, а другими людьми. То есть это тоже JVM, но другая. Совместимость — это очень здорово, но зачем?

в 11ой версии поменялось лицензионное соглашение для oracleJDK, резко ограничив бесплатные варианты использования
Кому вообще нужна 11-ая версия, если 6-ая и 7-ая работают прекрасно, и там с лицензией всё норм? Что там жизненно необходимого добавили?

А под «более негативным прогнозом» я подразумеваю то, что в оркаловой jdk, 6ой, кажется версии было написано именно о не-рекомендованности его использования.
Спасибо, теперь понял.

Java в swing не поддерживает ClearType
Но ведь при выборе нативного L&F поддерживает… На глаз же видно. Могу даже скрины покидать. И программный код, чтобы было видно, что там не AWT юзается.
И что?)) Это отменяет тот факт, что Java и JS схожи по синтаксису? :)

Так большинство используемых в пром. программировании языков имеют c-like синтаксис! Это же ни о чём не говорит, кроме того, что авторы хотели упростить переход на их язык! В итоге-то у каждого языка сложился свой собственный свод правил, как писать на нём правильно.


Где из моих слов следует, что дорого и долго (хотя на самом деле, любой масштабный проект с нуля таким и бывает)? А про профит я вообще молчал. Да, может его и нет. Но это не значит, что в принципе нет пользователей, которые хотели бы иметь на XP исправный рабочий браузер. Притом удобный и без глюков, и поддерживающий современный JavaScript, чтобы сайты работали.

Я вам писал о том, что поддерживать работоспособность ПО в не поддерживаемых версиях вендором ОС стоит дополнительных денег… и если там полтора землекопа пользователей — то и заморачиваться этим никто не будет, потому что "долго, дорого и профита от такой работы нет". Ну не будете же вы сейчас выпуская приложуху под андроид 6-7-8 делать, чтобы и на какой-нибудь устаревшей версии а-ля 2.1 оно запускалось!


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

Вас, наверное, это удивит, но большую часть OpenJDK пишут те же люди, что и OracleJDK. "А зачем" — ну теперь это будет следствием нового лицензионного соглашения.


Кому вообще нужна 11-ая версия, если 6-ая и 7-ая работают прекрасно, и там с лицензией всё норм? Что там жизненно необходимого добавили?

Вы будете сильно расстроены, если узнаете, что желающих работать с 6-7ой версией постепенно уменьшается и они уходят сильно на задний план? Ещё пару-тройку лет будет ходовой версией 8ка, но после она тоже уйдёт со сцены. И не учитывать это в планах… ну вредно для тех, кто собирается использовать платформу и дальше.


Но ведь при выборе нативного L&F поддерживает… На глаз же видно. Могу даже скрины покидать. И программный код, чтобы было видно, что там не AWT юзается.

Не знаю, насколько оно там поддерживает, и какова реализация данной фичи, вот только ClearType, если мне память не изменяет — виндовая фича и без кучи лицензионных проблем не может быть запущена в том же линуксе… Вполне возможно, что вы оказались правы в своём предположении, что нативный L&F использует нативный UI...

в не поддерживаемых версиях вендором ОС
Там риски по безопасности сильно растут (особенно если это что-то антивирусное или связанное с передачей данных в облако). В своё время Dropbox вроде именно поэтому поддержку XP прекратил. А насчёт цены разработки — я бы всё же не согласился, не факт, что там всё становится прямо уж в разы сложнее. Что-то наоборот под старые ОС делать проще даже…

Ну не будете же вы сейчас выпуская приложуху под андроид 6-7-8 делать, чтобы и на какой-нибудь устаревшей версии а-ля 2.1 оно запускалось!
Ну не знаю. Я вот уже года 3 планирую прочитать книжку про программирование под Android. Как только научусь что-то более-менее писать — Android 2.3 точно буду поддерживать. Тем более у самого он стоит.

Вас, наверное, это удивит, но большую часть OpenJDK пишут те же люди, что и OracleJDK.
А, ну это сильно меняет ситуацию тогда :)

Вы будете сильно расстроены, если узнаете, что желающих работать с 6-7ой версией постепенно уменьшается и они уходят сильно на задний план?
А почему? Если кому-то так нужны стримы и лямбды (хотя имхо это нужно редко) — ну есть 8-ая в конце концов. Но в основном и 7-ой хватает за глаза и за уши (ладно, с 6-кой я погорячился, она не умеет неблокирующий ввод-вывод толком, и менее гибко работает, например, с атрибутами файлов). В 7-ой версии с этим всё на порядок лучше и приятнее.

если мне память не изменяет — виндовая фича и без кучи лицензионных проблем не может быть запущена в том же линуксе…
Так оно только в системном L&F — и естественно, работает только на винде. Не вижу причин, почему использовать Windows Forms или WPF можно (при этом разработчик приложения ничего не отчисляет Microsoft за возможность выводить их контролы на экране), а Swing — нет. Если JVM дёргает обычный Windows API в этом случае, то никакие лицензии не нарушены, вроде.
UFO just landed and posted this here
А какие у вас там привычки — дело ваше и тех бедолаг, что вынуждены поддерживать ваш код.
Не вижу никакой проблемы в поддержке кода с циклом for на индексах вместо цикла forEach. Вы какую-то проблему из пальца высасываете, честное слово…
UFO just landed and posted this here
Вы вот написали «какая разница джависту». Так вы по себе всех меряете. Я вот вообще не джавист, у меня JS основной язык. В последний раз на Java писал пару небольших проектов летом 2015 и в начале 2016.

Мне по идее вообще не стоило встревать — но я лишь хотел сказать, что есть некоторое количество людей (не все и не большинство), которые Vector всё ещё используют. Кстати, если он так ужасен, почему его не выпилят? Ах да, знаменитая обратная совместимость. Ну так не вопрос, можно было начиная с некоторой версии в фоне, незаметно для программиста, заменять его на ArrayList, а в консоль при компиляции выводить об этом предупреждение. Но тем не менее он зачем-то оставлен? Очень нелогично.
UFO just landed and posted this here
Просто если разработчики JDK говорят, что не надо использовать Vector или Hashtable
Можно ссылку на цитату разработчиков, где они такое говорят? И аргументацию, почему эти коллекции не были удалены из JDK?

уже написал, что раскусил вас: вы тролль, причем очень умелый
Ну-ну.

Потому что если вы не тролль, то это совсем печально.
Да ладно? По-моему, всё ок :)

вместо самообучения
Не вместо. Как только мне придётся писать в следующий раз многопоточное приложение — я обязательно ознакомлюсь и с ConcurrentHashMap, и с общей теорией на тему грамотной синхронизации, и если надо будет — с чем угодно. И постараюсь найти лучшее решение, чем тупо пихать всюду Vector и Hashtable (тем более, на сто процентов это не спасёт).
использует циклы вместо итераторов

Кстати, на минутку — есть какой-то аргумент, чем итератор лучше цикла for? Тем, что он сохраняет стейт коллекции в момент начала обхода? Так он ничего не сохраняет, там при попытке изменения коллекции исключение выкинет…
Полная глупость. Вы сами это хотя бы понимаете? Оптимизация никогда не бывает преждевременной. Она либо окажется полезной (если приложение и объём данных будут расти), либо просто никак не скажется на качестве работы. Но ухудшить ситуацию — она не может. Если не брать случаи серьёзного говнякания архитектуры ради производительности, как Вы верно заметили.
Она ухудшает ситуацию тем, что ресурсы, которые могли быть выделены на улучшение или создание чего-то, что улучшает работу, отдаются на то, что никак на неё не влияет.
Но может повлиять в дальнейшем при возрастании объёма данных в системе (или при усложнении логики другого компонента, что уже не так очевидно, но тоже возможно).

на улучшение или создание чего-то
Есть в жизненном цикле продукта стадии, когда пилить новые фичи пачками ежедневно уже не нужно. Как раз тогда и есть смысл заниматься оптимизацией (но честно говоря, лучше делать её сразу, пока всё в памяти свежо и ты точно знаешь, как в твоём коде что работает). Имхо.
UFO just landed and posted this here
К сожалению, нет. Но ведь очевидно, что чтобы эти самые узкие места не возникали (точнее, возникали как можно более нескоро и в малом количестве), лучше как раз сразу писать оптимальный код, а не оптимизировать тогда, когда уже «всё плохо и еле ворочается»?
UFO just landed and posted this here
Меньше лишнего кода, меньше возможностей для выстрела себе же в голову.

А где тут можно выстрелить себе в голову? Тут же всё тривиально.

Если человек не совсем дуб, то при итерации он в самом начале выделит элемент коллекции в переменную, аля var test = testList.get(i);

Верно. Но если там в теле цикла одна строчка — то даже этого может быть не нужно.

Зачем вручную прописывать создание переменной и использовать for(;;) конструкцию, когда есть более лаконичный foreach

Более лаконичный, но менее броский при беглом сканировании кода глазами (всё-таки эти i-шки хорошо и сразу видны, а вот вариант с двоеточием — имхо, не очень заметен).

и увеличит шансы случайно пропустить выстрел или логическую ошибку в виде testList.get(j) или testList.get(i-j)

Эм, что? Откуда тут j вообще? Это уже более сложный вариант алгоритма, с двумя вложенными циклами, и вот там действительно индексы могут быть иногда нужны. Но я вообще не его рассматривал :)

когда в языке есть куда более подходящие конструкции

Ну есть ещё вариант с итераторами, но он более многословный.
А где тут можно выстрелить себе в голову? Тут же всё тривиально.

Эм, что? Откуда тут j вообще? Это уже более сложный вариант алгоритма, с двумя вложенными циклами, и вот там действительно индексы могут быть иногда нужны. Но я вообще не его рассматривал :)

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

Более лаконичный, но менее броский при беглом сканировании кода глазами (всё-таки эти i-шки хорошо и сразу видны, а вот вариант с двоеточием — имхо, не очень заметен).

Дело привычки больше. Как по-мне, оба заметны в равной степени. Что там for(smth:smth), что там for(smth;smth;smth).

Ну есть ещё вариант с итераторами, который работает и в Java 6, и в Java 5, но он более многословный.

foreach это и есть сахар над итераторами, насколько я помню.)
А в современной версии есть ещё вариант итерирования через лямбды и стримы.
Каждой задаче свой инструмент.
Для простого итерирования — foreach, для замысловатой логики с индексами — for(;;), для фильтрации по значениями, сортировки — stream, для однострочных действий — .forEach через лямбды.
j в данном случае просто визуально похожая буква(а не вложенный цикл)

Что?..) Во-первых, не настолько похожа, чтобы перепутать (если шрифт нормального размера). Во вторых, такой переменной может просто не быть в данном методе определено — тогда сразу красным IDE подчеркнёт такой код.

Что там for(smth:smth), что там for(smth;smth;smth).

Вы не поняли фишку. Дело не в том, что три компонента и for становится длиннее. Дело вот в этих палочках с точечками и пробелах между ними. Эта штука очень здорово видна даже при прокрутке кода на скорости. Визуальный паттерн. И кстати, с j это работает уже не так хорошо, а с остальными буквами вообще в разы хуже.

А в современной версии есть ещё вариант итерирования через лямбды и стримы.

Это только начиная с Java 8. Если я пишу на 6-ой — к сожалению, не вариант. Хотя почитать всё равно стоит, чтобы иметь представление, давно собираюсь)
foreach это и есть сахар над итераторами, насколько я помню

Кстати, забыл добавить: выше комментаторы указывали, что создание итератора — это лишние накладные расходы, и в некоторых случаях они могут быть существенными. Тогда зачем использовать foreach вместо for (то, что это сахар — уже замедлит компиляцию в байт-код как минимум на копейки, плюс само наличие итератора, которое может быть нежелательным)? Не говорите только опять про опечатки в буквах, такие ошибки — это даже не уровень школы, серьёзный программист никогда их не допустит (да и IDE не даст).
А вам не кажется, что у вашего варианта читаемость сильно ниже при беглом просмотре кода? Или это у меня только такое, субъективное?

Скорее всего субъективное. Общепринятое мнение, что вариант s-kozlov читается лучше.


Насчёт линейного времени — зависит от того, что за коллекция.

В 99% случаев использование LinkedList в Java там, где обозначен интерфейс List — ошибка, так что проблемы с линейным доступом скорее всего не будет.


При маленьких объёмах данных — это вообще, имхо, не суть важно.

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


Если очень хочется подстраховаться с этим моментом — правильнее использовать итератор.

В foreach в джаве под капотом именно итератор ))


Самое главное — я не понимаю, почему для вас стандартный заголовок цикла for(), который, кстати, одинаков вообще для любого C-подобного языка — это «отвлекаться на индексы».

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

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

Спасибо! Не знал про этот момент раньше)

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

У интерфейса List есть метод listIterator, который вернёт такой итератор, у которого есть метод remove, который удалит элемент, на котором стоит итератор. Для LinkedList сложность вызова метода remove у итератора будет константной, а у ArrayList — линейной.


(а вот обход с индексами с корректировкой переменной после каждого удаления — без проблем).

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


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

Вызов list.remove(index) будет иметь линейную сложность, независимо от того, чем является list. В случае с ArrayList — для удаления элемента надо будет сдвинуть следующие элементы влево, а в случае с LinkedList — нужно будет сначала найти элемент по индексу.

у которого есть метод remove, который удалит элемент, на котором стоит итератор

Спасибо, не знал про такое.

В случае с ArrayList — для удаления элемента надо будет сдвинуть следующие элементы влево

А зачем он их двигает сразу? Теоретически, можно было бы оставлять пропуски… Ну понятно, в общем там всё как в обычном массиве работает. С Vector та же история?

Для LinkedList сложность вызова метода remove у итератора будет константной, а у ArrayList — линейной.

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

Чтобы гарантировать константное время доступа к элементу листа по индексу. Если мы оставим пропуски, для поиска элемента по индексу придётся перебирать элементы коллекции.


С Vector та же история?

С Vector то же самое, только Vector использовать нельзя. Это legacy класс, использование которого пагубно сказывается на производительности.

Что у него не так с производительностью? И никакой он не legacy. Скиньте пруф этого «гениального» утверждения.

Vector и ArrayList всегда идут в паре, и применяется то, что нужно, в зависимости от ситуации. Vector внутри синхронизирован, если что. В многопоточном коде это критично.
Что у него не так с производительностью? И никакой он не legacy. Скиньте пруф этого «гениального» утверждения.

Будем обсуждать в соседней ветке, ок?

UFO just landed and posted this here
Ну и зачем создавать себе зависимость от этого там, где она не нужна?

Выше уже написали, что ничего не меняется при удалении (всё будет зависеть от типа коллекции при любом подходе). А при чтении по индексу — в случае Vector и ArrayList тоже в общем-то нет разницы. Но да, тот подход лаконичнее, писать меньше.

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

Он не хуже. Он эквивалентен. Кроме случае с LinkedList и доступа к элементу за линейное время.

Foreach — синтаксический сахар над итератором.

Нет, совсем недавно. Я просто не очень привык применять эту форму for с двоеточием

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

Ну например потому, что с индексами визуально нагляднее, я выше уже писал, почему. А ещё потому что привычка из JavaScript — там for через индексы работает существенно быстрее, чем for...in.
UFO just landed and posted this here
Изначально об удалении речи не шло.

Но это часто необходимая операция! Как можно её не рассматривать?

Второе утверждение противоречит первому.

Там выше кто-то говорил, что LinkedList редкий случай. Но я вообще несколько запутался. Вы не могли бы ещё раз прояснить, в каких ситуациях обход по индексу будет медленнее, чем foreach или итератор? Такой кейс вообще в природе существует?

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

С последним утверждением — полностью согласен. Проблема в том, что цикл for — это не «фишка» только JavaScript. Такие циклы можно встретить и в программах на C, C++, ActionScript и PHP, как минимум. То есть это общепринятая конструкция. Да, в Java могут быть лучшие способы итерирования, и не только в Java. Но писать код, понятный программисту на любом языке — имхо, не есть минус…
UFO just landed and posted this here
LinkedList. Существует.
Я вот в своей практике (пусть она и не такая обширная, как у вас) ни разу его не использовал. Зачем оптимизировать код под коллекцию, которой никогда не пользуешься и пользоваться не планируешь? Опять же, я не говорю про работу в большом проекте в команде, я говорю про собственный проект, где 1 или максимум 2 разработчика.

по крайней мере, по сравнению с итерированием и добавлением в конец
Соглашусь. Но всё-таки и она довольно часто нужна.

Сами-то поняли, что написали? Где метод get() у java.util.Set?
А я не знаю, почему его не сделали. Множествами я тоже не пользуюсь. Как по мне, это очень неудобная коллекция — например хотя бы потому, что для её обхода необходим итератор (то есть нельзя проитерироваться по ней в цикле for, что, я настаиваю, является самым интуитивным подходом). И не сделав метод get (хотя да, он не имеет смысла, потому что у элементов нет уникальных ключей, а если они будут, то это будет уже хэш-таблица), разработчики JDK серьёзно подпортили универсальность интерфейса, т.е. независимость реализации от типа используемой фактической коллекции.
UFO just landed and posted this here
Что вы используете в своих pet projects — ваше личное дело
Что такое pet projects? Типа проекты, где автор сам себе единственный разработчик?

А что, бывают какие-то ещё проекты (ну если не брать участие в серьёзном Open Source типа Chromium/Firefox/VLC/etc.)? Как бы 80-90 процентов проектов — именно такие. Редко когда приходится привлекать кого-то ещё себе в помощь.

Да хотя бы потому, что у множеств нет порядка элементов, соответственно, не имеет смысла запрос «дай мне n-й элемент».
Я в курсе, что такое множество, спасибо, Капитан Очевидность :) Я лишь про то, что универсальность страдает в итоге из-за того, что у множества нельзя попросить вернуть элемент методом get (я не говорю, что на вход непременно должен приниматься порядковый номер, у хэш-таблиц вон принимается ключ, и ничего).

У тех, кто использует for-each, никаких проблем с независимостью реализации нет.
А, простите, через forEach можно ещё и множества обходить? Вот этого не знал. Хотя, раз выше написали, что там итератор создаётся «под капотом», то всё логично.

Да, подход с forEach лаконичнее и универсальнее (на примере списков и множеств доказали). Согласен со всеми.

Но всё-таки множества используются очень редко. Да и списки — не так чтобы очень часто.

Но если гнаться за идеальным кодом — да, наверное forEach лучше.

Но всё равно Вы не последовательны — выше Вы вон утверждали, что плохо делать оптимизацию раньше времени (оптимизированный код всяко лучше неоптимизированного). То есть там Вы не хотите стремиться к идеальному коду. А тут что иначе обстоит, вроде всё то же самое, только речь не о производительности, а о краткости конструкции и её максимальной «безопасности» в случае смены типа коллекции. Почему для Вас эти два аспекта важнее скорости работы приложения? Это глупо, особенно учитывая, как редко меняют тип коллекций на практике в живом проекте.
UFO just landed and posted this here

Ну и как бы у get(i) тоже никто не гарантирует константную сложность, но не в этом суть. Плохого то, что этот код еще нужно читать и поддерживать. В Java 8 коллекции итерируются при помощи стримов или при помощи цикла for-each, который был введен еще в 2004 году, а до этого использовались итераторы вместо индексов. Индекс при итерировании используется только с ArrayList, когда итерация идет не по-порядку, и в тех случаях, когда значение индекса используется в цикле.

Имхо это вопрос стайлгайдов, и может решаться отдельно в каждом проекте так, как всем удобно. Можно, к примеру, договориться использовать для списков итераторы (или стримы, если мы пишем на Java 8), а для ArrayList и Vector — итерацию по индексам независимо от того, нужен ли индекс в теле цикла. Этот подход, кстати, позволит сразу быстро понимать, какой у нас где тип коллекции, даже не вчитываясь в код, с одного взгляда.

Опять уволили за токсичность? Сочувствую, тоже бывало.

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

Не хотите признавать происходящее, цели и мотивы участников ситуации, и для этого атакуете точность суждений (заведомо ложно вменяя категоричность и пытаясь её отменить)? Так это не предмет выбора: это вопрос честности и объективности перед собой и другими, которую не терпят такие, как вы (т.к. она кое-чего лишает), и потому же столько элементов психологических игр в ваших комментариях (а не только в этом – имел возможность немного изучить вас через них). Потому у вас такая отсылка к учёту мнений других. Мотив, стоящий за этим, – чтобы исполнялась их (а значит и ваша) линия поведения за чужой счёт, выраженная их мнением, суть которого – просто желание и его осуществление, независимо ни от чего.

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

Хватит играть! Скучно? Это забота исключительно того, кому скучно: никто не обещал, и потому не обязан что-либо делать, чтобы кому-то не было скучно. Самое лучшее, что можно сделать, чтобы не было язвительности и связанных с ней ситуаций и процесса порождения конфликтов, – пресекать такое поведение и психологические игры.

С детьми в теле взрослых это сложно, но можно, потребуются терпение и власть. В целом, наиболее эффективный подход – лишать цели игры. Обычно, помимо собственно самой ситуации как цели игры, это ещё и эмоции от неё и её процесса. Когда игрок чувствует, что не получит желаемых эмоций от ситуации и выигрыша не существует, его мотивация к игре довольно быстро иссякает. На этой теме построены сценарии по идее Дэвида Шора (легендарный сериал "Доктор Хаус"). Даже когда игра проявлена вместе с её целями, у игрока остаётся ход "не признавать, чтобы игра продолжалась". Вот почему необходимо воздействовать на мотивы и ресурсы для их воплощения: они управляют выбором, а значит поведением.

И не нужно относиться к людям, как к чему-то особенному: это сложные системы, а потому обладают поведением, управляющими факторами, программами и всем тем, на чём вообще строятся сложные системы. Никакого чуда в этом нет, кроме разума: не является частью человека, а живёт на нём, как на носителе (тривиально проверяется по всем ситуациям, в которых человек есть, а разумное поведение отсутствует). Чтобы снять возможные глупые споры на тему, что такое система: система, от греческого слова, – это способ двояко анализировать что-либо одновременно и как целое, и как состоящее из частей. Т.е. способ задать некую границу в системе представления (в собственной голове, в первую очередь), позволюящую отделить и отличить представление объекта анализа от всего остального, и посмотреть внутрь него. Ничего иного понятие системы в своём определении не требует и не предполагает (ни определённости, ни алгоритмичности, ни-че-го). Понятие над-системы – изменение направления взгляда и области анализа: т.е. это всё то, что находится за выбранной границой вне объекта анализа. Иное общепринятое название – среда.

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

— Дорогой коллега, мы тут случайно нашли 146 различных падений в вашем коде, вот баги, STR, вся фигня. У нас есть веские основания считать, что вы код даже не пытаетесь тестировать.
— Вы все врете!

Наверное, надо каждый раз его хвалить за такое, да… А то расстроится, бедняга, и больше не будет багов плодить.

Так в том и дело, что надо так как Вы написали. А токсично это «ты идиот, что за *** написал»

Во второй раз надо уже токсично. Тащемта, и в первый тоже уже можно, потому что 100+ уникальных падений — явный перебор
Не надо ни в третий ни в сотый.
Чего Вы добьетесь токсичным ответом? Проучите идиота? Не обольщайтесь, единственное что Вы делаете таким образом — срываете Ваш личное раздражение.
Вежливый и объективный фидбек позволит исправить конкретные ошибки и исправить человека в будущем. Токсичное поведение вызывет защитную реакцию, то есть человек будет считать Вас м**ом и это вряд ли это поможет проекту. А если надо человека уволить, то на основе нормального фидбека это сделать просто, а после токсичного поведения получите скандал с выяснением отношений.
Если человек технически смог допустить 100+ уникальных падений, то либо у Вас дикие проблемы в проекте (и лучше всего максимально аккуратно обсудить путь к изменениям); либо же это нарочный саботаж, и человека надо просто вежливо уволить.
И главное, токсичное поведение бьет по всей команде, а не только по одному девелоперу.
Дорогой коллега, мы тут нашли 146 падений в вашем коде, у вас есть один спринт на то, чтобы их стабилизировать и написать план по предотвращению появления подобного в будущем у вас и у других разработчиков.

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

Вот, кстати, самый нормальный взрослый подход. Только почему-то во многих компаниях до сих пор хихоньки, хахоньки и «да ты — %##%, да что же ты такое написал?!»

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

Вот если управляли как в комментарии выше: «мил человек, поправь косяки, иначе придётся попрощаться», не вижу ничего ошибочного. И на интервью кандидат мог хорошо отвечать, а потом халтурить. Есть полно профессиональных собеседующихся. Да и стресс по таким незначительным поводам испытывать ни к чему.

> Опять же это признание того, что все, кто собеседовал и управлял человеком — сделали ошибку.

Вот это сильно зависит от отношения. В науке, например, норма, делать десятки, сотни, тысячи экспериментов, в расчёте на то, что хоть один завершится успехом, а проваленные — это не ошибки, а рутина.
Ну так-то оно так. Это если рационально подходить к вопросу. Но человек — существо не рациональное, а рационализирующее. Потому даже в науке если эксперимент номер 999 не удался — все равно расстраиваются. Или лаборанты или зав. лаб. или спонсоры.

Расстраиваются, что не оправдалась надежда, а не что опять сделали ошибку. Разве нет?

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

У меня так сработало без необходимости увольнять. Был довольно бестолковый разработчик. После разговора 1x1 с обозначением моментов, где ему стоило бы изменить свой подход и назначением его ответственным за автоматизацию тестирования некоторого куска — человек начал проявлять себя с хорошей стороны гораздо чаще. И хоть и не стал топовой звездой, но одним из лучших разработчиков в нескольких коммандах определенно стал.

С другим не так получилось хорошо. Три шанса человек упустил — перевели его в обратно в Tier-3 support, откуда он изначально пришел.

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

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

> Я был в роли такого девелопера, со мной так сработало, и я в той фирме неплохо
> вырос. «Ещё один шанс» я бы гарантированно зафейлил.

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

Согласен. 146 падений — это явно особый случай.
Но главное в том, что Вы обозначили конкретные моменты и поставили конкретный план улучшений. Это кардинально противоположно предложенному выше «надо токсично». А далее да, всё индивидуально.
Вы все врете!

Это как раз пример токсичного поведения, не заметили? И вместо того чтобы самому переходить на мат не лучше ли такого человека выкинуть из коллектива? А то я вот почему-то сомневаюсь что «вы-все-врете» товарищ от мата внезапно просветлеет и станет нормально себя вести.
— Вы все врете! это всё потому что я гей!
UFO just landed and posted this here
Думается мне, что автор сильно молод [душой] и ещё не изжил в себе чрезмерный максимализм. Это пройдёт. Но чем быстрее, тем меньше будет страдать и автор и его окружение.
a) С днем рождения! А, сорри, мне показалось, что сегодня исполнилось.
б) Смешно смотреть на бородатых дядек, которые всерьез с вами спорят.
в) А у вас все впереди, конечно.

Судя по дате в профиле, человеку 34. И дата рождения в июне, так что не совсем недавно.

Чорт, и как это мы все проглядели…
Простите, пожалуйста, тяжело было удержаться. В своё оправдание могу сказать только, что мне и в самом деле кажется, что 17 исполнилось недавно.
Судя по комментариям, вы не одиноки.
Главное, чтобы когда себе алкоголь наливаешь — не обмануться так вот.
Пересчитал. Да, действительно, недавно, всего лишь почти 209 месяцев назад. Вам и сейчас 17 лет и 209 месяцев.
В принципе, нам всем 17 лет! Просто разное количество месяцев, а у кого-то вообще отрицательное, не превышающее (-204) месяцев
А кто сказал, что 17 в первый раз исполнилось? =)
UFO just landed and posted this here
Очередную годовщину достижения 25-летия. Хотя даже это число (25лет) —
это уже четверть века! Или 1/40 часть от тысячелетия. Какой же я старый…
Так если взрослым людям не нужна нянечка, почему некоторые взрослые и суровые люди требуют обращения именно как с детьми, которым надо разъяснять, что если их разговоры о рыбалке не поддерживают, то их надо сворачивать, что если тебя за три месяца возненавидил коллектив, то надо пересмотреть свои действия. Другим взрослым людям не хочется тратить силы и время на ваше перевоспитание. Они будут при прочих равных выбирать более приятных в общении коллег. Вежливость и сниженный эгоцентризм позволяет располагать к себе людей, облегчать коммуникацию, тем самым экономить себе и бизнесу время. Причем, это практически ничего не стоит, а пользы приносит много.
UFO just landed and posted this here
UFO just landed and posted this here
Помимо людей с диагностированными проблемами с распознаванием эмоций на хардварном уровне, гораздо больше людей «я не научился общаться, я такой человек, теперь все подстраивайтесь под меня». Подстраиваться в большинстве случаев не будут. Если осознать проблему, то решить ее можно. Есть книги, есть психологи, можно постепенно учиться с людьми разговаривать в любом возрасте. Такой же навык, как вождение автомобиля или танцы, и тоже прокачивается.
UFO just landed and posted this here
Одинаковые в том смысле, что способны адаптироваться к условиям среды? С разной скоростью, с разным уровнем усилий, но могут. Есть те, кто не могут адаптироваться в силу неразрешимых проблем со здоровьем, а есть те, кто пытается убедить себя и окружающих, что у них «лапки», но это не их проблема, а окружающих. Окружающим плевать, они уволят, отвернутся и не будут себя утруждать фидбеком. Короче, спасение утопающих — дело рук самих утопающих.
UFO just landed and posted this here
Одинаковые в том смысле, что способны адаптироваться к условиям среды?

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

Откуда «все подстраивайтесь под меня?» Обычно, на мой взгляд, что-то вроде «я такой какой есть: не нравится — не ешьте».

Для аналогий лучше что-то более распространенное подобрать, чтение или письмо например, а то для меня как для человека попробовавшего безуспешно прокачать все три навыка звучит как приговор :)
Подход «не нравится — не ешьте», как по мне, здравый. Руководствуясь таким подходом, чувак из поста после увольнения мог бы пожать плечами и устроится на другую работу, а не в запой уходить и требовать «минимального фидбека» от посторонних людей.
UFO just landed and posted this here
Абстрактную алгебру мне осваивать сильно проще, чем общение с людьми.
По-моему, ваши 11,3k комментариев здесь как бы говорят нам, что с общением с людьми у вас всё в порядке. :-)
UFO just landed and posted this here
Онлайн общение — тоже общение. Ну и вполне можно это совмещать — я в прошлом году вроде даже в топ попадал по количеству комментариев, но успеваю и поработать и с людьми пообщаться и в поход пару раз за год сходить и в игры позадротить. Мне комментарии на хабре помогают переключить мозг, это полезно при работе.
UFO just landed and posted this here
Мне кажется «сломалось» не совсем правильное слово. Умение заводить друзей во взрослом возрасте — это отдельное умение. А при смене окружения, банально при поступлении в ВУЗ например, это умение нужно применять. Я подозреваю что у вас проблема (если это проблема конечно) именно в этом. Но как с этим справляться я не знаю.
А при смене окружения, банально при поступлении в ВУЗ например, это умение нужно применять.

Я в ВУЗе учился без применения этого умения и ничего. Скорее, наоборот, пару раз пришлось пресечь излишне активные попытки «уменьшить дистанцию».
Люди разные. Кому-то это дается легко и он не замечает что для заведения друзей нужно что-то делать, кому-то и друзья особо не нужны, это нормально. Вполне допускаю что есть люди к которым всех тянет когда им этого даже и не надо. Я говорил именно про то, что такие — не все и если есть проблемы с заведением друзей «в реале», то это не «сломалось», это «не прокачен навык». Я считаю что это отличие достаточно важно уже хотя бы потому что действия по исправлению ситуации другие. В одном случае мы пытаемся чинить и самое логичное, так как это голова все же — психотерапевт. Во втором — приобретать навык и тут вариантов гораздо больше: курсы, книги, практика, наставники и так далее. Опять же — если это реально проблема, а не просто факт из жизни который есть, но не парит.
UFO just landed and posted this here
Поддержу уважаемого dimm_ddr.
Умение заводить друзей во взрослом возрасте — это отдельное умение.
Скажем так, это тот самый пресловутый soft skill, который надо осознанно прокачивать. Подростку это как раз меньше нужно в силу возраста: мы так сделаны, что в подростковом возрасте (должны быть) заняты поисками партнеров и занятием места во взрослой иерархии. Это без социалки не делается никак, вот она и дается практически из коробки.

Для более взрослого состояния предполагается, что либо все уже есть, либо уже нехрен и пытаться: и действительно, в каком-нибудь неолите не оставивший потомства до двадцати — готовый лауреат премии Дарвина в широком смысле. Следовательно, нехрен и тратить силы на социалку, займитесь добычей съедобных корешков.
Тот незначительный факт, что сейчас концепция несколько изменилась, мимо закономерностей онтогенеза прошел незамеченным, будут еще они на всякую фигню внимание обращать.
Так что теперь либо вручную: непривычно, тяжело и больно — либо уже забить.
UFO just landed and posted this here
где-то в конце первого курса мне просто стало очень лень
Очень знакомое ощущение, примерно как из анекдота про философа: «но зачем?..»
Только у меня ломалось не «сразу все», а кусочками. Вот здесь я внезапно больше не вижу смысла находиться. Вот этим мне уже категорически влом заниматься. Еще, кажется, месяц назад… Как три года?

Если хуже не становится, наверное можно и хрен с ним, да. С другой стороны, ежели оно приносит дискомфорт, то возможно, лучше бы этим все-таки озадачиться.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Вот за такие разговоры ни о чём я не люблю ИРЛ.
Вам в Финляндию надо значит =) Здесь тоже не понимают этих смол толков, хотя в ИТ среде зараза потихоньку распространяется вместе с приезжими.
UFO just landed and posted this here
UFO just landed and posted this here
А что нельзя критиковать без грубых словечек и личностных оскорблений? Умение владеть собой и уважительно общаться с коллегами — это тоже признак профессионализма. Человек который пытается самоутвердиться за счет менее сильных коллег явно страдает комплексом неполноценности и я бы такого герою не доверил сервер, кто знает как он себя поведет в критической ситуации, сумеет ли вовремя обратиться за помощью и признать свои ошибки?
А не могли бы вы со ссылкой на мои слова такое утверждать? Я вроде явно пишу, что оскорбления на профессиональной почве неприемлимы, вообще-то.
> «Твой код плохой, я сейчас подробно изложу причины и дам советы»

Не оскорбление, но близко к нему. «этот код не будет работать ожидаемо», «этот код не соответствует нашим требованиям и соглашениям», «этот код будет сложен в поддержке» — нормально, воздействие на рациональную сферу человека. «Плохой» — уже воздействие на эмоциональную сферу, не несущее конструктива вообще. А «твой код плохой» — явная попытка (пускай и неосознанная) неконструктивно критиковать не просто код, а его автора. Зачем вы вообще добавляете «твой»? Чтобы посильнее человека задеть? Имеет ли для вас значение с точки зрения производственных интересов акцентировать внимание на том, кто совершил ошибку, если человек и так прекрасно это знает?
Именно против подобных бессмысленных пируэтов я и возражаю. Для сравнения:
«Лена, ты неправильно поднимаешь штангу! Так у тебя нагрузка на спину, можно повредить позвоночник. Надо срывать вес ногами а уже потом подключать спину.»
Это что, токсичное поведение?
«Лена, ты всё неправильно делаешь. Надо так: ...»
или
«Лена, всё хорошо, но только можешь сорвать спину, лучше делать вот так: ...»
Можно спорить, какой подход лучше. Как по мне, обычно второй работает куда лучше.
Но разве всё хорошо? Лена только что чуть не отправилась на имплантацию титана в позвоночник.
Я не вижу разницы между этими двумя подходами. Не вижу оскорбления или ещё какого-то негатива, но это может стать причиной того, что кого-то назовут токсичным и снимут с управления командой, как минимум поставят на вид. Это явный перебор.
IMHO, если вам нужно срочно сказать, что другой человек делает что-то неправильно, то вежливые обороты стоит сокращать/убирать. До определенных пределов, потому что если на «Лену» рявкнуть трехэтажным матом, она не только позвоночник, но и ногу тренера может сломать. От испуга.
Если же есть пара минут, то зачем использовать способ, работающий хуже?

У Milfgard в одной из книг описано 5 градаций того, как объяснить человеку что он делает неправильно. Так вот,
Лена, всё хорошо, а если ты ещё будешь вот так делать ...
это где-то 2-3 ступень из пяти. И там же объясняется, почему каждая следующая форма работает лучше предыдущей.
Так почему мой пример считать токсичным поведением? Ответа я не вижу. Не самое лучшее объяснение — ок, возможно. Токсичное — определённо нет.
Пример
«Лена, ты всё неправильно делаешь. Надо так:...»
я не считаю токсичным поведением. Я отвечал на вашу фразу «не вижу разницы» и постарался ее показать.
«Твой код плохой, я сейчас подробно изложу причины и дам советы»
Это на грани токсичности, хотя я не считаю такую фразу атакой на мою личность. И знаю людей, которые мгновенно займут оборонительную стойку и выйти на конструктивное общение потребует усилий.

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

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

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

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

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


Я отвечаю на ваши вопросы, потрудитесь ответить и вы на мой.


А какие доводы нужны, чтобы вы задумались "как сказать Аллочке что можно сделать лучше так, чтобы она не плакала как в прошлый раз"?
Нашел точную цитату, про которую рассказывал раньше
4. Я не очень понимаю, почему вот здесь и здесь не работает вот так, как мы договаривались. Объясните?
5. Леха, тебе нравится, как вот это и это получилось? Я не очень понимаю, почему вот это так работает. Скажи, ты сможешь сделать лучше?

Как вы считаете, это сложные конструкции? Вне авралов, для повседневного общения?
Блин если для тебя вежливость это трудность — иди жить к аборигенам. Как будто тут кто то обязан подтирать сопли взрослому программисту когда он обижается на критику того как он общается, вместо того чтобы конструктивно обсудить правомерность критики. Почему мы должны выслушивать его нытье если он не умеет усваивать этические нормы? А я вот может нормы конкуренции не особо усваиваю — и ниче, не ною же блин. А в Москве она неслабая. Что, давайте ныть, каждый по своей болячке статью писать. Охренеть теперь. У всех есть свои болячки, но это не повод делать предъяву всему миру что «эй ты че, так нельзя, я так не играю». Надо работать над собой молча и все.
UFO just landed and posted this here
Не «ты пишешь код неправильно», «а этот код написан неэффективно»

То есть типа сам собой написался, а имя на коммите с Нибиру прилетело?

В худшем случае допустимо «ты написал этот код неэффективно по таким-то метрикам». Обычно у «критика» нет информации о том, как человек всегда (ну или обычно) пишет код, он видит только конкретный пример. Даже если сто раз таких примеров за авторством этого человека видит, информации для обобщения у него нет. Это не касаясь семантики слова «неправильно».
UFO just landed and posted this here
Хорошо проанализироали, добавил в закладки, чтобы пример приводить :)
Второй вариант мнительные субъекты легко примут за первый, но таки да, не всегда и переубедить в доброте намерений будет проще. И первый пофигистичные субъекты легко примут за второй. Что ничуть не плохо. Второй вариант несомненно лучше.
можете привести ссылку, пожалуйста? (беглый поиск ничего не дал, а аналогичные материалы школы менеджеров Стратоплан мне очень понравились)
Я не помню точно, в какой книге Сергея Абдульманова читал этот отрывок. Либо «Евангелист бизнеса», либо «Бизнес как игра». Вроде как во второй.

Отрывок назывался что-то вроде «как давать обратную связь». Вечером, часов через пять, доберусь до дома и смогу сказать и книгу и где в ней текст с точностью до номера страницы. Ну и процитирую, если цитата будет вменяемых размеров.
Обещанная ссылка: Сергей Абдульманов, «Евангелист бизнеса», раздел Вопрос вместо суждения (в электронной книге стр. 29)
«Ты сделал плохо, переделай здесь и здесь» – это двойное оскорбление.

Цитата побольше оттуда же
Смотрите, какая может быть градация
1. Ты сделал плохо, переделай здесь и здесь.
1. В проекте плохо сделана вот эта часть, надо ее переделать.
1. Вот здесь и здесь не работает вот так и вот так, как мы договаривались.
1. Я не очень понимаю, почему вот здесь и здесь не работает вот так, как мы договаривались. Объясните?
1. Леха, тебе нравится, как вот это и это получилось? Я не очень понимаю, почему вот это так работает. Скажи, ты сможешь сделать лучше?

В варианте 3 вы переходите <....> к конструктивному обсуждению. В варианте 4 вы берете проблему на себя, ни в чем не обвиняя контрагента. А в варианте 5 ставите на кон профессиональную репутацию человека

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

в свою очередь оставлю ссылку на пост, который я упоминал выше: "Управленческие инструменты: 4-фазный алгоритм решения проблем с людьми или «А чего ты хочешь, если ты такой хреновый менеджер?»"
Вы, может, и не видите, но с большей вероятностью Лена быстрее освоит упражнение со вторым подходом, потому что не будет бессознательно отвлекаться на то, что раз неправильно делаешь, значит плохая, значит не соответствуешь ожиданиям социума, значит получай кортизол для отрицательного подкрепления. Она и рефлексировать этого всего не будет, просто выберет второго тренера, потому что с ним лучше получается.
Нет, потому что пример немного утрированный. Представьте что тренер всегда говорит только в таком стиле? Вы сами много научитесь так?
Психологическая стойкость нужна спортсменам-олимпийцам. Остальные лучше учатся на позитиве, или на балансе позитива и негатива.
А вы не думаете, что тренер следит за несколькими подопечными и ему важнее своевременно и понятно указать ошибки, а не сыграть в психологическую игру преувеличенной важности?
Хороший тренер найдёт время и на похвалу — да, не обязательно в одной фразе. Проблема не во фразе «ты всё неправильно делаешь». Проблема когда эта фраза употребляется слишком часто. И да, иногда человек обидится и Вы будете выяснять отношения вместо работы. Это Вам надо?
А лучшие тренера подстраивают стиль общения под характер спортсменов, и выращивают олимпийских чемпионов.
Ну так он похвалит, но позже, когда всё правильно сделает. Сейчас важно исправить ошибки.
А обижаться на такие фразы как минимум странно. Они чисто утилитарные, вы ищете глубокий смысл там где его нет. Всё равно что обижаться на «У вас шнурки развязались» или «Вы рюкзак не застегнули».
Ну вот вам странно, а кто-то помнит что два месяца назад ей сказали «какими большими кусками ты торт порезала!». И считает это своим провалом.
Я не призываю все общение подстраивать под них — это неправильная модель. Я хочу рассказать, что да, такие люди есть и да, они так не троллят, они так думают.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Тренеру это важнее по какой причине? Он работает для себя самого и сам выбирает, что важно, или он руководствуется тем, что важно для подопечного? А если подопечному важно не только сохранить спину, но и сохранить психологический комфорт и самооценку?

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

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

Неучёт побочек от своей деятельности — это слабый профессионализм, недальновидность и верхоглядство, приличествующее молодёжи, для которой главное «крутая технология», а на остальное наплевать. Или тем, кому цель важнее средств.
Это вопрос авторитета тренера и отношений в команде, также характера Лены.
Обычно тренер очень хорошо знает, когда первый подход можно применить, и он будет таки оптимальным. Но обычно второй вариант работает лучше, и вопрос не в «поставить на вид», а в том чтобы добиться наилучшего результата. Не это ли задача тренера и руководителя?
А я вижу. Первый — «стоп, подожди, не делай! Надо вот так. Теперь делай». Второй — «продолжай, но лучше так». Первый несёт заметно меньше риска для проекта (поскольку нежелательная активность сразу прекращается), но более обиден для действующего лица. Второй — наоборот.
(я буду обновлять страницу, честно)
Это как дальтоник, который не видит разницы между зелёным и красным. Она есть, но он её не видит. И по этому считает, что её нет.
Или как некитаец, который не слышит разницы между четырьмя тонами в китайском языке. И по этому считает, что её нет.
И, что самое грустное, так как он эту разницу не видит и не слышит, и убеждён, что её нет, он не только не способен понять других, которые эту разницу видят и слышат, он ещё и возмущается, что другие что-то выдумывают.
Твой код плохой, я сейчас подробно изложу причины и дам советы
Один сплошной бессмысленный пируэт.

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

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

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

У монетки есть две стороны.
На собеседование говорят «Мы Вас нанимаем как специалиста по решению или предтвращениею некоторого спекта проблем. У вас будут следующие полномочия ....»
Вы выходите на работу и начинете выполнять свою работу хорошо. Поскольку вы же только вышли, то вы не погрязли в трясине интриг и взаимных соглашений и вы выдаете результат, что бы пройти испытательных срок.
Проблемы которые вы решаете уже есть результат некоторых компромисов и отсутсвия компетенций «до вас». Выданный вами результат кого-то не устраивает — или случайно облажали «решение Важного Человека» или случайно показали коллективную некомпетентность или что-то подобное. В любом случае, в результате вашей работы кто-то окажется не «в лучшем виде», а это угроза зарплате или авторитету или неформальному лидерству.
Вот тут и начинается самое интересное:
  1. Умные люди попробуют получить ваши знания (научиться у вас или доверится вам) что бы работа стала лучше, результат достигался с меньшим гиморроем и все придет в норму через пару месяцев
  2. Идиоты будут «защищаться» всячески стараясь дискредитировать вас и результаты вашей работу. Они не будут стараться получить ваши знания и понять их ибо их Корона/ЧСВ/болото, как они считают, под угрозой и надо спасать. С их точки зрения они не делают ничего плохого! Но тут и выясняется, что вы то человек новый «не проверенный» а против вас «проверенные». И тогда вопрос — а кто их нанял ?! Кто допустил весь этот фееричеческий трэф? Угроза захватывает не только «прямых коллег» но их/ваше окружение.
    Единственная реакция — убрать источник раздражения. И вы объявляетесь таковым


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

Если бизнес-проблема в том, что отсутсвует обратная связь (положительная или отрицательная) — это печальный случай.
Некоторые системы стремятся перейти от вида 1 к виду 2. А некоторые изначально такими сформировываются, если есть либо запреты, либо игнорирование положительных достижений, типа — вот тебе з/п, которая не зависит от твоих действий. Разве что можем выгнать за ненадобностью, если автоматизируешь свою деятельность. Это в лучшем случае, в худшем могут разогнать весь отдел.

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

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

Есть еще понятие авральности работы. Человек в режиме аврала может находится недолго без ущерба для себя и остальных. Многие работают либо в режиме периодического, либо слишком длительного аврала. Недолго — это около 7 лет, дальше могут начаться проблемы.
А вам никогда не приходилось иметь дело с коллегами, которые на замечания вроде «этот код плохо написан, в прошлый раз уже это падало в проде, мы обсуждали, переделай как у нас принято» — встают, хлопают дверью и потом гадят по мелочи?
Автор об этом пишет. Инфантилизм наступает

Гадят-не гадят — это одно. Но вот если постоянно повторяют слова "этот код плохо написан" вместо "этот код не соответствует нашим стандартам и соглашениям", то одно из повторений вполне может оказаться последней каплей. Инфантилизмом будет как раз терпеть "ты это плохо сделал, папе не нравится, переделай"

Ну обычно после «плохо написан» указывается, что именно «плохо». Я для себя всегда держу в уме: любой комментарий при code review всегда могу грамотно обосновать

А почему не обосновать во время код ревью? Вы в целом понимаете, что слово "плохо" — это субъективная оценка и ваши критерии "плохости" могут не совпадать с автором кода.

А почему не обосновать во время код ревью?

Потому что на ревью обычно сидит несколько человек, и у большинства из них есть чем заняться, кроме как в надцатый раз слушать то, что они сами давно знают?

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

Получается текст, где примерно всё можно тут же отзеркалить:
«Что за бред — доверять управление сервером банка юному бородачу, который плачет от того, что ему не дают шутить про ориентацию? Это должен быть матёрый сисадмин со стальными яйцами, десятилетиями опыта и виртуализацией профессиональных навыков в отдельном левополушарном контейнере, куда нет доступа эмоциям. Вряд ли он вырастет из человека, которого так заботливо оберегали от любого ограничения свободы материться, что он страшно переживает по этому поводу».
Токсичность это, по сути, стервозное поведение. Когда человек сношает мозги на ровном месте, из мухи раздувает слона, тратя кучу времени и сил там, где можно обойтись несколькими точными и спокойными репликами. И что в этом может быть хорошего?

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

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

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

Вообще «токсичность» это еще один термин, которыми пытаются затыкать людей которые имеют какое-то свое мнение. Например James Damore осмелился написать внутренний документ, в котором в достаточно научных и наблюдаемых терминах (психологи этот документ ревьювили, если что) описал что позитивная дискриминация, которую практикует Гугол это трэш, никому не нужно, и катитесь лесом с вашими «дайверсити». Но многие люди в гугле явно посчитали это выражением токсичной маскулинности (еще один горе-термин от современных baizuo) и руководство гугла, то самое которое чуть ли не плакало при выборах Трампа, его таки уволило. А человек всего лишь хотел поесть вкусной Гугловой кухни и чтобы они перестали нанимать людей на основе сексизма.
Вообще я с вашим последним выпуском подкаста который как раз на эту тему (или как это уже назвать учитывая что выпуски только на ютубе) полностью согласен, но токсичность как мне кажется все же о другом. Это намеренные оскорбления, грубость и т.п. вещи явно направленные на несение негатива.
Кажется, есть отличный и точный термин для этого: говнистость! Попытки ее формализовать, как мне кажется, обречены на провал.

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

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

А когда человек предлагает заменить «fuck» на «hug» — это сношение мозгов или борьба с токсичностью?
Я искренне считаю что это стеб. Причем весьма удачный судя по результатам.
Но бан терминов master/slave в некоторых питонопроеках — не стёб.
Ну я и говорю исключительно про этот случай. Я не пытаюсь утверждать что явления нет.
хмм, ведущий/ведомый. Не я конечно понимаю всё зависит от контекста, но чтоб доходить до состояния когда в работах нельзя применять термины употребляемые в данной сфере это крайности.
UFO just landed and posted this here
Анекдот. На заводе запретили ругаться матом. Через месяц заглянули в гроссбухи и обнаружили, что производительность труда упала в разы. Беда. Собрали комиссию, стали исследовать феномен. И так, и эдак смотрели, ничего не поняли. Наконец решили спросить одного рабочего. А он им и говорит:

Внутри матерное слово, лицам с тонкой и ранимой психикой придётся остаться без концовки
— Ну так ясно дело. Раньше, бывало, скажешь: «Петрович, подай вон ту хуйню!» А теперь пока вспомнишь, как она называется, полсмены пройдёт.


Если по существу: взгляд автора я разделяю не до конца, но таки слегка разделяю. Если нужно быстро решить важный вопрос, куда производительнее покрыть друг друга
О ужас, опять матерное слово
хуями
, чем расшаркиваться в реверансах.
IMHO, неумение лаконично выразить мысль без использования абстинентной лексики демонстрирует только лишь бедность словарного запаса и более ничего.
А что демонстрирует использование слова «абстинентный» вместо слова «обсценный»? =)

Вообще, мат — это DSL.
абстинентный тоже подходит
Как весьма фривольная метафора разве что.
Видимо, при абстинентном синдроме хочется много пользоваться обсценной лексикой =)
Усталость после трудового дня в часовом поясе GMT+9 и более ничего.
Хотя может быть это уже подсознание на что-то намекает в тяжёлый понедельник. )
Воот. А матюками можно замечательно общаться даже после самого тяжёлого понедельника. Кодирование, устойчивое к помехам, так сказать)
Вот мне интересно: можно ли описать мат как эзотерический контекстно зависимый язык типа токипоны, или чего-то всё-таки не хватит?

Я встречал людей у которых весь лексический запас около 500 слов. Это включая склонения.

Это синдром абстинентный, а лексика обсценная.

Видимо имелось ввиду токсичность лексики, и как следствие ее способность вызвать отравление у коллектива.
«Вы разговариваете как мудак»
А может куда производительней решать проблему, исправлять ошибку, а не друг друга покрывать или расшаркиваться в реверансах? Какой смысл говорить друг другу "- ты чудак и код твой чудакский — нет, ты чудак и требования твои чудакские" или "- сударь, не соблаговолите ли вы перечитать требования и привести свой неудовлетворящий им код в соответствие — позвольте, сударь, но я считаю, что мой код полностью соответствует требованиям, кроме тех мест, где из-за неопределённого в требованиях поведения я взял на себя смелость имплементировать наиболее, как мне показалось, разумный вариант поведения, так что создавайте новую задачу определяющую поведение"?

Не лучше ли "- вот в требованиях есть (подразумевалось) такое поведение, а в этом коде оно не реализовано, надо реализовать. — требования нечёткие, но теперь я понял, пошёл реализовывать, а ты уточни требования, чтобы QA не поняли так же как я сначала и не заводили несуществующих багов"?
Не лучше ли "- вот в требованиях есть (подразумевалось) такое поведение, а в этом коде оно не реализовано, надо реализовать. — требования нечёткие, но теперь я понял, пошёл реализовывать, а ты уточни требования, чтобы QA не поняли так же как я сначала и не заводили несуществующих багов"?


Да, так отлично. И мало кто назовёт такой диалог «токсичным»:
1. Нет никаких оскорблений, грубых слов или повышенного тона.
2. Нет претензий сотрудников друг к другу. Есть неработающий код, невыполненные требования, неуточнённые требования, несуществующие баги. Это проблемы, которые нужно решать и устранять. Обычная рабочая ситуация.
Зависит от страны и принятой культуры в организации. Знаю компании, где это бы назвали недружелюбностью и сухостью. Это как отсутствие улыбки как атрибута вежливости.
Так называемая «токсичность» есть всего лишь политкорректная замена для понятия «говнистость».
Раньше про таких людей говорили — «мудак», а сейчас — «у него токсичное поведение».
Следствие нежелания самому быть токсичным.
«говнистость» и «мудак» это больше относится к поступкам, а «токсичность» это больше к словам, я бы сказал что старое определение это «энергетические вампиры», потом стали просто «тролли».
«говнистость» и «мудак» это больше к оценочным характеристикам личности, а «токсичность» к последствиям поступков и прочего поведения.

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


bro-dev


старое определение это «энергетические вампиры»

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

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

Можно высказывать негативную оценку, но не стоит переходить на личности. Например: «здесь можно исправить следующие вещи...», вместо «ты — редиска и весь твой плох». Это влияет на самооценку людей и рабочее настроение, которое сильно портится

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

Неожиданный факт — программисты не хотят работать без печенек.

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

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

А «ты херовый программер, простых вещей на знаешь, тебе зарплату платят как синьору, а ты на джуниора еле тянешь. учи матчасть, блеать!»
Это в вашей классификации на что тянет? На личности?
Я не автор комментария, но по-моему это тянет на увольнение по медицинским показаниям.
Несколько другая ситуация. В видео — психологическая обработка домашних мальчиков, фильтрация и спайка коллектива с помощью образа общего врага (Хартман). И он с коллективом заведомо общается не долго. У него работа такая настроить всех новобранцев против себя и через это помочь им сплотиться. Если вы хотите послужить такую же службу на работе в IT, то ничего не мешает, но лучше всего если вы в таком случае будете консультантом.
Ну и бонус такого подхода можно вполне увидеть в этом же самом фильме если что.
Это как-то не совсем адекватно…

Критика не конструктивна. То, что человек не знает каких-то простых вещей ещё ни о чем не говорит. Он просто мог не сталкиваться с какой-то ошибкой/фреймворком/языком программирования.
Джуниор и сениор это понятия немного абстрактные. У меня был коллега, который пришёл джуном, но через месяц стал мидлом так как у него была очень молодая профессия да и сам молодой человек был очень талантливым.
Про зарплату это тоже непрофессионально упоминать, если ему платят, значит он заслужил пройдя собеседование. Если Вы считаете, что всё это незаслуженно, что работник непрофессионален, то можете обсудить это с начальством.


Всё это можно сказать гораздо более корректно.

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

И я вас попросил провести границу между переходом на личности и критикой профессиональных качеств. Вполне конструктивной, кстати.
И я вас попросил провести границу между переходом на личности и критикой профессиональных качеств.

Мы говорим, не про критику кода, а про что-то типа ревью после полугода работы, да? Тогда про "херового программиста" надо убрать и получится без переходов на личности, пусть и грубо. Уберите "блеать" в самом конце, смените интонацию и получится критика профессиональных качеств. Ну, то есть она получится, если убрать про зарплату, а просто сказать, что уровень знаний не соотвествует должности.


Вполне конструктивной, кстати.

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


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

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

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

Опять же. Ну допустим, обматерите вы его. И что, после этого ровно в полночь он превратится в тыкву в сеньора? Вам тогда стоит курсы повышения квалификации открывать — заходит студент в кабинет, 15 минут криков, выходит крутой специалист.
UFO just landed and posted this here
То есть вы осознанно нанимаете джуниора под видом сеньора, даете ему сеньорские таски, а потом ему же начинаете претензии предъявлять, что он не сеньор?

Почему я? Начальство нанимает. Я — программер, работу которого он запорол.
UFO just landed and posted this here
Можно просто вылить кружку кофе на сервер, хотя ему 10 раз говорили не ставить ее на него.
Сеньйор дорос сам, или на курсах обучили, что кофе в сервер нельзя выливать. Очевидно, джуниор этого не мог знать. Понять и простить.
хм, как сисадмин, я бы 2 раза предупредил о последствиях (почему этого делать нельзя), а потом пытался эскалировать. сначала тимлиду, потом ПМу, потом через несколько итераций генеральному, если никто не может ничего сделать. если генеральный примет риск («фиг с ним — возьмём новый со склада и раскатаем ежечасный бэкап» при условии что это действительно так и сработает) — я бы отстал и даже не обижался

я вообще люблю аргументированно эскалировать вплоть до владельцев бизнеса :)
я вообще люблю аргументированно эскалировать

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

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

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

но в здоровой компании, в здоровом коллективе — эскалация (вежливая, аргументированная) — почти всегда помогает.
Тут ещё не просто переход на личности, но и манипуляция через обесценивание и вызывание чувства вины. Как минимум.
«Учи матчасть» — это не конструктив, это пожелание/приказание, примерно как «иди учи, что такое конструктив».

Конструктив — это обмен конкретной информацией полезной для дела, помогающей достигнуть цели. «Учи матчасть» не говорит о том, какую матчать учить, почему именно эту матчасть а не другую, как применять изученное.

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

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

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

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

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

А самые лучшие манипуляции состоят из правды


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

В этой фразе всё "прекрасно". А конструктива в ней ноль. Ну или предложите своё объяснение зачем тут, хотя бы, напоминание о том, какую зарплату платят? Говорящий думает, что человек не знает какую ему зарплату платят? Или, всё же, хочет вызвать чувство вины?

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

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


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


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

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

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


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

Нет, не навесить вину на руководство, а «заставить» руководство признать ошибку, а не навешивать вину на объект этой ошибки.

Ну и по-моему мнению, в индустрии мало реальных самозванцев, хотя бы потому что нет чётких критериев сеньорства и люди, подающиеся на сеньорские позиции, искренне считают себя им соответствующими. А это как раз руководство в широком смысле слова должно понять соответствует ли конкретный кандидат их конкретной позиции, на которую они приклеили ярлык «сеньор». Собеседования, тестовые, испытательный…

Ну обычно фразы о «тебе платят, а ты...» какое-то право только руководство, которое в курсе сколько и за что платят, имеет право моральное произносить.
Нет, не навесить вину на руководство, а «заставить» руководство признать ошибку, а не навешивать вину на объект этой ошибки.

А дальше то что? Сократить зарплату в 2 раза практически нереализуемо. Поэтому для руководства признать ошибку в данном случае == подписать приказ об увольнении или даже оформить процедуру увольнения за несоответствие занимаемой должности. Не самый лучший вариант для сотрудника.


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

А Вы проводили собеседования когда-нибудь? Я бы сказал, что самозванцев в индустрии не менее 80%, ну или неадекватов (на случай, если искренне считают себя сеньорами). И как раз поскольку поток самозванцев настолько велик, есть вероятность, что допустим 5% из них проскочат через первичные фильтры. Хотя да, испытательный срок обычно не проскакивают.


Ну обычно фразы о «тебе платят, а ты...» какое-то право только руководство, которое в курсе сколько и за что платят, имеет право моральное произносить.

Ох-ты ж как завернул… Я выше уже привёл пример контекста, в котором подобную фразу мог бы сказать друг, который таким образом проявляет заботу. Но в целом вариантов разных можно придумать.

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

Проводил. Мне кажется, что вы сильно завышаете процент. Или сильно завышаете требования к сеньору.

Я всё-таки рассматриваю в контексте топика служебные отношения, а не дружеские.

Среди коллег тоже могут быть друзья, почему бы нет?


Мне кажется, что вы сильно завышаете процент. Или сильно завышаете требования к сеньору.

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

Просто в контексте топика рассматривать дружеские отношения смысла не вижу.

Знания, по-моему, вторичны должны быть на собеседованиях, практические навыки важнее. А HR по техническим скиллам не отсеивали. Может как-то проверяли психологическими приёмчиками верит ли сам кандидат, что подходит под требования, но не более.
UFO just landed and posted this here
Умение решать поставленные задачи.
UFO just landed and posted this here
Самые разные. Как минимум те, решения которых можно нагуглить и адаптировать :)
Нет, практические навыки нужны :)
UFO just landed and posted this here
UFO just landed and posted this here
Ну то есть — механическая, повторяющаяся работа, которую можно просто запомнить. И при чём это было в разговоре о «сеньорских позициях»?
UFO just landed and posted this here

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

UFO just landed and posted this here
И тем не менее. Эти умения могут сводиться к системе заученных навыков (пусть и достаточно широкой)? Эта самая система может быть достаточной для выполнения задач уровня сеньора? Если да — то кто должен решать нестандартные задачи: выходит, исключительно специалисты в computer science, которые подготовят алгоритмы и обучат следующее поколение программистов?
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Не просто грубый переход на личности, а плюс неприкрытая манипуляция бьющая, минимум, по двум точкам.
Я привёл в пример ситуацию с полным отсутствием критики как крайнюю точку. Про переход на личности мне кажется несколько перебор.
Что плохого в такой, например, критике: «Василий, ты неправильно поступил, послав десять запросов для получения данных по всем магазинам, можно было получить одним. Похоже ты не читал документацию, как будет время загляни в нашу вики, это тебе поможет решать такие задачи быстрее.»?
Василий, ты неправильно поступил, послав десять запросов для получения данных по всем магазинам, можно было получить одним

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

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

А если не 10 запросов, а 700 там, где можно обойтись 2-3?
Всегда есть граница, за которой самый конструктивный вариант критики — это "WTF?"

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

«Василий, неужели ты не видишь, что льешь расплавленную сталь прямо на мою ногу?»
Извините, не удержался :)
UFO just landed and posted this here
Василий, ты послал целых 10 запросов, а мог бы воспользоваться нашим уже разработанным запросом, который посылает 10-15 других запросов, но под капотом.
UFO just landed and posted this here
UFO just landed and posted this here

Зачем сто первый раз объяснять? Увольте или увольтесь. Ну или вы много знаете случаев, когда именно после мата человек внезапно исправляется и именно мат на него подействовал, а не "звоночек", что раз вы перешли на мат, то ситуация критическая?

Плохого в «неправильно» как минимум. «Неоптимально», «не соответствует нашему принципу „минимум внешних запросов“ или ещё как. Ну и написать код, отправляющий один запрос по каждому магазину, можно куда быстрее чем один запрос на всех, особенно если ответ надо потом распарсить по каждому магазину
UFO just landed and posted this here
Вы вот иронизируете, но нормальный туалет (чистый, теплый, шумоизолированный, недалеко и никогда не занят) — тоже вполне себе плюс компании. Хотя обычно оно скрывается где-нибудь в «уютный новый офис в бизнес-центре класса А».
UFO just landed and posted this here
Кстати, имхо, немного инфантилизма это хорошо если это не мешает работе, а то все какие то слишком скучные, костюмы всякие нацепили и т.д. Правда всего хорошо в меру, и инфантилизма и серьезности. Хотя конечно только по печенькам никто работу выбирать не будет. Я так вообще сладкое не очень люблю.
UFO just landed and posted this here
Если вам одинаково хорошо, что они есть, что их нет, то чем-то пахнет, да. А если «есть — хорошо, нет — плохо, но переживу», то очень даже фактор.
UFO just landed and posted this here

Как по мне, то не бывает. Бывают вещи с низким субъективным весом, каждая по отдельности вроде бы внимания не стоящая, но в совокупности оказывающая очень сильное влияние на решения. И даже сложно сказать, что стало последней каплей — отсутствие печенек или 23" мониторы, а не 24 как в среднем по рынку ожидал, а в идеале 27, или нелюбимая версия ОС, а может вид плохой из окна. В совокупности все такие вещи могут перевесить очередные "+500" к зарплате.

Работал раньше в офисе эконом-класса за МКАДом, там в обеденный перерыв в Перекрестке выстраивались огромные очереди из таких покупающих себе печеньки. Минимум полчаса стоять на кассе, ещё полчаса туда идти и выбирать. Я к тому, что иногда дешевле их таки централизованно закупить.

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


Плюс, как я уже писал ранее, есть и другие плюсы сладкого.

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

Довольно давно. И я бы не сказал, что это что-то плохое.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Когда же, инженерная и научная деятельность превратилась в субкультуру?
Давно была, еще до компьютеров. Научные споры и критика.
UFO just landed and posted this here
Ну, коли вы настолько широко трактуете термин субкультура, то спорить не стану
Ну, а что это не так? Есть разные направления в науке, это, по своему, определенные гетто, у которых свои праздники, шутки и печали.
Но возникает вопрос, если каждый имеет право на работе проявлять свою субкультурность, то как взаимодействовать и не угробить проект/компанию?
Так вот здесь и возникает токсичность, когда всё по феншую катиться в тартарары, то можно посопротивляться (но тебя назовут токсичным) или же расслабится и получать удовольствие.
UFO just landed and posted this here
Токсичность же, всегда направлена на личность или коллектив. Тут и проходит граница.
Умение оскорбить ближнего своего без прямого физического контакта — это высшая форма, не каждому дано. Присуща во всех слоях общества/культур/субкультур.
Никогда в известной мне практике, корректное поведение не приводило к провалам проекта.
Да, когда всё хорошо, то почему бы и нет.
Но обратно, токсичное поведение часто приводило к кризисным ситуациям.
Она может возникать от безысходности. Когда на твое действие выдается 3 косяка. Да, ты не виноват, но в целом всё идет ко дну и ты не хочешь всё топить, ты слишком много сил отдал. Бывает и такое. Но, токсичность ради токсичности — это уже клиника. Такие долго не живут.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Есть критика, а есть оскорбления. Если человек не осознаёт разницы между этими двумя понятиями, то, ему стоит ожидать, что некоторая часть социума не пожелает с ним общаться. С этим надо либо смириться, либо учиться фильтровать базаркритиковать без перехода на личности.

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

А Торвальдса всё терпят… доколе?! :)

Ну тут скорее он сам от себя устал, или осознал :)
Вот если бы комьюнити его выгнало бы...

Его дочь входит в организацию, пропихивающую свой CoC во всё подряд.
Согласен, но не потому что это логически выверенный выбор. Это скорее на эмоциональном уровне.
Чтобы трезво оценивать сложившуюся ситуацию, а здесь трудно не согласиться с автором, нужна все-таки холодная голова. Эмоции всегда все портят и заставляют человека бросаться из крайности в крайность. И то и другое плохо.

На самом деле проблема неприятия критики и обиды на неё довольно остра.


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


На критику в процессе кодревью реагировала остро, а когда один из ее проектов я решил переписать с нуля (т.к. чем такого ребенка лечить — проще нового сделать) она обиделась окончательно и ушла в другую команду. Там стандарты, наверное, ниже :)


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

Если все списать на «природную обидчивость» женщин, то мужчины из-за «природной агрессивности» друг другу ежедневно морды должны бить по тем же вопросам. Стереотипы взрослым людям не к лицу
Я не списываю всё на «природную обидчивость». Но на разницу в психологии между М и Ж тоже не стоит совсем закрывать глаза.

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

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

В любом случае, на мой взгляд, не таким должено быть поведение человека возрастом 30+.
Социальные стереотипы еще есть, чего в среднем ждут от мальчика, а чего — от девочки.
Рискну прослыть шовинистом, но социальные стереотипы опасны в первую очередь тем, что влияют и на девочек тоже. Я знаю не так уж много девушек в ИТ, в целом они хорошие коллеги, кое-кто и специалист получше меня.

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

Да, в ИТ это пока что мой единственный негативный опыт работы с девушками.


Например, совсем недавно работал с совершенно спокойной и адекватной мадам, которая отлично писала на Си, PL/PgSQL, Go и еще всяком. И к критике относилась вполне трезво.


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

А исследования в детской психологии показывают, что многие склонности не социальны а сформированы глубже. Например детям, которые еще не «испорчены» гендерными стереотипами предлагают выбрать игрушку. И что вы думаете? Мальчики выбирают машинки а девочки куклы!!!
А есть ссылки на эти исследования? Впервые о таких результатах слышу.
Я не психолог совсем… Но ИМХО, исследования — дело такое… нет уверенности, что исследователь все учел и ничего не напутал. Дети, которые способны выбирать игрушки — уже достаточно большие, чтобы копировать маму/папу/еще кого-то, так что неясно, насколько это «чистая реакция». То, какие игрушки у них были до этого, тоже может влиять. Плюс, есть еще реклама игрушек и маркетинг (есть мнение, что деление игрушек на «для девочек» и «для мальчиков» — просчитанная маркетинговая стратегия и реальная его цель — поднятие продаж). А от рекламы дети не так чтобы изолированы.
Ну а в целом, с этими детьми фиг угадаешь, во что они захотят играть, а во что — нет. Я играл во все подряд. Моя сестра — больше в игрушки для мальчиков. Мои дети — когда как, по мере взросления — больше в «целевые» игрушки, но это точно социальное влияние, потому что они часто приводят аргумент не «мне это не интересно», а что-то типа «не буду, потому что это для девочек». При этом, если у меня сын периодически видит, что я занимаю чем-то «для девочек» (ну там, готовка, например), ему становится «не западло» в это играть.
Я не уверен что все эти аргументы применимы к 9-месячному ребенку.
9-месячные, по-моему, довольно рандомно все хватают и ориентируются на характеристики типа цвета, размера и тому подобных. Ну там, кому-то нравится, чтобы шуршало, кому-то — чтобы стучало, кому-то — чтобы с зеркальцем… И игры в таком возрасте — это потрогать, покидать, в руках покрутить, обслюнявить…
Ну там не совсем 9-месячные, а 9-17 месяцев в младшей группе. Ну и никак не рассмотрен вопрос, как и с чем эти дети играют дома (утрируя, может быть девочки кроме кукол и игрушечных тарелок у себя дома ничего не видели). И также не рассмотрен вопрос, как эти дети живут дома: один в комнате или, например, двое однополых/разнополых (и какая разница в возрасте). Так что сомнения в чистоте эксперимента остаются.
Тогда надо ставить крест не только на этом исследовании а на куче других исследований, т.к. в этой сфере их проведено достаточно и выявлено очень много интересных эффектов, с различной спецификой (например про девочек и розовый цвет), про то как разные возрастные группы воспринимают игрушки ориентированные по полу, и так далее.

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

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

Просто у разных людей разные предпочтения. И с этим нужно смириться.
с различной спецификой (например про девочек и розовый цвет)

Поясните, пожалуйста. А то есть подозрение (по опыту), что это очередные мифы про «розовый — женский, голубой — мужской», а не хотелось бы.
Так даже в том исследовании на которое я сослался про это вроде есть. А вообще достаточно погуглить в современных изданиях, типа color preference by gender, там очень много интересного и неожиданного. Но опять же, интуиция подсказывает что предпочтение цвета — не следствие процесса социализации.
А можно конкретно ткнуть палочкой? Чтоб я понял именно вашу позицию или что вы конкретно имели в виду в процитированном мной кусочке.

достаточно погуглить в современных изданиях

интуиция подсказывает что предпочтение цвета — не следствие процесса социализации

Вот как раз «погуглив» вы бы самостоятельно убедились, что есть конкретные озвученные мифы, это именно навязано и навязывается социумом, а это — часть процесса социализации.
Вот только про мифы «розовый-голубой» и их развенчивание я читал ещё до интернета и мало что изменилось. Но например, голубой цвет, и не только в одежде, но просто само слово, для многих (ну… фиг знает, сколько их на самом деле, но они повсюду) «мужчин» стал чуть ли не синонимом гомосексуальности.
Даже «младенцев», а не абстрактных детей, если я правильно понял. Хорошо, с этим разобрались, хотя про «предпочтения» вообще я и не говорил. Но, где там про розовый и девочек? :(
Я ведь третий раз спрашиваю одно и то же.
«Хотя любой ответ слово, не любое слово — ответ» G-Kar, «Вавилон 5»
Ладно, буду считать это частью вашей токсичности :P.
UFO just landed and posted this here
Про печеньки. Не так давно я видел в метро рекламу — «У нас нет биллиардного стола и бесплатного кофе, зато мы делаем нужное людям дело!». Реклама от уважаемого страхового агенства с высокой капитализацией. Как вы думаете, какой нужно иметь психотип, чтобы на это купиться, на кого рассчитывает наниматель? Это что, лучшее, что о себе можно сказать? Как минимум, не на меня. При этом, я довольно токсичный тип, могу и нагрубить за плохой подход к делу. Короче, печеньки не трож, поэл? ;) Печеньки — это так люди тебе говорят что они тебя ценят и возможно даже любят.

Я вот недввно сменил работу. Раньше был бесплатный кофе и печеньки, а теперь нет. И вроде бы оклад выше на треть, и работа интереснее, но всё равно обидно… заранее не спросил :(

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

Реклама на то и реклама, что требует броских фраз. Печеньками уже никого не удивишь, а тут скрытый месседж "они за печеньками прикрывают унылую тупую работу, а у нас типа работать интересно!". Мне вот больше всего понравилась и запомнилась такая фраза из одной вакансии 2-летней давности:


Мы не приемлем копипаст строчек вида echo something > /proc/net/… со stackoverflow в качестве оптимизаций, а всегда стараемся докапываться до сути вещей.
Псто про печеньке собирает плюсы в карму
А мои посты про настройку убунты — минусят
Хабр уже не тот…
Отличный пример токсичного камента.

Если предположить что выше предложены лучшие решения, то по делу 2 предложения из 5. Если альтернатив выше нет — то 0.

Не каждый способен на здоровую конструктивную критику без перехода на личности. Чаще все выливается (каламбур :) в помои, коими надо облить конкурента (у кормушки/сердец юзеров).
Даже тут в комментах ( и лайках/дизлайках) присутствует.

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

Из-за этого получается, что рациональное мышление не одобряется, если оно порождает негативные эмоции. А то, что дает положительные эмоции, даже если оно не рационально — тиражируется и превозносится иной раз до небес. Если это не работает, тогда включаются государственные механизмы, которые наказывают «за недостаточную толерантность» нерыночными методами. Абсурд ситуации в том, что некоторые научные теории принимаются или не принимаются не на основе экспериментов, а на основе голосования! Причем голосование преподносится как демократия, но если гражданина N в темном переулке повстречают трое в масках и проведут «демократическое голосование среди присутствующих за перераспределение материальных благ гражданина N», то ни в тот момент, ни позже гражданин N не признает результаты голосования, хотя они были исключительно демократическими.
Вот я специально поискал те самые заминусованные комментарии с критикой соковыжималки — но не нашел почему-то. Вы можете привести ссылку?
Извиняюсь, что мог несознательно ввести в заблуждение указанием про единственную соковыжималку. Это было примером к хайпу в среде идолопоклонников, которые обожают ту или иную вещь вне зависимости от ее работы и функционала. Ладно, если продавцы для потенциальной жертвы расписывают, им выгодно продавать. Но когда обычные люди настойчиво требуют наличия у потенциальной жертвы смартфона (в клинических случаях только определенной марки), электромобиля, чтобы потенциальная жертва пользовалась определенными языками программирования и т.д. — такого даже на Хабре было полно. Про интернет молчу, баталии «А vs Б» практически вечны. Иногда даже выглядят глупо, если человеку нужен «В», но в текущий момент считается, что «В» даже недостойно сравнения с «А» и «Б» и вообще стоит на третьем месте в алфавите.
Некоторые специалисты иногда пытаются как-то объяснить к чем приведет выбор «А» или «Б», например — к росту энергопотребления и высоким эксплуатационным затратам, что перечеркнет любую выгоду от доступного сценария использования.
Меня то не обмануть покупкой игрового ПК за 300к руб под задачи типа «набор текста», даже для 3D моделирования это слишком избыточно во многих случаях (если предполагаемый уровень — школьные поделки). Но есть множество людей, которые ведутся и даже требуют таких же действий и от меня! А любые здравые рассуждения, что ресурсы в разы избыточны — срубаются под корень.
В дальнейшем это приводит к появлению игр, которые занимают 25-100 Гб, ничего нового не предлагают, но имеют лейбу «настоящий игроман мимо такого не пройдет» и соответствующим пренебрежительным отношением со стороны знакомых, которые стали зависимы от игр.
Если игровую индустрию можно обойти стороной, то IT уже намекает на то, что будет лезть из всех щелей со своим «интернетом вещей», когда обычная куртка будет требовать обязательно последнее ПО, которое уязвимо сильнее, чем процессоры Intel (намек на Spectre и Meltdown)
Мы не можем писать в вакансии что за опоздание на 1 минуту штраф, что больничный оплачиваем только 3 дня не чаще раз в году, что обеденный час это на самом деле 15 минут, а если кто пока не курит, то работает на полчаса дольше.

Зато у нас есть печеньки, их обновлять нам обходится куда дешевле, чем рабочии станции и стулья.

p.s. А имеет смысл в корпоративной сети сделать анонимный сайт отзывов? Фотка работника с должностью и любой раз в неделю может внести коммент. От безобидного «Как ни приду ты работаешь, ухожу вижу тебя, ты случаем не бот?» До вполне конкретного «Для любителей говна чеснока по утрам, придумана зубная щетка и жевачка.»
UFO just landed and posted this here
Раньше мир был оооооооооочень суровым и брутальным. И раньше такое понятие как культурная и поведенческая норма была куда более выраженным понятием, потому что если Вы не вписываетесь в норму — грубый, полный насилия мир рихтовал вам углы кирпичом и крепким кулаком того верзилы. Сейчас мир добрее. Гопники уважают АУЕ в одном дворе, гики учат клингонский в другом. В отсутствие сурового воздействия среды само понятие культурной нормы стало фрагментироваться. Культурная норма стремительно распадается на группы по интересам или субкультурные кластеры, довольно замкнутые в своем пузыре. Вы скучаете по старому доброму миру, где можно е*ть соседа кирпичом. Да, да… Раньше было лучше. Но смею заметить, что современный IT мир стал настоящим прорывом в мир, к адаптации, к функциональности и успеху людей попадающих в аутичный спектр. Эта группа людей была избиваема, унижена и подавлена на протяжении тысячелетий. Благодаря феноменальной способности к концентрации, эти люди сейчас в большом количестве пришли в те области, которые позволяют реализовать их потенциал. А вообще пи*уй в Самоли лэнд дядя, по брутальному миру вербального насилия он заскучал. А если не только на х*й послать, но еще и подзатыльники инженерам раздавать, будет еще лучше? Мужиком ты можешь быть в спальне своей жены. А на работе, будь любезен, будь функцией, выражайся корректно и держи эмоции при себе. Потому что мне нравиться мир без насилия, в том числе без психологического.
Пост излишне эмоционален, поэтому вызывает ощущение, что автор призывает к брутальности. Но тем не менее есть открытая проблема, которая вытекает вот в такое — когда люди пишут багрепорт, а тебе в ответ обьясняют — это работает как задумано. Тогда люди пишут — ну так задумано значит плохо, а им в ответ — давайте будем мыслить позитивно, и закрывают тикет. Другой пример — пишешь багрепорт — тебе пишут, да это поломано. У нас даже есть тикет. Вот он, даже — три года назад заведен. О черт возми, пишешь — давайте починим, ведь это серьезно. Ставят тег нужна помощь коммунити. Коммунити приходит чинит. Проходит два автоматических ревью — затыкается на следующем этапе, и никакие попытки протолкнуть уже не работают. Два случая, из одной и той же практики великой компании Гоогле. Казалось бы при чем тут — а набегаешь на статью, в которой человек жалуется, что это результат политики — люди которые пишут баги, гораздо проще продвигаются по службе, чем кто чинит их. Потому что позитивчик и мир без насилия. Как-то так.
Я уже понял по другим комментариям автора, что он против ора и оскорблений. Но из поста это не было видно. Понятно, что одним позитивным подкреплением не обойтись даже в социальной структуре из 2 человек.
Но аффект должен быть максимально исключен из рабочих отношений. Другой вопрос, что мир не совершенен. Много людей живут не своей жизнью, работают там, где не должны и заняты на специальностях, которые категорически не подходят их психическому аппарату. Все это понятно. Но в неидеальном мире как правило любое решение хуже. И нужно смотреть на то, где негативных факторов меньше. Но для насилия и психологического в том числе действует формула: чем больше насилия — тем больше насилия. В целом для компании эффективная стратегия: Тех кто не справляется дообучать. Необучаемых увольнять. (поощрять лучших и хороших не забывать бы еще) И если процесс выстроен хорошо, то каждый сотрудник сам точно знает, за что дают желтую карточку, и сколько желтых нужно набрать, что бы дали красную. В целом люди (а следовательно и компании) как и мать природа очень жадные до выдачи пряников. Поэтому норовят больше использовать кнут. Но положительное подкрепление тоже невероятно эффективно в правильных руках. И хорошо, что сегодняшняя культура и общественный консенсус в IT среде нацелен на укорот кнута.
Я вот совсем не уверен что проблема именно в борьбе с токсичностью. Или что если бы в гугле разрешили друг на друга кричать матом, то указанные проблемы бы решились. Более того, я практически уверен что эти проблемы бы как раз не решились и по очень простой причине — корень этих проблем в другом. Он не в том, что нельзя послать всех, он в том, что в большой компании очень сложно управлять конкретными людьми и оценивать их. Потому что один человек практически не делает никакой разницы для компании. А определять кто лучше, а кто хуже — нужно, нельзя же всех повышать постоянно. И тут снова вступает в силу размер компании — просто нет нужного количества адекватных менеджеров чтобы грамотно отладить систему оценки и в результате получаются такие артефакты. Ну вот скажите, как в данном случае помогло бы отсутствие борьбы с токсичностью?
В качестве бонуса пример из жизни — мне довелось поработать на компанию, которая делала исключительно гос заказы. Никакой борьбы с токсичностью, можно было послать менеджера матом или услышать мат от него. Попробуйте угадать как часто команде приходилось писать быдлокод или забивать на починку ошибок? При полном осознании того что делается. Более того при полном осознании что на следующей неделе сделанное придется откатывать и вываливать очередной хотфикс.
Я уже не имею возможности отредактировать старый комментарий. И понял, что меня могут не понять. Но резким переходом с нормального аргументированного языка на аффективную агрессию, словами: «А вообще пи*уй в» я перевел это в уродливую свалку приматов. То есть выход за рамки 0-эмоционального языка логики просто антипродуктивен. Везде: в споре, в офисе, на форуме, в комментариях. Эмоции все усложняют и ничего не дают в большом сообществе. Устроить кому-то разнос на эмоциях, значит встретить аффективный отпор. Породить какие-то немедленные самоподдерживающиеся реакции в психике этого сотрудника и наблюдателей. И еще у меня два извинения. Со мной такое бывает часто. Первый автору. Даже в качестве такой гиперболизированной иллюстрации, я не должен был в принципе оперировать такими словами как жены и спальни. Это пошло через чур. Мне ужасно стыдно. Я извиняюсь. А второе, мне написали, что Сомали Лэнд прекрасная территория, а плохая Сомали. Я тоже извиняюсь. Но я имел ввиду мифическую дикую дичь, где банды раскрашенных аборигенов с АК-47, сбившись в стаи, воюют друг с другом, вырубая между делом мачтами деревни. Это условное несуществующее место.
Место где господствует эмоциональное выяснение отношений.
Иногда выход на эмоциональные аргументы типа «тыжпрограммист» продуктивен в контексте конкретной задачи. Проблема в том, что работает это только на короткой дистанции, в долгосрочной перспективе такие манипуляции отравят кооперативные отношения.
Как человек, подрихтованый кирпичом не единожды, хотел бы заметить, что вы как-то странно проводите границы. Критика это не «е*ть соседа кирпичом».
Есть целые группы людей с таким типом психики, которые вне зависимости от своего желания после публичной вербальной атаки на них или даже просто наблюдая публичную вербальную атаку будут раскачаны и эмоционально выведены из строя на несколько дней. Они могут быть хорошими, средними, плохими или молодыми специалистами. Разными. Но такой у них психический аппарат. Это аутичный парень которого это вгонит в самоподдерживающийся цикл переживаний на следующие 6 часов, и следующие 3 дня он будет косячить как из пулемета. Или это может быть бипалярник на гране срыва. Потому что он недавно здесь работает и без того в чудовищном стрессе. А как раньше такие справлялись? Я отвечу. Не справлялись. Им была одна большая печаль, тоска и чернота. Не показывайте мне своего рихтованного лица. Я видел разные чугунные лица, и не с такими вмятинами… Меня это не убеждает в правильности метода. Что такое критика в вашем понимании я не знаю. А холодный логический разбор аварийного полета с взысканием, поощрением или без — трудно назвать токсичным.
Возможно, этим людям стоит учитывать свои недостатки? Они могут работать по удалёнке, могут явно это объяснить коллегам, могут работать архивариусом, в конце-то концов. Я, да и большинство людей, полагаю, с пониманием относится к каким-то физиологическим особенностям коллег, но никому в голову не придёт переделывать дверные проёмы под рост самого невысокого сотрудника компании.

Кроме того, я приводил пример конструктивной критики. Если с ваше точки зрения это называется «вербальная атака», то «Передавайте за проезд!» стоит назвать вербальным насилием.

Я с глубоким отвращением отношусь к идее, что ко всем надо относиться как к некоему(любому!) меньшинству. Есть размытая, но достаточно общепринятая практика конструктивного общения — вежливость. Если человек требует к себе особого отношения, то пусть обоснует это и явно укажет. Эти ваши группы людей явно не норма. Обращение со здоровыми людьми как с психически нездоровыми откровенно нелепо.
Эти особенные люди — не все, они ведь разные, и высокоадаптивные и высокоинтелектуальные и не очень. Со своими недостатками и достоинствами. Они и есть IT в 21 веке. Мне жаль. Вы хотели бы загнать их в архивариусы. Или десоциализировать принудительно. Или требовать с них носить желтые звезды и предупреждать весь коллектив. Но это невозможно. Не просто так, не даром (понятно в России даже IT деформирован насилием, а такие люди реально загнаны по домам) в мировой IT-индустрии установлен такой стандарт корректности. В России вы можете такое предлагать. Но в кремниевой долине вас самих внезапно оставят дома. Потому что они норму уже определи, максимальную высоту той двери эмоционального накала, в которую вы можете войти. Еще раз говорю: логический разбор аварийного действия с указанием на ошибку, в ровных холодных безэмоциональных интонациях никто не назовет токсичным поведением. Вы имели ввиду не это.
Зачем это передёргивание и подтасовка? Я говорю совершенно очевидные вещи, разумные и логичные. Не надо подстаиваться под меньшинство. Надо уважать их, минимизировать проблемы взаимодействия, учитывать в важных аспектах общественной активности, но никак не считать их нормой. Глупо заставлять всех учить шрифт Брайля или язык жестов из за половины процента общества, которым это необходимо.
Все учить шрифт Бройля не должны. А исключать аффект и эмоции в формальных отношениях должны. Потому что аффект и эмоции это дикари с АК-47 на Тойотах. Вы не компетентны. Не отличаете обычного от необычного, биполярника от пограничника, аутиста от шизотипического. Раз вы нормальный, значит адаптивный в широком диапазоне. Адаптируйтесь на 0 эмоций. Выплескивайте их — на дружеских встречах у мангала. Там хоть кулачные бои устраиваете если в кайф и все участники дали это знать. Я не нормальный. Я гиперактивный. Я за то, что бы орать, обзываться, возить мордой по столу, каждого, кто мне не нравиться. Вам бы моя норма не понравилась. У вас она оптимальна. И вы апеллируете к большинству. А я думаю, что и моему меньшинству гиперактивных, и вашему большинству умеренных, очень подойдет шрифт Брайля норма эмоциональности при конструктивной критике равная 0.
Естественно я не разбираюсь в аутистах, что за странные укоры? Вы, кстати, тоже не разбираетесь, о чём регулярно предупреждаете в статьях.

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

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


Проблема в том, что аутистов становится все больше. Особенно момент, когда изменение одного незначительного элемента сбивает всю работу, критично не только для аутистов, но и для многих взрослых людей, которые некомпетентны, но за ту з/п нужные компетенции в принципе не найти. И в случае отсутствия понимания работы могут выстраиваться ужасно сложные костыли.
И это в мире, где з/п начинается от 4 тыс руб (и я не из РФ, и не о РФ).
Проблема в том, что аутистов становится все больше.


Аутизм — это болезнь. Больных аутизмом больше не становится, это не заразно.
Да нет градации это еще не болезнь а это уже. Ну точнее есть но чисто юридические. Тем не менее разные черты аутизма действительно проявляют очень много людей, и в ИТ их концентрация выше так как это занятие больше подходит их стилю мышления.
Переломы и травмы тоже не заразны, но вот в хороший гололед в травмпункты поступает больше людей с переломами и другими травмами, нежели обычно.
Существуют факторы, которые приводят к аутизму. И когда таких факторов становится больше, то и аутистов тоже может стать больше. Не забываем, что видов аутизма очень много и стать аутистом можно различными способами. Начиная от генетических проблем до психических расстройств, причем намеренно психические расстройства вызываются достаточно быстро у любого человека. Сроки — от нескольких месяцев до нескольких лет. И устойчивы только те, кто уже имеет какие-то определенные расстройства.
Причина — нейропластичность. Защита — избавиться от нейропластичности, но это является болезнью и человек перестает адаптироваться к изменению условий.
Самый элементарный способ — под действием таблеток, просто забивается мозг глюками и уже никакая разумная деятельность невозможна. Забивать придется долго — до нескольких лет.
Если мне тимлид с каменным лицом скажет — пошли в переговорку, меня в пот бросит, я решу что серьёзно накосячил.

Просто вы не привыкли к безэмоциональности. И легче ли вам будет, если мило улыбнётся перед тем как сообщить, что увольняет вас, а если кто попросит рекомендаций, то они будут крайне негативные?

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

Где и кем считается видимая безэмоциональность в рабочих отношениях психическим заболеванием?

Вот вам ссылка для понимания, почему большинству людей отсутствие эмоций неприятно ru.wikipedia.org/wiki/%D0%97%D0%BB%D0%BE%D0%B2%D0%B5%D1%89%D0%B0%D1%8F_%D0%B4%D0%BE%D0%BB%D0%B8%D0%BD%D0%B0

Взгляд от первого лица, у человека проблемы в том числе и с эмоциями: habr.com/post/430224

Речь не об отсутствии эмоций, а об отсутствии их проявлений, негативно влияющих на рабочие процессы.

О чём речь прекрасно видно из комментариев. Нельзя неправильно понять выражения «0 эмоций» или «безэмоциональность». Хотите дискутировать — излагайте мысли чётко а не говорите что имели в виду совсем другое.

Тем не менее вы умудрились неправильно понять "очень подойдет шрифт Брайля норма эмоциональности при конструктивной критике равная 0"

Понимаете, в чём вопрос.
Это не вас, таких милых и хороших, пытаются загнать в резервации.
Это вы пытаетесь загнать нормальных людей в какой-то концлагерь из эквилибриума и исключить целый диапазон межчеловеческих взаимодействий из их жизни — а работа — это большая часть жизни, просто потому что у какой-то жертвы инклюзивного образования, которая не смогла подобрать себе работу с учётом своих медицинских показаний, от этого может испортиться настроение.
А ваш логический разбор аварийного действия с указанием на ошибку, как справедливо заметили ниже, у нормального человека вызовет гораздо больше паники чем старый добрый эмоциональный разнос.
И ваше предложение отрубать всем ноги по минимальному росту — гораздо более фашистское, чем старое доброе нормалфажеское прокрустово ложе, в котором можно или чуть присогнуться, или носочки вытянуть.
UFO just landed and posted this here
Вот, точняк! Признание допустимых границ слабых людей превращается в издевательство над большинством
Не видел ни одного успешного программиста с реально заметным аутизмом или схожими отклонениями. Хотя тусил в том числе с олимпиадниками и им подобными. Наоборот, большинство успешных знакомых нормально социализируются, имеют солидное ЧСВ, не стесняются посылать, а на подзатыльник могут и стулом перемкнуть по голове.

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

Среди признанных на мировом уровне персон тоже аутистов что-то не вижу. Взять Линуса того же. Или Гвидо. Вполне общительные люди.

Про аутистов — это всё сказки из 90-ых.

Люди, которые реально шарят в этом всём, не страдают от формы высказывания претензий к ним. Как раз потому, что шарят, понимают претензии и последствия косяков.
Видел многих программистов, которые являются замкнутыми, плохо социализируются среди не себе подобных, также имеют высокое ЧСВ, которое иной раз мешает им нормально социализироваться. Мало того — тут зависит еще и от года и обстановки.
Измерение успешности — тут как мерять? По деньгам? Контраргумент по измерению денег: один пишет работу по криптографии, но зарабатывает посредственно, т.к. пишет ради фана, а на работе не напрягается, а другой программист делает простенькие мобильные приложения и получает солидные деньги за свою разработку.
Хотя среди себе подобных программисты легко социализируются за счет «рыбак рыбака видит издалека». Правда качество социализации зависит от отношения к одному виду, а не к разным, типа железячник с веб-дизайнером.
Но смею заметить, что современный IT мир стал настоящим прорывом в мир, к адаптации, к функциональности и успеху людей попадающих в аутичный спектр.
Ну мы рады за людей которые в каком-то там спектре, но как это относится к большинству разработчиков которые ни о каких спектрах и не знают? Не думаете ли вы что они все должны как-то адаптироваться чтобы этой подгруппе safe space предоставить?
Чем выше ты поднимаешься по так называемой карьерной лестнице, тем больше становится денег и тем меньше становится мест и больше желающих. Наскально изобразил так
image

И если в самом начале еще можно говорить о каком-то благородстве, этике, воспитанности и так далее, то выше выигрывать будут совсем другие качества. Как бы отлично не работали все в отделе, место начальника одно и как бы вам не говорили, что будешь стараться — станешь выше, место все равно одно. И значит в бой пойдут далекие от рыцарских романов приемы. И чем выше, тем больше грязи. Увы, но там, где война за деньги, никто не будет думать о чем-то человеческом. «Ничего личного, просто бизнес» четко указывает где люди, а где деньги и кто из них главнее в такой модели.
«Что за бред — доверять управление сервером банка юному бородачу, который плачет от шуток про ориентацию?» Долго не мог понять, что тут такого, вдруг шутка и правда настолько хороша. XD
Автор, наверное, хотел сказать, что когда сервер упадет — а он может упасть, — то если это важный сервер, который не должен падать, то претензии по поводу поломки к юному бородачу будут выражаться в очень грубой форме — вследствие несовершенства психики начальства. А так как бородач очень впечатлительный, то он расплачется и не сможет оперативно восстановить работоспособность системы.
И слёзы капали с бороды впечатлительного хипстоадмина, закорачивая и сжигая порты свитча…

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

Между какими мирами? Тех, у кого хорошо получается в социальные отношения, и у кого — не очень?
Да без разницы
Любой пост на Хабре делит людей на как минимум две воинствующие группы.
Как говориться, без срача и статьи бы не получилось.

Да ладно… На бОльшую часть постов milfgard поглядите. Холивара нет, обсуждение и куча плюсов — есть.

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

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

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

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

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

Замечание может и справедливое, но никакого конструктива оно не несёт, а обидеть реально может. Может не надо делать таких замечаний, если по существу сказать нечего?

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

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

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

А таки где здесь подковёрная интрига?


ЗАПОЙ, запоя, муж. Периодически повторяющееся болезненно непреодолимое влечение к опьянению спиртными напитками.

Вы молодец, конечно, но зачем это написали? Написать пост на хабре/фейсбуке/etc, когда что-то наболело – самый детский способ отреагировать. Типа "ой, вот так плохо, но делать я конечно ничего не буду, а просто вдоволь подраматизирую чтобы меня выслушали, а потом пошлю всех подальше". К чему приводят такие откровения? Ни к чему! К результату приводят действия.

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

Если у человека высокодушевные страдания и он считает что его притесняют, то пусть обращается либо в полицию либо в психиатрию.
А навязывать хрен пойми что хрен пойми откуда не надо. Если кому-то неприятно читать master/slave, то он может найти себе занятие по душе.
Доктора и режут и причиняют боль и руки у них в крови и ничто, не жалуются, если все по делу.
В мире мирных людей убивают в войнах, а тут CoC, да идите в жопу.

UFO just landed and posted this here

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

UFO just landed and posted this here
В тебя плюнул тимлид, а ты в ответ в код нагадил (по УК и ГК не придерёшься) или баг не зарепортил, или закрыл глаза на баги в спеке (ведь валидация — не твоя обязанность) — хорошая атмосферка получается?
Если мне человек плюнет в лицо, то я с него спрошу лично, если это будет публично, то это только усугубит ситуацию.
Следующий шаг это разговор с руководством, на счет того, что за быдлятник они нанимют на работу. А дальше уже будет все сильно зависеть, но люди в здравом уме так делать не будут.
В рабочем процессе переходить на личности — крайне не профессионально.
Человек может быть полным гондоном как личность, но если у него на выходе качественный продукт, значит он свою работу делает хорошо, значит он профессионал и точка.

Чтобы не гадили в код для этого должен быть процесс, который в принципе исключает попадание говнокода, по любой причине.

Я работал с военными: когда капитан послал полковника на 3 буквы на совещании. Отношения были натянутыми долго, но он его не уволил. Потому что не надо выносить личный сор из избы.
ну и тут как не вспомнить вот про это
www.g0l.ru/blog/imgs/letchik.jpg

В областях вроде авиации и автомобилестроения такое уже давно есть — гуглите стандарты DO-178, MISRA и т.п. Код чекается на соответствие автоматически и никакой тимлид уже не скажет, что код ему «пахнет» или где-то трёт — очень удобно, и уж точно лучше, чем когда какой-то мудак с бейджиком начальника самоутверждается за твой счёт.
Вы не поняли, смысл проверки в выкачке денег, считайте сертификация на пустом месте.

Автор не рассмотрел две ситуации: 1) демотивация что-либо делать с позитивным (созидательным) настроем после токсичного инцидента и 2) а что делать, если токсичный вдруг ошибся, но был излишне самоуверен?

Вас уволили из-за вашей токсичности, и вы решили написать этот пост?
С чего это вдруг появится уважение к человеку, который игнорирует критику и советы?

Да не уважайте его, кто вас заставляет?! Просто с раздачей советов и критики прогореть можете вы.
Если вы поняли, что вас, умного, никто не любит, и вы придете к любому психологу, то с большой вероятностью он предложит вам попробовать не давать никому советов и посмотреть что будет. Вам самим то нравится, когда вам сыплют советы? Вы сами то их выполняете или игнорируете? У советов нулевая ценность, об этом есть тысяча афоризмов.
Критика имеет гораздо большее значение. Но критиковать надо еще уметь. Можно посмотреть у Зыгмантовича.
очевидный формат «Твой код плохой, я сейчас подробно изложу причины и дам советы» уже считается токсичным поведением

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

Лично я предпочитаю не делать кофебрейки вообще. Заодно решается проблема с разговорами о рыбалке.
Согласен. Автор хочет критиковать (публично) коллег направо и налево, не имея на это ни должностных ни моральных оснований, и при этом хочет чтобы его любили и ценили. Неразрешимое противоречие налицо
Моя история о том, как на меня полтора года дулись, а я об этом не знал.

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

Вот только конференция эта была (никак не связанная с местом работы), я на неё ездил за свой счёт во время отпуска. У меня оттуда куча фоток, и я там сдал экзамен на сертификат AWS. Об этом бы он узнал за 1 минуту, если бы спросил меня прямо. Но нет…
Я слышал точку зрения, что вся эта история с дружелюбием — это на самом деле просто очередной поколенческий сдвиг, мол постепенно приходит поколение миллениалов («игреки», родившиеся в 1981 — 2000 гг) Это ж «его представители склонны оттягивать переход во взрослую жизнь на более долгий срок», обожают геймификацию и прочее.
Я не социолог, но если это правда, то выхода кроме как принять это особо и нет.
В самом явлении я вижу как плюсы, так и перегибы, так что по мне явление достаточно неоднозначное. Плюс я сомневаюсь, что на просторах одной пятой суши умеют в дружелюбие, потому нам особо тяжело понять эти штуки.
Да умеют в дружелюбие, просто не привыкли конкретно в этой области, да и вообще в больших городах. Если поездить по стране автостопом, то можно наткнуться на громадное количество очень дружелюбных причем совершенно искренне людей.
«игреки», родившиеся в 1981 — 2000 гг
Удивила такая классификация. Ведь это два поколения: люди, родившиеся в 1981, в 2000 завели своих.
Первые видели развал СССР и «лихие 90е», в юном возрасте — когда впечатления ярки. Родившиеся в 1998-2000 (в большинстве) застали только выделенные сети и мобильные у каждого.

Вы взяли такие границы «поколения Y» из какого-то источника? Хотелось бы изучить аргументацию.
Это американская классификация, у бывшего ссср еще делится на подкатегории куда входит поколение Pi
Если это так, то надо продержаться всего лишь 25-30 лет, пока дети сегодняшних CoC'овцев не погонят пинками собственных родителей под лозунги о свободе самовыражения.
Я не уверен что поколение, которое будет определять нравы через 25-30 лет вам понравится больше.

Поколение Z более консервативно, так что они качнут маятник обратно.

Измерение здесь не одно, так что более консервативные — совсем не значит обратно.

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

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

Токсичное поведение же — это: неуместная критика (вместо того, чтобы поправить Главный Код ты зачем-то улучшал debug-output), это неконструктивная критика («да говно это а не код», «это выглядит как грязный прототип, а я ожидал не то, чтобы production grade, но хотя бы, чтобы это было можно читать»), это нападки на личности («ничего другого я от девушки/джуниора/фаната емакса не ожидал», «просто пойди и перечитай матчасть»).

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

Русский архетип негативного перфекционизма подразумевает, что старший кормит младшего говном. В теории, младший, наевшись говна, должен проникнуться благодатью на начать творить шедевры (подразумевается, что в этот момент его перестают кормить говном и начинают закатывать в бронзу). Но на практике часто оказывается так, что младший, наевшись говна, через некоторое время начинает этим говном кормить тех, кого получается (младше, коллег послабее). А дальше вспоминаем анекдот про ковбоев и думаем, можем ли мы уменьшить количество говна на человека в день. Желательно до нуля.
Токсичное поведение же — это: неуместная критика (вместо того, чтобы поправить Главный Код ты зачем-то улучшал debug-output), это неконструктивная критика («да говно это а не код», «это выглядит как грязный прототип, а я ожидал не то, чтобы production grade, но хотя бы, чтобы это было можно читать»), это нападки на личности («ничего другого я от девушки/джуниора/фаната емакса не ожидал», «просто пойди и перечитай матчасть»).

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

Есть мнение, возможно спорное, что, даже при настроенном фильтре, на большинство людей такие комменатрии влияют увеличивая стресс. Который, и это уже доказано, крайне вреден для здоровья.
Это не особенности изложения мыслей, это образ мышления. И если «спам-фильтр» включить, то получится что человек рот открывает, ничего не произнося :)
UFO just landed and posted this here
Представьте себе, что у вас от человека с токсичным поведением зависит принятие или непринятие фичи в апстрим. И у вас нет рычагов воздействия (общего начальника). Вы-то персональный фильтр настроите, но фича в апстрим не попадёт, да и у человека на руках будет доказательство «не реагирует на комментарии в code review».

Именно потому, с токсичным поведением (точнее, с отсутствием уважения) надо бороться системно, а не персонально.
да. Не токсично дать ссылку на документацию, на конкретную страницу.
UFO just landed and posted this here
Самое глупое — когда отправляют к многотомнику, когда там проблема и ее решение описана всего в двух абзацах, причем просто найти по содержанию или даже гуглом (если отсканирована и распознана) — представляется невозможным, т.к. проблема сформулирована иначе, т.е. другие слова, которые являются лишь близки по смыслу. А иногда и правильные глаголы не подберешь, например — для запуска механизма необходимо «использовать», «перетащить», «нажать», «перенести» и т.д.

Еще жестче — если там нет решения.
UFO just landed and posted this here
UFO just landed and posted this here
Вы пытаетесь словом «токсичность» заменить слово «вред». Вред от кумовства и наград за «лесть» большой. Однако, будет большим передёргиванием считать, что вежливость и лесть — это одно и то же. Если вам мимо проходящий улыбнулся и поздоровался (не знаю, принято ли так сейчас делать в России), то это не делает его льстецом, и не означает, что в ответ на его улыбку ему надо отвечать «чо лыбишься, вали отсюда пока цел». (да, я тоже чуток передёргиваю, для гротеска).

Насчёт «ограниченные возможности». Уже давно заменили на persons with special needs. Что в себя включает, внезапно, не только инвалидов, но и, например, маму с коляской (у которой special needs, ей нужен пеленальный столик и широкая парковка, чтобы ребёнка было можно достать), и человека без инвалидности, но, например, с временным нарушением двигательной функции (привет, сломанная нога).

Токсичность терминов в русском языке «master»/«slave» нулевая, в силу того, что эти слова никогда не использовались как унизительные. Замените их на «пахан» и «опущенный» (пахан отправляет сигнал опущенному и опущенный его слушается) — и вы почувствуете насколько неприятно такое читать native speaker. Хотя тому же англичанину «opuschenniy» ничего такого не скажет.

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

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

Весь вопрос вокруг «токсичности» совершенно не актуален для России — это проблемы первого мира. В инклюзивном обществе, в котором принято обеспечивать инвалидам 100% досягаемость общественных мест, матерям — пеленальные и широкие парковки, людям с расстройствами гендерной идентичности — возможность эти расстройства компенсировать или исправить, в таком обществе проблема токсичности — острая.

В России же есть куда более острые проблемы ксенофобии и нетерпимости, как политические, так и социальные. Так что все эти танцы с «токсичностью» выглядят примерно как «здоровое питание в котором поменьше пустых калорий и побольше овощей» для блокадника в 43 году. С жиру бесятся.
UFO just landed and posted this here
По «стандартному финту» я ничего не могу сказать, вы спорите с кем-то другим, я ничего такого не делал и не говорил.

Не «барин и холоп». Это уже достаточно давно пройденная история. Что у нас тут ближайшее актуальное в культурном пространстве? ВОВ? Отлично. Фашисты и партизаны. Вот представьте себе ГОСТ, где написано «Фашисты вешают партизан, если партизан отказывается вешаться расстреливают его семью». Я верю, что лично вам это совсем и пофигу, но представьте себе реакцию прессы на такой стандарт. Объясняю в чём проблема: включение такой терминологии в стандарт приводит к нормализации этой семантики. Даже через омонимию (синонимы) — но приводит. Мы-то знаем, что «фашист» — это центральный сервер, а «партизан» — неудачный запрос, а его семья — это все смежные запросы. Но звучание всё равно не то.
(следующий вопрос)
… И чем такая прокрастинация будет отличаться от прокрастинации вида: «это говно». «это не говно, это ты мудак», «нет, это ты мудак, а твоя мать состоит в половых отношениях с тобой». «нет, это твоя мать состоит в половых отношениях со мной и с тобой».

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

(следующий вопрос)
По вашей аналогии — вы хотите иметь право хамить в ответ на то, что вы считаете «сношением мозга».

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

Цитата: «Я заявляю, что это отравляет процессы,». и ещё цитата с сокращениями: " Либо давайте… научные работы в которых явно доказан вред этого.".

Линус сам признал, что перегибает палку и взял таймаут остыть. Вместе с этим прилетел code of conduct, так что я не до конца понимаю, почему вы эту фигуру в свою пользу трактуете.

По поводу проблем с дискриминацией в США — вы совершенно правы, она во все поля. Вот в рамках борьбы с этой дискриминацией и оскорблениями (в т.ч. по рассовому признаку) и придуманы правила поведения. Чтобы все могли спокойно и безболезненно сосуществовать.

У меня есть гипотеза. Вы почему-то считаете, что наличие code of conduct и запрет токсичного поведения отменяет меритократию.

Он не отменяет, он дополняет. Так же как запрет на убийство совершенно не отменяет меритократию при рассмотрении PR.
UFO just landed and posted this here
UFO just landed and posted this here
Последний человек, бывший в рабстве в США, умер в 1935 году. А после этого была рассовая сегрегация, которая закончилась 1964. Человек, которому сейчас 70 вполне будет помнить времена сегрегации лично против него. Про дискриминационные политики, которые продолжались сильно дольше финального закона против сегрегации… (мне трудно найти источник, но, вроде бы, последние из них были отменены в районе 1980ых). Я бы сказал, история по актуальности не сильно дальше, чем СССР.
UFO just landed and posted this here
А потом колхозники фактически находились на положении крепостных. И в ГУЛаге было, по сути, рабство. Давайте вместо «мастер-слейв» использовать «вертухай-зек». Меня это не оскорбит, поржу только)
Это зависит от того, сколько у вас родственников расстреляли как врагов народа. Кому-то смешно (прадедушка тоже потешался в составе троек), а кому-то и обидно за семейную память. Не?
Кому-то, наверное, обидно. Это их проблемы.
К сожалению (разумеется, это фигура речи), у меня в биографии нет подходящих угнетённых родственников. Но, скажем, я не вижу ничего оскорбительного в шутках про рак, от которого у меня умерла бабушка. Про алкоголизм, от которого страдали оба моих деда. Про лишний вес, который есть у меня. Про развод родителей. Про смерть любимых домашних питомцев. Нет, в принципе, если долго, точно и зло шутить на эти темы, я думаю, меня можно вывести из равновесия. Но чтобы у меня бомбило из-за того, что где-то какой-то термин как бы намекает на что-то… Это нужен какой-то инопланетянский склад ума, который я в принципе не могу понять.

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

Заголовок спойлера
image
Если вы такой не чувствительный, то как насчёт code of conduct? Почему оно вас тогда так задевает?

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

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

На всякий случай, в мире опенсорса, всегда есть отличное право: форкните и создавайте своё комьюнити. С блэкджеком и оскорблениями.
Если вы такой не чувствительный, то как насчёт code of conduct? Почему оно вас тогда так задевает?
Потому что всё идёт к тому, что половину языка объявят hate speech, и чтобы её заместить, придётся учить целый новояз.

Когда я говорю, я хочу думать о том, как точнее выразить мою мысль, а не о том, не оскорбят ли мои слова какой-то из 732 гендеров.
Свобода слова — это неотчуждаемое конституционное правило каждого человека (по крайней мере, в теории). Да, даже «в дикой рашке». А вот о праве не слышать нехороших слов я впервые услышал от профессиональных принимателей Code of Conduct.
Право не слышать не хороших слов можно отнести к праву на достоинство личности. Причём если свободу слова относят к политическим правам, то право на достоинство личности — к личным, наряду с таким правом как право на жизнь и свободу.
Право не слышать нехороших слов можно отнести к праву на достоинство личности.

Ну так ради бога, никто не запрещает Вам заткнуть уши. (Права затыкать чей-либо рот, Вам, к счастью, никто не давал).

Право заключается не в праве не слышать лично унижающие слова, а в праве на то, что они не должны быть произнесены. Как право на жизнь заключается не в праве увернуться от пули, а в праве на то, что пуля не должна быть выпущена.
UFO just landed and posted this here
UFO just landed and posted this here
Вы мне напомнили тот анекдот.

Один человек сделал доброе дело волщебнику.
— Просим у меня что хочешь! — сказал волшебник.
— Я хочу, чтобы у меня XXX был до земли.
Волшебник взмахнул палочкой, и у человека сильно укоротились ноги.
Так выпьем же за то, чтобы всегда правильно формулировать задание на разработку конструкторской документации!

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

Кстати, вот ещё на ту же тему анекдот:

Идут Винни-Пух с Пятачком по лесу. Молчат, каждый о своём думает. Вдруг Винни-Пух с разворота залепляет Пятачку в рыло.
— Винни, за что?!?!?
— За то, что идёшь тут, свинья, молчишь, думаешь про меня всякое...

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

А право человека с ружьём заключается в том, что на стрельбище он может палить по произвольным целям, а если в этот момент Вы там грибы собирали и впёрлись на линию огня, то это уже Ваши проблемы.
А право человека с ружьём заключается в том, что на стрельбище он может палить по произвольным целям, а если в этот момент Вы там грибы собирали и впёрлись на линию огня, то это уже Ваши проблемы.

Интересно, про «Ваши проблемы» относится также к инструкторам и другим посетителям стрельбища, которые не «впирались» на линию огня, но попадают под определение «произвольная цель» (так как находятся на стрельбище)?
«Поаккуратнее с формулировочками» (С)
А кроме права у человека с ружьём есть и обязанности.
При проведении стрельб на стрельбище (полигоне) назначается оцепление, показчики мишеней, а также другие лица, обслуживающие стрельбы.
Границы стрельбища открытого типа обозначаются на местности надписями: «Стрельбище», «Стой, стреляют», «Проход и проезд запре­щен», которые устанавливаются в пределах хорошей видимости, а также в местах пересечения троп и дорог, ведущих на территорию стрельбища. При необходимости границы стрельбища (тира) могут окапываться тран­шеями. Все дороги и пешеходные тропы перекрываются шлагбаумами или другими заграждениями. Кроме того, в ближайших к стрельбищу (тиру) населенных пунктах вывешиваются объявления на русском и местном (национальном) языках о запрещении входить, въезжать на территорию стрельбища (тира) во время стрельбы.
Ну так Вы и пришли на Хабр. Пользовательское соглащение читали? «Это интернет, детка. Здесь могут и на@$# послать». ©
А вы его читали?
Вот список того, чего на ресурсе делать не следует

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

А я слежу за эмоциями. И абсолютно безэмоционально констатирую, что Барака Обама — негр. А он почему-то обижается и карму сливает.


P.S. Если непонятен мой посыл: я озвучил неперложный факт: Барак Обама — представитель негроидной расы (любой обладатель телевизора может лично проверить этот факт). Но в силу различных сдвижек в мозгах отдельных индивидумов возникает ситуация из известного анекдота "мама, он меня сукой обозвал!"

Видите, как интересно? А тут ррраз — и code of conduct, и есть право заткнуть рот человеку, который этот code of conduct не соблюдает.

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

Таким образом мудаком меня ещё не называли.
Более того, я даже затрудняюсь сказать, что будет более неуважительным и невежливым, сказать, что я мудак, или воспроизвести ваше высказывание.
Интересно, как может поменяться истинность высказывания без изменения его смысла? Я правильно понимаю, что за счёт заметы одного слова на короткое выражение Вы изменяете контекст, в котором это высказывание действует (проще говоря — переносите обсуждение в какое-то общество вне современного человечества)?
UFO just landed and posted this here
Окей вы правы, это личная нападка, извините.

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

Вот так же и с code of conduct. Договорились — соблюдаем.
UFO just landed and posted this here
То есть никакой градации между «в суд за оскорбление» и «не делайте так, чтобы не портить рабочую атмосферу»?

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

(Кстати, именно это для меня сильнее всего отличает Кипр от РФ — тут (Кипр) водят довольно плохо, но никто никогда не подрезает никого, чтобы «наказать», никто не пытается объехать тебя по полосе на поворот и втистнуться перед тобой — на дороге просто нет злобы и раздражения. Очень легко пропускают.

Вот такого же я ожидаю и от сообществ в opensource. А не как в Питере в пробке на въезде в город (где стоишь уныло, а по обочине прям десятками прут).
UFO just landed and posted this here
Записать в code of conduct, что не надо подрезать и обгонять по обочинам и полосам для поворота. И высказывать социальное «фи» тем, кто так делает.
UFO just landed and posted this here
Да, если кто-то из принципа на дороге делает неудобно окружающим, он будет нерукопожатым. Сначала ему про это намекнут, потом скажут. Если продолжит настаивать, что надо создавать проблемы окружающим на дороге (даже в рамках ПДД) — просто перестанут общаться и начнут относиться хуже.
UFO just landed and posted this here
Разве кто-то предлагает сажать за токсичное поведение? Нет, просто люди с токсичным человеком не будут общаться при прочих равных.
UFO just landed and posted this here
Это не суды линча, это выбор свободных людей не общаться с токсичным человеком. Никто не обязан терпеть ненравящяеся поведение другого человека (кроме каких-то недобровольных коллективов типа призывной армии, тюрьмы или класса в школе :) )

И «мы» не навязываем среду и прочее, «мы» или выталкиваем инородное из своей среды, или выходим из чужой. Классическое «не вписался коллектив».
Это не суды линча, это выбор свободных людей не общаться с токсичным человеком.

Ну так пусть не общаются — если не хотят. Проблема в том, что они не дают другим людям общаться с человеком, которого сами считают токсичным. Вы правда-правда не видите тут ничего неправильного? Или, по-Вашему, "есть две точки зрения — моя и неправильная"?

Что значит не дают, если не брать крайние случаи типа заключения в тюрьму? Если говорить о вынуждению к увольнению или увольнению по надуманному предлогу токсичного сотрудника, то руководство не не даёт общаться с ним с остальными, а не даёт ему негативно влиять на рабочие отношения. Что остальные лишаются возможности общаться с ним в рабочее время (и то, с нынешними средствами общения обычно лишаются лишь простого способа общаться) — лишь сайд-эффект.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Простите, вы хотите, чтобы няня могла называть ребёнка «мудаком» если ей хочется высказать ребёнку своё неудовольствие его неконструктивной позицией по поводу каши?
UFO just landed and posted this here
Какие передёргивания? Стартап запустил сервис скрининга нянь. Заказчик имеет полное право воспользоваться этим сервисом для выбора исполнителя. А может и не воспользоваться.

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

Т.е. я как раз не понимаю к чему этот пример. Я тоже использую рейтинги других пользователей для выбора исполнителей.
UFO just landed and posted this here
Если человек тащится 65 по однополосной дороге, в которой лимит 90, да, он делает неудобно всем. У него могут быть объективные причины — и их принято показывать аварийкой. Если же он едет так «из принципа» — он нарушает code of conduct на дороге.

… Я как потребитель имею право использовать любые критерии выбора поставщика услуг. Начиная с «лояльности бренду» и заканчивая высказываниями их CEO относительно ананасов на пицце.
Если же он едет так «из принципа» — он нарушает code of conduct на дороге.

Что, в общем-то, не дает абсолютно никакого права другим участникам ДД каким-то образом его «ущемлять», «учить» и любыми другими путями принуждать к соблюдению некоего Code of Conduct (существующего исключительно в головах некоторых водителей на этой дороге).
code of conduct на дороге называется ПДД. И там это есть: «создавать помехи другим транспортным средствам, двигаясь без необходимости со слишком малой скоростью;»
code of conduct на дороге называется ПДД.

Это, конечно, не так.

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

Кроме того, в ПДД нет определения ни понятию «помеха», ни, тем более «слишком малой скорости», соответственно, водитель может ехать хоть 10 км/ч, и если кто-то из других водителей подумает, что это нарушение какого-то там Code of Conduct — ну что ж, это его проблемы.
Определения может и нет, а текст я из ПДД цитировал.

code of conduct так же имеет силу «правил сообщества» (примерно такими же будут «правила поведения в клубе» в каком-то заведении).
Определения может и нет, а текст я из ПДД цитировал.

Это классическая «дыра» в ПДД. Да, де-юре ехать слишком медленно нельзя. А вот сколько это «слишком медленно» — написать забыли. И что такое помеха — тоже не написано. Поэтому апеллировать к этому пункту — ну такое себе.

code of conduct так же имеет силу «правил сообщества»

Только в одном-единственном случае — если некто считает себя участником сообщества.

(примерно такими же будут «правила поведения в клубе» в каком-то заведении).

Это, конечно, не так.

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

Ну на самом деле это описание «не создавать помех», но можно попробовать применить, согласен.

Если у остальных участников движения преимущества нет

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

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

Так быть может. Если есть «ряд тезисов с неопределенностью» — берем эти тезисы, улучшаем, вводим новые понятия и максимально добавляем определения, чтобы исключить разночтения. Да, это несколько… утопично, но — не невозможно.

Вы её (возможность аппеляции к здравому смыслу) отрицаете и хотите жёсткой кодификации всего.

Жесткая кодификация всего, что касается источников повышенной опасности (а автомобиль как раз оно) — это замечательно, поверьте.

А что касается «здравого смысла», так это все субъективно.
UFO just landed and posted this here
Вы её (возможность аппеляции к здравому смыслу) отрицаете и хотите жёсткой кодификации всего.

И это говорит человек, который незадолго до этого утверждал, что аппеляция к здравому смыслу невозможна, и что кодификация межчеловеческого общения — это необходимо, круто и классно.
Знаете, это уже не пушка, а целая батарея береговой обороны.
Если под «это говорит человек» подразумеваете меня и мои комментарии, то я такого не писал.
Окей, но как тогда понимать вашу апологию Code of conduct?
Лично у меня сложилось устойчивое впечатление о том, что вы считаете, что апеляции к здравому смыслу в общении между людьми недостаточно, и что без наличия кодифицированых правил этого самого общения, все сразу же скатятся к обкладыванию друг друга #@! ми.
Прошу меня извинить, если это не так.
Нет, вы говорите не те вещи, которые я говорил.

Мой комментарий был о том, чем токсичное поведение отличается от конструктивной критики.

Зачем в обществе code of conduct? Чтобы если кто-то начинает вести себя некомфортно для окружающих, ему можно было бы указать на правила.

Правила уровня code of conduct пишутся не как легальные документы, со строгими определениями, а как набор идей о том, как должно быть устроено общество. Безусловно предполагается, что люди (в т.ч. человек, которого отправили читать Code of Conduct) действуют из лучших побуждений, но их модель поведения отличается от принятой в сообществе. Предполагается, что человек прочтёт и учтёт. Если человек пришёл с плохими намерениями или использует общение с сокоммитерами как отдушку (сказать им всё, что я оних думаю), то никакой code of conduct ему не поможет.

У code of conduct есть ещё одно применение: если возникает резкий конфликт между участниками, окружающие могут (самостоятельно!) прийти к выводу о том, чьё поведение стало/является причиной этого конфликта.

В зависимости от governance-модели финальное решение (об экскоммуникации) принимается либо специальным человеком модератор/координатор/лидер проекта/человек с админскими правами в git'е, либо группой лиц (например, Technical Committee в Debian). Которые так же используют своё суждение о том, насколько поведение человека соответствует CoC.

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

ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%AD%D1%82%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5

Плюс вот это:

ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%9F%D1%80%D0%B5%D0%B4%D0%BF%D0%BE%D0%BB%D0%B0%D0%B3%D0%B0%D0%B9%D1%82%D0%B5_%D0%B4%D0%BE%D0%B1%D1%80%D1%8B%D0%B5_%D0%BD%D0%B0%D0%BC%D0%B5%D1%80%D0%B5%D0%BD%D0%B8%D1%8F

(ссылки как всегда кривые — копипаст надо делать, ибо двоеточие).

Какая часть выражения "без необходимости" Вам непонятна? А необходимостемометр у Вас в кармане, или на глазок прикидывать будете?

Что, в общем-то, не дает абсолютно никакого права другим участникам ДД каким-то образом его «ущемлять», «учить» и любыми другими путями принуждать к соблюдению некоего Code of Conduct (существующего исключительно в головах некоторых водителей на этой дороге).

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

Это дает право на вышеперечисленные мной действия? Конечно же, нет.
Какие действия? Бить человеку в задний бампер и создавать ДТП? Конечно нет, можно придумать что-то изящнее. Или вы про что?
Какие действия?

каким-то образом его «ущемлять», «учить» и любыми другими путями принуждать к соблюдению некоего Code of Conduct
У вас есть ещё варианты, как можно его научить? Обогнать, пристроиться спереди и снизить скорость ещё больше? :) Допустим, а если у нас однополоска и обгон невозможен?
У вас есть ещё варианты, как можно его научить?

Вариантов, как его «научить» нету по определению, ибо ни у кого нет права на дороге «учить».
Ага. А плестись медленно и тормозить весь поток значит можно? Избирательная какая-то у вас логика. По-моему, что первое, что второе — явное неуважение к остальным участникам, и большой разницы тут нет.
А плестись медленно и тормозить весь поток значит можно?

Выше установили, что в ПДД нет точного определения, что такое «медленно».

явное неуважение к остальным участникам

Понятия «неуважение» в ПДД тоже нет. Человек едет по правилам = никто не вправе ему ничего предъявлять или, тем более, «учить».

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

В ПДД может и нет, а с точки зрения здравого смысла — сформулировать без проблем.

Медленно — это значит существенно медленнее скоростного лимита (например, вдвое). При этом это не относится к тем, кто едет по правой полосе в случае двух или трёхполосной дороги, а также к фурам, которые физически или из соображений безопасности не могут быстрее, и к автобусам.

То есть к тем, кого нельзя обогнать, и кто сильно «режет» лимит, разрешённый на данной дороге по правилам (то есть заставляет всех тащиться намного медленнее, чем они могли бы ехать).

Да, этого нет в правилах, но это же и так для всех очевидно совершенно.

езжу по уму, а не по правилам

Вы полагаете, что «по уму» — это самое худшее? По-моему, неуважение к тем, кто рядом с тобой на дороге — куда хуже.
Вы полагаете, что «по уму» — это самое худшее?

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

неуважение к тем, кто рядом с тобой на дороге -куда хуже.

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

Я и не говорю, что нужно их нарушать, я за соблюдение. Просто мне лично проще простить другому участнику нарушение правил, если это не было явным неуважением к другим (да-да, опять возвращаемся к тому же), и кроме того не несло существенного риска для меня и для остальных :)
Но опять же, в ПДД говорится:
Скорость должна обеспечивать водителю возможность постоянного контроля за движением транспортного средства для выполнения требований Правил
Значит, если разрешены 90км/ч, а водитель считает, что уверенно контролирует автомобиль только на 45км/ч, то именно на этих 45км/ч он и должен двигаться.
Даже если у нас прямая дорога с идеально ровным покрытием?

Мне кто-то из знакомых говорил, что мол на ретро-автомобиле не разрешает ездить, поскольку он не соответствует нормам — в частности, по максимальной скорости, разгону и торможению. И что человек, который будет ездить на таком, будет мешать всем. Это мне правильно сказали, или выдумки?
UFO just landed and posted this here
На самом деле корень проблемы-то глубже, мы с вами частность обсуждаем, а если потянуть за этот корень, можно вытянуть такие омерзительные вещи, как «езжу по уму, а не по правилам» или даже еще хуже.

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

Вот только, каким образом можно это сознание перебороть, как изменить? Есть идеи, предположения?
UFO just landed and posted this here
UFO just landed and posted this here
Знаете, а мне иногда хочется дожить до того дня, когда все эти механизмы генерации радости и счастья придут к своему логическому завершению.
И сидя на берегу реки ехидно потирать руки, когда все, кто это счастье строил, приближал и поддерживал будут спрашивать «А нас то за что».
UFO just landed and posted this here
«право говорить человеку что хочешь, даже если он не хочет этого слылшать»,

Брек, господа, брек!


Не путайте "право говорить (конкретному) человеку что хочешь, даже если он не хочет этого слышать" и "право говорить слушателям что хочешь, даже если среди них окажется один, который не хочет этого слышать"! Это весьма отличающиеся вещи. А то один про Фому, а другой про Ерёму.

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

И вы возмущены тем, что кто-то не хочет уважать ваше право не уважать других. ┐(´•_•`)┌
Ну тут уж, как говорится, или крестик снять, или трусы надеть.
Или уважать право на свободу слова, или уважать тот факт, что кто угодно может объявить всё, что вы скажете, оскорбляющим его чувства.
Или создавать привелигированые меньшинства, которым даровано право оскорбляться.
Вот только проблема-то в том, что если сегодня вам запрещают говорить Васе, что он мудак, то, как показывает история, завтра вам просто непременно запретят говорить, что от деятельности Васи одни проблемы и разорение, потому что «Ты что, хочешь сказать что он мудак? Ах ты морда токсичная».
А привилегированые меньшинства начнут оттягиваться по полной. Просто потому что проверять границы допустимого — в свойствах абсолютного большинства человек.

Ну и в конце концов, если это общество считает меня достаточно зрелым, чтобы доверить мне управление источником повышеной опасности, воспитание подрастающего поколения, употребление наркотических средств, участие в избрании тех, кто будет этим обществом управлять и даже владение огнестрельным оружием — то какого, пардоньте, рожна оно не доверяет мне высказывать то что я считаю необходимым, тем, кому я считаю необходимым это высказать?
Тогда у меня есть два варианта: или несмотря на то, что всё вышесказанное мне доверяют, вы всё же считаете меня способным высказывать своё отрицательное мнение, выработанное без какого-либо весомого повода и непоощряемым в обществе методом, т. е. держите за несоцализированного идиота. Чем уже сами по себе меня, как человека более-менее разумного, просто катастрофически оскорбляете.
Или вы просто хотите заткнуть мне рот и оттяпать себе побольше общественных благ под тем или иным поводом. И тогда чем вы отличаетесь от вора, мошенника или коррупционера?
В целом, каждый из этих вариантов уже стоит того чтобы дефинировать вас таким образом, который воспроизводить публично мне образование не позволяет.
И опять мы возвращаемся к вопросу, обязаны ли окружающие уважать ваше право их не уважать.
А нет никакого вопроса.
Если Х не уважает моё право не уважать его, то этим самым он реализует своё право не уважать меня.
Причём, заметьте, я-то отстаивал только наличие уменя такого права, в то время как ваш вежливый, цивильный и борющийся с моим правом его не уважать Х повёл себя как последний мудак, которым он и является, и напрямую реализовал в отношении меня то право, которое он пытается у меня отнять.
Так что или Х уважает моё право его не уважать, или он лицемерная редиска. Как-то так.
Супер. В какой момент в нашей дискуссии возникло слово «мудак»? Кажется, иллюстрации к необходимости code of conduct возникают сами по себе.

Свобода одного заканчивается там, где начинается свобода другого. Сообщества с открытым исходным текстом имеют полную свободу принимать или не принимать code of conduct. Если вам кажется, что там сплошные «мудаки», вы можете сделать свой форк этого ПО, в котором все могут называть друг друга мудаками, не рискуя при этом ни чем, кроме как получить «мудак» в ответ. И вот в этой волшебной атмосфере вы и можете свободно программировать… или называть других «мудаками», это уж что вашей душе больше по нраву.
В какой момент в нашей дискуссии возникло слово «мудак»?

В тот самый момент, когда кто-то вздумал расширять свою свободу не слышать неприятных вещей за счёт свободы кого-то другого говорить то, что тот считает необходимым сказать?
Сообщества с открытым исходным текстом имеют полную свободу принимать или не принимать code of conduct.

Это очень отдельная тема для очень отдельного долгого обсуждения: имеют ли сообщества какую-либо вообще свободу, и насколько свободно принятие этим сообществом той или иной вещи.

Ну и да, превращать дискуссию в полемику, прыгая с темы свободы слова, как одного из столпов свободного общества на конкретные примеры и передёргивая по чёрному — это определённо нетоксично и достойно борца с токсичностью.
Примерно настолько же, насколько нетоксичны требования исключения человека из проекта за высказывания семилетней давности.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Вы правы про существование этой проблемы. Она объективная. Например, психологи и психиатры постоянно находятся в состоянии «уклоняющегося дрейфа», потому что все их нейтральные термины подхватываются обществом как оскорбительные. И им приходится снова и снова заменять «маниакально-депрессивный синдром» на очередное «биполярное расстройство».

Я не понимаю, правда, почему наличие языкового дрейфа вы используете как аргумент в этой дискуссии.
И только русские уже который век называют негров неграми, и смеются над всеми остальными :)
UFO just landed and posted this here
Тренд на выкапывание античных высказываний мне тоже не нравится, однако, это совершенно другая проблема, отличная от задачи «вести себя вежливо с другими прямо сейчас».
UFO just landed and posted this here
Я плохо помню что происходило в интернет-тусовке в 2000, потому что большая часть общения проходила в Фидо. Там было принято обращение на «ты», и переход на «вы» обычно означал демонстрацию разрыва приятельских отношений.

… Кстати, в Фидо вообще-то говоря, code of conduct был всегда, и составлял немалую часть полиси.
UFO just landed and posted this here
Это не будет оскорблением, но будет сигналом исключения из «своих».

В англоязычной среде проблему решили очень просто — thou больше не используется. Все всегда на «вы».
UFO just landed and posted this here
Да, и в этом вам будет очень далеко до настоящего британца, который может послать всего лишь уменьшив паузу перед одобрением высказанной идеи (буквально недавно ощутил на себе — было потрясающе выразительно).

И да, такой вариант лично мне по душе куда больше, чем если бы он нахмурился и сказал «ты чё мне тут указываешь (с прилагающимся трёхэтажным направлением)». Сохранив вежливость в момент отказа (хотя сообщение было предельно ясным «мне ваши советы тут нафиг не сдались») он позволил и мне аккуратно завершить дискуссию, и ему не ввязываться в обмен грубостями.
UFO just landed and posted this here

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

UFO just landed and posted this here
Автор, ты случаем того?.. под хвост не балуешься?

Это было на тему: «юному бородачу, который плачет от шуток про ориентацию»
А теперь расскажите мне, как отлично я раскритиковал вашу статью и сделал её и вас лучше… вы ведь именно это пытаетесь донести, правда?

Если кто-то не может исправить ошибки раз за разом, как ему поможет ваша токсичность? Ровно наоборот он скажет — да этот чел просто мудак и даже не будет пытаться что-то изменить. Что мешает высказать что-то вроде: «На этой позиции нам необходим тщательный человек, с большим вниманием к деталям, попробуй сосредоточиться на подобных моментах, наверняка у тебя получится (если и правда когда-то получилось, стоит об этом упомянуть). Если нет, вероятно придется подумать о поиске другой позиции.» Если и после этого не дойдет — тогда уже увольнять или переводить где попроще, в зависимости от того, совсем человек долбоеб или где-то может от него толк быть. Профессионализм\эффективность с токсичностью не совместим, а к ним стоит стремится.
Вот, кстати, прекрасный пример к статье. Человек явно не понимает, что такое конструктивная критика и, судя по всему, шутка.
Раз не попал ты на ФизМат,
То пойдешь в айтишный детский сад (С).

К сожалению, люди попавшие на физмат потом идут в ИТ.
Простите, а почему к сожалению, если с высшим образованием физмамта и мехмата не всегда возможно найти себе применение, кроме варианта остаться на кафедре?!
Мне казалось, что физмат дает очень хорошую фундаментальную базу, что в купе с выработанной аккуратностью и собранностью и т.д. делает из человека хорошего программиста (сужу со стороны, сам я филолог). Конечно, наверное, в понимании физика уход из физики в чистое программирование — это движение вниз.
Потому что есть намного более интересные, прибыльные и одновременно менее deprecation-prone профессии в которых навики физмата очень даже кстати. Например финмат.
Простой пример, почему токсичность — это плохо:

Где вам приятнее задать технический вопрос и где вам скорее всего ответят по делу, на linux.org.ru или stackoverflow.com?
На Stackoverflow из-за чрезвычайно активного навязывания принципа «be nice» есть проблема со спадом активности отвечающих, снижением качества ответов и оттоком экспертов. Если тенденция сохранится, то однажды на SO вам чрезвычайно вежливо никто не ответит.
image
Так «be nice» же больше не навязывают, теперь его CoC заменил!
«Вам шашечки или ехать?»
Если еще 5 лет борьбы с токсичностью на SO — и там на ваш вопрос ответить точно не смогут, в виду отсутствия специалистов...
Никакой проблемы спада отвечающих я не вижу.

Да и профессионализм и вежливость это перпендикулярные шкалы. Обычно за высокомерностью и пренебрежением скрываются весьма неглубокие знания.

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

Те же, кто позавчера в первый раз открыл конфигурационный файл, как раз часто и пишут все эти «man ssh» и «RTFM»
Если не видите, то это скорее всего означает то, что вы не часть сообщества SO, не проводите на нём много времени и не вносите вклад. Но можете и дальше рассказывать мне и Павлу о наших неглубоких знаниях и о том, как надо помогать людям.

profile for Sergey Gornostaev on Stack Exchange, a network of free, community-driven Q&amp;A sites

profile for Pavel Mayorov on Stack Exchange, a network of free, community-driven Q&amp;A sites
Вы сидите в основном в русском сегменте, я пользуюсь только англоязычным, вот и вся разница. Токсичных войн и изгнания участников я не видел.
То, что отвечаю я в основном в русском сегменте, не означает, что я не читаю почти ежедневно Мету англоязычного сегмента на протяжении уже нескольких лет. Там тоже хватает споров вокруг be nice и CoC.
Вот только в процессе борьбы с токсичностью каким-то образом умудрились прогнать с сайта кучу вежливых профессионалов.
А что вы подразумеваете под вежливостью?
Например, я читал рассказ про то, как А толкнул Б и Б извинился перед А за то, что Б неудачно подвернулся под руку А. И только в этом случае Б считался вежливым, иначе представлял угрозу для общества за свое токсичное поведение и после нескольких таких проступков его могли казнить.

Думал, что это фантастика, но все больше мест вижу, где это становится реальностью.
Вы знаете, я, конечно, действительно ещё не профессионал, поэтому мне интересно Ваше мнение. Вот в этом треде я проявил токсичность? stackoverflow.com/questions/41641085/download-multiple-linked-csv-files-from-a-site/41641348#41641348

Топикстартер задал вопрос о том, как сделать X. Я вкартце написал нужные для выполнения задачи шаги и инструменты. Зайдя на первые попавшиеся страницы документации данных инструментов и прочитав пару абацев автор с легкостью бы решил свою проблему. Но, насколько я понимаю, топикстартер даже не потрудился почитать что-то самостоятельно и попросил меня ответить ещё подробнее, что фактически равносильно написанию за него всего скрипта (о чём я и написал).

Следующий отвечающий сделал за автора всю работу двумя (!) разными способами, получил галку за принятый ответ, а в комментариях он и топикстартер исключительно вежливо обсудили, какие нынче злые люди на SO, приходиться постоянно «держать оборону» и как хорошо, что есть всё же понимающие, интеллигентые люди (не то что я, видать).
Я не назвал бы это токсичным, но это не совсем в стиле stackoverflow. Там обычно да, дадут команду и еще разжуют все её параметры.

Про «написать скрипт за вас» — если его воспринимать как живой аналог leetcode, то почему бы и не написать решение, если есть желание помочь?
Ясно, спасибо.

Про «написать скрипт за вас» — если его воспринимать как живой аналог leetcode, то почему бы и не написать решение, если есть желание помочь?

Если я правильно понял о чём Вы, то я на тот момент каждый день с такими скриптами возился, поэтому ещё один точно такой же мне не показался интересной задачей.
А желание помочь действительно, если честно, исчезло после ответа автора. Наверно, в этом и была основная проблема для меня.

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

Обычно если спрашивают, то по большей части уже прошерстили интернет и прочитали что могли, но не поняли, поэтому и просят совет надеясь на полное объяснение что бы дошло как это работает. Указывать в какие-то документы слабая помощь в решении конкретного вопроса, но для общих знаний можно рекомендовать книгу по интересующей теме на будущее.
И если подумать, отправка читать документацию (типа «MSDN тебе в помощь») может быть токсичной для восприятия некоторыми людьми. Человек может решить что ответивший намекает что это вещь простая и он тупой если этого не знает и вообще ему нечего заниматься программированием раз такие вопросы задает, за такое спасибо не скажешь.
типа «MSDN тебе в помощь»

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

На удивление Гугл стал выдавать релевантные и полезные ссылки на MSDN и ко. да по vendor free технологиям типа JavaScript

А зачем нужна встроенная навигация? Достаточно сразу перейти к нужной странице из гугла (и сменить ru на en в адресной строке, потому что в переводе встречаются ошибки).
Вы спрашиваете прошерстив Интернет (за что Вам спасибо), но это не обычное положение для StackOverflow в целом.
Попытайтесь там отвечать на вопросы — значительно больше трети заданных вопросов представляют собой чью-нибудь лабораторку, скопированную прямо из IDE, и подпись снизу: «вот, не работает».
Часть вопросов действительно выглядят как вопросы, но при этом являются прямыми дубликатами отвеченных вопросов, и разрешаются чуть ли не поиском названия самого вопроса в Гугле (на первых строках выдачи будет либо тот самый отвеченный вопрос, либо параграф из документации, описывающий как проблема решается). Итого, по крайней мере две трети (по оценкам на основе моего опыта в сообществе) вопросов задаются вообще без предварительной подготовки.
Оставшийся процент вопросов правда задан после ознакомления с большим количеством доступных ресурсов на эту тему, сформулирован с уважением ко времени людей, которые будут отвечать… и немалая доля из них погребены под лавиной остальных вопросов.
Я один из узких специалистов отвечающих на SO.
Я то отвечаю, но приблизительно 70% моих ответов не проживают и года, по причинам от «вопрос надо бы перенести в другой раздел» до «много ссылок на внешние ресурсы»,
А еще 20% редактируются индусами ибо «вот так лучше вроде бы сказать(замена одного слова» до полной невозможности понять ответ.
Ибо за редактирование постов и удаление SO дает плюшки, а за правильные непринятые ответы — нет(а непринятых ответов — 95%).

Люди принимающие решения о том, удалять или нет, редактировать или нет — с узкой областью незнакомы вообще.

В результате люди задают те же вопросы по кругу, ибо ответов, которые ты давал год назад — уже нет.
На нетривиальный вопрос скорее ответят на лоре, а разжуют документацию — на SO.
На SO, если не считать других проектов SE, я задавал аж два вопроса, и на оба набежала куча уточняторов, но ответа так никто и не дал. На ЛОРе отвечают почти всегда.
Полностью согласна с автором!
Я раньше считала по другому, пока один человек мне прямо на примерах не показал (я делала перевод его статьи на Хабре), что только серьезные и суровые IT-ки могут делать хорошие вещи. Не грубые, а именно суровые, которые не боятся программировать по 16 часов подряд, но которые могут в глаза сказать что вот тут и тут плохо и почему.
А сейчас что? «Школы для программистов»… еще бы «ясли для программистов» сделали, вот тогда вообще полный аврал был бы!
Вы сами понаблюдайте на любой конференции, особенно международной и сразу увидите кто пришел «со школы программистов», а кто реально крутой спец.
Я не против учить, даже надо, но я считаю (это только мое мнение), что учить надо только тех, кто сам этого хочет, кто сам нашел информацию по какому-то языку программирования и что-то пишет. Вот таким надо помогать. Но если принудительно, в школе, учить «программированию» то… мы получим толпы «синьеров», которые по факту ничего не могут, но будут свято уверены, что именно они являются «профи».
не боятся программировать по 16 часов подряд, но которые могут в глаза сказать что вот тут и тут плохо и почему

иногда случается и у
«синьеров», которые по факту ничего не могут, но будут свято уверены, что именно они являются «профи».

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

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

Двойные стандарты :)

В чём двойные?
Разница лишь в том, кому это адресовано. Не вижу ничего плохого ни в первом, ни во втором варианте.
UFO just landed and posted this here
Естественной, но далеко не оптимальной. Нужно всё-таки сказать человеку срок, который у вас займёт анализ проблемы, если вы в него не уложитесь, то дать новую ориентировку. Плюс, если во время аврала у вас есть связь например с ИТ-директором, то не нужно стесняться использовать предлагаемые им ресурсы (либо запрашивать ресурсы у него). Моя практика показывает, что отношение это не ухудшит, напротив, руководство будет знать что в случае форс-мажора вы знаете что делаете, а не морозитесь в панике.
Всё правильно. Диктатуре обиженных пора давать укорот на всех уровнях. Для начала, надо научиться не вымарывать стыдливо буквы из крепких словес в угоду обывательщине.
UFO just landed and posted this here
Мне кажется автор не работал с мудаками. Вот у меня был коллега, который никогда не говорил ни пожалуйста, ни спасибо, ничего. HRшу на кухне называл тупой (собака женского пола). Когда я на митинге чот не понял и решил его переспросить вопросом вида «блин, я вот чот не разобрал что они говорили сейчас» он ответил — «плохо».

И как бы вопрос к автору — если активно корежить эти «этические нормы», если не воздействовать на таких мудаков — что тогда делать? Тоже без особых зазрений его нах слать? «Сделай эндпоинт» «таски нет» «п… ответ! делай с… б..., и меня н...» — это типа здоровые рабочие отношения?
Да, я практически не работал с мудаками. И знаете почему? Они, обычно, через неделю испытательного срока увольнялись руководством, потому, что мудакам не место в нормальном коллективе. Был единичный случай, когда мудак слишком плотно окопался, тогда я уволился сам. Компания, где мудак становится незаменимым не может быть хорошим местом работы.

Встречный вопрос — а почему вы работали с мудаками? Что вам мешало сказать — Антон полнейший мудак, с ним невозможно работать?

Почему каждый недовольный статьёй обязательно имеет своё альтернативное прочтение явно изложенных мыслей? Я вполне однозначно говорю, что оскорбления в рабочих отношениях недопустимы.
Здоровые рабочие отношения — написать непосредственному руководителю докладную о невозможности осуществления рабочего процесса в связи с неисполнением должностной инструкции сотрудником таким-то.
это вы, видимо, никогда не сталкивались с удовлетворенными жалобами вида «прошу наказать такого-то за то, что он просит меня выполнять мою работу»
Случаются ситуации, когда выполнение работы зависит от другого, но тот не обязан даже по должностной инструкции или вообще ему запрещено.
Например, мне нужно убрать документацию в сейф, а ключи от сейфа у охраны и охрана ключи может отдать только старшему менеджеру. Причем в этот момент сейф абсолютно пуст, старшего менеджера нет (у него была другая смена), охрана стоит на своем. В итоге имеем документацию, которая должна быть в сейфе, но находится у меня «в наследство» от другого отдела, у которого документация была на обработке.
Хорошо, что меня в тот момент спасла камера наблюдения. Охрана у себя на посту глянула и увидел папки с соответствующим грифом на столе в виде нескольких больших стопок.
Это был единичный случай, но вот ситуации типа «ксерокс под замком» были каждый день. Ключи у охраны, а я должен не раньше чем через 3 месяца пройти сертифицированное обучение на пользование этим ксероксом и только тогда имею право получить ключ, а до тех пор вынужден просить старших по каждой мелочи, изрядно их доставая, хотя в моей работе тот аппарат был очень важен и требовался очень часто.
Как ни странно — та фирма существует и работает до сих пор, сфера — торговля. А я месяц там был и позже ушел оттуда. В отделе кадров сказали, что жуткая текучка кадров, а я даже не был удивлен.
Запрашиваем у непосредственного руководителя свежий регламент по осуществлению деятельности, в процессе которой возникли проблемы. Если в нём нет решения, пишем руководителю служебку о неэффективности регламента. Руководитель эскалирует в нужном направлении, регламент дорабатывается, проблема больше не возникает. Если проблема сохранилась, значит в компании системные проблемы управления. Как работать в таких компаниях — это уже отдельная история, связанная не столько с взаимоотношениями в коллективе, сколько с умением структурировать хаос и прикрывать задницу.
Единственный документ, который разрешили увидеть, — перечень моих обязанностей. Снять копию или как-то сохранить у себя — нельзя. Да и как выполнять обязанности — также не расписано, типа — есть и все. Крутись как хочешь. В таких условиях запрос какой-либо дополнительной информации у непосредственного начальника сталкивается со стеной непонимания или «ну потом то проблема разрешится» (ага, через 3 месяца). А сейчас обращайся к старшим за помощью. Бонусом к этому — наказание за ранний на 30 минут приход на объект в здание, которое работает круглосуточно, но охране запрещено кого-либо пускать раньше, чем за 5 минут. И это не снимаемый офис, а собственное здание, построенное с нуля! В итоге самое рациональное для меня было — уйти из такой конторы. Сейчас конкретно тот филиал полностью закрыт, но можно сослаться на форс-мажор — война.
Думал — то единичный случай. И вообще, я тупой и мне образования не хватает. Поступаю в университет, учусь и на лекции по менеджменту (в т.ч. по управлению предприятием) рассказывают, что существует «микроменеджмент», т.е. расписываются задания для каждого работника, но таким нерационально заниматься и планирование должно быть только на уровне отделов — кто и чем занимается. А работник как-нибудь сам решит поставленную задачу, думать о таком не надо.

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

tema_sun чуть ниже в своем комментарии написал, что «не надо на них воздействовать». Но когда все больше специальностей будет выпускать таких особей, тут уже никуда и никому не сбежать. И проступает намеками, что скоро даже в школе такое будет поставлено на поток, при условии, что соседние страны (Украина и РФ) уже внедрили или идут по пути внедрения.

«Все пропало!» — звучит слишком оптимистично, а бы сказал — даже очень жизнерадостно!
С мудаками работать не надо вообще. Их не надо пытаться исправить правилами компании, не надо на них воздействовать. Мудак должен быть уволен, либо в случае невозвозмжности этого, тебе самому нужно уволиться из такой компании. Потому что, если руководство компании не увольняет мудака, то это руководство само является мудаком. А с мудаками работать не надо.
Это довольно неплохое правило жизни.
проблемы начинаются тогда, когда количество таких «особенных» превышает какую-то отметку и переходя на другую работу попадаешь в похожий коллектив. И правило «с такими работать не надо» уже не работает. Хорошо, если есть возможность переехать. Плохо, когда включается рекурсивный механизм и их становится больше, а правила всячески запрещают какое-либо улучшение ситуации. Еще хуже, когда названные вами персоны занимаются «крышеванием» и берут % просто за то, что они существуют, не давая ничего взамен, только решая проблемы, которые они же и создали.
Автор пишет «Не хочу толерантности, хочу брутальности. Сделайте мне, а то расплАчусь».

На практике-то — хочешь брутальности — делай. Если ты руководитель — создавай в компании такую обстановку, не принимай на работу тех, кого эта обстановка не устраивает.
Если ты линейный сотрудник — не ходи работать в те места, где создана не та обстановка, которая тебе нравится.
Естественный отбор сам подтвердит или опровергнет твою позицию.
Автор этого не пишет. Автор пишет «Не хочу инфантилизма и безграмотности, хочу профессионализма и осознанных действий»
Но всё равно "… а то расплАчусь".

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

Довольно интересно, что все критические комментарии не оспаривают ничего сказанного в статье. Они лишь пытаются с разной степенью изяшности меня унизить а то и откровенно оскорбить.
Если это про меня — то вы неправильно читаете собеседника. Лично вы мне малоинтересны. Ваша статья же мной читается так, как я написал в кавычках в первом комментарии. И оспаривать в ней нечего, это просто очередная инфантильная позиция «дайте мне мир, который будет устроен так, как хочу я». Мало чем отличается от других инфантильных позиций, и вы имеете полное право такую позицию иметь. У нас депутаты, например, через одного именно такие позиции формулируют и, исходя из них, законы принимают.
Ну вот собственно я об этом. Лично вы мне малоинтересны, позиция инфантильна сравнение с депутатом. Зачем все эти ad hominem?

Можно было бы сказать совсем иначе. Как-то так:
Я никогда не видел автора и, соответственно, у меня не может быть к нему каких-то чувств. Статья мне не нравится потому, что идёт в разрез с моим жизненным опытом.
Так вроде вы ратовали за возможность высказывать свои претензии окружающим в той форме, которая нравится высказывающему. Или эта возможность должна быть только у вас, а у остальных такого права быть не должно?
Так вы статью-то прочитаете? Или комментарий мой хотя бы? Статья о том, что излишняя корректность в высказываниях зло, причём куда большее чем принято думать.
Вы почему-то считаете, что именно вы определяете уровень излишней корректности. Вот эта — излишняя, а вот эта — недостаточная. Я же про то и говорю, что то, что вы считаете излишней, для многих людей как раз адекватная. И, например, даже комментарием выше я написал в той манере, которую считаю корректной адекватно ситуации, а вы принялись меня учить, что я должен был написать по-другому. В связи с этим и появилась изначальная оценка поста как инфантильного — вы совершенно необоснованно ставите себя в качестве идеального мерила, что и является признаком инфантильности.
Излишняя корректность, это когда ты постоянно неуверен, не оскорбил ли ты человека, хотя у тебя и в мыслях этого не было. Когда фраза «у тебя в коде лишний цикл» токсична и её надо заменять на безумные конструкции типа «отличный код, но может стоит попробовать обойтись без этого цикла».
Я понимаю, что вы сейчас объясняете свои критерии излишней корректности. Но вы же понимаете, что речь не об этом, а о том, почему ваши критерии должны разделяться всем обществом.
При чём тут мои критерии? Если ты можешь сам того не зная оскорбить человека своей культуры неочевидными нюансами речи, то корректность явно излишняя. Это презумпция виновности и мыслепреступление.
«Сам того не зная», «неочевидными нюансами» — это же характеристики не общества, а субъекта. Это вы не знаете, что можете оскорбить, это для вас эти нюансы не очевидны.
Вы продолжаете упорствовать, что ваше состояние разума должно быть эталоном для окружающего общества.
UFO just landed and posted this here
Честно скажу, не помню. Какие-то тестирования словарного запаса проходил, но результаты не помню.

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

А про коннотативный шлейф слов и выражений лингвисты диссертации пишут, поэтому даже для грамотных людей в некоторых ситуациях какие-то смыслы непонятны и могут приводить к недопониманиям. Тем более, что иногда этот коннотат схлопывается до чрезвычайно компактных социумов, типа для пары людей, разделивших общий опыт.
UFO just landed and posted this here
Это уже немного другая тема. ТС поднимал вопрос именно оскорбительных для окружающих формулировок.

А «крайний-последний» — это не о том. Это личные заморочки каждого, имеют право, пока не начинают поправлять других.
UFO just landed and posted this here
Это пример самых простых и самых распространенных личных заморочек, на которые взрослые серьезные дяди всерьез начинают обижаться.

Считать всерьез обижающихся на эти заморочки взрослыми и уж тем более серьезными несколько… затруднительно.
UFO just landed and posted this here
Считать других какими-то не такими только из-за профсуеверий и профдеформаций?

Я не считаю их "не такими", с чего вы взяли? Просто это такой своеобразный маркер. И да, когда начинают навязывать вот это «крайний-последний», это бесит.

Хм, а как давно все местные пользователи дружно перестали обижаться на «Ты ж программист» и «Ты ж компьютерщик»?

Я на такое никогда не обижался. Чего обижаться, я и правда «компьютерщик», точно так же, как для людей не из медицины ЛОР, гинеколог, хирург, стоматолог — это все «врач».
То есть каждый человек должен знать, все говоры и жаргоны, не говоря уже о специфичных культурных отсылках?

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

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

Я вижу в этом отсылку к Локку, вы намекаете на то, что я профан. Как токсично! Немедленно идити на курсы управления гневом!

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

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

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

UFO just landed and posted this here

Зависит от отношений с человеком.

UFO just landed and posted this here

Могут возникнуть ассоциации с анекдотом с концовкой "а куда ты нафиг денешься"

UFO just landed and posted this here
UFO just landed and posted this here
Имхо мне удобнее, когда общение вежливое и корректное.
А то что на самом деле думают — все равно.
И да, в интригах участвовать не надо.
В идеальном случае ничего про них не знать :-)
Отличная статья. Кончайте сюсюкаться.
UFO just landed and posted this here

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

Не надо подменять понятия. "Ударить" — это не свобода. А вот ГОВОРИТЬ/ПИСАТЬ все, что угодно — без этого свободы нет. Слова — не насилие.

можно заменить "ударить" на "оскорбить" или "обматерить", суть не изменится.
Хотя я согласен что слова не насилие.

Суть как раз меняется принципиально.
Слова сами по себе ничто. Эмоциональный окрас им придает лишь субъективная интерпретация читающего/слушающего. Самодостаточного человека, которому вообще безразлично "а что обо мне думают/говорят", словестно задеть невозможно в принципе.
А вот те, кто от чужого мнения зависят — пусть себе страдают. Им, опять же, никто не мешает создавать свои собственные закрытые группы, но вот запрещать мат/оскорбления ВСЕМ ПОДРЯД — это перебор.

Если вернуться к теме статьи, то слова «этот код — плохой» и «этот программист — идиот» — совершенно разные по сути. Первое — это нормально и правильно, второе — оскорбление и недопустимо. Оценка программиста, написавшего данный плохой код, конечно же должна быть — это может быть и разговор с начальником (с объяснением всех недостатков кода), и лишение премии, и даже увольнение… но вот оскорблений быть не должно.
Элеонора Рузвельт говорила
Великие умы обсуждают идеи. Средние умы обсуждают события. Мелкие умы обсуждают людей.

Код — это материализованные идеи, его и нужно обсуждать, а вовсе не программистов его написавших.

Разные. И цели у них могут быть разными. Люди вполне могут быть соперниками/конкурентами, и вывести соперника из равновесия словами — зачастую полезный прием. Дающий массу преимуществ расчетливым и эмоционально непробиваемым.
Вообще, практически в любом сообществе "срач" — время от времени случается. И это нормально.

Даже "это код — плохой" на грани фола, по-моему.

Прежде всего эмоциональный окрас и цель задеть придаёт словам цель говорящий/пишущий. Даже если слушающего/читающего не удалось задеть, то цель-то была. А даже если вроде цели не было, но тебе объясняют, что эти слова задевают большинство людей в команде/компании/стране, а ты продолжаешь их использовать, то нечего удивляться, что команда/компания/страна объявляет себя своей собственной закрытой группой, где маты/оскорбления запрещены, а тебя из этой группы отторгают. Никакого запрета всем подряд, только участникам группы. Идите туда, где это терпят или вообще не обращают внимания, и там свободно материтесь.

Повторяю. Если читающему пофиг — его словами не задеть. Никак.


И никто не обязан ограничивать себя во имя хотелок большинства. Трогать чужое — права нет. Уважать чужие слабости/глупости — никто не обязан. Это личное дело каждого.


Ну а "слабые и неудачники должны погибнуть — таково первое положение нашей любви к человеку" (с) классик.

В целом всё-таки обязан. УК, например, об этом, в том числе есть статьи объективная сторона которых заключается только в словах.


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

Чужое = чужое имущество. Объективно существующие предметы.
А вот всякая субъективная дурь типа "достоинства", "чести", "настроения" etc — никого волновать не обязана.


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

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

Хватит подменять понятия. Гитлер и Сталин не просто говорили — они приказывали убивать. Совершать ДЕЙСТВИЯ. А не просто глумиться над чьими-то там "чувствами".

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

Снова неверно. Приказ — подразумевает вполне реальные санкции (включая применение силы) за игнорирование.


Манипуляция же эмоциями — применением силы никак не подкреплена, и потому легко может игнорироваться.

И командир может манипулировать эмоциями вдобавок к санкциям, ну типа "Вы мужики или бабы?! Выполнять!" И какой-то ПМ или ТЛ может санкции наложить за неисполнение, когда его "просьба" исправить говнокод будет проигнорирована.


Но всё-таки вы согласны, что слова словам рознь и за некоторые слова можно и нужно карать?

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


Нет, не согласен. Карать нужно за насильственные ДЕЙСТВИЯ, а слова — могут быть какими угодно.

С вами несогласен УК (статья о клевете) и общество (Стросс Кану чужие слова *он меня изнасиловал… дцать лет назад* стоили карьеры).

Ваше мнение, как минимум, непопулярно.

Опять-таки, в данном случае обсуждаем не клевету, а "токсичность" (мат, оскорбления, глум).


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

UFO just landed and posted this here
Американец: "..., потому что у меня есть кольт, хе-хе."
Эдак в вас ненароком еще и классовое сознание пробудится.
Проблема есть, как описал автор. Пряника стало слишком много. Люди забывают зачем они вообще работают. Программист превратился в кодера, который не реализует поставленные задачи, а пишет код ради кода. Рано или поздно такое положение вещей просто обязано закончиться. И инфантильные дети должны отправиться с мест работы с печеньками и игровыми креслами к себе домой играть в онлайн игры под присмотром мамы
Я не уверен что хотел бы работать с людьми которые согласны с такой точкой зрения.
Может и покажусь несколько ворчливо старомодным. Но все же.«Не голодали вы»… из известного сов.фильма. По моему нынешнее младое поколение несколько «зажралось». «Не так посмотрели»,«не так говорит»,«отрицательный отзыв»,«дружелюбная обстановка», печеньки, лайки, опенспейсы, командный дух и т.п. ересь. Ты пришел работать.И работай.Не ищи правды (на тот случай если тебя «оговорили, подставили»).Правда сама всегда вылезет.Не оправдывайся никогда.И ВНЕЗАПНО в какой то момент случиться «чудо». От тебя все эти «проблемы» будут отскакивать как горох. Появиться куча «заискивающих» взглядов и разговоров. К тебе будут бежать по поводу и без повода за помощью. Не ной просто вот и все :)… Современные «коллективы» превратились в какой то «балаган». Тут тебе и HR, и фронт и бэк. И все пытаются как то это «устаканить, подружить». Противно аж. Есть задача. Её нужно решить. Так и решайте её всем скопом «переламывая и сминая» нытиков и других «тонкодушевных личностей». Может грубо.Но так и есть.
Это называется технический и социальный прогресс. Очень хорошо, что по мнению старших молодые «зажрались» — это значит, что прогресс еще есть.
Это должен быть матёрый сисадмин со стальными яйцами, десятилетиями опыта и виртуализацией профессиональных навыков в отдельном левополушарном контейнере, куда нет доступа эмоциям
до конца не дочитал пока, но вот это огонь абстракция :)!!!
Старым себя не считаю, но застал немного того времени, когда нормой было курить за рабочим местом, обматерить за ошибку, посраться чуть ли не до драки «за полиморфизм» на свадьбе программиста, раскидываться направо и налево термином «говнокод», считать ниже себя всех тех, кто не знает (не использует) UML. Эдакий брутальный мирок программистов.
Сейчас с печеньками, смузи, непрокуренным офисом с дизайнерским ремонтом, и уважительным отношением друг к другу мне нравится больше.
Надо вести себя тактично в любом коллективе и в любой сфере. Это есть правильное воспитание.

Воспитание — это внутренняя несвобода. От которой лучше таки избавляться.


В жизни куда как разумнее подход адаптивный, априорно не исключающий никаких вариантов действий (включая и "злые", "токсичные" etc). В частности, с тем или иным человеком стоит общаться на том языке, который конкретно до него доходит лучше всего. Кому-то вежливо сказать. А кого-то — грубо послать. А вот когда второй вариант пытаются запретить — получается полная хрень.

Проблема токсичности, по-моему, не столько в том кому что говорить, а при ком говорить.

Да какая разница при ком? Кто там как воспринимает некий набор сотрясений воздуха или черточек на экране — это личные проблемы воспринимающего.


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

Это перестаёт быть личными проблемами воспринимающих, когда это начинает влиять на других в целом, и на бизнес в частности. С большой вероятностью из команды в десяток человек примерно равных о деловым качествам будет уволен тот из них, кто свои устным, даже безадресным возмущением о "плохом" коде типа "какой чудак на букву "м" это написал?! понабирают студентов, руки бы пооткручивал" блокирует работу команды на полчаса, а не те, кто не могут полчаса сосредоточиться на фоне мыслей "я не мой ли код он смотрит сейчас?"

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

А почему в кавычках? Ну и как это никто и нигде? Я не могу в своем доме запретить кому-то выражаться грубо?

Потому и в кавычках, что "токсичность" — не более чем идиотский термин, придуманный эмоционально слабыми.


Запретить выражаться — нельзя. Можно лишь выгнать из своего дома тех, чьи действия чем-то не устраивают. И пусть дальше выражаются, только уже на своей или нейтральной территории, имеют полное право.

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

В целом так законы действуют, например на одних территориях запрещены лёгкие наркотики, а на других нет.

Вот тут стоит таки разделить. Воля собственника на ЕГО ЧАСТНОЙ территории — это ок.
Закон, т.е. принудиловка ДЛЯ ВСЕХ ПОДРЯД — не ок. Ни запрет мата или глума, ни запрет наркотиков или оружия — не ок. Единственный запрет, который допустим — запрет физического насилия.

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

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

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

К автору поста:
Идите-ка вы в жопу с вашей «токсичностью»!

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

P.S. Желаю всем побольше печенек, и поменьше токсичных людей в окружении

Между строк статьи статьи читается «я хочу общаться матом с коллегами по работе». Можно и
так, а что дальше? Разрешать проблемы «по понятиям»?
А я прочитал «между строк»:
Давайте уже прекратим страдать фуйней, и займемся, глядь, чем нибудь полезным.
А тем, кого «оскорбляют» подобные выражения, надо заняться поднятием самооценки, например, поднимая свой проф.уровень.
Двоякое впечатление. Я сейчас попробую переформулировать, а автор пусть скажет, оно или нет.
Токсичное поведение это неконструктивная критика, наезды, оскорбления, интриги и тп. Автор говорит о том, что похоже (и я в этом с ним согласен) некоторые личности в угоду себе извратили эти понятия и записали любую, даже конструктивную, критику в разряд токсичного поведения.

Пример: невозможность корректно выйти из ситуации при постановке задачи «сделайте нам налог shazam» программистам без серьёзной математической и физической базы. Ошибка уже совершена, поставлена задача тому кто её не сделает, но допустим менеджмент этого не понимает. Человек не обладает нужными знаниями, и для такой простой задачи как «узнать песенку», нужно годами учится и очень много чего пробовать и исследовать. Это нельзя прочитать на stackOverflow. И если человек не понимает собственных границ компетентности, то ему надо об этом сказать. А типа нельзя, ибо токсично. В таком варианте это именно критика человека а не решения, потому что не решит он эту задачу, ну никак. И надо этого человека с этой задачи снимать.

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

Статья между строк читается так:
Вот уж че удумали, запрещать унижать джунов. Это же так полезно и развивающе! Ведь если я выскажу ему все, что я думаю о его личности, то это сразу улучшит его скилл! А токсичность это выдумки, потому что я это пережил, и других заставлю!
Так что в итоге-то, есть токсичность или таки нету?
Вот вы везде говорите что ни разу не за мат и оскорбления а только за конструктивную критику, но при этом пишете что «юному бородачу, который плачет от шуток про ориентацию» не место в профессии. При том что очевидно что шутки про ориентацию никак не относятся к конструктивной критике.
Не место не потому что плачут от шуток, а потому что низкая стрессоустойчивость, которая проявляет себя в том числе плачем от шуток. Симптом, а не причина.
Просто так от шуток не плачут согласитесь (впрочем такие люди наверно встречаются но и им найдется место на самом деле). Если человека довели до такого состояния что он от шуток уже плачет — это больше похоже на травлю.
Или человек целенаправленно ищет, на что бы ещё ему оскорбиться.
А когда находит — начинает раздувать из этого слона.
И даже после извинений и пояснений что ты ничего такого, чего он себе надумал, не имел в виду — всё равно называет тебя мудаком и фашистом.
Хотя по хорошему, вместо полушуточной претензии, высказанной тет-а-тет, ты имел полное право его абсолютно формально и будучи абсолютно в формальном праве отмудохать как бог черепаху с крайне далеко идущими последствиями.
Это же гиперболизация, ну. Есть люди, которые способны обидеться вообще на что угодно, вне зависимости от обоснованности, и именно им на поводу предлагают идти при продвижении «нетоксичности» вместо того, чтобы их лечить.
Ещё хуже, когда это не мега-тонкая душевная организация, а рассчитаная манипуляция. Шкура у таких толще чем у нас с Вами вместе взятых, но это не мешает поднимать вой о том, что в комменте написали fuck — для привлечения внимания или для того, чтобы возглавить боротьбу и набрать авторитета.

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

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

На Upwork есть такое — клиент оставляет публичный фидбек и закрытый (частный).
У тебя по публичным пять звезд и круто, а какая-то сволочь написала в частном про тебя что-то плохое, и твой рейтинг низкий. И возможно ты с ним продолжаешь работать на других проектах, он тебе улыбается.
И ничего не узнать.
С одной стороны, полезно, с другой — сильно раздражает, говоря культурно.
никто кроме Upwork-a
так ответила служба поддержки
по ее ответам можно догадаться, что ухудшает твой JSS
она акцентирует на них в ответе внимание, но прямо об этом не говорит
Безусловно, что общение должно быть вежливым и корректным, потому что мы профессионалы и взрослые люди. И критика необходима. И оскорбления с обвинениями не допустимы. Но только правила должны быть одинаковы для всех.
Я как разработчик (Senior Android и iOS) девушка с этим сталкиваюсь. Бывает, задашь вопрос в рабочей беседе, не замечание, корректно и не задевая ничью личность, даже если кто-то что-то не доделал (бекенд), сделал не то (дизайнер) или накосячил (джун), а тебе в ответ уже личные оскорбления, потому что человек вообще критики или намека на критику не приемлет в свой адрес. Еще и ПМ придет и тебя же обвинит в провоцировании человека с крайне чувствительной нервной системой. И минус тебе в рабочую карму и репутацию. И только потому, что ты девушка, а значит, источник скандала априори. И с принятием новых правил по безопасному психологическому климату такие случаи становятся чаще.
UFO just landed and posted this here
Резюме статьи и комментов:
Программист уже не тот..

Кстати, небольшая случайно замеченная статистика по плюсикам-минусикам к самому первому комменту к данной статье.
Сразу поехали минусы, ушло в -5 — это те, кто мониторят Хабр онлайн. Чтобы не пропустить самое модное.
Потом начало выправляться, ± 2
И за ночь (по МСК): -1/+16
Вот когда настоящие программеры вылазят на Хабр!
(Ну или живут они в восточной части страны)
когда ему раз в полчаса пишет директор и спрашивает «Ну как? Готово?».

Намного интереснее, когда раз в полчаса в серверную\кабинет врывается один из топов и орёт о том сколько миллионов компания потеряла из-за нашей ошибки на данных момент и сколько потеряет за следующие полчаса, если мы не будем шевелиться резче. Веселее только учредитель рассказывающий байки о том, как начинал бизнес в 90-х, ненавязчиво намекая на возможность поездки в лес уже сегодня ночью.
Всегда считал, что работа — это место где люди работают, а не строят отношения и наслаждаются комфортом. Любые взаимодействия просто не должны выходить за грань деловой этики, административных форм общения и регламентов трудового кодекса.
Какая у людей жизнь насыщенная. Скандалы, интриги, расследования… Хорошо что я не программист)))
Я, прочитав заголовок, честно говоря думал что это обращение к НЛО по поводу заботы о непроявлении токсичности в комментариях к статьям о разного рода закручивании гаек:) А тут такое…
Такое ощущение, что сей крик души относится к конкретному подмножеству ситуаций, с которыми, возможно, сталкивался автор.

Сам я работаю достаточно давно в устоявшемся IT-коллективе, и как бы не вижу ничего общего с упомянутыми ситуациями.

И да, у нас есть печеньки фрукты и орехи. И нет, никто ими не заманивает потенциальных сотрудников.

«Что мы делаем не так?» (вопрос риторический, если что)

Какой нежный программист нынче прошел, не может выжить в карамельных берегах. и еще на хипстеров кивает при этом

Есть ненулевая вероятность, что автор — такой прямолинейный бунтарь только в одну сторону )
И ещё, что человечьи ритуалы — как ПДД. Не всем в них все нравится, зато заложенные ограничения позволяют ездить даже тормозам и слегка отсталым :)

UFO just landed and posted this here

Их полный список есть в политике конкретной компании. Тут уж я не знаю как принято у вас.

UFO just landed and posted this here

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

UFO just landed and posted this here

Вы сейчас очень метко обрисовали нюансы вождения, например, в России ;) Так что вполне себе сравнение.

UFO just landed and posted this here

Вы водитель, я надеюсь? ))) Ладно, оставим полемику, мне не принципиально что-то доказать

Вот последнее и плохо. Не работает естественный отбор.

Любопытная статья, но у меня по поводу этого в мозгу появился откровенно провокационный вопрос: указанная недопустимость смягчения критики и грубость она действует во все стороны по вертикалям власти или только с нижеподчинёнными и равными? В смысле — к начальнику тоже приходите и с такой хамоватой улыбочкой: "слышь, Михалыч, ты тут херню спорол! Совсем офигел? Ну ка вали и чтобы пока не переделаешь из офиса ни ногой". Потому что если не так то от статьи как-то лицемерием попахивает.


Ну и в целом я считаю, что в любой ситуации нужно оставаться человеком, а не превращаться в говно, "которого все ненавидят".

Думаю, она действует только в направлении "от автора статьи к остальным" ))))

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

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

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

Кийосаки пишет про то, что нужно нанимать профессионалов. Неужели, вы не можете разговаривать с ними по существу, не прибегая к эмоциям? Тогда вопрос к вашему умению управлять людьми, насколько вы готовы видеть в них личности и именно профессионалов? Если нет, то да, выход — критика.
В твиттере попадалась одна дама, которая рассказывала о том, что на митинге ее код, который она пол года трепетно выращивала, коллега назвал говнокодом. После этого она, по ее словам, сорок что ли минут его песочила по поводу того, что фу быть таким токсичным, ну и завершила твит гордым «М — менеджмент!». Была бурная дискуссия, но, кажется, до нее так и не дошло, что кто тут более токсичен вопрос весьма открытый.
Внезапно минусанул.
Программисты, конечно, взрослые люди.
Но.
Если и другая сторона описываемой тобой проблемы.
Коллеги могут оказаться троллями. Или мудаками.
Код ревью может повторяться вокруг одной ошибки только потому, что ревьювер «слишком гордый» и не в состоянии чётко сформулировать, что в коде не так. (В древности в интернете шутили, что RTFM как-то незаметно мутировало от read the following manual до read this fucking manual без указания конкретики).

«Что за бред — доверять управление сервером банка юному бородачу, который плачет от шуток про ориентацию? Это должен быть матёрый сисадмин со стальными яйцами» — ты не поверишь. Но чтобы вырастить матёрого сисадмина надо сначала взять юного бородача и гладить его по головке. Потому что если его каждый день п#здить, то очень скоро он забъёт болт на работу и уйдёт в дворники. И хорошо, если не повесится. (Другой вопрос, должен ли он в это время работать в банке ;))

Мне порой кажется, что самопровозглашённым пропагандистам надо по ночам читать книжки по воспитанию детей. Там всё очень хорошо описано. Глядишь, и мир станет чуточку спокойней.
Стальные яйца могут отрасти только у тех, кто преодолел множество трудностей и не ушёл в дворники. Из тех, кого только по голове гладили, получится может только тот, кто повесится при возникновении проблем.
«у тех, кто преодолел множество трудностей» — возможно. Но для начала надо хоть немного «подрасти».
Почитай про выученную беспомощность.
Она именно так и образуется. Берём человека, на каждое его действие даём пинка. Вуаля. Через годик он не может делать вообще ничего.

Положительное подкрепление тоже должно быть. Но почему-то все пишут только про пинки (== отрицательное подкрепление).

Присоединюсь ко мнению если на каждый косяк с "младенчества" давать пендель — то получим полное отсутствие инициативы в перспективе. Человек, который так "вырастет" мало того, что будет тупо бояться хоть что-то менять без 20-ти справок с печатями от менеджмента и 10-ти от юриста, так ещё и в стрессовых ситуациях, когда надо быть решительным замкнётся в раковине (читай запрётся в подсобке) и фиг ты от него получишь хоть какую-то эффективность.

Человек, который так «вырастет» мало того, что будет тупо бояться

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

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

А не надо его ограждать, ограждать нужно тех, кто пинается и кусается. :)

В древности в интернете шутили, что RTFM как-то незаметно мутировало от read the following manual до read this fucking manual без указания конкретики

В конце 90х услышал другую шутку.
Что будет, если объединить FAQ и Read the manual?
RTFM — Read this FAQing manual!
Как мне кажется, отсюда и пошло RTFM. По крайней мере, более раннего использования RTFM я не встречал.
Это какая-то очень рекурсивная шутка :)
Добрым словом и люлями можно добиться гораздо большего, чем одним только добрым словом. Потому что тут очень легко прийти к тому самому «Ходил на работу, все улыбались, хвалили, а потом не закрыли испыт и сказали что в команде меня считают необучаемым идиотом.»
Другое дело в том, что люля должны быть
0) Из свежего мяса и хорошо пропечены.
1) Обосноваными. Т. е. иметь основанием реальный весомый косяк. При нормальном рабочем процессе выдача люлей чаще чем раз в месяц — это повод задуматься, так ли косяки косячны, или насколько осмысленно продолжение контакта с автором косяков.
2) Иметь в себе разбор того самого косяка и пояснение, почему косяк является таковым (И почему он достоин люлей).
3) Иметь итогом признание акцептором люлей факта совершения косяка, проведение (возможно, совместно с донором люлей) разбора причин косяка, и наконец, выработку мер для предотвращения повторений косяка.
В таком случае, люля превращаются в довольно мощный обучающий фактор.
Хотя да, юнные бородачи с слишком нежной организацией психики при таком процессе испытывают моральные страдания. Ну так для них существует множество рабочих мест, на которых количество возможных косяков, как и возможных люлей — гораздо меньше. Правда почему-то на них никто не стремится.
Что до авторов книжек по воспитанию детей...
Поинтересуйтесь их биографиями, особенно в части семейных отношений — это может несколько изменить вашу точку зрения на хорошесть описаний.
Автор, в целом, я с вами прав. Много, правда нюансов, которые непонятны. Ну, например, предлагаете ли вы быть грубыми на работе и оправдывать это простой критикой коллег. Оправдываете ли вы Линуса Торвальдса (ну я так понимаю вы в курсе скандала иначе бы этой статьи не было)?

Но это все мелочи и не суть важны.
Самое главное — что вы может понимаете, а может и нет — это то, что вся культура (или субкультура по-вашему) пришла из Америки. Там появились все эти бородатые админы. И Линус Торвальдс в итоге в Америку приехал работать. Именно американские технари задают тон и определяют культуру программистов. И вот сейчас они решили, что она будет такая. И вы ничего с этим не можете поделать. Бородатые админы больше не в моде. На самом деле бородатые админы теперь сами стали такими «неженками». Почитайте твиттеры основателя StackOverflow или DHH и вы сами в этом убедитесь.

Просто вы пришли в эту культуру, когда она была такой какой вы ее описали, но теперь она меняется. А вам останется либо ассимилироваться, либо стать динозавром и ретроградом, которого никто уже слушать не будет.
Я не предлагаю быть грубым, я предлагаю не быть излишне терпимым. Если человек наплевательски относится к результатам своей работы не надо говорить ему, что он дебил. Надо сказать в чём проблема, объяснить негативные последствия и пояснить, как это можно исправить. Без всех этих пунктов критика, как правило, не будет конструктивной.
Вся суть вашей статьи — это неприкрытое предложение быть грубым.
Суть статьи в другом, но каждый понимает её по своему.
Насчёт Линуса я не уверен. Скандал, я, конечно не пропустил, но уменя слишком мало данных для взвешенного суждения. В целом, насколько я понимаю ситуацию, я скорее на его стороне. Если код настолько плох, что заслуживает мата, надо сперва выяснить, что же там такого накодили. Я мог пропустить какие-то нюансы, но выглядит как бессмысленная трата времени Линуса неадекватными разработчиками.
Другое дело, что говорить такое публично пожалуй не стоило.
К сожалению, любой м*дак считает, что он занимается «конструктивной критикой», а не докапывается до людей. И искренне не понимает, что это за «токсичность» такая, почему вдруг все вокруг такие неженки.

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

М*даков, без сомнения, надо ставить на место, в том числе путем увольнения, т.к. в противном случае он подтолкнет к увольнению пачку других специалистов.
Считать людей мудаками — токсично или нет?

Считать — нет. дать им это понять — да.

Сам факт что ты пишешь тут статьи, говорит о том, что ты не программист и т.п.
Тема хорошая, но к каждому нужно находить подход и не обязательно с грубостей начинать
Иди-ка ты на !@# со своей «токсичностью»
Согласен, заголовок излишне желтоват. Вообще я хотел показать контраст между мнимой и действительной токсичностью(не люблю это слово из за его многозначности). Вышло излишне экспрессивно.
UFO just landed and posted this here
UFO just landed and posted this here
Минус я вам не ставил. Несмотря на ваш очень ценный и взвешенный комментарий.
UFO just landed and posted this here
Самое удивительно, что хотя она и «не зашла», у неё две сотни плюсов.
Где логика (с)
;)
Не понравилась статья — есть голосовалка. А писать «не понравилось» зачем? Опять же, судя по комментарию статью вы не прочитали.
Не стесняясь в выражениях (за что ты и ратуешь) я пишу о том, что вижу: статья не зашла многим читателям
Она не зашла на столько, что на 1-м месте в рейтинге за неделю и на 4-м за месяц и счетчик капает только на увеличение, несмотря на множество минусов. Статья резонансная — это уж точно.
При чтении статьи у меня возникло ощущение, что автор очень страдает. Недостаточно он устойчив к стрессу. Даже боюсь представить как он расстроится, услышав в ответ на свою «искреннюю» грубость что-нибудь типа «рот помой, потом приходи со мной разговаривать». Ведь его собеседник тоже может оказаться нелюбителем «розовых соплей».

Проблема же, как мне кажется (особенно в России) в том, что тим-лиды хотят сразу готовых идеальных специалистов. «Выращивать» кадры – выше их достоинства. Долговременное планирование развития отдела – не в их компетенции. Выстраивать отношения с подчинёнными – «а что это? Я ведь умею писать программы, разве этого недостаточно для должности тим-лида?»
У меня возникло впечатление, что статью прочитали еденицы. Прочитайте хотя бы комментарий выше.
Если вам так часто говорят о «токсичности», что вы решили целую статью написать, может быть все таки есть проблема в ваших словах или действиях? Может они и правда задевают окружающих?

Автор, ответьте все-таки на мой вопрос. Токсичность личности существует или нет?
Знаете, когда нет токсичности, то это может значит, что уже плевать хотелось на всё это с высокой точки.
Мне вообще никогда не говорили, что я токсичен, но пост я всё-таки плюсанул. Потому что постоянно вижу, как на профессиональных ресурсах натурально травят специалистов за то, что они недостаточно ласковы с незнакомыми людьми, которым они ничем не обязаны, читаю, как в open source сообществах активисты преследуют контрибьюторов по надуманным предлогам, участвую в решении конфликтов, когда один сотрудник в ответ на корректную и обоснованную критику другого бежит в кадры жаловаться на притеснение, и т.д. и т.п. Это глобальная и набирающая обороты деструктивная тенденция по формированию общества из обиженных людей, использующих толерантность как средство манипуляции. Причём не только в ИТ. Борьба с токсичностью в коллективах сотрудников ИТ принципиально не отличается от закона об оскорблении чувств верующих, например.
То есть по-вашему можно оскорблять чувства верующих? Попробуйте поставить себя на место тех людей.
А с чего это можно оскорблять чувства атеистов? Мерзкий дуализм. То есть в вашем понимании поджечь кинотеатр из за фильма который ты даже не видел нормально? Делать обрезание девочкам? Запрещать книги? Не пускать в страну музыкантов?

Если так, то вы отвратительны.
Вы что не увидели знак вопроса? Именно тоже самое я спрашиваю у предыдущего комментатора. Почему вы мне минусы то поставили?
Научитесь читать внимательно. sergey-gornostaev сравнивает обвинение в токсичности с оскорблением чувств верующих, то есть с травлей несогласных в угоду неопределённому меньшинству. Вы своим комментарием ему противоречите.
Верующих как раз-таки большинство =)

1) Сначала вы подкалываете меня про 5 по литературе
2) Потом называете меня отвратительным. (Видимо вы додумали, что я верю в какую-то религию)
3) И под конец указываете, чтобы я читал внимательно?

Я все внимательно прочитал и сделал выводы. Вам не зря так часто повторяют про токсичность, люди пытаются вам что-то донести. А вы можете продолжать делать вид, что ничего такого не существует, это дело ваше.

Закончим на этом разговор.
Я на нём и стою, я белый гетеросексуальный мужчина атеист — самый угнетённый представитель современного общества.
Цисгендерность забыли :-)
Глобальная проблема – это неразвитая культура общения, от чего HR’ам приходится отдельно указывать в вакансиях требование «great communication skills».
Я работал в крупной компании, где один токсичный программист довёл ситуацию до того, что даже product manager не мог общаться с ним напрямую (что уж говорить об остальных). В результате работа нескольких отделов затормаживалась из-за того, что никто просто не хотел связываться и вступать в какой-либо контакт с этим человеком.
Можно, конечно, сказать, что он один прав, а все остальные «строят из себя обиженных» и «манипулируют толерантностью». Вся рота идёт не в ногу, один он в ногу…
Я не могу судить объективно, есть ли у меня какая-то проблема в поведении. Косвенно — я поддерживаю отношения со многими людьми, с которыми познакомился на работе или по увлечениям, вплоть до десяти лет назад. Люди могут спросить совета или просто поболтать, так же как и я с ними. Мне кажется, это свидетельствует о нормальном поведении.

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

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

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

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

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

Вы это хотели услышать?

Я хотел услышать именно точное определение. Люди много раз пытались вам что-то сказать под термином «токсичность личности».

И, выходит, что вы не знаете что именно они имели ввиду, но сами обиделись и целую статью написали об этом. А почему вы не узнали у них, что именно под этим подразумевается?

Я вот считаю, что человека, который посылает других людей, можно считать отравляющим. Посылы куда-либо отношений не улучшают, а только ухудшают. И ваша статья — медный купорос.
Нету определения токсичности и не может быть. Это охота на ведьм.
Ну раз уж вы так уверенно заявили, то аргументируйте. Почему не может быть такого определения?
Я аргументировал. Нет строгого набора отрицательных качеств. Есть несколько определённо отрицательных, но никто исключительно ими токсичность не ограничивает. Есть ссылка на МКБ или что-то похожее? Нету — нету и определения.

А если называть токсичностью не набор качеств человека, а влияние, которое человек оказывает на рабочие процессы?

UFO just landed and posted this here
Ниже в коментариях указали первоисточник этого термина, статья на 38 страниц. Кратко резюмируя — точного определения нет, токсичность человека оценивают по трём параметрам не связанным с конкретным поведением.

Меня зацепила эта ситуация, люди пихают в понятие токсичность всё, что захотят, не понимая сути термина. Возможно на выходных напишу краткое изложение статьи.
Есть понятие «налаживать отношения». Некоторые люди способны идти навстречу, проявлять эмпатию, заботиться о коллективном успехе. Противоположное этому – «разрушать отношения». Непреднамеренное разрушение отношений – и есть токсичное поведение. Когда человек не способен идти навстречу, проявлять эмпатию, подбадривать. Причины могут быть разные: от сугубо рациональных (действия строго по инструкции, неукоснительное следование субординации, извлечение выгоды) до сугубо иррациональных (эмоциональная неустойчивость, психические отклонения, неадекватное воспитание). Под «токсичностью» подразумевают не причины, а симптомы: поведение, которое разрушает дружелюбную среду в коллективе.
И не стоит клеймить «толерантность»: именно благодаря толерантности в коллективе какое-то время терпят токсичных сотрудников. Не будь толерантности, люди всегда бы следовали девизу «не работайте с му**ками» и отторгали бы токсичных людей из общества.
Причины могут быть разные: от сугубо рациональных (действия строго по инструкции, неукоснительное следование субординации, извлечение выгоды) до сугубо иррациональных (эмоциональная неустойчивость, психические отклонения, неадекватное воспитание). Под «токсичностью» подразумевают не причины, а симптомы: поведение, которое разрушает дружелюбную среду в коллективе.

Похоже Вы не работали на производстве, где именно неукоснительное исполнение инструкций и является тем, что приводит к результату сохраняя жизни, здоровье людей или их среду обитания (инфраструктуру).
Ядерная электростанция: дружбан, пойдем ка бухнем! А не хочешь по инструкции? Фу… токсичный ты что-то
Хирургия: прикиньте пацаны, Петрович забыл зажим в пациенте. Но он же ой друг, я и не сказал главврачу. А что пациент сдохнет — ну и фиг с ним… «токсичный» оказался, все время жаловался что в животе колет и болит зараза, кровью истекал и пачкал простыни…

Как то дороговата цена «дружелюбности», не находите?
Давайте вернём мою фразу «действия строго по инструкции» в контекст.
Контекст был таким: «неспособность проявлять эмпатию».
Например, коллега просит отпустить его пораньше (семейные обстоятельства) или наоборот просит вас задержаться подольше (помочь с работой). Строго по инструкции рабочий день длится ровно 8 часов и вы должны ему отказать.
Если коллега на такое обижается, это его проблема.
Это, что вы делаете «эмпатия что бы помочь коллеге иначе ты токсичный», называтся манипулирование «для идиотов». Скрытая угроза :). Я как-то вырос из этих штанишек.

Могу сказать что, практически прожив два года в офисе и напроявляв эмпати, расстойство сна и головые боли я лечил один пару лет после. Счета врачам — отличное лекарство от такой «эмпатии». Лучше я буду живой «токсичной скотиной», чем в 45 с инсультом от перенапряжения «классным эмпатичным овощем» не способным сам себе вытереть задницу.
Хочешь что бы я решил твои проблемы? Не вопрос! Реши мои проблемы в зачет, кроме здоровья:)
Тогда лучше вообще нигде не работать.
Главное, что мне хотелось бы отметить в статье и некоторых коментариях, это неправильное понимание слова профессионализм. Безусловно, вы не можете считать себя профессионалом, если не можете написать код без тонны багов. Если вы проводите код-ревью, то ваш профессионализм — это доходчиво и вежливо объяснить где проблемы в очередной раз. Другое дело, что если месяц прошел, а выводов ваши коллеги не делают, то ваш профессионализм — это довести проблему до сведения руководства/менеджеров/ХР (нужное подчеркнуть). И если руководство забило тот самый болт на проблему, то нужно избегая токсичности, либо продолжить спокойно делать свое дело, либо искать другую работу. Ибо руководство не проявляет профессионализма и вы своей токсичностью все равно не добьетесь ничего.

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

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

UFO just landed and posted this here
Как бы есть разные люди. Есть те, кто лучше работает под прессингом, есть обратная сторона. Да, искать к каждому подход нужно в яслях-универе. Работа — чуть другая среда. Но, должен быть определенный баланс. С ходу, с ноги выдать, что ты криворукий — не каждый сможет понять в первые дни на новой работе. Да, когда одно и тоже идет по кругу, то уже не получится улыбаться и красиво объяснять, чего так и эдак не правильно. Да, есть ситуации, когда не хватает токсичности, просто люди хотят быть хорошими в глаза, а за глаза — высмеивать или же увольнять, хотя решение вопроса может найтись в течении 5 минут. Пути людей, по которым они приходят к конкретной точке времени и месте — очень разные. Да, многих похожи, но всё же разные. Никто не идеален, просто есть косяки с которыми можно жить, а есть те, с которыми лучше не стоит. Есть разные периоды адаптации. Кто-то пришел-увидел-победил, кому-то нужно месяц-два. Первые хороши тем, что могут здесь и сейчас, но не обязательно широко в перспективе. То есть смысл брать на те или иные участки разных людей и не мучить ни себя ни других. Но, не нужно улыбаться и говорить, что у нас всё круто, печеньки, массаж и прочее. А сказать — у тебя (не вас, а именно у тебя) есть неделя, чтоб въехать и решить тот или иной косяк. Если не в состоянии — прошу не тратить наше время. Я бы сравнил это со командным спортом, когда есть ограниченное время, когда нет времени на подготовки и разминку, нужно сейчас.
Есть мнение, что токсичность идут рука об руку с некомпетентностью.

Ну и противникам борцунов с токсичностью желаю таки поработать сперва в
токсичном коллективе (где токсичность исходит не от вас) ^^
Есть мнение, что токсичность идут рука об руку с некомпетентностью.
Да, некомпетентность в том, чтоб смотреть на всё с улыбкой и пофигизмом.
Например Линуса часто называют токсичным. Считаете его некомпетентным?
Наблюдал коллективы профессиональных программеров (взрослых бородатых дядек), в которых нормальный рабочий процесс выглядел примерно так:
— Бугога, какого *** ты эту фичу так через *** реализовал?
— Да, ***, этот *** клиент именно так и требовал!
— И чо, ***, ты не мог как-нибудь его на *** послать?
— ПМ не дал, бугога!

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

И в истории с Линусом, по-моему, он подобен вот этим дядькам-матершинникам. И всё хорошо ровно до тех пор, пока в списке рассылки не берутся откуда-то девочки-тестировщицы, почему-то с полномочиями писать CoC-и.
Есть нюанс. Приемлемый стиль общения между знакомыми людьми равного статуса и малознакомыми/неравного статуса несколько отличается. Во втором случае больше вероятность кого-нибудь «триггернуть».
Правильно.
Можно поспорить в следующем направлении: вероятно, ошибка Линуса (и подобных ему) состоит в том, что он переносит паттерны общения с узкого междусобойчика хорошо лично знакомых людей (мейнтейнеров подсистем) на широкое сообщество читателей списка рассылки. Но, с другой стороны, в список рассылки никого «насильно» не тянут (и для многих это даже не работа, за чтение этих матюков денег не платят); не нравится — не читай.
Ваш пример со *** нерелевантен Линусу и это частая ошибка «борцов с токсичностью» — путать пересыпание речи ругательствами и грубую конструктивную прямоту. О «токсичном» Линусе вспоминают, когда он в очередной раз эмоционально распекает присланный ему патч, содержащий код низкого качества, с ошибками, уязвимостями, трудный в поддержке, медленный алгоритмически, недооптимизированный, непереносимый за авторством одного из двух:
1) от недостаточно опытного в работе с Ядром программиста
2) от сотрудника корпорации, которая на интересы сообщества плевать хотела
Если код удовлетворительного качества — то и новичёк и корпорация остаются целы и невредимы. Надо серьёзно наговнокодить или значительно затронуть интересы сообщества и пользователей, чтобы на тебя обрушился Линус. Он может быть не прав (как, имхо, в случае с adobe и memmove) но он не докапывается по пустякам, рутинно.
Линус высокомерный, прямолинейный и местами, как по мне, просто мудак, но ни разу не токсичный, это разные вещи.
Полностью согласен с автором. Даже возразить не зачем.
Я всегда был за подход: Если тебе не сказали, что ты де… л, значит так не считают. Но и ты точно также веди себя. Если человек де… л, скажи ему об этом прямо и аргументируй.

Это избавляет от многих вопросов «А что подумают?» или еще хуже «А вдруг он сказал одно, а имел ввиду другое?». Проще надо быть.

Получив обратную связь, пусть даже и матом не стоит принимать все близко к сердцу. Очень часто человек говорит не про тебя лично, а про твой конкретный навык! Ты можешь хорошо писать код в компоненте1 или компоненте2, иметь навык1, навык2, но когда ты применяешь навык3 и правишь баги в компоненте3 ты почему-то постоянно допускаешь ошибки. Вот коллега и доносит обратную связь. Не следует паниковать. Нужно просто спросить его «В чем твои аргументы?». В результате его аргументации может быть ты все-таки верно решил и это коллега много чего не учел и не учел 100500 костылей из-за 100500 прошлых баг-фиксов. Тогда обсудив сможешь поставить его в еще более худшую ситуацию «Кажется я зря его назвал де… лом и это я сам не очень, т.к. не разобрался». Но чтоб к такому придти нужна стрессоустойчивость и умение не принимать близко к сердцу.
«Очень часто человек говорит не про тебя лично, а про твой конкретный навык!» — людям, к сожалению, это и в более простых ситуациях сложно понимать. Не всем, конечно, но лично я такие примеры вижу в изрядном количестве.

Так может лучше людям начать говорить про конкретные навыки, а не про человека?

Пост уровня аудитории из комментов opennet — старые и озлобленные.

Вообще, хотелось бы упомянуть о таком понятии, как ассертивность.
Вот как должны работать отношения между коллегами.
Получается интересно. Такой конфликт между западным влиянием: сладенькой улыбочкой с вопросом «Hi, how are you?» и тем, к чему мы привыкли: «Эй, козел, убери свою галошу с моей ноги». В поисках компромисса между «быть» и «казаться» появляются такие уморительные слова как «токсичность» и прочее характерное для уходящего поколения хипстеров (вслед за эмо и готами). Мы еще не научились грамотно давать обратную связь, чтобы никого не оскорбить, но уже требуем ее от окружающих (действительно сложно сказать новичку, что он по какой-то причине не вписался в коллектив). Но мы стараемся, это уже хорошо! Спасибо за статью.
Удивительно, что среди программистов на самом деле очень много таксичности, любой код в 95% случаев «г… о», тот кто его писал сразу же «г… о-кодер» и т.д. и т.п. Чуть что сразу «удались» и не пиши больше никогда.
В противоположность могу поставить спортсменов, приходит новичек в спорт-зал, и никто ему не начинает с порога кричать что он дно, что ему тут не место и что у него мышц нет и нечего ему тут делать. В бОльшинстве случаев если увидят что делает не так, подойдут помогут, подскажут, объяснят. Скорее претензии будут не когда он что то делает не так, а когда он приходит и ничего не делает.
Так откуда же в «элите» столько токсичности? Вроде взрослые люди, а вести по взрослому себя не могут. Вся эта токсичность и есть детский сад.
. В бОльшинстве случаев если увидят что делает не так, подойдут помогут, подскажут, объяснят.
Ох, есть разные залы. Есть такие которые снимают и выкладывают на ютуб, как разные снаряды и тренажеры используют не по назначению. А инструктора будут смотреть в твою сторону, когда будешь оплачивать персональные занятия. Был случай, когда одна барышня так увлеклась бегом на дорожке, что аж позеленела. Я такого ни разу не видел. Но всем вокруг было ок, ибо так и нужно.
Есть такие которые снимают и выкладывают на ютуб
Это делают конкретные личности. Да, встречал. В коментах достаточно мало людей разделяло мнение что это «прикольно». Ну у меня выборка тут уже будет не такая большая. Но среди людей занимающихся каким либо видом спорта, крайне редко можно встретить токсичное поведение. Обычно занятие тем или иным видом спорта наоборот, позволяет лучше найти общий язык.
Обычно занятие тем или иным видом спорта наоборот, позволяет лучше найти общий язык.
Не играли ни разу… там… в баскетбол или футбол во дворе?
А зачем вы сравниваете совсем разные состояния? Спортивный зал и работа программистом — это «рабочий объем», оттачивание навыков. А игра в футбол баскетбол — это уже соревнование. Тренеровки футболистоф и баскетболистов не ограничиваются только одной игрой в оный. В игре идет уже выплеск адреналина, азарта, и вся ругань это то что не получается уже контролировать. В повседневной жизни коллектива — этому места нет и быть не должно.
И да, я сейчас много пересекаюсь как с легоатлетами любителями, так и профессиональными, футболисты, билдеры и тд тоже там есть. — это одни из самых доброжелательных, общительных и отзывчивых людей, особенно в сравнении с представителями нашей профессии. Там морально прям отдыхаешь.
А зачем вы сравниваете совсем разные состояния?

как бы…
Обычно занятие тем или иным видом спорта

футбол — входит список иных видов спорта, это уже сейчас у вас уточнения.
И да, я сейчас много пересекаюсь как с легоатлетами любителями, так и профессиональными, футболисты, билдеры и тд тоже там есть.
Если в целом, то да. Ибо были и есть общие темы для понимания достижения тех или иных успехов или же получения травм. Это такая же аналогия, если бы встретились любители *подставить нужное* и обсуждают общую тему.
футбол — входит список иных видов спорта, это уже сейчас у вас уточнения.

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

Так, может, это они по отношению к программистам такие доброжелательные… Я вот не разу не слышал, чтобы программист обижал, ну, не знаю, ветеринара… Кстати, те же самые врачи очень даже любят проехаться на тему «что за ерунду вам назначили». Вообще, думается мне, профессия ни при чем. В любом деле, когда заходит речь о раздаче лычек, особенно если эти лычки как-то влияют на деньги/славу/уважение, велик риск начала брожений на тему «чьи результаты деятельности большее говно».
Так, может, это они по отношению к программистам такие доброжелательные…

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

Критика конечно должна быть, но она должна быть конструктивной, возможно вполне возможно что грубой. Но без перехода на личности.
> Это делают конкретные личности.

А г… нокодом, значит, называют не конкретные личности?
Ваш опыт основам на дискуссиях о Вашем коде? Если да, не допускаете ли Вы мысли, что дело в Вашем коде, а не в таксичных программистах?
1. Дочитайте хоть ветку прежде чем коментировать.
2. Лично я, крайне уравновешанная личность, мне плевать на то как кто то выражается. При переходе на личности разговор будет потом в другом русле и всё).
3. Не мой код, просто по тому что я вижу на форумах постоянно. В своем коде я и сам прекрасно когда пишу нормально, а когда я леплю костыли. Живем не в идеальном мире, приходится и то и другое писать в зависимости от ситуаций.
4. «тОксичных»
просто по тому что я вижу на форумах постоянно

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


Оксичных"

И вас, коллега, тем же концом и в то же место. Перечитайте.

А тут всё просто — это «ошибка выжившего».
Это уже не смешно %) так опосела эта фраза, суют где нипопадя.
Хороший код не имеет большого смысла обсуждать, он вполне самодостаточен, и он никому не создаёт проблем — ни клиентам, ни тем, кто его будет поддерживать.
Правда правда, не видите разницы между обсуждением и «г**о, никогда больше не пиши код»? Новичку? Серьезно? Нет тут ошибки выжившего, это в целом касается русских форумов айтишно-железнячных. Сразу желчь. Это неприемлемо. Хотя последние годы стало заметно меньше.
Одно дело сказать «твой код г… о, так нельзя, нужно пользоваться *тем-то*» (тут грубо, но есть конкретная критика без перехода на личность. Особо ранимые личности могут обидиться, само собой. Обычно все же не поощряют грубость в коллективе), и совсем дургое «твой код г… о, *роскомнадзор* стену, не пиши больше код никогда, засунь его ***» (вот это уже токсичность).
Я конечно сильно утрирую, но тут везде и рядом из крайности в крайность. Я за адекватную критику, без перехода на личности, даже если грубо. Вот лично я был бы только рад, если мне кто указал бы что «вот тут можно написать лучше, перечитай *название*» или подобное. Я люблю делать хорошо, но я не всегда представляю как. Увы.
Те кто жалуется на таксичность, тоже хороши, часто воспринимают слишком сильно на свой счет.
И вас, коллега, тем же концом и в то же место
Ахах. И правда, мои любимые а/о и/е. :)
Тем не менее, хороший код не обсуждают, его не имеет смысла комментировать (разве что в целях дрессировки). Это некое состояние кода «по умолчанию», его даже, как правило, не замечают. Вроде вымытого пола в офисе — вы давно замечали, какой он чистый? А если в середине прохода будет грязное пятно — заметите? А что насчёт опечаток тексте? Система та же самая — они нарушают «внутреннюю гармонию» системы, за них зацепляется внимание, следом — негативная реакция. Я вполне могу понять даже тех, кто начинает обсуждение с резкого негатива — если постоянно иметь дело с писателями плохого кода, вырабатывается стереотип, т.с. копится желчь. И не все практикуют написание ответов с перерывом «на остыть», хотя это безусловно отличная практика, особенно если ответ предполагается в негативном ключе о чём-то эмоционально ценном.
Основная проблема, по-моему, даже не столько в резком негативе как таковом, сколько в его выражении в отношении личности авторов кода, а не самого кода. А это в свою очередь часто встречается, когда этот код задевает что-то эмоционально ценное для ревьювера, настолько что он воспринимает это атакой кодера на него лично. То есть проблема в глубокой эмоциональной вовлеченности в трудовую функцию (если говорить о работе).
любой код в 95% случаев «г… о», тот кто его писал сразу же «г… о-кодер» и т.д. и т.п
Вы готовы доказать, что это не правда, и что весь код в продакшене пахнет фиалками и никак не может быть улучшен переписыванием?

Аналогию надо проводить со спортзалом, а с врачом, который токсично и и с переходом на личности расскажем большинству людей о проблемах с весом, сердцем, позвоночником и т.д. и т.п. Как известно, здоровых нет, есть необследованные.
Ох, не пишите по ночам, вы пропускаете 'не' и в целом очень сложно понять что Вы пытаетесь донести… мало того что передергиваете некорректно, Так еще и не в ту степь сводите коментарий.
Дело не в том правда или не правда, а в подбираемых выражениях и реакции. ну и токсичность — это не использование мата, а определенного вида поведение, когда реакция на все подряд сводится к однотипнрму 'го… о', 'манки-кодер' и т.п.
Как раз-таки степь именно та: я считаю, что плохое надо называть плохим, некомпетентность некомпетентностью, говно — говном.

А борцы с токсичностью борются именно с этим, требуют смягчать; щадить чувства; называть плохое не плохим, а «альтернативно хорошим»; не упоминать слова, имеющие негативное значение в отдельных культурах («slave»).

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

когда реакция на все подряд сводится к однотипнрму 'го… о', 'манки-кодер' и т.п.
Это просто неправда. Сравните, например, реакцию на 3 проекта: systemd, новый скайп и на Steam Play. Всё очень по-разному, но адекватно ситуации.
А скажете вы что-то плохое об ушате или о человеке, который его принёс?
Конечно, автор специально сделал свою статью максимально провокационной, преувеличивая и огрубляя свои мысли. Хотелось бы попробовать донести одну свою.
Человеческая психология – это фактор, который нельзя не учитывать. Многие вещи, которые кажутся нам «правильными» и «естественными» по отношению к другим, совершенно также естественно воспринимаются неправильными по отношению к себе. Это происходит автоматически на уровне восприятия, еще до того, как мы начинаем осознанно анализировать услышанное.
Это относится и к критике. Любая критика (да, любая, в том числе и абсолютно справедливая) воспринимается негативно на эмоциональном уровне. А эмоциональный уровень — это то, что может владеть управлением нашего поведения до 100%, если не прикладывать дополнительных усилий на осмысливание происходящего.
Поэтому, все подходы к правильному формулированию замечаний — это не розовые сопли, а способ не испортить нормальную рабочую обстановку на ровном месте.
Что касается детского сада – автор ставит все с ног на голову.
Это в детском саду все друг другу всегда говорят все прямо без раздумья. А у взрослых людей, не важно в офисе, на заводе или в тюрьме, уже должна появиться привычка думать о последствиях, прежде чем что-то сказать. Исключение, возможно, только в армии, и то только по отношению к нижестоящим чинам.
Все сказанное вовсе не означает, что не надо критиковать и тем более, что надо молча работать с ленивыми бездарями. Критика должна быть правильной. Те, кто ее не воспринимает и ждет матов и ора, отправляются на сверхсрочную службу в армию. Там им будет комфортно.

Несколько лет назад прочитал в «Науке и жизни» заметочку про какого-то авиаинструктора. по его словам ученики, на которых орёшь после неправильных действий, выучиваются быстрее чем те, которых хвалишь за правильные.
По мне нарочитая всяко-политкорректность и терпимость только вредят.
Каждый прапорщик вам это подтвердит. Они просто по-другому не умеют и не пробовали.
Прапорщики — это те же программисты, только с двумя звездочками в линию. Они не умеют писать код, так им и не надо, они вот такие статьи на хабре пишут
. В бОльшинстве случаев если увидят что делает не так, подойдут помогут, подскажут, объяснят.
Вспомнились Маски шоу в деревне, когда писарь 3 раза переписывал одно и тоже письмо, а председатель рвал его. В конце писарь просто склеил и подал председателю тоже письмо. В ответ — молодец, это то, что я хотел.
Это была серия «Маски на киностудии», а режиссёр рвал сценарий) Помню, было очень смешно.
Та не, в колхозе, там еще председатель по болоту на лыжах катался. На счет сценария не помню. Сегодня вечером пересмотрю.
Возможно они этот приём дважды использовали. Вот тот момент из «Киностудии».
Заголовок спойлера
image
Да, я с колхозом перепутал.
Это регрессия к среднему

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

Выслушав мои воодушевленные объяснения, один из самых опытных инструкторов в группе поднял руку и произнес в ответ собственную речь. Сначала он согласился, что, возможно, птицам поощрения и помогают, но отказался признавать, что похвала действует на курсантов. Он сказал так: „Я неоднократно хвалил курсантов за чистое исполнение фигуры высшего пилотажа. Во время следующей попытки исполнения той же фигуры они справляются хуже. А когда я ругаю их за плохое исполнение, то обычно в следующий раз у них выходит лучше. Так что, пожалуйста, не рассказывайте нам, что поощрение работает, а наказание — нет, потому что все как раз наоборот.»

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

Д. Канеман, «Думай медленно — решай быстро»
Вот хороший пример. Таки
Сначала он согласился, что, возможно...

и потом привёл объективные доводы. А не начал с «что за ерунду Вы несёте».
Такую интерпретацию и «статистический принцип» легко опровергнуть!

Ибо, на основании наблюдений, инструктор установил (на большом кол-ве опытов) – «хвалю… справляются хуже… когда я ругаю… – лучше».

В случае правильности вашего вывода с «большой вероятностью»
кол-во вариантов лучше/хуже была бы примерно одинакова!

@-}---------
Перечитайте последний абзац. Хвалили или ругали только результаты, резко отличающиеся от среднего, после которых как правило идёт более ожидаемый результат (после успеха — хуже, после провала — улучшение)
То есть Вы утверждаете, что «ругали или хвалили» не влияет на качество выполнения задачи объектом в дальнейшем?

Тем самым Вы делаете ложными все душеизлияния топикстартера!
Ах, он всё эмоции на входящие воздействия придумал, «негодник»!
Так по Вашему? ;)

@-}---------

P.S. Пользуясь случаем поздравляю всех участников диспута!

Миф о том,
что только девушки могут переливать из пустого в порожнее часами – разрушен!

Ура, товарищи!!! )))
То есть Вы утверждаете, что «ругали или хвалили» не влияет на качество выполнения задачи объектом в дальнейшем?

ИМХО он утверждает, что отклонение результата в силу случайных обстоятельств больше, чем от приобретённого за 1 полёт навыка. А инструктор не может увидеть, что «когда ругаю — на 5% лучше, когда хвалю — на 3% хуже», для него просто лучше/хуже.
Чтобы что-то оценить, надо считать количество тех кто лучше/хуже, ругать или хвалить только часть курсантов, сравнивать на серии полётов и на разных базах — то есть делать именно то, что инструктор не делает а указанный выше Д.Канеман как раз делал.
Мне тоже кажется, что такую простую зависимость инструктор бы легко выявил. Ну и получается да, похвала/ругань в данной модели ни на что не влияют.

Может, и влияют — но за регрессией к среднему этого влияния не видно...

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

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

Печеньки — добро. Углеводы, энергия для мозга :)

Ишь, печеньки им не нравятся, у меня на одном из мест работы сотрудники за воду из кулера из своего кармана платили!
По теме статьи: статья конечно написана чисто на эмоциях, поиск смысла в ней это работа для психологов. Более всего смущает то, что не понятно про какой уровень отношений в коллективе идёт речь. Если вы считаете кого-то из коллег некомпетентным, вам дико хочется его материть, аж кушать не можете, то проблема скорее в вашем к нему отношении, а не каких-то тенденциях. Я работал администратором баз данных со сменными дежурствами, уровень в отделе у всех был разный, от кого-то принимать смену было приятнее, от кого-то страшнее, и если кто-то явно протупливался при возникновении проблемы, то мы все вместе формировали регламент, что делать в такой-то ситуации, вместо уничижительных разборов. А уж если человек игнорирует регламенты, это уже проблема руководителя, не стоит забивать этим голову себе. Эта схема применялась не во всех компаниях, но она была самой продуктивной: вместо мыслей о разносе от руководителя или коллег, ты знаешь что твоя цель решить проблему и дать информацию остальным как обходить подобное. И как бы ты не сомневался в человеке, ты знаешь что если он не даст решение, то будет хотя бы способен обеспечить информацией что происходило.
Касаемо менторства — если код рабочий то его уже бессмысленно называть плохим, это никого не разубедит, а ученик подумает что вы просто пытаетесь самоутвердиться. Код который есть это отправная точка, на ней объясните человеку что не нужно стесняться оставлять комментарии, что теперь нужно подумать об удобстве отладки, что какие-то из методов довольно плохи в производительности, и их можно заменить другими, а примеры можно посмотреть вон там-то. Если вы сразу объявите код плохим, то человек вместо умения обращаться с кодом будет возводить культ Карго, смешанный со своими подозрительными решениями.

Крайне не согласен с мнением изложенным в статье. По пунктам:
"Это должен быть матёрый сисадмин со стальными яйцами" — никто никому ничего не должен.
"который плачет от шуток про ориентацию" — это плохие шутки и их не должно быть в "рабочей среде". Ровным счётом как и половых (например про "тупых блондинок"), религиозных, относительно воинской обязанности сотрудников.
"что нельзя критиковать людей, нельзя вообще высказвать им негативную оценку" — да, нельзя. Человек приложил усилия и написал код. То что он не соотвествует какому-то требованию, о котором он мог и не знать — это уже другой разговор. Но в целом: "критиковать людей нельзя" — правильная точка зрения. Не забывайте что это для вас "программирование — это субкультура" или, скорее, "культ", а для большинства людей это просто работа, на которую они ходят просто потому что получают за это деньги. Оскорблять людей за их работу неправильно. Критиковать тоже нужно правильно.
По поводу оценки кода — меня учили не критиковать код, а указывать на более подходящие варианты, или проблемные моменты. Да, допустим, программист сделал обход связанного списка вместо доставания по хешу из ассоциативного массива. Не нужно говорить что "это говнокод", "это <плохое> решение" нужно сразу сказать что это можно сделать лучше.


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

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

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


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

Смысл не столько в шутках, сколько в ущемлении людей. Для вас возможно это будет "просто шутка", а некоторых это может сильно зацепить. Та же тема про воинскую обязанность — некоторые просто посмеются, а человек может действительно переживать по этому поводу, что ему придётся расстаться со своими родственниками, друзьями и коллегами на год. Если задуматься, это достаточно депрессивная тема, поэтому не стоит "давить на больное".
Эти "запреты" скорее общие рекомендации, потому что шутки на эту тему зачастую бывают оскорбительными, либо болезненными, для многих людей. В остальном можно полагаться на собственные чувства.
Из важных запретных тем, которые я, к сожалению, забыл указать есть ещё "шутки" про инвалидность.


в итоге придем к тому, что шутить вообще нельзя.

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


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

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

UFO just landed and posted this here

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


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


С проблемой пренебрежения нужно бороться чётко сформулировав границу между приемлемым и неприемлемым поведением. Например, чтобы удивленный возглас "Боже мой" считался устоявшимся фразеологизмом, не имеющем отношения к религии.


В целом, не следует из более формального общения делать драму (как же я теперь без "шуток про блондинок" и тому подобного). Я напоминаю, что речь идёт о рабочей среде.

UFO just landed and posted this here

Кто-нибудь возьмется перевести эту самую "токсичность"? Это "отравляющее поведение"?

Проблема в том, что как и все ярлыки, это определение вырождается скорее в 'мне не нравится этот человек'. Вероятно, статья именно об этом.
Перечитал все комментарии.
Вопрос у меня только один — какого овоща мне повесили на хабре пожизненный бан за ОДИН мат в комментах, притом что тут их как грязи? У некоторых права равнее чем у других?
Возможно, НЛО не готово к настолько массовым репрессиям) А может быть, дело в контексте. Я перечитал правила, и там мат упоминается в пункте «оскорбления». Моё сообщение выше, например, содержит матерные слова, но никого не оскорбляет.

Или за мной уже вылетели, лол.
UFO just landed and posted this here
Не стоит раньше времени расстраиваться, сабжу меньше суток, время раннее, админы еще отдыхают :).
UFO just landed and posted this here

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

Возможно это началось с того, что на хабре стали банить за слово "!@#"? Just saying…
Согласен с основным посылом статьи, но хочется напомнить, что перегибать не стоит не в одну ни в другую сторону. Да, я являюсь противником постоянного сюсюканья на рабочем месте, но я также не приемлю вот такого «дружеского»:
Идите-ка вы в жопу с вашей «токсичностью»! Я говорю это потому, говорить друг другу такое могут могут позволить себе только друзья.

Потому что меня также не устраивает и отсутствие рамок приличия и элементарной этики
UFO just landed and posted this here
Это просто манифест какого-то IT-ISIS с кучей комплексов и шаблонов. Забыли ещё блондинок за рулём.
Относительно подковёрных интриг тоже много историй, вот одна от лично знакомого мне человека. Разработчик приходит в компанию, работает три месяца, все с ним вежливы и обходительны. Через три месяца разговор с HR, в результате которого выясняется, что команда его ненавидит. После этого запой, переход в другую команду и паранойя. Хотя не знаю, можно ли называть паранойей то состояние, когда тебя и в самом деле окружают двуличные ублюдки.

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

… КАК ВДРУГ оказалось, если хлопать глазами и продолжать запарывать работу, можно не пройти испытательный срок. Шок! Сенсация!

Подсказываю: дело скорее всего не в подковёрных интригах, а в том, что человек попросту не слышит фидбэк. Ну и запойность — тоже так себе характеристика, на самом деле.
UFO just landed and posted this here
Ну рассмотрим три варианта.
1. Он не компетентный, поэтому и не может понять ваше объяснение. Ему ещё надо базу усвоить. То есть вам надо его обучить(например, если нехватка не в общих знаниях, а в особенностях конкретно вашей фирмы) или гнать взашей.
2. Обе стороны компетентные, но вы объяснять не умееете.
3. Вы сами неконментентны. Поэтому он и хлопает глазами, как можно ругать за правильно выполненную работу и говорить ему полную чушь. После нескольких попытак отстоять очевидные истины спорить перестал.

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

Токсичный стиль общения у нас в команде не принят. Объясняем, что и почему надо, если что-то идёт не так, спокойно объясняем, что не так и почему результат не годится. У нас знают, что такое кегль, негативное пространство и проч., «поиграть шрифтами» никогда не требуют :)
Ну я извините, что докапываюсь, второй -то дизайнер может быть менее компетентным или менее увереным в себе. Вот и ловит каждое слово. Поэтому ей легче объяснить. Впрочем я не призываю рефлексировать. В принципе я поддерживаю, что сначало надо пробовать наиболее вероятных случай — избавляйтесь от тех, кто не понимаете(вежливо) и нанимайте тех, кто понимает. Если всё идёт нормально, значит вы правы. Вот если вы раз за разом будете нанимать, и вам будут попадатся такие кадры, уже стоит подумать над тем, что у вашей фирмы есть какие-то конвенции отличные от отрасли в целом, которые нужно объяснить новичку, прежде чем идти дальше. Если и это не помогает, значит уже может дело в п. 2. и т.д. В общем моё мнение с начало надо с лёгкого пути начинать — считать, что вы правы, это сотрудник такой попался. Но при этом минимизировать издержки от того, что вы можете быть не правы. Поэтому грубым нельзя быть — т.к. в случае если вы не правы, то пострадает репутация компании. Соответственно, надо понимать, что и сотрудник пытается всегда пойти по лёгкому пути — считать себя правым. По сути — я не компетентен в дизайне, чтобы судить является ли использование «негативного пространства» на 100% хорошей фичей или это только мнение одной из школы дизайнеров, а также хорошо или плохо «играть шрифтами». Если говорите, что это плохо, наверное так и есть.
Ну я извините, что докапываюсь, второй -то дизайнер может быть менее компетентным или менее увереным в себе. Вот и ловит каждое слово. Поэтому ей легче объяснить.

Вы всё усложняете. Есть человек, который на лету понимает и сразу делает как надо. И есть человек, которому надо объяснять стопицот раз и который всё равно делает не так. Не надо больше ничего выдумывать :)
Почему тот кто знает больше считает что он чем-то выше и должен иметь возможность проявлять чувство своей важности?
Не нравится что сделал человек, подскажи как сделать лучше
«Токсичность» бывает разная.

В списке рассылки ядра linux, типичная «проблема» — это сообщения вида «you are morron, because this code is bad». Такие сообщения, по-моему, в основном воспринимаются с юмором. По-моему, это вообще не проблема.

Есть другой вид «токсичности». Когда человек не занимается прямыми оскорблениями, а вместо этого начинает злобный троллинг по любому поводу. На любую фразу — сарказм и злые шутки (не имеющие вообще никакого отношения к коду или другим техническим вопросам). Это либо подростки, либо взрослые люди с какими-то психологическими проблемами (может просто депрессия у него и он на весь мир обижен). Чаще всего, таких людей коллектив старается как-нибудь выдавить из себя. Если это не значительная для коллектива личность — всё хорошо, его как-нибудь попросят не появляться в этом сообществе. Иногда такими бывают технические лидеры проектов. В опенсорсе, как правило, это приводит либо к забвению проекта, либо к форку. В среде коммерческой разработки сложнее.

CoC бесполезен в первом случае. Во втором случае, он может быть полезен для того, чтобы иметь формальный повод забанить бесполезного тролля. Но он действительно может и навредить, если в сообществе имеются люди, готовые ради каких-то личных интересов пользоваться формальными правилами для выдавливания полезных людей из сообщества.
В списке рассылки ядра Linux типичная «проблема» — это сообщения вида «you are morron, because this code is bad». Такие сообщения, по-моему, в основном воспринимаются с юмором. По-моему, это вообще не проблема.
По-моему, тоже (это не проблема). Эту олдскульную этику можно сформулировать, например, так:
When people actually care about something, they tend to have strong opinions. When you are wrong, you hear about it, very directly and in no uncertain terms. Absolutely no one is given special treatment. You have a choice between being offended and leaving, or appreciating the criticism and trying to do better. The people who get offended are the ones who have missed the obvious; another person just gave you their time in writing out their opinion and correction. They may have skipped showering you with sunshine, rainbows and ponies, but how you feel is unimportant.
(Выделение моё.) Тем не менее, для многих людей это таки проблема, причем весьма серьезная, и how they feel is very important, а на предложение не воспринимать всё близко к сердцу и вообще отрастить кожу потолще тебе возразят, что у нас в Техасе и за меньшее можно получить в морду. Аргументы про «деточка, это интернет» работают не всегда и не везде.

Можно годами оставлять уместную, как тебе самому кажется, конструктивную критику (я нередко оставляю feedback на коммиты), помогающую человеку и результатам его работы стать лучше (это к комментарию amarao выше), тщательно выбирать слова, вычитывать сообщение на любые намёки перехода на личности, и всё равно не догадываться, что тебя считают мудаком, причем даже те, кто не был непосредственным адресатом твоих писем в рассылку:
It took months from the beginning of my participation in FreeBSD, and repeated reassurances from community members, for me to learn that you, danfe, are not a complete asshole.
ЧСХ, впоследствии человек мнение своё изменил на практически противоположное, но тем не менее: любая, даже самая взвешенная и уместная (по-твоему) критика может восприниматься болезненно.

Можно спорить, почему раньше старая этика работала, и не было нужды в CoC'ах, но факт остается фактом: мир изменился, for better or for worse.
Ох. Столько комментариев, столько мнений… А все оттого, что когда-то давно, по причинам, которые лежат за пределами здешнего обсуждения, люди фатально решили, что профильное образование может заменить обычное человеческое воспитание. Оказалось, однако, что умение брать тройные интегралы не делает из дикаря просвещенного человека — последнее достигается по-другому и параллельно.

Помните знаменитое разделение на «физиков» и «лириков»? Это самый известный знак того, что общество зашло не туда. Инженеры и ученые «старой школы» просто не поняли бы такой постановки вопроса.

Шухов отлично разбирался в опере и создавал фотоснимки, имевшие очевидную художественную ценность.

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

Про то, что Ломоносов писал стихи, все и так знают.

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

Сейчас вроде бы заметна положительная динамика в этом направлении, но, боюсь, результаты мы увидим еще очень нескоро. А до тех пор все будут спорить, каким же должен быть инженер/программист…
Я в целом довольно «токсичный» по меркам большинства, но почему-то умудряюсь годами «застревать» на одном месте.
Человек, который пытается что-то требовать в плане улучшения по работе (например нормальных прав на dev сервер) и проталкивать по работе не то чтобы новые, а хотя бы стандартные устоявшиеся инструменты, чтобы стало лучше, а не «мы пилили и будем пилить это самодельное г№;%но мамонта ещё 10 лет, рефакторить нельзя, чинить нельзя, всё что хочешь переделать — делай десять копий разных реализаций, с кучей сомнительных проверок, левых файлов-флагов, твиков, костылей, потому что у нас есть клиенты которым что-то нашкодили и мы не знаем как иначе их поддерживать» — это токсичный или нет?
Критика «ты что-то закоммитил и ни;№;:%ра не работает! — А что именно не работает, вот я запустил же?! — ни;№%: ра не работает, чини срочно!» вообще может быть полезной?
Так же доводилось наблюдать, как пришедшее гораздо позже тебя руководство, перетаскивает работников с прошлого места работы, попутно увольняя неудобных «токсичных» людей, которые до этого руководства могли несколько лет отработать и никаких проблем со старым коллективом и руководством у них не было. Эффективный «менеджмент» во всей красе: неудобных уволить, оставить только тех, кто умеет на задних лапках танцевать. Ну и что что тасков за спринт закрываться будет втрое меньше, зато все свои, прикормыши, никто не возмущается, никто ничего не хочет, инициатив никаких, можно и на корпоративах все старые знакомые лица. «Новоприбывшие» переселенцы мало того что на новом месте ничего не знают и не хотят знать, так ещё и пытаются свои правила привнести, дополнительно накаляя атмосферу со старыми сотрудниками (на которых и так навалилось работы в добровольно приказном порядке). А чуть какие проблемы — бегут жаловаться к руководству. В итоге штат буквально превращается в гадюшник и все кто могут из квалифицированных сами рано или поздно уходят даже если их не увольняют (а всех уволить сразу невозможно, надо же кому-то и работу работать, а не только языком в кулуарах чесать).
Ну так а может самодельное **** мамонта отлично работает. А для ваших стандартных инструментов надо год практики, чтобы ими хорошо пользоваться, да ещё и после этого надо много месяцев будет писать код, чтобы застивить это работать, как *** мамонта. Естественно возникает вопрос — действительно ли есть объективная необходимость в переходе. Или вы просто хотите получить ведущую позицию в коллективе на основании того, что лучше владеете неким стандартным инструментом? Не сочтите, за то, что я хочу вас обидеть, просто вы можете высказаться, а ваши оппоненты — нет. Поэтому любые непонятные для меня вопросы я трактую не в вашу пользу.
Смотрите, какой фокус: то, что работает — никто не трогает. Никогда. То, что не работает должным образом — регулярно туда залазишь по самые уши, каждый раз с матом и болью разбираешься, как оно работает, как извратиться чтобы не поломать никому неизвестное поведение (потому что в документации и комментариях нет чёткого описания всех кейсов, а костылей стало уже больше, чем кода основного функционала). Ну и далее возникают естественные вопросы из серии «стоит ли тут руками писать элементарные запросы к БД, когда давно есть стандартные ORM», «Должен ли класс рисующий диалог хранить в себе функционал провайдера к заданному функционалу, который используется из сервисов (которые ни разу не GUI)» и так далее. А «Ведущая позиция»… в PMы не стремился, но позиция «кто везёт на том и едут» тоже совершенно не радует, особенно если регулярно подкрепляется ересью, нервотрёпкой и пустопорожними стенаниями что «ну когда-то же оно как-то работало на каком-то проекте» (на самом деле нет, просто с годами вспоминается только хорошее, а плохое забывается).
Одни люди друг другу нравятся, другие не нравятся. Что с этим делать наука пока не придумала. Деды решали проблему простыми и незатейливыми фразами вроде «Мы таких как ты тут не любим», без претензий на объективность. Но в нашем пузырике эльфиская меритократия, все должно быть объективно. Поэтому говорят «ты токсичный и портишь атмосферу». Не циклитесь на словах, ищите смысл.
Происходит активная девальвация статусов. Сейчас очень легко найти вакансии сеньоров, тимлидов, архитекторов с опытом от года. ОТ ГОДА. Не может быть, чтобы HR поголовно сошли с ума, кто-то и в самом деле верит, что с годом опыта можно быть специалистом высшего уровня в профессии

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

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

Если дальнобойщик стал программистом, это не значит что он должен «обматерить коллегу и с довольной улыбкой» продолжить писать код. Если подобному навыку человека-со-стальными-яйцами и есть применение, то для того чтобы давать отпор прослойке сейлз и менеджеров которые в очередной раз пообещали клиенту запилить фичу до конца недели.
Порою, именно обматерить может быть весьма рациональным действием. Бывает, люди по другому не увидят проблему, нужно говорить на их языке, который они поймут. И это обматерить должно быть именно разовым, осознанным действием, а вовсе не реакцией по умолчанию.
У автора видимо накипело, раз его так понесло.
Я за индивидуальный подход! Вполне возможно, что на некоторых действует только пинок, чем мощнее, тем сильнее.
Мне нравился подход, который практиковали у одного из моих работодателей. Сначала обязательно похвалит, потом расскажет слабые стороны/ошибки и объяснить зачем это делает. Например: вот тут ты допустил ошибку, тебе необходимо изучить такую и такую библиотеку, благодаря этому ты сможешь писать чистый код и быстрее перейти из джуна в мидлы. Это же не сложно?
А мне даже кажется, что вопрос должен стоять не «как мне обратиться к тому парню», а «в какой форме мне было бы лучше получать фидбек?»
Полностью согласен, но стоит расширить на любую умственную работу, где стрессы — постоянное явление.
Долго думал как выразить своё отношение к этому словами, а тут эта статья — в точку!)
Походу у автора очень сильно накипело… Признавайся, кто обидел? =)
По существу со многим соласен, но статья «отдает» озлобленным субъективизмом. Хотя посыл мне понравился.
Я с первых строк был уверен, что это перевод статьи. Был удивлен, когда обнаружил обратное.
Интересно, где в России такое место, где ты отправляешь код с одними и теми же ошибками, а тебе в ответ не имеют сказать и слова, при этом ещё должны улыбаться.
> IT — не детский садик. Это место для взрослых,

Просто представьте, что у вас вместо людей, какие уже есть — инструменты. И по итогам в отдельно взятой команде все приходят к позиции «использовать бОльшую часть инструментов на все 100%, но при этом малая часть будет гневаться от необходимости вытирать задницу этим плаксам». Какой подход даст максимум производительности от отдельного коллектива, такой и победит — хоть на токсичность жалуйтесь, хоть бои без правил с элементами садомазо на скраммитингах проводите, лишь бы метрики росли.
UFO just landed and posted this here
Проблема критики в том, что многие критикующие вместо объективности навязывают свои личные хотелки, которые мешают улучшать действительно важные показатели работы. А если человека заставлять хоть немного шевелить мозгами, прежде чем сказать нелицеприятную вещь, то тогда вероятность того, что критический комментарий будет по делу — заметно возрастает.
Это и правда перебор.
— Старички с ruSO.
Я буду не политкорректен. Извините.
Буду добалять, наверное, свои 5 копеек к посту.

Для начала давайте определим термин «токсичное поведение».
Я под «токсичным поведнием» понимаю поведние. Которое разрушает среду, разрушает процесс работы, мешает продуктивно и конструктивно работать, мешает выдавать качественый результат.

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

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

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

ну так вот. инженерам это противно. и автор статьи, как мне кажется, совершенно точно это отметил.

но к сожалению в it-среду из за «перегретого спроса» в разы превышающего предложение, начали набиваться люди имеющие к it «практически никакое» отношение.

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

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

… хотя и авантюристов с прохвоставми в «новоделанных it -шниках» тоже хватает. вспомните истории индусов которые устраиваются на работу «вместо собрата, прохлдившего собеседование».

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

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

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

И именно такое поведение разрушает рабочую среду.

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

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

Что делать? не уверен что знаю.

Пока же для лиц, не способных отличить объективную критику от личностных наездов (как при прослушивании так и высказывающих ), имеющих сложности с техническим мышлением и преобладающим эмоциональным восприятием, но пытающихся работать в it в технических ролях, вопящих сверх разумного про токсичномть — предлагаю ввести термин «it-меньшинства»..

именно так.

И обращаться с людьми, которые ведет себя действительно токсично(*) именно так же, как с «агрессивным подмножеством лгбт »: вежливо и аккуратно, но пусть идут общаться с разделяющими их интересы.

(*) повторюсь: под действительно токсичным поведением я понимаю поведение, приводящее к развалу конструктивного рабочего процесса

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

Еще варианты? Не знаю.

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

Какими бы мы не были асоциальными от природы, как бы мерзка ипротивна эта политкорректность не была местами — эти скиллы нужны.

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

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

Инженеры имеют право на такого рода области работы никак не меньше тех, кто громче всех кричит о своих правах и токсичном к себе поведении.

Пока же для лиц, не способных отличить объективную критику от личностных наездов (как при прослушивании так и высказывающих ), имеющих сложности с техническим мышлением и преобладающим эмоциональным восприятием, но пытающихся работать в it в технических ролях, вопящих сверх разумного про токсичномть — предлагаю ввести термин «it-меньшинства»..

Есть, как минимум, ещё субъективная критика. А вот проблемы с отличием объективной конструктивной критики от субъективной деструктивной обычно у людей привыкших выражаться типа "ты дебил! кто тебя на работу взял? твой код говно — переделывай". Они искренне уверены, что дали такой фразой объективный конструктивный фидбэк.

Полностью согласен. Лучше и не скажешь.
Странная статья. Автор, прикрывая свою грубость, что-то пытается говорить про критику.

Идите-ка вы в жопу с вашей «токсичностью»! Я говорю это потому, говорить друг другу такое могут могут позволить себе только друзья
Но мы не друзья. И вряд ли когда-либо бы стали, если вы базовые правила этики соблюдать не в силах, глядя на ваши же комментарии.
По поводу печенек! Моя зп в 200к не позволяет мне купить печеньки? А прибыль компании в 200 лямов ей тоже не позволяет обеспечить бесперебойную подачу печенек? Кто из нас более скуп и жаден?
Это такой старый спор «зарплата vs печеньки».
Мне представляется, что значительная часть поднятых в статье проблем снимается чётким прояснением всех отношений: работодатель-работник; коллега — ещё один коллега; тимлид-сотрудник. Когда вы точно проговорите сферы компетенций, служебные обязанности и дедлайны, все печеньки и токсичность останутся сугубо в сфере личных отношений, и к работе иметь отношение перестанут.
Только хотел послать н***** заказчика с вопросами каждые 15 минут с 10 утра до 11:30 вечера, а тут эта статья…
Автор, иди ка ты в… гугл, и почитай про этот термин):
Термин «токсичные сотрудники» впервые появляется в статье Майкла Хаусмана и Дилана Майнара, опубликованной в 2015 году в Harvard Business Review. Авторы описывают новый термин, основываясь на более ранних исследованиях психологических типов работников: от «звезд», приносящих организации множество бонусов, до тех, кто вредит своим поведением рабочему процессу. Главной особенностью в трактовке нового термина является тот факт, что токсичные сотрудники не просто вредят рабочему процессу, но и демотивируют весь коллектив, заражая его негативными эмоциями.

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

Очень похоже на детскую жестокость — люди которые ещё не понимают, что «они делают очень больно» — больше всех вопят о том что «больно им».

Люди которые не понимают, что их поступки разрушают рабочий процесс — зачастую больше других кричат, что им нужна «не токсичная атмосфера», подменяя понятие «токсичность» на личные обиды на критику и форму обращения.
Господи, наконец-то кто-то это сказал! Святой человек.
Вообще разделять людей на детей и взрослых не особо верно, ну или как в вашем примере детский садик и серьезная компания. Всякий раз когда смотрю на этих «взрослых» вспоминаются пятилетние дети. Одни смотрит мультики, другие капризничают и ставят себя превыше других, третьи непомерно бухают и ноют обо всем. И это не весь список. Все эти примеры в интересных комбинациях встречаются в каждом человеке. И вот эти вечно напуганные пятилетние дети стоят во главе компаний, управляют персоналом и т.д. А вы говорите что у вас компания для взрослых, ничего подобного. Не лгите себе, не думайте что вы «взрослый».
Неожиданный факт — программисты не хотят работать без печенек. Вы, что серьёзно? Какого чёрта в каждой вакансии на сеньора указывают эти грёбаные печеньки? Твоя зарплата в 200к не позволяет тебе купить их? Да ты пекаря себе личного можешь нанять! Это просто какой-то сюрреализм. — да!!! Они ещё любят писать всякую херню про «джедаев» и «светлую сторону силы».
Блин, реально наболело. Поддерживаю текст на все 100!

ps. Кстати. Печенье — очень вредная еда. Дофига калорий, в-основном трансжиры в составе. Люди, зарабатывающие под 200 тыс, не могут позволить себе нормальную еду, что получают самые дешёвые и самые вредные калории — так думают хрюши?
UFO just landed and posted this here
Извиняюсь, если что не так, но текст оставляет ощущение «у альфача бомбануло».
Хамство никогда не способствовало авторитету в действительно профессональном коллективе.
Люди ведут себя политкорректно на работе, потому это выгодно.

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

Вести себя корректно — не значит ничего не делать. Если бы тот же чувак зашел к эйчару / шефу месяц спустя и вежливо поинтересовался фидбэком, драмы бы не было.
UFO just landed and posted this here
В интереснах компании, ведёт себя только глава компании и менеджеры. Потому, что они получают часть прибыли. А у сотрудников наоборот, часть отбирают. И платят ровно столько, сколько нужно для воспроизводства его рабочей силы. Поэтому сотрудник действует максимум в интересах своей хороший репутации. А так интересы работника и работодателя непреодолимо антогонистичны. Так же команда может выдавить 1-2 разработчика, которые чуть не дотягивает до стандартов, и скажет -смотрите, какие мы незаменимые — к нам надо только сеньора нанимать(и они сами тоже себя до сеньоров повысят).
Что значит отбирают часть прибыли у сотрудников? Сотрудники не участвуют в прибылях, добровольно обменяв предпринимательские и инвестиционные риски на гарантии трудовых отношений.
"«Твой код плохой, я сейчас подробно изложу причины и дам советы» уже считается токсичным поведением."
— это где так???? Ни разу не видел, чтобы это считалось токсичным поведением.
Например, во многих опенсорсных проектах, в частности, FreeBSD. Мне еще в 2008 г. писали, что «я своими замечаниями реально з***л, так что совет — пиши всем в личку, уйди на дно [и т.д.]». Замечания мои были в основном технического характера, со всеми нужными объяснениями и rationale, хотя на ошибки в коммит-логах (и их низкое качество вообще) я тоже изредка указывал.

Общий тренд в целом за последние десять лет имхо сильно сместился от «1) мы разрабатываем хорошую операционную систему (пишем качественный, хорошо документированный код); 2) получаем от этого удовольствие» в сторону «1) получаем удовольствие; 2) разрабатываем операционную систему». В том смысле, что приоритеты поменялись. Теперь главное — be nice to people, не мешайте им получать свой фан, не аннойте их, даже если они что-то делают объективно плохо. Смею полагать, так не только во фре.

А что значит "объективно плохо", если "плохо" — категория субъективная?

UFO just landed and posted this here

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


Токсичное поведение, на мой взгляд, это нечто большее чем агрессивная подача своего мнения. Я бы сказал, что агрессивные высказывания (как "твой код плохой...") это необходимая, но недостаточная часть токсичного поведения.

Ну это близко к токсичному. Т.к. то же можно изложить как

Заголовок — «Важные вопросы по вашему коду».
1. Выполнение этого когда может привести к таким-то уязвимостям…
2. Есть альтернативное решение, которое лучше потому что…
3. Подробнее с этим можно ознакомиться на…

Ну типа — «Уважаемый Василий Пупкин. Многократное использование операторов GOTO в вашем коде сильно затрудняет понимание его логики, и последующую его поддержку. Опыт разработники проектов показывает, что использование структурного программирования намного повышает читаемость кода. Рекомендую вам ознакомиться с материалом — программирование-для-ламерят.ру/struct.php » :-)
Пупкин ваш, не исключено, что проигнорирует ваше замечание, «потому что так пишут только зануды, а их придирки нет смысла слушать», «если бы проблемы были достаточно серьёзные, мне бы написали о них КАПСОМ».

Жупкин и Пепкин это сообщение даже не прочитают, и пришлют вам свои патчи с GOTO как будто так и надо.
Раз проигнорирует, два, а на третий что-то типа увольнения по несоответствию.
Это уж очень политкорректно. У нас вообще могут сказать: «Че это за гамнокод, ну кто запросы в цикле пишет». И никто не обидится.
Автор — человек, 4 года назад «искавший (и так и не нашедший) работу пхп-джуниора», судя по вот этой его публикации. Откуда же за столь малый срок взялось столько мудрости в области того, как всё должно быть в IT? Особенно про годовалых сеньоров :) Интересно, какой ник у автора на ruSO? Там тоже есть каста критиков be-nice подхода, которые прям с пеной у рта кричат про яйца и прочие атрибуты тру-разработчика
Удивлён столь позднему срыву покровов. Да, я всего лишь чуть больше чем три года как разработчик. До этого момента я, конечно же, ел мамины борщи и играл в линейку. Девственник.

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

Stackoverflow принципиально читаю только на английском. Давно не авторизовался, ник не помню, но, скорее всего, такой же.

Аргумент с опытом уложил меня на обе лопатки. Вы не оставили камня на камне от моих рассуждений. Уж теперь-то все поймут, что я не прав.
UFO just landed and posted this here
Спасибо за оценку. Честно говоря я и сам сильно задумался.
Если словоблудие воспринять за тренировку — использованный кендом!
"… Разработчик приходит в компанию, работает три месяца, все с ним вежливы и обходительны. Через три месяца разговор с HR, в результате которого выясняется, что команда его ненавидит. После этого запой, переход в другую команду и паранойя..." Вот чтоб такие срывы не были частыми и регулярными Вам и дают «печеньки», «розовые сопли» и «карамельные рельсы». Ну а коль Вам нужна «настоящая» жизнь, без этого «пид*ства», ехай на лесозаготовку или шахты Кузбасса работать, там сможете реализовать свою тягу к чистым и откровенным отношениям с коллегами.
Эдикам бесполезно что либо объяснять! )))
Суровый одскульный менеджер решил стать эффективным но что-то пошло не так, да и печенек стало жалко)
Я вот просто поражаюсь недалекости людей критикующих статью. Это что, ангуляр на мозг так влияет? Пробегают текст по диагонали, вырывают из него слова «админ», «яйца», «токсичность», «пошел ты» и строчат гневные осуждения. А подумать над предметом слабо? Неужели непонятно, что вслед за термином «токсичность» придут т.н. нормы «корпоративной нетоксичности», кураторы (надо больше HR в IT), а там и лоеры подтянутся. Не американские из фильмов, а свои родные (надо больше лоеров в IT).
И в один прекрасный день скажет Таня Пете «не мог бы ты ревертнуть ту хрень, которую вчера закоммитил», и выставит Петя Таню в ответ на бабки через корпоративного лоера (система штрафов) за токсичное слово «хрень».
А потом Владислав, наслаждаясь уютом в своем кубике, случайно посмотрит ниже чем надо на ноги Тани, и обдерет Таня Владислава как липку (не сама, а через корпоративного лоера) до самой неуютности, под угрозой увольнения без выплаты.

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

Уделите своего драгоценного времени минут 20 — сериал «Вечный отпуск» сезон 1 серия 17.
Там все очень доходчиво и наглядно. В каждой сказке есть доля сказки…

А потом, люди называющие себя инженерами, хорошо подумайте — надо вам такое «нетоксичное» IT или нет?

Спасибо что дочитали, никого не хотел обидеть.
Если что-то подобное придёт, то оно придёт на уровне юрисдикции, а не на уровне внутренних правил ИТ-индустрии.
Ученых уже выставляют на бабки?
Есть история посвежее и похуже.

Мировое академическое сообщество вновь нашло себе новую жертву для травли. На сей раз ею стал 28-летний учёный из Кембриджского Университета, недавно получивший престижную стипендию на свои исследования. Казалось бы, подобная награда это невероятный престиж для столь молодого ученого, но некоторые его коллеги так не думают.

Более 300 ученых уже подписали открытое письмо, чтобы университет разобрался в сложившейся ситуации i.e. лишил Карла стипендии, а его самого чуть ли не предал анафеме. Так как его работы «этически подозрительны» и «методологически ошибочны». В письме также написано, что ученые шокированы тем, что работы, содержащие столько ошибок и наверно интерпретированных данных, получили признание. В то же время, подписавшиеся не приводят никаких реальных опровержений этим научным работам.

На самом деле, работы Карла довольно известны и он не раз публиковался в таких изданиях как «Intelligence, Personality & Individual Differences, The American Sociologist, Comparative Sociology, European Union Politics» и «The British Journal of Sociology». Более того, с 2013 года его исследования были процитированы 235 раз.

Так что же не так? Спросите вы. На самом деле становится все понятно, как только вы посмотрите на названия его трудов: «Leave and Remain voters’ knowledge of the EU after the referendum of 2016, Cognitive Ability and Political Beliefs in the United States» и «Verbal Intelligence is correlated with socially and economically liberal beliefs».

По сути, учёный затрагивал табуированные леваками темы, а именно связи между генетикой, расами и уровнем IQ. А его основные работы посвящены тому, как интеллект и психологические характеристики влияют на убеждение и поведение человека. За что и был фактически назван «псевдонаучным расистом», хотя никаких опровержений его работ не существует. А мы всё-таки говорим, а недовольстве в научном сообществе.


Отсюда

Оригинал статьи: quillette.com/2018/12/07/academics-mobbing-of-a-young-scholar-must-be-denounced
А Вы не пробовали почитать статьи этого автора самостоятельно, а не в пересказе каких-то «борцов с либералами», не? А я вот почитал и подтверждаю: методологически они очень слабые. Справедливости ради автор честно упоминает об этом в своих статьях, что мол это очень слабые доказательства и подает свою работу лишь как повод для более детальных исследований что формально делает ее корректной. Но когда человек раз за разом публикует статьи где ищет очень слабые и статистически незначимые но политически чувствительные закономерности, то это таки наводит на мысль о том что кое-кто злоупотребляет академической средой для ведения политической деятельности и этот «кто-то» отнюдь не противники Карла.
Заведом исключаем вариант, что человеку просто интересна тема и личной пользы от её изучения он получает не больше чем другие учёные получают от смежных научных тем, но не столь значимых политически?
Если интересна — что ж он сам этими самыми «более детальными исследованиями» не занимается?
Это же уловка 22 в чистом виде.
У чувака хотят отнять деньги, которые дали для проведения более детальных исследований, на основании того что его текущие исследования недостаточно детальны и нужно провести более детальные исследования.
Не похоже, извините. Чувак много и довольно долго писал о разном, но в детали что-то вдаваться не спешил.
UFO just landed and posted this here
Есть такой юридический термин — «прецедент». Достаточно одного раза. — справедливости ради, это в английской системе права. У нас по-другому, вплоть до игнорирования постановлений ВС РФ
Когда вы подавитесь от словоблудия я буду хлопать в ладоши! ;)
Я поражаюсь недалёкости комментаторов!
Клоака она и в Африке — клоака!
Или планктон «великомыслящий»?! )))
UFO just landed and posted this here

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

Видимо то что я скажу уже говорилось и мной тоже. Тема стоящая обсуждения и имеет (понятное дело) два объективных полюса. Но основная суть проблемы это крайности в которую могут довести как голую критику в степень не объективного хейта, так и все эти печеньки в тот самый лицемерный ад, который то же хейт. То есть получается что в обоих случая имеем дело с одним и тем же в разных вариантах.
Планктон вещает о планктоне!
На зависть бабам на базаре!
Всё! Нет слов… Дабы не уподобиться!
Жаль что не могу поставить + в вашу карму. Заминусовали двуличные ублюдки под статьей, которая ответ на вашу.
Автор, ты плохо пишешь статьи!

кто виноват — понятно. Что делать — нет. Налицо почти подростковое «буду делать как нравится, ваши чувства меня не волнуют, мир жесток».

Что делать? Прошариваться в психологии и понимать, как давать фидбек корректно. Почитайте хоть ту же «Как разговаривать с м*даками».

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

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

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

Articles