Как стать автором
Обновить

Комментарии 521

Вы хотите знать один «правильный» ответ вместо признания спектра «хороших» и «плохих» ответов.

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

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

Единственно верное решение — это "2 x 2 = 4".
Все остальные решения — это компромиссы.

НЛО прилетело и опубликовало эту надпись здесь

Далеко не факт, плюс, на 0 в некоторых языках программирования начинаются восьмеричные числа.

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

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

А иногда 100% корректность не нужна в принципе: например вспомогательные скрипты, используемые для сборки программы — если они как-то отрабатывают на ваших данных, которые у вас есть и дают правильный результат… то вам же неважно что они сделают с другими данными, которых у вас нет!
Лайфхак: зайти по ссылке и ввести в поиске по странице слово «сдвиг»)
НЛО прилетело и опубликовало эту надпись здесь
Правильнее говорить по другому: Питон на столько медленный и длинный, что в нём даже сдвиг медленнее, чем умножение.

просто для сдвига используется два символа, а для умножения — один

Еще быстрее будет просто: 4

В некоторых системах счисления может получиться не 4, а 10 или даже 11 :)

А то и syntax error «operation 'x' is not defined» [:
Здесь человек привык принимать Единственно Верные Решения ™ — а вы со своими троичным и четверичными системами…
НЛО прилетело и опубликовало эту надпись здесь
Предлагаете использовать «единичную» систему?

Микросервисная архитектура. По сервису для каждой задачи:
2 х 2,
2 х 3,
2 х 4...

Математики так и делают. Вот это вот Z и S — это они.

зачем так примитивно? Система исчисления с основанием е — куда забавнее.

10 в любой системе счисления 10 ;)

НЛО прилетело и опубликовало эту надпись здесь
кроме единичной :D
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Вам там не совсем корректно сказали.


0: Z
1: SZ
2: SSZ
3: SSSZ
и т. д.

НЛО прилетело и опубликовало эту надпись здесь
S и Z — два знака. а в единичной системе возможен только один знак.

Z может быть только в конце строки и имеет по большей части техническую роль. Значение числа зависит только и исключительно от количества S в строке.


Короче, можете выкинуть Z.


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

Почему?


Система счисления — это всего лишь представление.

обучение детей счету о котором упоминается: надо вспомнить что обучают на палочках счету в десятичной системе, а не единичной

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

В перле 2 x 2 даст 22. Как и 2 . 2

найдите точное численное решение задачи X*X=2, без компромиссов пожалуйста.

x = sqrt(2)

одно?)

public int X { get { if (!x) { x = true; return 3; } return 1; } }

НЛО прилетело и опубликовало эту надпись здесь
Все остальные решения — это компромиссы.

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

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

Как же скучно жить в черно-белом мире…
всегда есть не нулевая вероятность получить несколько оптимумов при конечном количестве параметров.

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

С чего бы, даже в теории, стремиться к 0...? Насколько я помню, математически было показано, что вероятность нахождения нескольких оптимумов стремится к 0 только при бесконечном количестве параметров/критериев. В практике(реальной жизни) оптимумов вполне может быть несколько. Классический бытовоц пример у нас — выбор рейса Москва -Питер. Чтобы выбрать рейс, постоянно нужно увеличивать число параметров/критериев.что бы в итоге остался 1. Причём в зависимости от индивидуума, набор этих параметров разный…

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

Похоже на задачку буриданова осла, если честно. С сортировкой-то что не так? Если нет убедительных причин поступить иначе: берите sort из стандартной библиотеки, и не надо ничего выдумывать.

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


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

Он не просто good enough, у него еще и нулевая стоимость поддержки и реализации. Если, конечно, ваш продукт это не разработка и поддержка популярного фреймворка или этой самой стандартной библиотеки.

"Нулевая стоимость поддержки и реализации" не равно "оптимально по всем параметрам". Помимо стоимости поддержки и реализации есть и другие параметры. Часть из них я упомянул в своем комментарии.

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

А, у вас какое-то своё толкование задачи оптимизации. В классическом смысле это поиск минимума (или максимума) некоторой функции от этих самых параметров.

Нет, у меня толкование вполне классическое.


Как правило, эта функция: полная стоимость решения с учетом ограничений.

Что конкретно входит в "полную стоимость решения с учетом ограничений"? И с какими весами?


И в очень редких случаях sort не подходит, или не оптимален.

И, как сказал Prototik, можно назвать мильйон таких "редких случаев", в которых библиотечный sort будет неоптимальным.

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

Найдёте хотя бы три?

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


https://github.com/git/git/blob/master/pack-revindex.c#L27
https://github.com/torvalds/linux/blob/master/lib/sort.c#L199
https://github.com/antirez/redis/blob/unstable/src/pqsort.c#L99


А мой вопрос вы решили проигнорировать? Про количественный и качественный состав "полной стоимости решения с учетом ограничений".

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

Особенно мне нравится вот этот коммит в гит. Тут и исследование, и обоснование, и видно как начали со стандартной сортировки.

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

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

Я немного утратил нить вашего тезиса.


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


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


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

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

Конкретно про сортировки. Я не спорю, что есть разные алгоритмы с разными характеристиками. Но считаю, что в среднем программист скорее выиграет сто миллионов в лотерею и перестанет программировать вообще нежели ему придётся решать задачу где встроенная сортировка не подойдёт. И считаю неправильным употреблять для описания таких случаев эпитеты: «множество», «зачастую», «мильены».
Не говоря уже об искусственно созданных «плохих» входных данных, которые есть у любого алгоритма сортировки.


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

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

Мне нужно сложить 2 целых числа.
Можете назвать оптимальное решение, оптимизированное по всем параметрам сразу?

Подумайте, откуда взялась поговорка, что «лучшее — враг хорошего».
Всегда есть несколько оптимальных и удовлетворительных решений.
Потому что оптимизировать по всем параметрам невозможно. Мы не живем в статичном мире.
Нам преподаватели в институте по рукам били за такое применение термина «оптимальный».
Не бывает абстрактно оптимальных решений. Решение может быть оптимальным только по определенному критерию оптимальности. При этом по другим критериям это решение зачастую не будет оптимальным (например, по времени решения задачи).
dic.academic.ru/dic.nsf/ruwiki/1587468

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

