IDEA пора закапывать?

В этой статье я хочу поднять тему старения компаний и извечный вопрос: что делать простым пользователям? На примере IDEA. С графиками деградации и загнивания.

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

Данная история началась для меня с того, что на рынке появилась серьезная IDE для моего любимого Python — это PyCharm. В JetBrains, видимо, поняли, что у них хорошо получается делать IDE, а все IDE чем-то похожи, и, в общем, почему бы не захватить этот интересный рынок чуть более чем полностью. Как бы там ни было, в итоге помимо IntelliJ IDEA на свет появилось много замечательных IDE: PhpStorm, PyCharm, RubyMine, WebStorm, AppCode, CLion, DataGrip, Rider — вот скромный список с официального сайта, и, судя по слухам, JetBrains не планирует останавливаться.

Хочу заметить, что я считаю PyCharm не только лучшей, но и в принципе единственной на сегодняшний день вменяемой IDE для Python. И я считаю, что мне очень повезло, что этот продукт появился на свет. Какая радость забыть обо всех костыльных IDE и куцых редакторах, и перейти на PyCharm! Когда всё работает из коробки, это даёт замечательное чувство сосредоточения. Склоняешься над кодом, как старый часовщик, и со всей тщательностью и скрупулёзностью погружаешься в свою задачу. И ничто не отвлекает. И не лень протянуть руку за нужным инструментом, когда всё под рукой.

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

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

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

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

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

Я не люблю опирать свои выводы на эмоции, и поэтому решил поискать хотя бы немного объективных фактов. Благо, у JetBrains есть замечательный продукт YouTrack, в котором все ходы записаны. А ещё там можно создавать отчеты. Я создал отчёт Resolved vs New/Reopened Rate для продукта PyCharm с фильтром «Type: Bug», и получил вот такой красивый график:

f01355748b6445f0802fea5b7dc4ef59.png

График красив, но в нашем случае совершенно бесполезен. На первый взгляд всё равно: команда работает, баги открываются и закрываются. Но мне кажется, что за этим диким разбросом не видно истинной картины (еще там можно включить режим «Grouped», который немного проясняет, но все еще не убеждает). Эффективность анализа данных напрямую зависит от того, насколько удачно выбран способ представления данных. Чтобы разобраться в этих данных, для начала я импортировал их в LibreOffice.

Незатейливый JS скрипт экспорта данных в формат CSV на случай если вдруг кто-то захочет поиграться со статистикой
// Replace ID in URL.
$.getJSON(
    'https://youtrack.jetbrains.com/rest/current/reports/237-79?fields=reportData,oldData',
    function(data){
        var groups = data.reportData.groups;
        var output = '';
        for (var i = 0; i < groups.length; i++) {
            var el = groups[i];
            output += el.timestamp + ',' + el.positive + ',' + el.negative + '\n';
        }
        console.log(output); 
    }
);


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

38b3728f3c394470a082e5617fadaa52.png

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

cfb067f04c0f41eb8e12784fbcd8bbb5.png

Вот оно — моё смутное сомнение, материализованное в диаграмме. Количество багов росло всё это время. И их стало аж три тысячи. Если профильтровать тикеты запросом вида Type: Bug State: Open,Submitted,{In Progress}, то их столько и будет: «Found 3009 issues.»

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

IntelliJ IDEA (удивительно отлаженный и равномерный процесс накопления багов):

7de4fb47c9384bd98d81149fc3fe5e72.png

RubyMine, PhpStorm, WebStorm ол тугезер:

2b2a2c84cdc64fb28fdf407166a33f86.png

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

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

Теперь, когда JetBrains стал неприлично большим, согласованность будет стоить гораздо дороже. И если все главные умы компании, устав от рутины IDE-строительства, перестанут придумывать новые способы делать IDE еще лучше, и переключатся на новые интересные и амбициозные проекты, как язык Kotlin, тогда IDEA ждёт неминуемая деградация.

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

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

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

