Табы или пробелы? Игра на 4-х
пришел я на первый собес:
— что лучше, табы или пробелы?
— табы
— иди отсюда, ты нам не подходишь, у нас тут python
пришел на второй собес:
— что лучше, табы или пробелы?
— пробелы
— иди отсюда, ты нам не подходишь, у нас golang
да блин! ладно, я их возьму хитростью.
пришел на 3-й собес:
— что лучше, табы или пробелы?
— мне все равно, как команда решит, так я и подстроюсь
— хорошо, ты принят
план сработал, я стал ходить на работу, но в тайне мне не было все равно.
вы думаете, есть 2 типа людей? таболюбы и пробелолюбы? я знаю, что их как минимум 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. если кому интересно, то в этом посте не был использован ни один таб. но это случайность.