это весьма субъективно

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

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

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

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

P.S. Вообще вся эта дискуссия напомнила мне одну хорошо известную всем статью где говорится что, в сущности, от программиста требуется всего две вещи:
1. Толковый и
2. Доводит дело до конца

И там же был пример того, почему пункт #2 неверноятно важен: Толковые, но не доводящие дело до конца работники обычно просиживают ученую степень в больших компаниях, где их никто не слушает из-за их полной непрактичности. Они скорее станут думать об академическом подходе к проблеме, а не о выпуске продукта в срок. Их легко узнать по склонности к поиску теоретического сходства между двумя совершенно разными концепциями. Например, они могут заявить: «Таблицы — это, в сущности, частный случай языка программирования», а затем исчезнуть на неделю и написать потрясающую статью о теоретических атрибутах вычислительной лингвистики электронных таблиц как языка программирования. Круто, но бесполезно.

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

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

Далее составляется матрица альтернатив, выставляются весовые коэффициенты критериям, выполняется свёртка, альтернативы ранжируются и выбирается лучшая.
1. Матрица альтернатив содержит в столбцах альтернативы, в строках — критерии, а в пересечениях — значения каждой альтернативы по каждому критерию.
2. Каждому критерию приписывается весовой коэффициент. Выбор весовых коэффициентов — отдельная известная задача, для которой придуманы 5-10 разных методов решения.
3. Свёртка, в общем случае, может быть разной. В нечёткой логике обычно используется минимаксная, кто-то использует сумму и т.д. В данной задаче я бы использовал сумму.
5. Ну и в качестве целевой функции выбора из ранжированного списка альтернатив я бы использовал [f(c1,c2,c3,...)=a]→min.

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

А вот что вы утверждаете, я понять не могу.

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


Взять тот же latency/throughput. Обычно они связаны обратной зависимостью и улучшая одно — неизбежно ухудшаешь другое.


Из этого следует, что не существует универсального критерия на все случаи жизни, и программист уровня миддл должен уметь предложить разные варианты: с лучшим latency, с большим throughput, более дешевое в реализации и пр.

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

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

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

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

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

С параметром «стабильность в проде» ситуация противоположная, для доклада это не важно, и его вес равен нолю, а для визитки это критично.

Но определять, надо ли, и до каких пределов жертвовать параметром А в пользу параметра Б — это именно ответственность тех, кого мы тут называем «бизнес».

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

Из моего опыта, истории когда «Вася» выяснял и выяснял требования до мельчайших деталей и строго бездумно им следовал, заканчивались куда плачевнее. Правда, как правило только для «Васи».
Понятно, что нужен баланс. И высооплачиваемые специалисты за то и получают много, что в рамках своих компетенций много и хорошо «угадывают» (я бы скорее назвал это принятием решений, основанном на здравом смысле и опыте вместо строгого расчёта. Но можно и так). И чем выше должность и зарплата, тем больше свобода решений.
«Вася» выяснял и выяснял требования до мельчайших деталей и строго бездумно им следовал
Это скорее про soft skills, когда джун всех уже достал, но профита от него все равно как от джуна.

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

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

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

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

Какой цвет набирать наиболее оптимальнее?))

Единственно верное решение — это «2 x 2 = 4».

Не всегда. На поле
Галуа это не так. Да и если вычислять во float, не в каждом языке программирования 2*2 точно равно 4
Ну и про системы исчисления (двоичные, шестнадцатеричные, десятичные) выше уже написали. Так что таки спектр верных ответов, а не один ответ на все случаи жизни. Такие дела.

Можно реализовать через сложение :)

Обожаю комментарии на хабре, под комментарием "2x2=4" — пара десятков комментариев с аргументированными возражениями и контр-примерами, где ещё такое встретишь?

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

И как же здорово, что теперь есть возможность сворачивать ветки комментариев!
НЛО прилетело и опубликовало эту надпись здесь

"Лучшее" — по каким критериям?
"Мы делаем быстро, дешево и качественно. Выберите 2 из 3".
Выберите "лучшее".

НЛО прилетело и опубликовало эту надпись здесь
Тут нету понятия быстро и дёшево

Разве? Программирование — это активность, она занимает время. Следовательно, есть "быстро" и "медленно". Программирование так же требует ресурсов (и как активность, и как решения), и эти ресурсы могут стоить денег. Отсюда — "дорого" и "дешево".


В моем понимании лучшее, это наиболее понятное и менее ресурсоемкое.

Бывает так, что увеличение понятности приводит к увеличению потребляемых ресурсов. И как же выбирать "лучшее" в вашем понимании?

НЛО прилетело и опубликовало эту надпись здесь
В контексте статьи, не идет речи про быстро, качественно, не дорого

Почему? В статье речь идет об образовании, а в образовании тоже есть временные (и ресурсные) ограничения.

Это самое дешевое для заказчика при условии что оно хоть как-то работает

Как вы меряете "самое дешевое для заказчика"? Самое дешевое в разработке, в работе или в поддержке? Что дешевле — сделанное за Х денег за год, или за 1.2X денег за месяц?

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


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

НЛО прилетело и опубликовало эту надпись здесь
А тебе попадается необъяснимое поведение в ЯП

Это странно, потому что обычно все объясняется стандартом ЯП, иногда бывает необъяснимое поведение компилятора, но тогда скорее всего надо просто прочитать Errata на него.

НЛО прилетело и опубликовало эту надпись здесь

Что именно нельзя и не работает? Пример кода, плз.

НЛО прилетело и опубликовало эту надпись здесь
Я думаю, zagayevskiy спрашивал про Kotlin. Мне бы тоже было любопытно услышать, почему в Kotlin'е нельзя пользоваться Runnable — пользуюсь им часто и с удовольствием :)

