Табы или пробелы? Игра на 4-х

пришел я на первый собес:
— что лучше, табы или пробелы?
— табы
— иди отсюда, ты нам не подходишь, у нас тут python

пришел на второй собес:
— что лучше, табы или пробелы?
— пробелы
— иди отсюда, ты нам не подходишь, у нас golang

да блин! ладно, я их возьму хитростью.

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

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

вы думаете, есть 2 типа людей? таболюбы и пробелолюбы? я знаю, что их как минимум 4 по аналогии с верующими:

  1. таболюбы (веруют в табы)
  2. пробелолюбы (ярые атеисты табизма)
  3. конформисты (как все, так и мы)
  4. анархисты (мешают и то и другое без разбору)

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

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

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

но предположим, что конформистам на самом деле не все равно, они просто хотят жить дружно. к примеру старший программист за табы. тогда таболюбы (треть идейного коллектива) довольны на 100%. пробелолюбы (под маской конформистов, иначе бы их не взяли) недовольны (довольны на 0%) — это тоже треть. и треть анархистов (тоже под маской конформистов) довольны на 50%, потому что хоть им и норм с табами, но когда они сами вдруг ставят пробел, получают нагоняй. в итоге выходит: 1/3 * 100% + 1/3 * 0% + 1/3 * 50% = 1/2 = 50%

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

способ 1

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

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

  • таболюбам, потому что их будут брать на работу в анархическме коллективы (ведь им пофиг, что они будут вставлять в код), хоть и уровень удовлетворенности у них будет только от 50% файлов, остальные придется избегать в работе или переформатировать
  • пробелолюбам то же самое — удовлетворенность 50%
  • анархистам — удовлетворение 100%
  • конформистам — тоже лучше, ведь суммарно больше уровень удовлетворения в команде - 50% от пробелолюбов, 50% таболюбов и 100% анархистов, т.е. 1/3 * 50% + 1/3 * 50% + 1/3 * 100% = 2/3 = 66% > 50%!

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

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

доп. материалы:

p.s. если кому интересно, то в этом посте не был использован ни один таб. но это случайность.