Новое место работы. Все собеседования позади. Первый рабочий день. Тебя проводят к рабочему месту. Там уже стоит готовый к работе ноутбук. Ты открываешь крышку. Все, ты готов к работе. Твоя первая задача. К тебе подходит человек, который должен ввести тебя в курс дела. Он объясняет тебе, что нужно сделать: баг с фиксом в 3 строчки кода. Попутно тебе помогают настроить рабочий комп. И вот ты уже приступаешь к задаче и понимаешь, что как-то все не так…

Во-первых, для сборки фронтенда у нормальных людей давно уже используется Webapck, на худой конец Gulp. Неужели они ничего не слышали про Docker?! Они вообще не умеют писать на Python!? Да и зачем здесь в принципе Python, и почему он еще 2й версии!? Вот дебилы! (Здесь может быть любой WTF на ваш вкус).

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

Но выглядишь ты в этот момент как самоуверенный идиот. На самом деле есть 2 варианта:

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

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

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

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

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

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

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

В общем сам пользуюсь и вам советую.

Комментарии (139)


  1. domix32
    26.10.2018 12:20

    То есть три года назад вы были Д'Артаньяном?


    1. vesper-bot
      26.10.2018 12:49

      Знаете ли, Д'Артаньян тоже не всегда был вежливым и тому подобное. Люди растут, это называется.


  1. Taliesien
    26.10.2018 12:44

    Немного покапитански. Хотя спорить невозможно.
    По мере роста собственной квалификации, всегда наступает момент, когда чуешь себя олицетворением мудрости. И через n-ое время это чувство разбивается об суровую реальность.
    Помню когда только начинал читать чужой код, ни раз посещали мысли: «Зачем так сложно? Ну накрутили! Можно же легче!». И спустя пару лет читая тот же самый код мысли совершенно другие: «Как изящно! А этот прием надо взять на вооружение!»


    1. shasoft
      26.10.2018 18:07

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


      1. Sabubu
        27.10.2018 15:24

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


        1. Karpion
          27.10.2018 22:49

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


          1. arcman
            28.10.2018 13:42

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


            1. vesper-bot
              28.10.2018 14:07

              Тогда уж и Китай сюда же припишите.


  1. kinall
    26.10.2018 12:50
    +4

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

    Чаще встречал не такое «озвучивание мыслей», а вопросы вроде «Ребят, а чего вы на второй версии сидите? И почему не пользуетесь вот этой клёвой фишкой?»
    В результате либо получаешь объяснение и понимание, либо оказывается, что просто некому было взяться за внедрение (нет опыта, нет времени etc) – и вот он, твой звёздный час, ты уже не джун-подмастерье-пятачок-за-пучок, а ценный (и уникальный!) член команды.


    1. phoenixweiss
      26.10.2018 22:35

      Ага, тебе и перепиливать все со 2 на 3 версию, такому молодцу! Инициатива бывает наказуема.


      1. kinall
        26.10.2018 23:45
        +2

        … и стать тем (возможно, единственным) человеком, который полностью знает весь проект? Неплохо для свежепринятого джуна=)


        1. phoenixweiss
          29.10.2018 01:22
          +1

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


    1. Kirill_Dan
      27.10.2018 13:26

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


    1. lubezniy
      28.10.2018 08:06

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


  1. SurfCalavera
    26.10.2018 13:39
    +4

    Невозможно в такой теме не упомянуть эффект Даннинга-Крюгера.
    конечно же в связке с «синдромом самозванца».

    мне лично удобнее просто напоминать себе о них время от времени


    1. Kirill_Dan
      27.10.2018 13:31

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


  1. mwambanatanga
    26.10.2018 14:49
    +10

    А как насчёт взаимной презумпции ума? Вполне может быть, что новичок прав и что технологию X действительно хорошо бы заменить технологией Y (и сказав это вслух, он показывает свой уровень теоретической подготовки), но правы также и «старички» (и объясняя ему причины, по которым никак невозможно прямо сейчас заменить X на Y, они вводят его в курс дела и помогают быстрее освоиться с местной «кухней»).


    1. zolotyh Автор
      27.10.2018 16:09

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


  1. Sabubu
    26.10.2018 15:19
    -12

    > Во-первых, для сборки фронтенда у нормальных людей давно уже используется Webapck, на худой конец Gulp

    Нет. У нормальных людей на dev все работает без сборки и излишних усложнений.


    1. oshibka404
      26.10.2018 22:26
      +9

      Прекрасная иллюстрация к статье


      1. Sabubu
        27.10.2018 15:19

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


        1. mayorovp
          27.10.2018 16:22
          +1

          То есть LESS или там SASS, JSX и Typescript — это тоже «оверинжиниринг и решение проблем, которых изначально быть не должно»?

          Не подскажите, где найти такой веб, где решаемых этими инструментами проблем не существует? :-)


          1. zolotyh Автор
            27.10.2018 16:39

            del


        1. zolotyh Автор
          27.10.2018 16:40

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


  1. faiwer
    26.10.2018 15:24
    +22

    Несколько раз оказывался в позиции когда видишь что творится форменный неадекват. Спрашиваешь а почему? Узнаёшь: "а потому". По сути нехватка квалификации, легаси, лень, работа наотвали и многое другое. Предлагаешь взвешенное решение. Спорят. Аргументируешь свою позицию. Соглашаются. Всех собак и реализацию вешают на тебя. Реализуешь. Благодарят. Главное всё сделать аккуратно, мягко и без оскорблений. Конфликты совсем ни к чему.


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


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


    1. algotrader2013
      27.10.2018 13:02
      +2

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


  1. sentyaev
    26.10.2018 17:33

    а не пойти ли мне туда, где дичью буду я, а не наоборот

    Список компаний пожалуйста!


  1. Alesh
    26.10.2018 17:44
    +13

    Хм, за предложение «Python заменить на Go» в уже в развившемся проекте, вполне можно выйти на свежий воздух до окончания испытательного срока)


    1. khim
      26.10.2018 22:41
      +1

      А почему, собственно? Если там python2, то переход на Go может оказаться сравнимым по сложнрости с переходом на python3, а отдача больше…


      1. Alesh
        27.10.2018 01:18
        -2

        Автор в статье как раз и отвечает на ваш вопрос и достаточно подробно)


      1. Sabubu
        27.10.2018 15:22

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

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


        1. khim
          27.10.2018 17:23

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

          Вариант «перейти на Go» не выглядит априори хуже, чем вариант «перейти на python3»


          1. Alesh
            28.10.2018 13:32

            Вот только в 2020м он эта… всё, кончится.

            Что именно кончится?


            1. khim
              29.10.2018 02:43
              +1

              Python 2… тут счётчик секунды отсчитывает…


              1. dimm_ddr
                29.10.2018 12:00

                Закончится не питон а его официальная поддержка, разве нет? Интерпретатор не самоуничтожится на всех системах в 2020 и никто не запретит писать на нем и дальше.


                1. khim
                  29.10.2018 13:27

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


      1. YemSalat
        28.10.2018 19:06

        Ага, полностью заменить язык в уже существующем проекте.
        Т.е. менять окружение нa котором код работает / искать сопоставимые библиотеки / заново настраивать сборку / переписывать всю логику и тесты / фиксить новые баги / тестировать, тестировать, тестировать… По сути написать весь проект с нуля.
        Нефиговое такое предложение от «новенького» сотрудника.


        1. khim
          29.10.2018 02:47

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

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


          1. YemSalat
            29.10.2018 12:54

            Ну так вам всё равно придётся всё это делать — так не лучше ли начать когда у вас есть выбор — делать сегодня или завтра?

            Почему все равно придется это делать? Python2 перестанет работать нa новом железе в 2020? К тому же переход на 3й питон все-таки значительно проще чем переход на абсолютно другой язык с другой парадигмой.
            так не лучше ли начать когда у вас есть выбор — делать сегодня или завтра

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

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

            Вы работали на крупных проектах в которых работает несколько человек? Я пару месяцев назад начал работать на довольно большом проекте и я до сих пор не знаю некоторых моментов в бизнес логике. Проекту 3-4 года, там большe 100к строк кода и он разбит на несколько репозиториев. Физически невозможно все это «с наскока» изучить и знать все детали.
            К тому же, раз взяли нового сотрудника, значит проект растет (либо кто-то ушел), значит нужны руки. В проекте скорее всего есть фичи и баги над которыми надо работать прямо сейчас, а не ждать несколько месяцев пока новый сотрудник все перепишет.


            1. dimm_ddr
              29.10.2018 13:31

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


    1. ainoneko
      27.10.2018 06:41
      +1

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


      1. Alesh
        27.10.2018 10:11
        +1

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


  1. Stiver
    26.10.2018 19:12
    +2

    На практике оно означает: попробуй сначала понять, что происходит, а уже потом начинай критиковать и предлагать решения.
    Общепринятое название этого принципа — Chesterton's fence


  1. DexterHD
    26.10.2018 19:32
    +2

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


    1. Kutak
      26.10.2018 21:14
      +4

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


    1. TheShock
      27.10.2018 04:43

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

      Странный коммент. Разве не понятно? Питон 2, потому что на нем написано сотни тысяч строк кода, а для переписывания нету времени — вечные дедлайны.

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

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


      1. algotrader2013
        27.10.2018 20:20
        -2

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


        1. TheShock
          27.10.2018 20:54
          +3

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

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

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

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


          1. algotrader2013
            27.10.2018 22:06
            -1

            Есть один маленький нюанс. Работа кочегара легко контролируется.

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

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


            1. DexterHD
              29.10.2018 08:26

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

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

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


      1. DexterHD
        28.10.2018 09:19

        Странный коммент. Разве не понятно?

        Нет не понятно.

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

        Питон 2, потому что на нем написано сотни тысяч строк кода


        Отвечу честно и прямо. По моему мнению, это вообще не аргументы.
        Я сразу спрошу: А почему тогда не Java, на ней еще больше кода написано. А почему не JavaScript, на нем вообще тонны кода и куча недорогих спецов. И т. д., и т.п.

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

        Аргументы это:
        1) Потому что на момент создания продукта стояли «такие-то» задачи
        2) Кол-во разработчиков было «такое», их квалификация была «такая»
        3) Бюджет был «такой», выбор был среди «того то» и «того то»
        4) Стратегия была «такой-то»

        а для переписывания нету времени — вечные дедлайны.

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

        Есть несколько более объективных причин не переделывать тот или иной код:
        1) Данный код работает и на 100% выполняет свою функцию.
        2) Данный код не удорожает дальнейшее развитие продукта и не мешает идти вперед.
        3) В данный момент отсутствуют необходимые для этого ресурсы.

        Абстрактная фраза «Исторически сложилась», (при отсутствии желания раскрывать подробности) для меня звучит так: "- Отстань, мы тут думаем исключительно с своих личных интересах. Чем сложнее и запутаннее продукт, тем сложнее нас уволить, тем дороже обходится его поддержка, тем больше мы получим ЗП и тем увереннее будем себя чувствовать."

        Я кстати тоже пару раз употреблял, эту фразу. Буквально так: «Так исторически сложилось, потому что ресурсы не позволили использовать вот это и то решение. Сейчас это дерьмо работает и выполняет свои задачи. По моим прогнозам оно не принесет проблем еще где то пол года, потом мы будем пилить фичу которая затронет это дерьмо. Если у тебя есть желание, давай сядем, подумаем над тем что с этим можно сделать и зафиксируем на бумаге. Либо отложим этот вопрос до того момента пока это дерьмо не начнет мешать»


        1. TheShock
          28.10.2018 09:34

          Я сразу спрошу: А почему тогда не Java, на ней еще больше кода написано.

          Нет, не вообще в мире, а вот прям в этом проекте. Питон 2 до сих пор, ибо на нем написано сотни тысяч строк кода.

          Потому что дэдлайны это нормально, это не повод не переписывать те или иные части системы

          Серьезно? Для вас рефакторинг — это переход на Гоу, как выше там кто-то говорил?

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


          1. DexterHD
            28.10.2018 10:08
            -1

            Серьезно? Для вас рефакторинг — это переход на Гоу, как выше там кто-то говорил?

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

            Тем не менее даже в пяти строчках кода ответ «так исторически сложилось» иногда вполне достаточен

            Эта фраза без раскрытия подробностей всегда звучит как «От***бись». И это просто не профессионально.


    1. vanxant
      27.10.2018 07:31

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


      1. khim
        27.10.2018 13:31

        В самой фразе «так исторически сложилось» ничего плохого нет, а вот в реакции на неё есть.

        Подобная фраза, с моей точки зрения — это не повод оставить что-то в покое, а руководство к действию: если единственная причина — то, что кто-то поленился в своё время сделать осмысленный выбор, то это значит что выбор не поздно сделать и сейчас!

        Другое дело, что нужно адекватно оценивать силы: если вы хотите начать рефакторинг, который даст вам экономию 5 строк и хотите затратить на это полгода, то вас никто умным не назовёт… а вот если можно выкинуть 500 строк кода, потратив на это пару часов работы… почему нет?


        1. dimm_ddr
          27.10.2018 14:04

          то, что кто-то поленился в своё время сделать осмысленный выбор, то это значит что выбор не поздно сделать и сейчас!
          Совсем необязательно. Если кто-то поленился или не смог сделать выбор 5 лет назад, то это совсем не значит что сейчас это реально поменять с текущими ресурсами компании.


          1. khim
            27.10.2018 17:27

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

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

            Заодно будет что ответить последующим новичкам вместо пресловутого «тут брать лестницу и доставать бананы не принято».


            1. dimm_ddr
              28.10.2018 17:20
              -1

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


              1. khim
                29.10.2018 02:58

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

                Вот, кстати, у нас переход системы сборки с, внезапно, python2, на, внезапно, Go… начали два года назад, к 2020му должны завершить… Вопрос «успеем или нет» — пока открыт.

                Понятно, что под тем «зонтичные» бегом сейчас висят десятки других… Но первый год его существенны — там шла только медленно текущая дискуссия на тему «как, когда, что» мы планируем делать…


              1. khim
                29.10.2018 03:12

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

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

                А в нормальной же ситуации люди завезённые баги, вообще-то, стараются закрывать. И вопрос «а почему сделано вот через такую… хмм… странную конструкцию» должен либо получить нормальный ответ («мы не можем перейти на Go с Python 2, пока не будут модули для X, Y и Z» — и дальше, соответственно, ещё три бага), либо вы получите задачу, под которую можно уже пытаться получить ресурсы (успешно или нет — другой вопрос) — если все «исторически сложившиеся» причины пропали, и, соответственно, блокеров больше нет.

                P.S. Кстати если все три бага (про X, Y, и Z) закрыты как «infeasible» — то это ещё не конец! Кто-то другой может из за вас сделать — и тогда можно будет заново активизировать и родительский баг! А вот ответ «так исторически сложилось» — ничего подобного делать не позволяет. В чём, собственно, и проблема.


      1. justboris
        27.10.2018 13:48
        +1

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


    1. dimm_ddr
      27.10.2018 09:50

      Собственно уже ответили, но просто пример из моей практики: в компании где я работаю используют Mercurial. Когда я спросил почему не Git, то ответ был именно такой: исторически сложилось. Когда начинали популярность была примерно одинаковая, а сейчас уже есть экосистема, тулза для билда и деплоя завязанная на меркуриал и несколько десятков разработчиков которые к нему привыкли. Да и не то чтобы уж он был плох, просто не популярен и не всегда после гита очевиден. Это именно «исторически сложилось».


    1. pae174
      27.10.2018 14:05
      -2

      > "- Так исторически сложилось."
      > Но что значит эта фраза?

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


      1. qw1
        28.10.2018 10:07

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


        1. pae174
          28.10.2018 12:00

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

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


  1. boblenin
    26.10.2018 20:20
    +2

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


    1. DexterHD
      26.10.2018 20:50
      +1

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


      1. boblenin
        27.10.2018 03:25
        +1

        Согласен. "… подвиг одного — это преступление другого", и так навреняка бывает, что толковый продажник все вытягивает на своем горбе. Мне не доводилось такого видеть, но легко допускаю возможность. Чаще же лепят, успешно, когда лепка производится осознанно. Обычно налепителями руководит тот, кого нанял тот же, кто нанял тех кто продает. И если этот (или эти) кто-то нанявший руководителей понимае[ю]т чего хотят — все устаканивается.


  1. saaivs
    26.10.2018 20:49
    +10

    Все люди умны и адекватны, если не доказано обратное.

    Это ложное утверждение. По сути повествования оно строится как контр-тезис к утверждению «Все люди дебилы». Но строится некорректно.

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

    Не все люди адекватны и умны — это утверждение истинно.
    Не все люди дебилы — и это утверждение тоже истинно в то же время.

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


    1. Zoolander
      27.10.2018 10:18

      «не все» будет гораздо легче воспринимать, если запомнить, что это синоним «некоторые»


      1. vesper-bot
        27.10.2018 20:01

        Антоним только. «Не все люди лысые» === «некоторые люди не лысые».


      1. saaivs
        29.10.2018 12:24

        «не все» будет гораздо легче воспринимать, если запомнить, что это синоним «некоторые»

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


    1. zolotyh Автор
      27.10.2018 16:01
      +3

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

      Презу?мпция невино?вности (лат. praesumptio innocentiae) — один из основополагающих принципов уголовного судопроизводства, заключающийся в том, что лицо считается невиновным, пока его вина в совершенном преступлении не будет доказана в порядке, предусмотренном законом, и установлена вступившим в законную силу приговором суда

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


      1. saaivs
        29.10.2018 12:38

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

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


        1. zolotyh Автор
          29.10.2018 13:14
          +1

          Ваш комментарий вполне себе не более чем условность ;) Только смысл от меня ускользает. Причём здесь логическая ошибка? В чем она заключается?


          1. saaivs
            29.10.2018 13:42
            -1

            Комментарий не условность:) Что то из утверждений в нем — возможно. Но сам он точно не условность.

            Причём здесь логическая ошибка? В чем она заключается?


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

            Оба утверждения весьма и весьма спорные.

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

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

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

            Пусть лучше читатели увидят этот тред и задумаются об этом:)


  1. IvanHolodov
    26.10.2018 21:30

    просто как всё гениальное


  1. geher
    26.10.2018 21:56
    +2

    Все люди умны и адекватны, если не доказано обратное.

    Первое правило волшебника гласит: "Люди глупы".
    Как мне представляется, это более правильное представление (особенно если рассматривать полную формулировку правила). Только нужно понимать, что ты тоже человек и очень даже подпадаешь под это правило.


    1. Danikey
      26.10.2018 22:50

      del


    1. Anthony_K
      27.10.2018 02:27
      +1

      Первое правило волшебника гласит: «Люди глупы».

      Я бы перефразировал так: правило Парето гласит, что 80% людей глупы, а 20% людей глупы только если не доказано обратное )


      1. geher
        27.10.2018 14:05
        +1

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


        И я бы даже добавил к первому правилу (исключительно ради красного словца, на истину никак не претендую).
        Ум — это мера понимания чужой глупости.
        Мудрость — это мера понимания собственной глупости.


    1. zolotyh Автор
      27.10.2018 16:23

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


  1. Anthony_K
    26.10.2018 22:55
    +3

    Скоро Хабр превратится в сервис микроблогов с содержанием в духе: «сегодня утром я проснулся и понял, что в этом мире надо что-то менять». Господа, а нельзя ли писать более глубокие и содержательные материалы?


    1. eGGshke
      27.10.2018 01:46
      +1

      Хотел написать то же самое. Открыл статью в надежде увидеть развернутое пояснение мысли, ну или на худой конец длинную историю из жизни. Откинулся по удобнее — а тут статья вида: «Я проснулся и поел, представляете !?!?». Что за детский сад…
      Почему эта статья в топе — загадка.


      1. sentyaev
        27.10.2018 03:35

        Почему эта статья в топе — загадка.

        Секрет в том, что секрета нет.


    1. zolotyh Автор
      27.10.2018 16:34

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


  1. Danikey
    26.10.2018 23:15
    +3

    И вот ЭТО получило 53 плюса?! «Да тут все придурки!» (с) Автостопом по галактике.
    На самом деле — нет. Просто все люди находятся в разных областях познания мира. Так что, в каких-то областях даже умнейшие люди — полные придурки.

    В общем, без обид, весь смысл в одной фразе:
    Никогда не делайте абсолютных утверждений о реальном мире.

    Мир всегда найдёт, чем вас удивить… ой… кажется, я сделал абсолютное утверждение :)


    1. gridem
      26.10.2018 23:43
      +2

      Никогда не делайте абсолютных утверждений о реальном мире.

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


      1. Danikey
        27.10.2018 03:45

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


    1. Suvitruf
      27.10.2018 12:39
      -1

      Только ситхи всё возводят в абсолют.


  1. JohnHenry89
    27.10.2018 00:51
    +1

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

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

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


    1. Danikey
      27.10.2018 03:53

      Это очевидное следствие из основного закона: «Всё, что может пойти не так, пойдет не так». Поэтому давайте запретим всё, что не разрешили явно, особенно всяким дуракам. Именно так делает Линукс — пожалуй, самая свободная операционная система в мире.
      Как ни странно, ненавистная всеми Винда делает, как настоящая женщина — ровно наоборот.


  1. ainoneko
    27.10.2018 06:47

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

    («Это просто фантастика»)
    Хайнлайн, «Имею скафандр — готов путешествовать»


  1. farwayer
    27.10.2018 07:09

    Я раньше тоже так думал. Наверное, сроки поджимали. Или инструментов нужных в тот момент не было. А потом отбросил иллюзии. И теперь понимаю, что проект в большинстве случаев стал таким дном от:


    • недостатка квалификации и желания развиваться
    • всем похуй
      Обычно, сочетание этих двух факторов. Sad but truth.


    1. Artyomcool
      27.10.2018 19:21

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


  1. hfinn
    27.10.2018 07:26

    Ну, есть исключения.


  1. Artem_zin
    27.10.2018 07:58

    Написал вам ответочку habr.com/post/427917 :)


  1. pfihr
    27.10.2018 08:46

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


  1. Shpiler
    27.10.2018 09:05

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


  1. ilja903
    27.10.2018 10:15

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

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


  1. Zoolander
    27.10.2018 10:25

    // Webapck

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

    Летом, для совместимости с Jenkins, перешли на Webpack. Добавилась папка node_modules в сотни тысяч файлов и десятки мегабайт. Скорость сборки вебпаком — дольше в несколько раз. Это уже не говоря о зависимости от Интернета, которая требуется для npm install. Так что я могу понять ситуацию в начале статьи.

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


    1. mayorovp
      27.10.2018 10:28
      +1

      Э… а в чем заключается особая совместимость Webpack с Jenkins? Jenkins же умеет произвольные команды выполнять…


      1. balexa
        27.10.2018 11:54

        Мало выполнить определенную команду на дженкинсе. Надо потом ещё вытащить ее результаты и красиво отобразить — например сформировать *result.xml, если вы хотите видеть ошибку в гуи.
        Это все конечно не так сложно допилить, но очень геморно, как и любое продукционизирование.


        1. dimm_ddr
          27.10.2018 12:38
          +1

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


          1. Zoolander
            27.10.2018 13:38

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


      1. Zoolander
        27.10.2018 13:35
        +2

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


  1. kalininmr
    27.10.2018 10:34
    +1

    я уже лет 15 мучаюсь с проектом на перле. жутко напрягает.
    но легаси. переделать долго и дорого


  1. third112
    27.10.2018 11:23

    Все люди умны и адекватны, если не доказано обратное.


    Ok. Согласен.

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


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

    И простите — исходя из презумпции ума технический вопрос по статье:

    Там уже стоит готовый к работе ноутбук.


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


    1. dimm_ddr
      27.10.2018 12:42
      +1

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


    1. zolotyh Автор
      27.10.2018 15:49

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

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


    1. Danikey
      27.10.2018 19:39

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


      1. third112
        27.10.2018 20:07

        Да. Спасибо. Я согласен, что для дома (в том числе и для надомной работы) ноут имеет большие плюсы (хотя я и дома на десктопах работаю). Но в статье речь про рабочее место в офисе. Я и спросил: зачем в офис ноут на каждое рабочее место? ИМХО для презентаций и командировок дешевле иметь несколько дополнительных ноутов на несколько десятков сотрудников. Наверное, дело еще и в однородности персональных задач: только программистам, у которых почти только текст, не нужно «высокой графики», а если 50 дизайнеров на 45 программистов — тогда м.б. сложнее.


        1. dimm_ddr
          28.10.2018 17:25

          ИМХО для презентаций и командировок дешевле иметь несколько дополнительных ноутов на несколько десятков сотрудников
          Не проще. У разных сотрудников — разные проекты, разное окружение, они привыкли к разному софту. Если мне нужно ехать в командировку, то я совсем не горю желанием тратить день заранее на поднятие нужного окружения и потом еще день на его чистку. Ладно, почистить можно и накатыванием образа, но настраивать и загружать все возможно необходимые данные? Гораздо проще, как раз, когда рабочее место можно взять и увезти с собой.


          1. third112
            28.10.2018 17:34

            Ok, очевидно, что дорогой мощный ноут лучше, чем слабый немобильный ПК. Я только сомневаюсь, что все конторы на все рабочие места ставят самые дорогие и мощные ноуты.


            1. dimm_ddr
              29.10.2018 12:06

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


  1. Borjomy
    27.10.2018 12:00
    +1

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


  1. saipr
    27.10.2018 12:06

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

    Беда в том, что люди начинают следовать этому простому и понятному правилу только наломав кучу дров! И так по кругу.


  1. Kirill_Dan
    27.10.2018 13:20
    +3

    Как-то я писал про легаси код статейку и про причины этого явления: cleverman.org/post/legasi-kod-zlo-vselenskogo-masshtaba

    Эту же статью я могу сжать в совсем короткий тезис, который был мною увиден в течении последних 10 лет. Берут на проект человека, рассказывая про гениальный новаторский проект и самые современные технологии. Естественно в вакансии требования на знание самых последних версий, подходов/паттернов и т.д. Первые три месяца специалист прозревает от того пизде… а, что происходит на проекте, лезет со своими вопросами и предложениями. Через этот срок, когда кто-то ему задает вопрос про то, как он видит проект, и что нужно делать, ответ всегда одинаковый у всех без исключений: «Мне пох… й!»

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


  1. crustal
    27.10.2018 15:39

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

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


  1. aleksandrzhmydyak
    27.10.2018 15:39

    Как говорил знакомый следователь: «Главное при проведении следсвенных мероприятий поиске первопричин плохих решений не выйти на самого себя»


  1. exception13x
    27.10.2018 15:40

    Одна из самых полезных статей за последнее время :)


  1. Whuthering
    27.10.2018 16:09
    +1

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


  1. Nookie-Grey
    27.10.2018 16:13
    +1

    Такой шикарный заголовок и такая дичь в посте и комментариях(


    1. Danikey
      27.10.2018 19:50
      +3

      Нашёл уже два «ответа» на этот пост. Ну да, давайте засрём Хабр «ответками», и так — на каждый пост, с которым кто-то не согласен. Мне одному кажется, что задул плохой ветер?
      С другой стороны, если другими методами добиться кармы и плюсов нельзя, то система будет взломана. У тех ребят по 2к и 4к просмотров, все в плюсе.
      Такие ответки на Хабре не редкость. Кажется, Хабру нужен новый инструмент: дерево взаимосвязей «пост-ответ».


      1. crustal
        28.10.2018 09:55

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

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


    1. gshamshurin
      27.10.2018 20:43
      -1

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

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

      P.S: На этот «вброс» накидали уже 2 шт «статьи-ответа». Их тоже проминусовал. Посты-вбросы, порождающие обсуждения «обо всём и ни о чём», ИМХО ведут к деградации ресурса. Не надо давать им плодиться.


  1. defusioner
    28.10.2018 12:50

    Привет!

    У меня была и есть похожая по описанию ситуация.

    У меня есть коллега, который пушит в список, использует ДЖсную мапу, а для задачи «взять массив имен форматов и сделать строку через запятую, добавив точку в начале каждого формата» он как-то написал цикл for где мутировал результирующую строку, добавляя формат плюс точку, и если индекс != длине массива то добавлял запятую.

    При рефакторинге его 12-строчный код был переписан в мап + join в 1 строку.

    Вот и скажите мне, я сноб или он дурак?


    1. kinall
      28.10.2018 13:08

      Вы замеряли производительность обоих вариантов?


      1. defusioner
        28.10.2018 13:45

        Дело не в производительности, JSP / GWT тоже работает но мы на нем не пишем.

        Когда вместо того чтоб написать это:

        const formats = ['json', 'xml']

        return formats.map(x => `.${x}`).join(',')


        Человек пишет это:

        const formats = ['json', 'xml']

        let result = ''

        forEach(formats, (format, index) =>
        result += '.'
        result += format
        if (index != formats.length - 1) {
        result += ','
        }
        )

        return result


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

        Таких примеров у меня море.

        Боится писать стринг литералы, зато смело использует лодаш/рамда темплейты — это типа джсп («Hello <% name %>») — что делает код абсолютно нечитаемым (а с его слов, нечитаемы как раз — литералы).

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

        И т.д.


        1. kinall
          28.10.2018 15:21
          +2

          возникает множество вопросов о том, что происходит у него в голове

          Так задайте их!=) Так и спросите, мол, о сэнсей, зачем ты пишешь эти 12 строк, если можно написать одну, и ни один тест не сломается*?

          с его слов, нечитаемы как раз — литералы

          А вот, кстати, и половина ответа на ваши вопросы. Вам удобнее одно, ему другое, кому-то ещё – что-то третье. Объективных метрик удобства, читаемости и прочей феншуйности не существует, так что здесь спасут только code conventions. Возможно, вам стоит направить усилия как раз на их разработку и внедрение?

          * — только не забудьте сначала это проверить, а то мало ли…


          1. defusioner
            28.10.2018 17:05

            Это у человека сказывается джава-бекграунд без знания английского (он француз). И тут код конвеншнс не поможет, потому что писать цикл в JSP-like стиле это: 1. не индексируется идеей, 2. не читается, 3. я такое не приму.


        1. TheShock
          28.10.2018 22:16
          +1

          return formats.map(x => `.${x}`).join(',')

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

          return formats.map(x => '.' + x).join(',')


          1. defusioner
            28.10.2018 22:22

            Можно и так, но неужели литералы это так новомодно? в линуксе они сколько уже поколений..?

            А если честно, я предпочитаю декларативный стиль (обозначения вида строки) императивному (сложению, остальные спорные операции). Я также считаю что каждый должен придерживаться self-explanatory declarative & functional code.


            1. mayorovp
              29.10.2018 09:34

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

              Что же до сравнения понятности двух вариантов — я бы сравнивал их следующим образом. Есть данные, а есть разметка. Данные тут — точка и переменная (2 символа), разметка же содержит 3 символа в случае конкатенации и 5 символов в случае интерполяции. Получается, что конкретно в данном случае вариант с интерполяцией почти полностью состоит из разметки, что делает его довольно сложным для понимания.

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


              1. defusioner
                29.10.2018 10:11

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

                Не забывайте что мы говорим о джаваскрипте :) Я считаю что сложение это двойственная операция для строк.


  1. aiwan9
    28.10.2018 14:07

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

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


    1. defusioner
      28.10.2018 17:07

      Писали мы это примерно на одной неделе, раша не было. Хороший код определяется количеством «shit!» в вашей повседневной жизни.

      Я спрашивал :) От этого человек не меняется. Поверьте, если человек не хочет учиться — писать код = учиться — то его ничего не изменит.


  1. panteleymonov
    29.10.2018 02:02

    Эту бы «презумпцию ума» тем людям которые любят кричать что их ни кто (или конкретно ты) не уважает. Я так думаю всем этого не хватает.


  1. Ctacfs
    29.10.2018 13:33

    > С людьми, оказывается, можно обсуждать проблемы. И, о чудо, вокруг меня не одни идиоты, и я не самый умный, вернее случается, что идиот именно я. Идиоты встречаются, конечно, но в целом реже, чем до открытия во мне презумпции. Что не может не радовать.
    А до этого Вы не обсуждали? Я не программист, но на старой работе прекрасно знал, в каком месте наделано нетиповое спорное решение (говно) и по какой причине, поэтому когда мне указывали на это другие сотрудники, мне было, чем спокойно объяснить тот или иной нюанс, либо признать, что это косяк, который не исправлен по причине нехватки времени и более срочных задач.
    Людей за идиотов считать конечно не нужно, но я не вижу проблем в том, что новый человек приходит на новое место и задается вопросами «что за фигня?» вслух. Вы же не человека идиотом называете, а решение идиотским. Проблема не в этом человеке, а в человеке по другую сторону, который на такие вопросы отвечает в стиле «ты что, самый умный тут?»