Есть интересные случаи, на которые можно попасться, вроде описанного тут, но вообще никто не запрещает использовать Runnable так, как вздумается.
А вот в веб-разработке… честно говоря, не могу вспомнить, чтобы мне попадалась Errata на что-либо, с чем я имел дело…
НЛО прилетело и опубликовало эту надпись здесь
«менее ресурсоемкое» оно может быть в реализации, в поддержке или с точки зрения машинных ресурсов. Это уже три разных реализации. «Наиболее понятных» решений, если утрировать, тоже может быть несколько, в зависимости от бекграунда тех, кому они «понятнее».
НЛО прилетело и опубликовало эту надпись здесь

… ну то есть (периодически) весьма противоречащие друг другу вещи.

НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь
Ну так на это я и написал. Компромисс

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


Всегда можно сложную реализацию обернуть в еще одну функцию/процедуру. С соответствующим комментарием. Что сюда нельзя, тут начинается магия. И не стоит это место трогать.

Это как раз называется "сложно в поддержке".

НЛО прилетело и опубликовало эту надпись здесь
Ну так и пишут иногда «почти такое же, но более другое», в итоге получается зоопарк «одинаковых, но разных» функций, которые не очень понятно, чем отличаются. Добавляется лишний слой, единственная задача которого — решить, в каком случае какую из этих волшебных функций вызывать. «Чтобы ничего не сломать» превращается в основной принцип разработки и добавление любой мелкой фичи на 90% состоит из изучения вопроса, может ли она что-то сломать, где она может это сломать и как проверить, сломает ли. Никто толком не понимает, что как работает и как модули зависят друг от друга. Никто точно не уверен, что можно выбросить, а что нет.
НЛО прилетело и опубликовало эту надпись здесь
Бывает и такое. У меня на прошлом проекте использовалась куча сторонних библиотек. Когда начали пытаться оптимизировать, стало проясняться, что библиотечки используются процентов на 10 и это в лучшем случае. Особенно меня впечатлило использование одной из либ. Из всего ее многообразия мы использовали только одну директиву #define, то есть даже не код библиотеки, а всего навсего макрос.

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

А в чем сложность поддержки в этом?

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


Заметил тенденцию, все что ранее написано, не трогают. А пишут новое.

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

В моем понимании лучшее, это наиболее понятное и менее ресурсоемкое.

Вы точно программизмом занимаетесь?
Или нагуглили это всё?

НЛО прилетело и опубликовало эту надпись здесь

Ну, если когда-нибудь займетесь программированием (не только 1С), то сами выведете, что:
"Лучшим решением является то, которое оптимально удовлетворяет требования заказчика".
На минуточку — "оптимально", а не "наилучшим образом".
Потому что удовлетворить наилучшим образом все требования — невозможно как класс.

НЛО прилетело и опубликовало эту надпись здесь

Для меня оптимально и наилучшим образом — синонимы.

В 1с это утверждение точно так же работает.
Термин «оптимальный» в технике как раз и означает «наилучший» по заданному критерию оптимальности.
dic.academic.ru/dic.nsf/ruwiki/1587468

Видимо в понятие «наилучшим образом» вы не закладываете все нужные заказчику критерии, оставшиеся в умолчаниях, такие как время и финансовые затраты.
Программирование — еще более многофакторное, чем просто быстро и дешево.
Вы, простите, ерунду написали. «Задача А реализована программистами М и Д через Ж...» — реализованное решение? Да. Работает? Да, в основном. Есть спектр лучших решений этой задачи? — Да, вагон! А вот «реализаторы через Ж» как раз «недостаточно глубоко изучили конкретную задачу». Как-то так.
и «реализаторы через Ж» уже выпустили готовый продукт, а М и Д сидят ночами накануне дэдлайна
Не выпустили они ничего, потому как их велосипед CR не проехал :) Я к тому, что посыл «то, что реализовано — правильно» — неверный в корне. Можно реализовать аутентификацию с хранением открытых паролей в базе, и прочими creds в коде. Реализовано? Конечно! А это правильное/хорошее решение?

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


Реализовано правильно, это когда по требованиям.

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

Неявные требования тоже требования. Если есть закон о персональных данных, то это тоже требование…

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

И что? У нас, например внутренняя система учёта времени, там мой пароль 1. Ну утечет он, что с этого? Данные с этой системы чисто информативные для сотрудников…
Зачем там сложная система аутентификации? 7

А зачем тогда там вообще пароль?

Чтобы случайно под другим юзером не зайти..

А раньше был 111?
Прогресс однако.

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

Если внутренняя система, если по ТЗ и прочим требованиям удовлетворяет.
Реализовано? Реализовано. Быстро. Дешево.
Не нужно пилить фейсбук там, где достаточно 2 html страничек.
«то, что реализовано — правильно» — неверный в корне.

Расскажите погроммистам 1С

НЛО прилетело и опубликовало эту надпись здесь
Возможно, дело в том, что в 1С, как правило, идут программисты с заниженной планкой социальной ответственности?
Я сам (сдуру) заглядывал в исходники фреймворка от той же конторы (Битрикс) а от того, что я там увидел, меня трясет от каждого упоминания — такое впечатление, что его делали люди, которые только вчера научились включать комп, а сегодня ваяют на пхп.
НЛО прилетело и опубликовало эту надпись здесь
А вот «реализаторы через Ж» как раз «недостаточно глубоко изучили конкретную задачу».
Ну, если задача стояла «сделать максимально быстро и забыть», то «М и Д», наоборот — молодцы. Просто, возможно, ТЗ поменялось и «забыть» было вычеркнуто.

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

Спектр — «ранжирование решений по корректности для данного конкретного случая», а не «набор одинаково хороших решений для всех случаев». Такое тоже бывает, но не так часто.

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

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

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


Легко. У меня есть сервис (use-case) регистрации пользователя. Одна точка входа через web-морду, вторая — через CLI.

В этом и соль: есть реализация, но если ты не видишь её сильных или слабых сторон, то ты не станешь успешным программистом. Есть задача: вывести результат 2x2. Хороший программист обязан:


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

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

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

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

Кроме №9 все тезисы могут быть применены к любой профессии.
Вообще к любой.


Всю статью можно переписать так:
"Если будешь хорошим — то будешь хорошим. А если будешь плохим — то ничего у тебя не получится."

Да и 9-й тезис, в принципе, тоже.

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

Подставьте "дворник".

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

Кто так решил?
И что есть "интеллектуальная профессия"?
Илита?


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

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