PPS: Понимаю, вопрос дискуссионный, и наверняка найдется много людей, несогласных с моим мнением. С кармой я уже попрощался) И всё же, надеюсь на конструктивные комментарии.

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

  • 17 января 2017 в 18:49

    0

    https://youtrack.jetbrains.com/rest/current/reports/237–79? fields=reportData, oldData

    Permission Denied:(

    • 17 января 2017 в 18:51

      0

      Следует сначала создать отчет: https://youtrack.jetbrains.com/reports/resolveRate/create
      , а затем заменить ID отчета (237–79) на свой.
      • 17 января 2017 в 19:12

        0

        У меня никак не получается сделать отчет на такой большой рендж. Может поделитесь сырыми данными?

        • 17 января 2017 в 19:18

          +1

          На какой продукт?
          Я делал вот так
          61254868123647c4a9f7c72014c0ab04.png
          • 17 января 2017 в 19:20

            0

            На Idea, попробую добавить фильтрацию по типу.

            • 17 января 2017 в 19:31

              +1

              Окей, помогло.


              http://imgur.com/a/X3EmI


              Так вот, репортили всегда больше чем фиксили :)

              • 17 января 2017 в 19:36 (комментарий был изменён)

                0

                Не знаю почему, но у меня картинка получается более размазанная.
                Ну в общем о том и речь, что репортов больше.
  • 17 января 2017 в 18:50

    +12

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

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

    • 17 января 2017 в 18:57 (комментарий был изменён)

      +1

      количество багов и фича реквестов растет пропорционально размеру кодовой базы. Вот если их количество вдруг начинает уменьшаться — пиши пропало, проект исчерпывает себя.
      Я считал только баги. Фича реквесты не считал.
      • 17 января 2017 в 19:35

        0

        Окей, это не очень важно, на самом деле. Суть в том, что я с вами не согласен методически.

        Но вброс годный, да :)

        • 17 января 2017 в 19:43

          +6

          Для меня очень важно. 3000 багов, и среди них те, которые мешают мне работать, висят годами. А кому из разработчиков мешали старые иконки — мне совершенно не ясно. Они могли мешать только маркетологам.
          И это не методика, это просто число, чтобы заценить масштаб трагедии :) Меня лично больше беспокоит не количество, а то, что эти баги мешают работать.
          • 17 января 2017 в 20:10

            +1

            Судя по графику в IDEA 16k багов.


            Не могу вспомнить хоть одно issue, которое мне сегодня мешало бы работать и я его ощущал на себе:)

          • 17 января 2017 в 20:15 (комментарий был изменён)

            0

            А кому из разработчиков мешали старые иконки — мне совершенно не ясно.

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


            И это не методика, это просто число

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

            • 17 января 2017 в 20:28 (комментарий был изменён)

              0

              Я такой разработчик. Надеюсь, что JetBrains продолжит и дальше улучшать иконки
              Я и не смотрю, конечно, давно все убрал, но новые разработчики пугаются.
              То есть иконки стали настолько хороши, что Вы их убрали совсем?
              А почему новые разработчики пугаются модных современных иконок?
              Вот он, маркетинг в чистом виде.
              Вы неверно поняли мой посыл. Я имел в виду, что число не доказывает корреляцию между ростом ошибок и усложнением моей работы. Такое доказательство потребует целой научной работы. Поэтому приведенное число не является методикой оценки глючности продукта. Проводить параллели я предлагаю самостоятельно.
          • 17 января 2017 в 20:38

            0

            Толчком к измнению иконок было появление Райдера. Нужно было решение, которое не будет чужеродным ни для пользователей Visual Studio, ни для тех, кто уже пользуется средами на платформе IntelliJ.
    • 17 января 2017 в 19:47

      +1

      Тут, извините, как в старой шутке из книги «Физики шутят»: «Хорошо, Смит, эффект вы обнаружили, теперь попытайтесь найти причину» под картинкой со взорвавшейся установкой.
      Эффект обнаружен — широкоиспользуемая IDE становится все более глючной. Ладно, мы поставили точку, сказали, мол, это естественно и все такое, ведь проект развивается. Делать-то что с этим?
      • 17 января 2017 в 20:17

        0

        А вы считаете, что проблема только в сфере IDE и остальной софт с каждым релизом становится все быстрее и стабильнее?

    • 17 января 2017 в 20:14 (комментарий был изменён)

      +1

      Как-то я слушал главного по разработке Visual Studio, когда он приезжал в Россию, так вот он хвастался графиками убывающего кол-ва багов в каждой версии vs, при том довольно неплохо убывающего.
  • 17 января 2017 в 18:55

    +6

    Кидайтесь камнями, но я, не смотря на мою любовь (убывающую, правда) к IDEA, искренне верю в будущее Language Servers.


    Когда IDE будут меряться рендером шрифтов, отзывчивостью и удобством (мне например очень понравился VS Code), а работу по анализу сорцов будут делать IDE независимые language server-а (как это у Haxe сделано например).


    Имхо это прекрасное будущее разработки тулинга. У IDEA сейчас прекрасный анализ кода. Это заставляет открывать её вместо VS Code когда надо сделать рефакторинг. Но поправить пару строчек — проще открыть Atom, Code, Vim, Nano, etc…


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

    • 17 января 2017 в 19:25

      +1

      1. Если вдруг, когда-то, появится LS для Java лучший чем в IDEA, IDEA просто возьмет его себе. Уже сейчас можно включить LS для TypeScript.
      2. IDEA это не только LS, это еще 100500 фич и интеграций.
      3. Отзывчивость vs code и atom субъективно хуже чем IDEA. У IDEA есть «проблема» со временем старта. Из шела очень удобно делать idea file, и редактировать прямо в IDEA.
  • 17 января 2017 в 19:01

    0

    Хочу заметить, что я считаю PyCharm не только лучшей, но и в принципе единственной на сегодняшний день вменяемой IDE для Python

    emacs + spacemacs, не холивора ради. Нет чудо-интерфейса, зато работает из коробки и очень даже хорошо.
    Да, я в курсе что уже 2017й. Но пока не нашел что PyCharm может, а Emacs нет (в плане ежедневной работы со сложными Python проектами).
    ЗЫ: это все ИМХО, на вкус и цвет…

    • 17 января 2017 в 19:03

      +3

      Спасибо.
      А он может трёхколоночное сравнение версий из git? аннотации из git? переход на определение унаследованного метода?
      • 17 января 2017 в 20:20

        +2

        Да, может, magit называется
    • 17 января 2017 в 20:38

      0

      Попробовал я emacs + spacemacs, порог входа гораздо выше, что-бы открыть и поредактировать заняло минуты и гугления. Поиска файлов нет (issue с 2015 года), открыл python файл, нет ни автокомплита ни перехода к определению. Хотел поставить jedi для автокомплита, но его нет в списке предложенных модулей, ok, нагуглил как подключить список, установил jedi, но автокомплита все ещё нет, то ли нужно жать магические кнопки, то ли надо запустить jedi сервер, то ли конфигурировать его надо. Вообщем чем дальше тем глубже в лес, а результата нет.
      А Idea — запустил и работает.
  • 17 января 2017 в 19:07 (комментарий был изменён)

    +1

    Да я даже не знаю. Во-первых, на тему ценовой политики. Продукты JetBrains имеют Early Access Program, в рамках которой вы можете использовать их продукты полностью бесплатно, в дополнение к этому ещё и имея самые последние фичи и апдейты. Да, там могут быть баги, но ничего супир-дупир критичного я лично не заметил, как раз на днях установил себе текущий последний EAP-билд PhpStorm. И честно обалдел от того, какая удобная IDE стала после того как я последний раз её открывал (где-то пол года или год назад).


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


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

  • 17 января 2017 в 19:07

    +1

    Надо ещё на приоритеты смотреть. Сколько из накопленных дефектов Immediate и High?
    Накопление Minor дефектов — это нормально. На них часто все забивают.
    • 17 января 2017 в 19:10

      0

      Приоритет бага, который откровенно тормозит мою работу, не вселяет в меня оптимизма. Надо еще смотреть на то, кто эти приоритеты расставляет, и чем он руководствуется. Я смотрю прежде всего на свой опыт работы с IDE. А статистика — это просто для объективности, и чтобы не быть голословным.
      • 17 января 2017 в 19:37

        0

        Не все баги на вашем графике тормозят вашу работу.

        • 17 января 2017 в 19:46

          +1

          Да, их там на всех хватит.
          • 17 января 2017 в 20:46

            0

            Вы определитесь, или это «крик души», или это статистически обоснованное утверждение.
            Если первое, то достаточно просто поругаться на IDEA, и не надо даже пытаться никаких графиков рисовать. Если второе, то комментарии «на всех хватит» — бесполезны. Надо показывать статистику по 1. качеству расставления приоритетов, 2. количеству не закрытых багов высоких приоритетов.

  • 17 января 2017 в 19:13 (комментарий был изменён)

    +2

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

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

  • 17 января 2017 в 19:39

    +6

    IDEA пора закапывать?

    Нет. Только истеричных белок с такими заголовками.
    • 17 января 2017 в 20:22

      0

      Багов прибавилось это я тоже заметил, местами подсветка кода пропадает (в новых шаблонах ES6 в длинном шаблоне подсветка отключается), анализ хрень выдает и тд.
      Но все баги что мне попадались абсолютно не критичны и активно правятся.
      Пока другим IDE до IDEA 3 года на оленях по Сибири.
      Надеюсь так же будет и дальше и они не потеряют высокое качество своих IDE.

      А вот с иконками абсолютно поддерживаю новые иконки адское дермище!
      Решил эту проблему вот этим плагином IDEA 2016.2 Icon Pack.

  • 17 января 2017 в 19:47

    0

    Не скажу, что баги вылазят с заметной частотой и парочку, которые я репортил они закрыли довольно оперативно.
    Однако, пользуясь IDEA примерно с 2012 года (сначала Intellij, потом PyCharm и Android Studio) на одном и том же ноутбуке, замечаю что работать становится всё более некомфортно.


    Сейчас, даже с большинством выключенных инспекций и плагинов загрузка CPU и скорость запуска хуже, чем были пару лет назад. Это очень печалит, потому что хоть PyCharm и предоставляет множество фич, но при этом среда перестаёт быть удобной для работы.
    После выхода VS Code перешёл, в основном, на него. Хоть это и Electron, но в целом скорость работы куда выше, чем у IDEA. Единственный существенный минус — алгоритмы работы автодополнения. Но в целом работать со среднемелкими проектами удобнее.

    • 17 января 2017 в 19:52

      0

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

      Вот уж на что не жаловался, так это на загрузку CPU. А почему запуск настолько критичен? Он же один раз запускается и дальше просто работает.
  • 17 января 2017 в 19:51

    –6

    image

  • 17 января 2017 в 19:54

    +1

    Однажды JetBrains победил Eclipse
    Когда это было? Лично я для Java пока лучше Eclipse ничего не нашёл.
    • 17 января 2017 в 20:00

      +1

      Примерно в 2011, видимо
      1660beb898a14f42a858314a803f169e.png

      https://www.google.com/trends/explore? date=all&q=%2Fm%2F01fs1d, IDEA
      • 17 января 2017 в 20:10

        –1

        А при чём тут статистика поисковика? Другое дело, если б тут был график соотношения юзеров по этим IDE.
        • 17 января 2017 в 20:18

          0

          В интервью кто-то из JetBrains сравнивал количество фич, людей и т.д. Не помню где читал. Типа Eclipse был такой страшный монстр, который всё захавает, а сейчас оказался далеко позади. В целом похоже на правду, что IDEA обогнала Eclipse по всем показателям. Хотя, именно на Java я не программирую.
      • 17 января 2017 в 20:20

        0

        Согласен… В эклипсе более чем всего достаточно… Какой смылс переходить на IDEA что-бы сэконоимить хотябы 1% времени рабочего дня? ;)
        Ерунда…
        Я вообще хардкорно пользуюсь ИДЕ в по 1,2 часа в хорошие дни. Редко больше 4-ех ито это наверное по поводу кода все предельно ясно и например что-то from scratch пишется и опыт за плечами… Но как часто это? С микросервисами навверное чаще;)
        Но остальное время это дискуссии, чтение, поиск, обдумывание…
        IDE новичков чаще волнует…
        • 17 января 2017 в 20:43

          0

          IDE новичков чаще волнует…

          Зависит от специфики работы. Некоторым вообще целыми днями приходится копаться в чужом коде, а не дискуссировать и обдумывать. Им без IDE — вообще никуда.
    • 17 января 2017 в 20:20

      0

      Например, вот одно из мнений 5-летней давности:
      https://habrahabr.ru/post/112749/

      • 17 января 2017 в 20:40

        0

        Мнение от человека, который тех, кто пишет на Eclipse, называет «несерьёзным Java-программистами»?
        • 17 января 2017 в 20:45

          0

          Его позиция хотя бы выглядит убедительно и я с ним согласен в одном:


          Главная вещь, отличающая IDEA — она понимает контекст.

          На 2012 год IDEA было объективно «умнее» Eclipse в плане «понимания» кода. Дальше можно спорить сколько угодно, но это бессмысленно. Что там сейчас происходит я не слежу, может Eclipse уже сильно продвинулся в этом плане.

  • 17 января 2017 в 20:03

    –2

    Использую SublimeText 3 и как-то всё ровно. Atom медленнее просто.

    • 17 января 2017 в 20:08

      +2

      Саблайм и Атом для больших проектов — это немного не то как-бы) IDE не зря придумали всё-таки.

      • 17 января 2017 в 20:25

        0

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