Я думаю что выделять илиту интеллектуальную деятельность как нечто особенного немного неверно.
Работа как работа. Ничего особенного. Дворником отнюдь не проще.

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

Точнее не махать метлой, а мести.
Махать-то сможет, мои дети в 2 года так могли. Именно махать метлой, не мести.

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

Для этого требуются какие то особенные умственные способности, что вы дворника в интеллектуальную профессию записали?

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

Я бы развалился через полчаса подметания улиц. То, что господин Hivemaster может подметать улицы и не умирать от этого — хвала ему во всех смыслах

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

Конечно не являются!
Чтобы быть нормальным дворником, надо чтобы руки нормально отросли.
А вот людям с проблемными руками альтернативной моторкой приходится идти в погроммисты и выкручиваться как получится.


PS. надеюсь понятно, что это просто взгляд с другой кочки зрения, а не повод для холивара :-)

Но интелектуальной профессия "дворник" от смены точки зрения всё равно не становится.

Конечно не становится!
Чтобы быть дворником, надо кроме головы еще и прямые руки иметь.
А с прямыми руками ту же Windows написать сложно (такой, какая она есть)


Так что нет, не становится.

То есть вы согласны, что дворник — не интелектуальная профессия? Тогда с чем вы спорите?

Как только дадите четкое, явное и неоднозначное определение понятия "интеллектуальная профессия" — сразу же.
PS. насколько мой склероз подсказывает — в ОКПДТР ничего такого нет.

TL;DR;:
«Если вы несамостоятельный ленивый нелюбознательный хмыропуз, то из вас ничего не получится».
А вы попробуйте. Подобраться к такой кормушке намного сложнее, чем стать сеньором транснациональной корпорации.

Тут дело в наборе навыков и характере, кому-то проще стать сеньором, кому-то депутатом. От человека зависит.

Я бы немного перефразировал: переступить через некоторые свои принципы, подбираясь к кормушке, да, сложнее, чем стать сеньором в IT.
Но с другой стороны, дефицит специалистов во многих (во всех?) отраслях довольно велик, как и в политике тоже.
(на правах грустного юмора) Почему мне не быть хорошим программистом несмотря на 15 лет опыта:

Если вам не очень любопытно как работает компьютер и технологии в целом, вам ни за что не стать успешным программистом.

Мне интересно, как написан код библиотек\фреймворков и т.д., но мне всё равно, как устроен компьютер (знаю на уровне школьника и ладно)

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

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

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

Решит коллега. Поменяю саму задачу или способ решения.

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

Нет, ведь самое трудное еще впереди. Или просто еще 10 таких же проблем (тикетов)

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

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

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

Потому что, шьёрт побьери, это рутина! Это выматывает! Это бессонные ночи и литры кофе! И вообще, очевидное и изящное решение, как известно, приходит во сне неожиданно, само.

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

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

Ваше мышление негибкое, узкое и/или неорганизованное

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

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

Когда-то я доводил код до формы, устраивающей меня. Сначала писал простыню говнокода, которая просто работает, а потом рефакторил, придавая универсальность и гибкость, в попытках написать идеальный код… Теперь я останавливаюсь на простыне, которая хотя бы не плоха — идеальный код никому не нужен, да и тот код, что я нахожу красивым, врядли *всем* покажется тоже красивым.

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

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

А потому, у меня много опыта и я не был и не буду хорошим программистом :D
НЛО прилетело и опубликовало эту надпись здесь
Я все же зря написал про «простыню», мой код все же не напоминает код школьника и я даже прошел этап «мне стыдно за код, написанный несколько лет назад» — я иногда открываю свои проекты, писаные много лет назад, чтобы что-то улучшить, добавить. Смотрю — и не нахожу возможных улучшений (все же я плохой программист, да? :) )
Однако я пишу код так, что он может быть нечитаем со стороны. Например, я инлайню сложные выражения, если они используются однажды, вместо вынесения их в отдельную переменную. Также (речь про Java) раньше я ставил final и this. везде, где только можно (сейчас я так не делаю)

Т.е. меня будут ругать за то, что я не пишу
int width = innerWidth/2; // здесь может быть выражение и посложнее этого
int height = innerHeight/2;
out(width, height, text);

а пишу
out(innerWidth/2, innerHeight/2, text);

за что меня часто и ругают «непонятно, что здесь написано!»

Хмф, зато я сразу вижу возможные ошибки («а что, если аргумент будет null — все упадет с NPE», «слишком большая область видимости — руками изменят и все упадет») и пишу код так, чтобы уменьшить вероятность ошибок и неправильного обращения с обьектом.

Зато подход «сначала пишем как пишется, потом рефакторим до годного» оправдывает себя тем, что не приходится задавать вопросы «а что, если...» на раннем этапе — сначала ставится вопрос «как решить эту задачу», и когда уже PoC-код работает, переходим к рефакторингу «сделать код универсальным, сделать код безопасным»
НЛО прилетело и опубликовало эту надпись здесь
Смотрю — и не нахожу возможных улучшений (все же я плохой программист, да? :) )

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

Угу, а как оно было 15 лет назад? :) Все-таки это не вопросы померить то, насколько ты опытный программист сейчас, а то, сможешь ли ты дойти с нуля до опытного. Подстажите, плиз, как стать опытным программистом если нет ни любопытства, ни желания что-то изучать и не испытываешь удовольствия от того, что получил работающее решение?
15 лет назад мне было всё интересно.
Я благодарен отцу за то, что еще раньше, когда мне было 10 лет, у него получилось заинтересовать меня программированием и обучить основам бейсика на Спектруме, поэтому вопрос «кем я буду, когда вырасту» был однозначно «программистом».
Мне было интересно все, это был сумбурный подход «все интересно, во всем разобраться, все попробовать сделать самому», кладбище мертворожденных проектов тянет на отдельный мир.

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

Прямо про себя прочитал.))

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

Противоречит упомянутому ниже вашему хорошему качеству:
Хмф, зато я сразу вижу возможные ошибки («а что, если аргумент будет null — все упадет с NPE», «слишком большая область видимости — руками изменят и все упадет») и пишу код так, чтобы уменьшить вероятность ошибок и неправильного обращения с обьектом.

В любом случае, хочу отметить пару опасных допущений данной фразы:
мне не быть хорошим программистом несмотря на 15 лет опыта… А потому, у меня много опыта и я не был и не буду хорошим программистом.

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

Честно говоря, первым делом полез посмотреть, сколько у вас подписчиков и не входите ли вы в Кольцо Переводов… =D

Не, это просто очередная проба пера.
Ну или зарождение нового Редактора Хабра (тьфу-тьфу).

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

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

Мне кажется, лучше рассматривать программирование как стопку задач, а не стопку проблем )))
Проблема — это ИМХО нечто внезапное и неприятное. Например, когда посреди разработки монитор сдох.
А написание кода — какая же тут проблема, если добровольно за это взялся?

Даже в такой формулировке это всё равно проблемы.

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

И при таком подходе «проблема -> задача -> анализ -> решение» не возникает противоречия, а неизбежный фрустрирующий фактор сведен до минимума.
Решение:
Скорее всего это проблемы перевода (pun unintended)
В английском слово «problem» имеет смысл «задача», в контексте решения задач. «Solve this problem» — «Решите эту задачу». Во время перевода смысл слегка потерялся :)
10 критериев — это слишком много.
Для многих достаточно одного: вам 18+ лет и вы ни разу ничего не прогали в 3 часа ночи.
Поясню. Призвание к 18 годам должно уже проявится, и что-то на каком-то языке программирования вы уже должны уметь писать. Без призвания сидеть перед монитором с буквами — это свою угробить жизнь. Чтобы сидеть и прогать в 3 часа ночи нужно 1) любопытство и я бы даже сказал страсть 2) воля к победе и бесстрашие перед множеством проблем, упорство 4) способность разгребать доки и чужой код 5) самостоятельность… короче, 1 критерий вместо 10, и в отличие от перечисленных в статье этот один легко определяется (каждый сам для себя легко на него ответит, самообман невозможен).
Согласно вашему критерию фактически ниодна девушка не может быть программистом.
НЛО прилетело и опубликовало эту надпись здесь
Давайте внимательнее. Здесь важны соотношения. Они увлекающиеся, но если школьница не сидела прям до 3 ночи за программированием, то это не означает, что ей не быть хорошим программистом. Потому что это нормальное поведение для одаренной школьницы, которой интересно программирование.
Напротив, если парень не сидел за программированием ночами уже в школе, то его шансы стать хорошим программистом сильно падают, потому что большинство из них сидит.

Офтоп: Как-то в детстве я сказал, что не намерен плакать по поводу смерти Брежнева, потому что мы не родственники и получил кучу «минусов» от учителя и одноклассников, хотя в целом это была правда. Что изменилось с тех пор? Покажи людям красную тряпку и готовься отгребать :).

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

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

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

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

школьницы не сидят ночами экспериментируя с технологиями программирования
Вы не могли бы пометить, на основании чего такой вывод сделан? Мне действительно интересно =D

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

НЛО прилетело и опубликовало эту надпись здесь
Объективное восприятие. Предубеждений у меня нет. Вот глупость и самообман бесит.
Предубеждений у меня нет.

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

Я не воспитан в обществе.

Гм. Мне казалось, вы упоминали одноклассников. Следовательно, вы учились в школе. Нет? У вас нет высшего образования? Вы не работали в коллективе?


У меня критический научный склад ума.

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

НЛО прилетело и опубликовало эту надпись здесь

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


Но сказали вы совсем не это.

Сидят. Я сидел. Все мои друзья программисты которых знаю сидели. Моя жена программист но у нее даже компьютера не было. Критерий годный для мужчин но сильно недостоверный для женщин.

Сидят. Я сидел. Все мои друзья программисты которых знаю сидели.

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


Так что нет, для мужчин этот критерий такой же негодный.

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

В точно такой же степени?

Ну да. Вы привели один контр-пример, я привел один контр-пример.


Моя статистика говорит обратное.

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


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

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

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

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


Это был довольно несерьезный критерий, высказанный не мной.

Вы однако, с ним согласились: "Критерий годный для мужчин".


В основном это верно.

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


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


Или вы хотите спорить именно насчет режиа дня, засиживания ровнго до 3 часов и так далее?

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

В основном это верно ровно настолько, насколько верно, что чем раньше начнешь заниматься чем-то, тем больше у тебя времени на освоение навыка. И, одновременно с этим, чем сильнее ты увлечен тем, чем занимаешься, тем больше ресурсов ты в это можешь вложить. И, внезапно, это одинаково верно вне зависимости от пола.
Стать программистом можно исходя из разных мотиваций и эти мотивации зависят от пола. Поэтому это работает по разному. В общем это уже стало слишком сложно. Я сам запутался что мы тут друг другу доказываем.
Но вот насчет «заболеть» вопрос сильно отдельный, и как раз с ним я и спорю в первоначальном критерии. Не надо «болеть» программированием, чтобы быть хорошим программистом.
А, вы об этом. Совершенно верно. Можно быть хорошим программистом не болея программированием. В 90-е годы правда таких почти не было. Сейчас есть, потому что это уже просто работа за деньги а не увлечение.
Холодный профессионал почти всегда может не уступать горячему энтузиасту в практических задачах. Энтузиаст, но плохой профессионал понапишет или понапихает фреймворков, на-изобретает сложных алгоритмов. Профессионал, но не энтузиаст просто найдет хорошее решение задачи. В итоге реальный эффект будет примерно одинаковым.
Хотя, если брать средне-статистически, таки энтузиастов среди сильных программистов пока еще большинство. Кого ни спроси, все нерды с детства по сути.
эти мотивации зависят от пола.

Почему?


(ну и сразу: как это доказать?)


Кого ни спроси, все нерды с детства по сути.

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

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

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

Да, глупость не уникальна для мужчин
Зачем ей это (откуда такие мотивации)?

Затем же зачем и вам
программистов мужчин больше

В восьмидесятые, в СССР, было ровно наоборот и програмирование считалось более женской професией (сужу по рассказам родителей) да и сейчас ситуация исправляется и женщин в ИТ все больше

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

В вашем круге знакомств есть женшина-крутой программист, которая и фреймворк напишет если надо и архитектуру спроектирует и проект вытянет?

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


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

Эээ… конечно, нет. Даже если предположить, что первое предложение верно (что не факт), второе из него никак не вытекает.

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

они точно есть и в приличном количестве.

… а откуда взялось "в приличном количестве"?


Им просто не так интересно по каким-то причинам.

… в вашей выборке?


Больше гормональным или больше культурным не знаю.

Не знаете, но говорите, что причина в поле.


Выглядит как отрицание очевидного.

Вам очевидно, что женщины в среднем должны превосходить мужчин? Или вы о каком-то другом возражении?

… а откуда взялось «в приличном количестве»?
Слово «приличном» появилось, чтобы вы не привели единичный пример из интернета. Но вы все равно нашли к чему прицепиться. Раз вы выкручиваетесь, значит у вас нет настоящих оснований для уверенности. Вам просто хочется отстаивать модное мнение, выгодное вам психологически. Если бы сейчас был СССР, то вы так же горячо убеждали бы меня в преимуществах коммунизма.
Если бы вы вместо демагогии сразу привели какие-то убедительные примеры, я бы сразу сдался. Потому что была бы ваша выборка против моей.
… в вашей выборке?
В вашей в целом тоже, если судить по примерам, которые вы приводили выше.
Не знаете, но говорите, что причина в поле.
Мотивация скорее всего связана с полом, но я не уверен, что эта связь настолько сильная, что будет иметь принципиальное значение в другой культуре воспитания женщин.
Вам очевидно, что женщины в среднем должны превосходить мужчин? Или вы о каком-то другом возражении?
Вроде того. Тезис был довольно ясный, возражений к нему я не увидел.
Чтобы вы не привели единичный пример из интернета.

Ну то есть это какое-то придуманное вами утверждение. Окей.


Раз вы выкручиваетесь, значит у вас нет оснований правоты.

Оснований какой правоты, собственно? Я пока просто задаю вопросы и привожу примеры.


В вашей в целом тоже.

О нет. В моей выборке женщинам не менее интересно, чем мужчинам.


Мотивация скорее всего связана с полом

Почему бы? Как это доказать?


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

Я могу повторить возражение, если вы с первого раза не увидели: высказывание "в среднем они [женщины] должны превосходить мужчин" никак не вытекает из утверждения "раз их [женщин] мало, значит туда [в программирование] должны попадать самые лучшие и самые мотивированные". Впрочем, и высказывание "должны попадать" не вытекает из "раз их мало", но это уже нюансы. Оба ваших "значит" ничем не обоснованы.

Я могу повторить возражение, если вы с первого раза не увидели:
Это не возражение. Это просто отрицание. Давайте поясню.
Возьмем 100 китайцев и 100 индусов. Допустим, все индусы работают программистами, а китайцы пока не имеют такой возможности или желания по каким-то причинам. Потом китайцы открывают для себя эту возможность. При этом, работа интересная и платят дочерта. В какой-то момент 10 китайцев тоже пробились в программисты.
Теперь сравниваем средний уровень китайцев и индусов на рынке. Если даже предположить, что в программисты попали совершенно случайные китайцы, то они должны иметь тот же средний уровень что и индусы. Но на самом деле это очень мало вероятно. Первые — это всегда лучшие, потому что это те кому интереснее и у кого лучше получается. Значит средний китаец на рынке должен быть сильнее среднего индуса (пока соотношение типа 10 к 100).
И аналогично это по идее должно работать для женщин и мужчин…
Если даже предположить, что в программисты попали совершенно случайные китайцы, то они должны иметь тот же средний уровень что и индусы.

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


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

А чем, простите, обосновывается это утверждение? Первые — это просто… первые. Те, кто первым попробовал. Может быть, они просто самые жадные. Или самые бедные. Или самые удачливые.


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

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

Что конкретно вам не понятно в моем комментарии? Вопрос, на чем основано ваше утверждение, что первые — всегда лучшие?

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

Вот вам и наглядная демонстрация ваших предубеждений.


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


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

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

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


Скорее возьмут все равно тех что выше среднего.

Выше среднего чего? Среди кого?


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

Эта гипотеза никак из моего сообщения не вытекает. Это ваша гипотеза, вы с ней и разбирайтесь.

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

Я и говорю: сами сочинили — сами и разбирайтесь.


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

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

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


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

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


(Что характерно, примеры этих позиций сравнительно регулярно встречаются в комментариях на хабре)

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

«одаренный специалист» и «умеет пробиваться через сито предрассудков» это разные скиллы.
Женщин со средними способностями прокинут из за предвзятости.

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

Какого конкретно?


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

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

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

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

Отнюдь. Бывает, и я регулярно с ними сталкиваюсь. Просто многие люди их не замечают (и/или не испытывают от них дискомфорта).

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


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

Скорее «не замечают».

И это лишний раз подтверждает, что проблема предрассудков не преувеличена.


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


Когда кто-то говорит про то, что надо кормить семью, то такого неодобрения нет.

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

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

Я лёгкий намёк на это распарсил в первой фразе из того, что я тогда процитировал: «Это так кажется, пока эти предрассудки не направлены на вас.» Сорян, если вы это не имели в виду.


Я подозреваю, что от формулировки зависит.

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

Я лёгкий намёк на это распарсил в первой фразе из того, что я тогда процитировал

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


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

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

Там по полу автора всё видно, плюс по некоторым оценкам гендерного распределения людей на хабре (ну это что касается заплюсованности/незаминусованности соответствующих комментов).


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

Там по полу автора всё видно

Эээ… но нет же. Если мужчина пишет "мне семью кормить", это не обязательно значит, что ему кормить семью, потому что он мужчина. А какие еще выводы вы можете сделать из пола автора?


Никогда не встречались с феминистическим мнением

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

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

ИМХО ещё один признак предубеждений, просто уровнем выше.

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

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

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


Через это сито предрассудков первыми на работу должны пробиться одаренные женщины-прирожденные программисты.

Снова нет: мне неизвестно о какой-либо корреляции между способностью к программированию и способности преодолевать общественное сопротивление. Вам известно? Можете показать хорошее исследование?


Женщин со средними способностями прокинут из за предвзятости.

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


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

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

Необходимая оговорка — я, естественно, сравниваю в рамках сопоставимого опыта: если, грубо говоря, все девушки распределены в опыте 3-15 лет, мужчин с опытом 25-35 мы не рассматриваем.


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

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

Это не исследование.


просто потому, что слабые лучше сумели себя подать.

Вообще-то, это регулярно происходит безотносительно пола собеседуемого.


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

А я, собственно, нигде и не говорил о том, чтобы брать слабых вместо сильных. Я говорил о том, что не брать вообще. И вот это я видел своими глазами.

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

Не связан. Потому что нет никакой "природной мотивированности" к профессиям.


Но. Вы спросили "что останавливает женщин [...] пойти в программисты" — я ответил.


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

И как вам это поможет оценить мотивированность?


Что еще веселее, как вообще вы предлагаете оценивать (не то что сравнивать) "средний уровень"? Как правильно составить выборку? По какой методике оценивать? Как усреднять?


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

Но. Вы спросили «что останавливает женщин [...] пойти в программисты» — я ответил.
Вы ответили что останавливает всех женщин, но не объяснили почему это отсеивает лучших программистов-женщин но не отсеивает худших. В целом ваш ответ был «такой аномальный отсев возможен», возможен, но это не убедительно.
И как вам это поможет оценить мотивированность?
Никак. Мотивированность — самое простое объяснение аномалии в относительном качестве специалистов мужчин и женщин, которую я наблюдаю. Учитывая насколько мало женщин идут в программисты можно ожидать, что это будут просто супер-специалисты, но они в лучшем случае не уступают. Другие объяснения для меня выглядят слишком сложными и высосанными из пальца.
К слову говоря, я не уверен даже что я прав. Поэтому и поддерживал этот спор. Слишком долго его к сожалению поддерживать не получается, потому что карма и так уже улетела слишком далеко.
Вести подобные споры, увы, то же самое что отстаивать генетику во времена Мичурина. Очень неблагодарное занятие. И кстати, этот слив кармы указывает на то, что большинство поддерживает вашу позицию. Тогда где все эти жено-ненавистники о которых вы говорите непонятно.
Вы ответили что останавливает всех женщин, но не объяснили почему это отсеивает лучших программистов-женщин но не отсеивает худших.

Ну да. Я не вижу, зачем "лучших" должно отсеивать больше, чем "худших".


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

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

Ну да. Я не вижу, зачем «лучших» должно отсеивать больше, чем «худших».
Конечно не должно, потому и не видите.
Нарисуйте картину, как вы себе это представляете. Имеется, скажем 5% потенциально гениальных и мотивированных женщин программистов. И 15% менее способных, которые тоже хотят быть программистами.
Допустим, среди общего числа программистов женщин 5%. Тогда почему это не те 5% гениев? Какой фильтр остановил эти 5% гениев и вместо этого пропустил всех понемногу?
Предрассудки не могут фильтровать только гениев. Это вы вроде согласились.
Бизнес IT всегда берет лучших из приходящих кандидатов и никогда намеренно не будет искать посредственностей, отвергая умных (потому что посредственности «удовлетворяют требованиям»). С этим почти согласились.
Возможно эти 5% просто не идут работать программистами. Тогда это подтверждает мою теорию: женщинам не интересно. Другой мой вариант — они идут, но не реализуют свой природный потенциал в полной мере потому что им не настолько интересно как мужчинам.
Ваша версия фильтра? Моя картина проста и понятна.
Вы не можете предложить никакой убедительной картины. Вместо этого вы только обвиняете мою в недоказуемости.

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

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

Не так. Имеется 5% потенциально гениальных и, вообще говоря, независимо выбранные 5% мотивированных.

Но этот нюанс точно так же работает и для мужчин, если предполагать что у женщинам программирование само по себе вызывает такой же интерес как и у мужчин. Значит на соотношение картин не должен влиять
В Вашей теории есть сразу 2 спорных момента:
1. Утверждение, что есть некая «врождённая гениальность в программировании», которая видна работодателю сразу и бесспорно. Уже от рождения известно, что конкретно эта девочка может попасть в те самые 5% гениальных программистов.
2. Утверждение, что такая «гениальность» не всеобщая, а конкретно в программировании.
Я не вижу этому сколько-нибудь заметных подтверждений. Можно ли было в возрасте 10 лет сказать про Дональда Кнута или Линуса Торвальдса, что они станут программистами хоть чуть выше среднего? Или что они не стали бы отличными хирургами, космонавтами или водителями автобусов?
Что ещё важнее, а понимали ли они сами это, чтобы делать хоть какие-то усилия чтобы куда-то «отфильтровываться»?

Ну то есть теперь, постфактум, конечно можно найти кучу свидетелей, которые «уже тогда видели». А реально, посмотрите на группу школьников — кто из них в будущем станет гуру программирования? Да даже на собеседовании джуна попробуйте понять, кем он будет через 5 лет.

Ваша версия фильтра?

Вы правильно описали, но только с поправкой — это не сами девочки «не верят», а их окружение. Например, я изучал компьютеры с 1 класса, на кружок по программированию пошёл в 7м. Даже если у меня и был к тому интерес, то всё равно это не было 100% только моё желание, особенно в коллективе, где от мальчика уже много лет ожидается любить футбол и программирование, а от девочки шитьё и готовку. И уж тем более я в том возрасте не понимал «всю притягательность IT», а просто ходил в школу как положено.
В Вашей теории есть сразу 2 спорных момента:
Эти моменты спорные, но они симметрично влияют и на статистику для мужчин, если предполагать что мужчины и женщины одинаковы. В итоге аномалия с гениальными женщинами в IT все равно должна работать.
Если бы природные способности вкупе с природными мотивациями вообще почти ни на что не влияли, тогда да, это испортило бы картину. Но по моим наблюдениям почти только они и важны.
Да даже на собеседовании джуна попробуйте понять, кем он будет через 5 лет.
Если нужно отличить два противоположных типа людей — будущих блестящих специалистов и обузу для коллектива, то по-моему это очень легко отличить.
Вы правильно описали, но только с поправкой — это не сами девочки «не верят», а их окружение. Например, я изучал компьютеры с 1 класса, на кружок по программированию пошёл в 7м. Даже если у меня и был к тому интерес, то всё равно это не было 100% только моё желание, особенно в коллективе, где от мальчика уже много лет ожидается любить футбол и программирование, а от девочки шитьё и готовку. И уж тем более я в том возрасте не понимал «всю притягательность IT», а просто ходил в школу как положено.
У меня другой опыт из конца 80-х. Я не ходил на кружки, но все детство ждал и мечтал, пока в продаже появятся компьютеры. Когда появились всякие БК-РК (в 8-м классе), сидел безвылазно. При этом программистом я быть не планировал (IT как отрасли еще не существовало), на программирование не поступал и начал пытаться жить программированием только после института. Получалось не очень, действительно пошло только после 38 лет.
Мой одноклассник тоже мечтал «о подвале с электроникой как у доктора зло», купил комп и сидел за ним днями и ночами. После многих попыток в программисты так и не пробился. Отец моего друга работал сантехником. Он купил комп и сидел с ним ночами, не планируя менять род деятельности (его дети стали программистами). И так далее.
Я здесь не вижу каким образом «окружение» заставляло нас всем этим заниматься. Это был просто некий техно-инстинкт в чистом виде. И я не уверен, что при должном воспитании он в той же степени был бы свойственен женщинам. В какой-то да, но не уверен что в той же.
Сейчас ситуация размылась: компьютеры везде, одиночка не может сделать ничего существенного а программирование стало просто обычной профессией, поэтому та важность изначальной природной мотивации и различия в мотивациях, которые мне были видны со всей очевидностью сейчас не так заметны.
Мой одноклассник тоже мечтал «о подвале с электроникой как у доктора зло» [...] Я здесь не вижу каким образом «окружение» заставляло нас всем этим заниматься.

Какого пола Доктор Зло?


Это был просто некий техно-инстинкт в чистом виде. И я не уверен, что при должном воспитании он в той же степени был бы свойственен женщинам.

Вы слышали про Грейс Хоппер?

Какого пола Доктор Зло?
Конечно-же его привлекал подвал доктора Зло а не пример доктора Зло. Вообще, это было в СССР, «доктор зло» — это мой сегодняшний обобщенный образ, неизвестный на тот момент детям и я не помню в каком контексте в его мечте фигурировал этот подвал с компьютерами.
Вы слышали про Грейс Хоппер?
Отличный пример. Девочка родилась с стойким врожденным влечением к технологиям и в результате ни женское воспитание, ни окружение ни предрассудки (это в начала 20-го века то, когда непокорное дитя родители могли в психушку сдать или лоботомию сделать!), не смогли ее остановить. Отсюда следует, что основной фактор успеха в области технологий — природная тяга к технологиям а не то, кем ребенка видит общество, предрассудки, воспитание, социальные препоны.
О том, насколько часто с подобной тягой рождаются девочки и мальчики этот пример ничего нам не говорит.

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

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

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


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

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


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

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


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

Но на наблюдаемое мной (и особенно — моими коллегами, которые не ведут собеседования) распределение навыков это повлияет.

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

… вы так говорите.


третий не верен применительно к нашему случаю (рекрутинг изначально не случаен с обоих сторон)

А кто что-то говорил о рекрутинге? Речь шла о том, кто стал программистом, а это не рекрутинг.


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


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

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


речь о всем рынке IT

А вы лично наблюдаете за всем рынком IT, чтобы делать о нем выводы? Я вот точно нет.

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

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

Уже после 3х лет говорить об инстинктах слишком сложно. С одной стороны я тоже на удивление замечаю, что в 2 года моему сыну интересны тракторы а дочери куклы. С другой — я лишь хочу себя тешить уверенностью, что я воспитывал их одинаково (включая выбор одежды, слов, интонаций). При этом абсолютно очевидно, что бабушки/дедушки, друзья, садик и т.д. не настроены так нейтрально. В какой степени это повлияло — можно только гадать, измеримых данных нет.
Сложно сказать, где тут «природная мотивация», а где влияние общества.
Тогда почему это не те 5% гениев?

А почему должны быть?


Какой фильтр остановил эти 5% гениев и вместо этого пропустил всех понемногу?

Например, случайный отбор.


Ваша версия фильтра?

… вот, например, случайный отбор. В этом случае, при ваших цифрах, на больших выборках вы будете наблюдать среди всех программистов распределение, близкое к оригинальному (т.е. ~1/4 "гениев").


Бизнес IT всегда берет лучших из приходящих кандидатов

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


Могу опять предложить гипотезу от вашего имени.

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


Замечание: ваш пример с любителями бабочек в другом сообщении ошибочен.

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


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

… и вы только что это подтвердили, приведя ту же самую аргументацию.

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

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

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


У вас есть что-то кроме anecdotical evidence?


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

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

У вас есть что-то кроме anecdotical evidence?

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


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

Есть.

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

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


Есть.

То есть, получается, что разницы-то между полами в этом плане и нет? А учитывая, что декрет закон защищает, а уход в армию — нет (за вами не обязаны держать место), и в требованиях к работнику вы можете написать «наличие военного билета», но не можете написать «бесплодность» или, не знаю, «неуход в декрет за всё время работы под угрозой штрафа в 100500 денег», то что ж получается? Получается, что женщинам тут лучше?

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

Я, собственно, с ней и не спорю.


То есть, получается, что разницы-то между полами в этом плане и нет?

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


Получается, что женщинам тут лучше?

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

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

А по моим — ровно наоборот.


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

На закон, я слышал, можно влиять.


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


Однако, мы этого почему-то не наблюдаем.

А по моим — ровно наоборот.

Вполне возможно.


На закон, я слышал, можно влиять.

Можно.


Однако, мы этого почему-то не наблюдаем.

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

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

Рациональный подход — это такая штука, которая при равных вводных приводит к равному результату.


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


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

Рациональный подход — это такая штука, которая при равных вводных приводит к равному результату.

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

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

Я исхожу из довольно небольшого множества предположений.

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

Так из какого? Что я упускаю в своих рассуждениях?