Несколько лет назад, когда я искал пути из программистов 1С в Java developer'ы — я бродил впотьмах, пытаясь нащупать дверь, в существовании которой был не уверен. Я пытался найти истории успеха, но кроме пары комментариев ничего не нагуглил. Мир Java выглядел огромным, а количество фрэймворков бесконечным. Было совершенно непонятно: что учить, что не учить, что нужно в работе, а что никто не использует. Если ты хочешь в Джаву, теряешься в бесконечных названиях технологий и фрэймворков и хочешь узнать какие же из них надо изучать, а на какие не обращать внимания — эта статья для тебя!



Некоторые начальные допущения


  • в этой статье мы не будем обсуждать вопрос «зачем?», будем только — «как?». Если ты сюда пришел — ты сам знаешь зачем.
  • я никогда не получал образования как-то связанного с ИТ, поэтому мои рекомендации — это рекомендации от человека и для человека, который на момент начала изучения Java никогда ни на чем кроме 1Са не писал. Если у тебя диплом по разработке ПО — часть рекомендаций может быть лишней.
  • я постараюсь нарисовать картину, отражающую какую-то среднестатистическую вакансию. Естественно, если ты хочешь в какое-то узкое, специфичное направление вроде big data или наоборот embedded — тебе лучше узнать об этом направлении подробнее.

Плохие новости


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

Во-вторых, готовься, что если ты сейчас топовый 1Сник — твой доход скорее всего восстановится когда ты станешь уверенным middle'ом. Как правило, это не меньше 2-3 лет практики, но в конечном счете все зависит от тебя.

В-третьих, не жди, что твой 1Сный опыт тут кому-то интересен. У тебя может быть 100500 успешных проектов и вся стена в 1Сных сертификатах — это никого интересовать не будет. Ты будешь джуном, с тобой будут разговаривать как с джуном и у тебя будут задачи как у джуна. Но тут есть ложка меда: даже если ты не топовый 1Сник, в вопросах SQL, скорее всего, ты потягаешься с Senior Java developer'ами.

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

  1. Тратить 1 час каждый день — это намного лучше чем тратить 7 часов раз в неделю. Если ты решил идти — иди. Без отговорок. Каждый день. Ладно, в воскресенье можешь отдохнуть.
  2. Если ё инглиш из нот вэл — улучшай его! Это тот навык, который тебе пригодится: мало того что почти все, что ты сможешь прочитать, будет на английском, так тебе еще и код на нем писать! Скорее всего, первое что тебе потребуется — это навык чтения и понимания прочитанного. С listening и speaking можешь повременить.

Подготовка. Основы языка


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

Я выбрал Java. Все дальнейшие рекомендации будут даны в этом контексте, если ты выбрал другой язык — значительная часть написанного тут может потерять смысл, но общие идеи ты можешь почерпнуть. Вероятно, тебе стоит посмотреть в сторону PHP, ибо Битрикс и переход на него может оказаться проще в плане административного барьера (там 1С, тут 1С, какая разница?..) и в плане отсутствия в языке всяких стримов и метод-референсов (хотя они дико кайфовые).

Если ты тоже выберешь джава — не забивай себе голову Java EE, тебе нужна только Java SE. Что такое Java ME и Java FX вообще лучше не знать )

Итак, с чего же начать? Я не советую тебе бросаться покупать двухтомник Хорстманна и тысяче страничный «Spring 5 для профессионалов» и пытаться все это вызубрить. Даже если ты расскажешь все это наизусть — знания не подкрепленные практикой выветрятся очень быстро. Начни с онлайн площадок по обучению программистов. Я решал JavaRush. Дошел наверно до 15 уровня. Это заняло около 1-2 месяцев (с цифрами могу что-то наврать, дело было давно)

Затем принимайся за HackerRank. Не пугайся его названия — там можно выбрать уровень сложности и на простейшем тебе будут предлагать задачи уровня инвертировать строку. Добейся, чтобы задачи среднего уровня (medium, баллов на 30) решались без проблем. Хотя система оценок иногда дает сбой и бывают такие задачи на 30 баллов, что проще какой-нибудь hard на 60 баллов решить, но в основном ты должен справляться. Это займет тебя еще на 1-2 месяца.

Теперь пора читать Хорстманна. Имей ввиду, что это хорошая книга, но она покрывает Java целиком (только язык, не фреймворки) и даже те ее части, которые почти нигде не используются. Моя рекомендация: в первом томе забей на разделы связанные с UI и на весь второй том. И еще, если будет туго, в первом томе пропусти многопоточность и вторую половину дженериков — этого могут не знать даже мидлы, для джуна не страшно. Еще важно не попасть в ловушку версий: книга, которая называется Java 2 — это древность. Тебе нужна версия 1.8 или 9. Или ориентируйся на дату издания: 2015 год и позже подойдут.

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

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


После всего этого, ты почти готов пойти на собеседование. Осталось совсем чуть-чуть:

  • еще раз обрати внимание на коллекции и на сложность поиска в них. Эту тему мусолят все. Не пытайся узнать все подряд: лучше хорошо знать базовые коллекции (ArrayList, LinkedList, HashSet, HashMap, может еще TreeMap), чем знать три десятка, но «по верхам». Т.е. ты должен понимать, как коллекция работает внутри. Есть хороший канал на ютубе, там все разжёвывают для джунов. Прямо так, как тебе и нужно. Вбиваешь в поиск «урок по java коллекции» — первая ссылка на него. Там же есть видео под названием «что нужно знать перед собеседованием». Ты не должен знать прямо все что там перечисляют, ты все-таки джун, на мой взгляд, если ты осилишь 2/3 тем — будет ок.
  • что такое спринг (тебе нужен Spring Core и Spring Boot) — там понаверчено немало, но 95% практики использования — не сложнее хэловорлда. Ты должен понимать базовые концепции, вроде того что такое IOC и зачем это вообще и уверенно владеть 1-2 способами объявления и инжекции бинов (не xml). Возможно, тебе стоит еще попробовать сделать несколько REST-сервисов на Spring Web: там нет ничего сложного, но будет определенный плюс.
  • как писать тесты (посмотри на JUnit и Mockito) — в 1Се в принципе нет такой практики как написание тестов. В Java код без тестов — это не код, потому что код считается нерабочим, до тех пор пока нет доказательств обратного.

Когда я говорю «посмотри на [frameworkName]» — я имею в виду: сделать, по крайней мере, несколько домашних проектов с использованием соответствующего инструмента. Скорее всего стоит начать с того, чтобы попробовать каждый фрэймворк отдельно на уровне хэло ворлд, потом стараться собирать их в одном проекте, несущем хоть какую-то «полезность». Кажется неплохой идеей (хотя я так и не делал) — чтобы проекты были как-то привязаны к работе. Может быть просто полностью переписать задачу, которую ты пилишь на 1Се на Джаву, может быть сделать себе какой-то помощник для 1Сной деятельности. Например, если ты пилишь REST обмен с поставщиком на 1Се — реализуй сторону поставщика на Java для тестирования 1Сной функциональности: просто принимай запросы и складывай куда-нибудь.

Все твои домашние проекты должны собираться Maven'ом и версионироваьтся Git'ом. Это просто инструменты, стоит набить руку — и уже перестаешь их замечать. В качестве среды разработки советую тебе взять Idea, по моим наблюдениям ее сейчас используют почти все. Бесплатной версии тебе должно хватить.

Если ты не стеснен в средствах — можешь посетить какие-нибудь курсы по Java разработке. Я считаю, что базовый курс брать не стоит, поскольку все что там будут объяснять не стоит того, чтобы тратить на это время и деньги. Возьми курс по Spring Core или JUnit: с одной стороны ты получишь знания, пообщаешься с будущими коллегами, с другой — тебе не будут 3 дня разжевывать, что такое цикл.

Где-то между делом, надо почитать теорию программирования. Тебя обязательно спросят про SOLID и паттерны. Паттерны (они же шаблоны проектирования) — это весьма интуитивно-понятные вещи, хотя на Википедии описаны так, что чёрт ногу сломит, лучше читать не настольно заумные статьи. На мой взгляд, хватит такого набора: Интерфейс, Билдер, Прототип, Синглтон, Декоратор, Прокси.

Идём на собес!


Работодатели
Есть несколько основных типов работодателей, о которых тебе стоит знать.

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

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

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

Дальше идут банки и страховые. Тут может быть все сильно по-разному: как правило, в банках есть огромное страшное легаси, на которое никто не хочет идти и новые-модные-стильные-молодежные проекты, на которых вакансии еще как-то закрываются. Сам понимаешь, тебе в первую группу. Хотя, иногда их самомнение может зашкаливать, типа «mission-critical система — не место для джунов». Не обращай на них внимания, такие далеко не все.

Естественно, этот список не описывает полностью всего рынка труда, есть еще всевозможные стартапы, retail и много-много кого.

Во-первых, не надо врать про опыт. Поверь, даже если тебя «случайно» примут за мидла на тех.интервью — в работе ты все равно будешь джуном. Поэтому в резюме не стоит выдумывать, что ты уже работал Java developer'ом 15 лет, пользуясь тем, что в названии твоей предыдущей должности не было упоминания 1С. Но кое-какие ходы, для преодоления HR-барьера, предпринять можно. Не выпячивай свое 1Сное прошлое. На паре последних мест работы можешь написать просто «Программист» или «Developer», а буквы «1С» закопай куда-нибудь в описание. Тим-лида ты этим не проведешь, но HR может купится.

Во-вторых, было бы ошибкой держать твоего будущего работодателя в неведении о том, как ты занимался самоподготовкой. Напиши полгода подготовки как отдельное место работы (оно должно быть в самом верху), с пересечением по сроку с последним местом работы. Назови это «Java developer», место работы — «самоподготовка» или «домашние проекты» и перечисли технологии, которые ты попробовал. Дай ссылку на профиль на хакерранке.

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

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

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

Работа джуном


Самое важное тут — это Тим лид. Ты должен был познакомиться с ним на тех.собесе и «он должен был выбрать тебя и ты должен был выбрать его» (с). Очень важно почувствовать эту химию. Это человек, каждое слово которого в следующие несколько лет, ты должен слушать, запоминать и выполнять. Этот человек будет тащить тебя к вершинам Java разработки и посвящать тебя в самые глубокие нюансы этой магии. И от него, может быть даже больше чем от тебя самого, зависит, насколько крутым разрабом ты станешь и как скоро.

Итак, мой юный 1С-ник, если раньше ты знал «зачем?», то теперь еще знаешь «как?». Путь в тысячу миль начинается с одного шага. Дерзай!

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


  1. Neikist
    11.12.2019 17:46

    О, все таки написали? Неплохо. Я бы с некоторыми пунктами поспорил наверно, но лениво, да и во многом вкусовщина.


    1. m-rv Автор
      11.12.2019 17:50

      когда победите лень — пишите, уверен комментарии будут полезнее статьи )


  1. Xilian
    11.12.2019 18:00

    Из статьи понял только то, что 1С сложнее java оказывается. И что большинство java — программистов не знают sql.


    1. m-rv Автор
      11.12.2019 18:00

      1С сложнее java оказывается
      неожиданный вывод. как вы к нему пришли?


      1. Xilian
        11.12.2019 19:14

        Опыт работы быстрее набивается :-)

        1С — это в первую очередь про знание предметной области, самих алгоритмов ну там не особо много и оптимизация до O(n) там редко требуется. Поэтому зачем в статье вообще она упомянута — неясно.

        Сама 1С сейчас сильно дрейфует в сторону java — почти все инструменты вспомогательные на ней. Так что сам потихоньку вспоминаю эту адовую экосистему.


        1. m-rv Автор
          11.12.2019 19:32

          Опыт работы быстрее набивается
          а к этому как пришли?


    1. justhabrauser
      11.12.2019 21:35
      +1

      1С сложнее java оказывается

      Скорее не сложнее, а замороченнее (мягко говоря).


    1. Veidt
      12.12.2019 10:24
      +1

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

      И большинство 1С — программистов тоже не знают sql. Спросите их хотя бы про базовые механизмы predicate push down. Что не удивительно, так как 1С сам не рекомендует использовать ни подзапросы, ни полагаться на оптимизатор и вообще поддерживают SQL на уровне SQL-92 (не поддерживая даже представлений, который емнип были в том стандарте).


      1. EvilBeaver
        12.12.2019 10:43

        У 1С не SQL, а если угодно, EntityQL, который хотел сделать Майкрософт, но что-то там не срослось. И он кросс-субдшный, поэтому вынужден быть минимально доступным подмножеством фич, имеющихся на всех 4 СУБД. Плюс 1С в том, что там есть все и сразу в одной коробке. Часть этого не так хороша, как в какой-то специализированной либе/среде/продукте. Но если сложить ценники 8-9 продуктов узких ниш, и ценник 1С, где "все сразу"...


        1. m-rv Автор
          12.12.2019 10:58

          по чем там нынче Spring Data?


          1. EvilBeaver
            12.12.2019 11:05

            Не знаю. А есть там что-то похожее на MXL с возможностью сохранения в PDF?


            1. Veidt
              12.12.2019 11:09

              Даже стало интересно чем вас тот же XLSX для хранения табличных документов не устраивает. Зачем использовать непонятно кем разработанный закрытый формат?


              1. speshuric
                12.12.2019 20:11

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


                1. Veidt
                  12.12.2019 22:22

                  Проигрывает, например, если есть строки с разной шириной колонок.

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

                  Макеты печатных форм к форматам, в которых формируются эти печатные формы прямого отношения не имеют. В том же Jasper'е можно делать формы с разлинейкой (получая потом предсказуемые XLSX), а можно графические для PDF.


                  1. speshuric
                    12.12.2019 22:54

                    Ну а графическим форматам тогда проигрывают оба эти формата.

                    Не надо так передёргивать. Если речь про "отчёты в табличном виде", то это некоторый вывод из программы, которые потом пользователем используются для просмотра, несложного анализа и печати. Графические файлы и PDF очень неудобны пользователю для "несложного анализа" (скопировать половину столбца чисел и сложить). HTML и XLSX плохи для печати (нет гарантии, что напечатается также). MXL плох потому что его не отдашь внешнему пользователю (у него может не быть 1С). Текстовый формат (а также csv, json, xml даже с xslt) проигрывает в возможностях оформления.
                    XLS/XLSX открывается внезапно совсем не одинаково и не всегда.
                    Важный плюс 1С в том, что из одного макета получаются приемлемые конечные формы большого количества форматов. У джаспера на словах это как бы почти так, но есть нюансы.
                    На практике за годы разработки, руководства и архитектуренья я вижу, что работа разработчика 1С с макетом и последующее сохранение в общеупотребимый формат в рамках этой задачи занимает в разы меньше времени при более стабильном и предсказуемом результате. И это если сравнивать с удачными платформами (типа Jasper), потому что в неудачных добавить новый формат это вообще отдельный проект.


                    Макеты печатных форм к форматам, в которых формируются эти печатные формы прямого отношения не имеют. В том же Jasper'е можно делать формы с разлинейкой (получая потом предсказуемые XLSX), а можно графические для PDF.

                    Имеют. Табличный документ и его файловое представление MXL — это основной инструмент и одновременно выходной артефакт в 1С. И 1С-ник именно в нём делает форму отчёта. В других платформах обычно это бывает по-другому, там инструмент и выход разнятся (а если не разнятся, то это скорее всего отчёт, формируемый из шаблонного файла MS Office и это один из худших вариантов).


                    1. Veidt
                      12.12.2019 23:04

                      нет гарантии, что напечатается также

                      А у MXL есть гарантия? Это же ячеистый формат с неограниченный шириной, как можно гарантировать что он влезет на A4?
                      На практике за годы разработки, руководства и архитектуренья я вижу, что работа разработчика 1С с макетом и последующее сохранение в общеупотребимый формат в рамках этой задачи занимает в разы меньше времени при более стабильном и предсказуемом результате

                      В конечном итоге вся информация либо выводится на принтер, либо сохраняется в excel (как стандарт ячеистого формата). Промежуточное звено в виде MXL не совсем понятно чем помогает в этом вопросе.
                      Табличный документ и его файловое представление MXL — это основной инструмент и одновременно выходной артефакт в 1С.

                      Я в курсе, но непонятно чем это лучше модели обычных reporting systems. Либо рисуй все в графическом формате для принтера / pdf, либо включай «разлинейку», и рисуй все по линиям, после чего при выгрузке в «ячеистый» формат (xls) все автоматически разложится по ячейкам.


                      1. speshuric
                        13.12.2019 00:06

                        А у MXL есть гарантия? Это же ячеистый формат с неограниченный шириной, как можно гарантировать что он влезет на A4?

                        Письменной гарантии от вендора нет. Но а) вендор один (в XLSX — несколько "совместимых"), б) если 1С не будет сильно стараться унифицировать печатный вид, то все печатные формы 1С: Бухгалтерии развалятся и для них это будет серьёзный фэйл.


                        В конечном итоге вся информация либо выводится на принтер, либо сохраняется в excel (как стандарт ячеистого формата). Промежуточное звено в виде MXL не совсем понятно чем помогает в этом вопросе.

                        Помогает делать макет 1 раз для всех конечных форматов. Да, есть ограничения. Но сам процесс достаточно удобен для всех целевых применений. Более того — часть процесса вёрстки формы можно отдать даже пользователю. Более того, в 1С мне очень удобно смотреть diff между макетами в системе контроля версий. В отличие от того же jasper (а уж как "прелестно" с SCM работать с каким-нибудь SSRS или SSAS — там вообще труба).


                        Если вы считаете, что эта "модель обычных reporting systems" лучше — да ради бога. Я у обеих сторон вижу гору недостатков и достоинств.


                        1. Veidt
                          13.12.2019 09:02

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


                          Так а какие целевые применения?

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

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

                          Более того, в 1С мне очень удобно смотреть diff между макетами в системе контроля версий


                          Вы сейчас про их внутреннюю систему контроля версий? Потому как если про выгруженные xml в git, то не понятно чем это лучше Jasper'а. А внутренняя система контроля версий имеет столько недостатков по сравнению с git, что упоминать ее достаточно бесмысленно.

                          все печатные формы 1С: Бухгалтерии развалятся и для них это будет серьёзный фэйл.


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


                          1. EvilBeaver
                            13.12.2019 10:16

                            интерфейсы работы с данными просто изначально делают в интерактивных, а не печатных формах

                            Внезапно, в 1С табличные документы интерактивны, драг-дроп, клавиатура, евенты мыши, driil-down. Только еще это все и удобно формировать и печатать нормально.


                            1. Veidt
                              13.12.2019 10:20

                              А динамические списки (то есть чтение из базы видимыми порциями), реквизиты в панели для текущей записи, человеческие отборы, поиски и сортировки (а не через еще -> изменить вариант и переформировать отчеты), вкладки, «связанные» списки и т.п.?

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


                              1. EvilBeaver
                                13.12.2019 10:29

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


                                1. Veidt
                                  13.12.2019 11:53

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

                                  Не правильнее ли было сделать как в Odoo, где любой список (как и отчет) можно переключить в режим сводной таблицы и там делать любую аналитику (в том числе drill down, и там же переходить к другой информации).


            1. m-rv Автор
              12.12.2019 11:14

              Не знаю
              сильно дешевле. )))
              MXL с возможностью сохранения в PDF
              мне такого делать не приходилось, но гугл подсказывает org.apache.pdfbox. и слово «apache» так же намекает на сильную дешивизну ))


              1. EvilBeaver
                12.12.2019 11:17
                -1

                Я не искал PDF-принтер под Java, но вот под .NET все очень сильно уступает по качеству 1С-у, если говорить про бесплатное. Платное не покупал.


                Ну и xslx сильно менее удобно писать нежели секции табличного документа и "Документ.Вывести()", не находите? А еще можно вспомнить фичу разных ширин колонок, которой в Excel порой очень не хватает.


                UPD посмотрел что предлагает PDF-Box и их примеры. Ну нет, это и близко не лежало по времени и простоте выдачи результата по сравнению с 1С.


                1. m-rv Автор
                  12.12.2019 11:35

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


                  1. EvilBeaver
                    12.12.2019 11:54

                    Поясню. Есть задача отдавать по веб-сервису что-то печатное в PDF. Например счета. И есть метрика time-to-market. На мой взгляд, в 1С эта метрика будет самой лучшей, с учетом в т.ч. и цены фреймворка.


                    1. Veidt
                      12.12.2019 12:00

                      C JasperReports это делается элементарно.

                      В lsFusion (которая использует как раз JasperReports) вообще на кончиках пальцев:
                      lsfusion.org/try
                      Выберите в списке Печать накладной и замените XLSX на PDF.

                      И все бесплатно.


                      1. EvilBeaver
                        12.12.2019 12:01

                        Замечательно, возьму это название на вооружение.


                      1. speshuric
                        12.12.2019 20:33
                        +1

                        JasperReports отличный инструмент для отчётов. Но 1С-ной системе отчётов (инструменты работы с MXL, конструкторы, построитель, СКД) он скорее проигрывает. Проигрывает в простоте drill-down, сравнение табличных документов в 1С просто есть (джасперу оно не нужно, но когда нужно, то ХЗ что делать), когда нужно сделать странные шибанутые вещи, MXL позволяет. 1С тоже не лапочка, когда надо сделать готовый красивый отчёт-презентацию, но тут проще смотреть изначально на софт для презентаций.
                        1С-ный MXL, кстати, при определённой прямизне рук, позволяет без проблем работать с гигантскими MXL (миллионы строк). В Jasper я такие объёмы не пробовал, а вот Excel на этих объёмах просто ад.


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


                        1. Veidt
                          12.12.2019 22:19

                          Тут дело в том, что 1С в своей системе отчетов зачем-то совместили несовмещаемые вещи — печатные формы и бизнес-аналитику. В частности:

                          Проигрывает в простоте drill-down

                          Это вообще не задача печатных форм, это задача аналитических отчетов, а точнее BI tools. Например тут. А в плане эргономики аналитических отчетов 1С-ная система проигрывает специализированным BI инструментам вчистую. Ну и вообще делать аналитику на OLTP базе так себе идея.

                          Работа с гигантскими Excel-файлами тоже «странная шибанутая вещь», вроде троллейбуса из буханки.

                          Вы же понимаете, что остальные вендоры вроде майкрософт не реализовали систему отчетности как в 1С, не потому что не могут, а потому что просто считают нецелесообразным. Гвозди логично забивать молотком, а бактерии изучать под микроскопом.


                          1. speshuric
                            12.12.2019 23:41

                            Это вообще не задача печатных форм, это задача аналитических отчетов, а точнее BI tools.

                            Ну… Где-то в мире розовых пони и танцующих единорогов оно так и есть. Реальность же сложнее и интереснее.
                            Вот есть прям классические отчёты и печатные формы. Счёт-фактура, 2НДФЛ, банковская выписка, отчёт биржевого брокера клиенту, отчёт агента принципалу. Сформировал, отправил, забыл. Со стороны клиента нет и, наверное, не может быть никакого дрилл-дауна.
                            Есть аналитики статистики, которые сидят в PowerBI, Tableau, QlikView или даже SAS (за психическое здоровье последних я уже не поручусь). Они сидят в башне из белого мрамора и пару раз в квартал/месяц/неделю снисходят к нам, глупым, неся свою мудрость (но мы-то знаем, что они ещё только учатся серьёзно обрабатывать данные на пятончике). Эти чуваки, конечно, без дрилл-дауна просто выпрыгнут с самого верхнего этажа башни, потому что это лучше и проще, чем BI без инструментов.


                            Но есть и промежуточные задачи. В рамках учётной системы оператор сделал накладную, смотрит — ой, а что это за строчка? Тыкает мышкой, проваливается в карточку товара или контрагента. А вот бухгалтер сформировал ОСВ по счёту — ой, что за странный дебетовый оборотик тут. Тыкает мышкой, листает проводки в карточке счёта. А вот завсклад, который тоже ткнул мышкой в отчёт и теперь-то понял, что за хрень с секцией №152. А вот и директор, который нахмурившись ткнул мышой в диаграмму на столбике и увидел детализированный отчёт по сложному проекту. И все они не могут себе позволить работать даже с QlikView (который как витрина достаточно прост), потому что в 1С это тык мышкой и 2 секунды, а просто найти нужные данные в QlikView или другой отчёт в 1С — это несколько минут.
                            Мы решаем бизнес-задачи и в них важны такие возможности. Да, в голой теории это можно разнести. А в практике простые возможности drill-down просто необходимы конечным пользователям.
                            Причём в джаспере дрилл-даун тоже относительно удачный для разработчика по сравнению с MS SSRS, или со старым Crystal Reports (современный лучше, но он стал SAP), или с, простите, FastReport. Я сам в нём делал такие отчёты, но после простоты 1С в данной теме мне это было некомфортно.
                            Кстати, мне лично сильно не хватает полноценного drill-down в дэшбордах и отчётах Jira и YouTrack. И я много раз видел и даже был участником, когда 1Сники за вечерок делали потрясные отчёты с расшифровкой по данным своих задач, загруженных из Jira.


                            1. Veidt
                              13.12.2019 09:17

                              Но есть и промежуточные задачи. В рамках учётной системы оператор сделал накладную, смотрит — ой, а что это за строчка?

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

                              У аудита и бухгалтерии да — всякие оборотки и «аналитические» отчеты важный инструмент, но:
                              a) опять-таки как я писал выше не понятно зачем делать это печатной формой, почему не интерактивной.
                              б) таких задач на современном хорошо автоматизированном предприятии, хорошо если 5% (там люди в основном выполняют конкретные бизнес-процессы в своих АРМах). Проверено на личном опыте.
                              А вот и директор, который нахмурившись ткнул мышой в диаграмму на столбике и увидел детализированный отчёт по сложному проекту.

                              Вот директору как раз давать формировать отчеты не во внешнем BI (где плюс отчеты за секунды формируются), а на OLTP базе, это очень опасная вещь. Не говоря уже о том что тот же Imply куда эргономичнее для рядового пользователя чем тот же СКД.

                              Еще раз это не я все придумал, это мировой опыт.
                              Мы решаем бизнес-задачи и в них важны такие возможности. Да, в голой теории это можно разнести. А в практике простые возможности drill-down просто необходимы конечным пользователям.

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


                1. Veidt
                  12.12.2019 11:41

                  JasperReports умеет выгружать куда угодно:
                  community.jaspersoft.com/documentation/jasperreports-server-user-guide-v52/exporting-report

                  Штука бесплатная. Вывод просто делается одной строкой report.exportPdf() или что-то типа того.

                  И JasperReports может вообще в графическом формате работать, не то что разные ширины колонок поддерживать.

                  Да, в 1С аналитические отчеты тоже через табличный документ (по сути печатные формы) сделаны. Но зачем — непонятно. Потому как: а) если для печати, то вообще 21 век на дворе и непонятно зачем деревья убивать, когда можно работать непосредственно в программе б) в аналитике, как правило, нужен интерактив, где в частности можно скажем группировки на лету менять без переформирования отчета и желательно drag-drop'ом как делают во всем мире.


                  1. EvilBeaver
                    12.12.2019 11:53

                    Повторюсь, я не изучал инструменты мира Java. В шарпе с PDF все довольно уныло.


        1. m-rv Автор
          12.12.2019 11:00

          Плюс 1С в том, что там есть все и сразу в одной коробке
          sing responsibility принцип не согласен с тем, что это плюс )))


          1. dzsysop
            12.12.2019 17:29

            Single Responsibility principle — это про то как организовывать и писать код, а не про то что включать или не включать в коробку.


            1. m-rv Автор
              13.12.2019 08:04

              это весьма поверхностное понимание. в каком-то смысле даже разделение властей в развитых странах — это реализация этого принципа


              1. dzsysop
                13.12.2019 16:46

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

                Именно потому что термин устоявшийся и общепризнанный среди разработчиков вы даже перешли на английский в своем комментарии, намекая на то что это ТЕРМИН, а не просто фраза на русском языке.

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


                1. m-rv Автор
                  14.12.2019 08:32

                  автор термина делал на этот счет уточнение. принцип про людей а не про код


        1. Veidt
          12.12.2019 11:07

          И чем он по вашему от того же HQL отличается?

          И он кросс-субдшный, поэтому вынужден быть минимально доступным подмножеством фич, имеющихся на всех 4 СУБД.

          MS SQL, Oracle, PostgreSQL уже лет как сто и оконные функции поддерживают и рекурсивные CTE и даже рекурсии в табличных функциях можно нормально реализовать (с пометками). Проверено на личном опыте. Так что это очень странная отговорка.


          1. EvilBeaver
            12.12.2019 11:11

            Ну да, зато они не поддерживают сквозную типизацию и обращение к вложенным таблицам, чтобы в колонке результата запроса был результат другого запроса. Еще раз: в 1С не SQL, а специализированный язык выборки данных, более близкий к EntityQL идеологически. А на SQL похоже, да. И транслируется почти 1-в-1. Но дъявол, как обычно — в деталях. И да, языку запросов 1С есть куда развиваться, кто же спорит. Но вы же понимаете разницу между "есть куда развиваться" и "полное говно"?


  1. nixoved
    11.12.2019 18:07

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


    1. EvilBeaver
      12.12.2019 11:14

      Негатив из-за некоторых набросов, вызванных недостаточной компетентностью автора в обсуждаемом вопросе (возможно, кажущейся), а не фреймворка 1С:Emterprise, как такового.


      1. Veidt
        12.12.2019 11:43

        А ну да, ну да. Как обычно «автор не разобрался». Хотя он вроде как в самом 1С даже успел поработать.


        1. EvilBeaver
          12.12.2019 11:46

          Я тоже успел. Это не показатель. И потом, я написал "возможно, кажущейся". Есть моменты в статье, которые вызывают сомнение, но возможно, это просто неудачно выбранные формулировки и неверно понятые мысли.


  1. iliabvf
    11.12.2019 18:14

    Ожидал другого от статьи, будучи 1С-ником переходящим на Java, позвольте дать несколько советов тем кто хочет выбраться из 1С:
    1.Самое первое и главное — любовь, страсть к изучению нового в Computer Science.
    Например у меня на одной из работ был коллега по 1С разработке, когда появилась 1С 7.7, он ругался, когда вышла 1С 8.0, он опять ругал 1С и не спешил что-то на ней делать, когда все клиенты начали требовать тонкий клиент, веб, упр.формы он ныл мне целый год как это плохо и сложно но изучал, я это к тому, что в современном мире разработки ее нет и не может быть!

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

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

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

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

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

    7.Максимум внимания. Когда я работал в 1С, я мог смотреть обучающие видео, или разговаривать с женой и слушать аудиокниги и оставалось еще много мозгового времени. С Java такое не прокатит, нужно всегда быть максимально включенным (как же я раньше не понимал шутки про отвлечение программиста)

    Я начал изучать Java с книги Философия Java, после того как укладывал детей спать, с 23 до 4 утра и я был счастлив. Так что изучайте технологии пока у вас есть время, позже будет тяжелее.


    1. Neikist
      11.12.2019 18:25

      к изучению нового в Computer Science.
      (и не только CS)
      выбирать инструменты… алгоритмы и решения. Уметь признавать поражение и бесконечно учиться у мастеров.

      можно много чего понять открывая исходники

      Проектирование приложения, рефакторинг, как ни странно это принесет вам удовольствие

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


      1. cjava
        11.12.2019 21:12
        +1

        А какая волшебная типизация у языка 1С в целом… Шутки про типизацию JS это детский лепет).
        Можно попытаться засунуть в, например, реквизит регистра с типом СправочникСсылка.Справочник1 значение типа СправочникСсылка.Справочник2, присвоение не произойдет, но и исключения не будет. А чего стоит их своеобразный «типизированный null» для ссылок (я про СправочникИмя.ПустаяСсылка()). Вообще с null у 1С сложные отношения. Есть null, Неопределено, ПустаяСсылка() и «00010101» у даты — видимо из-за этого и появилась костыль-функция ПустоеЗначение(). Вообще про «особенности» языка и платформы 1С можно написать не одну холиварную статью.


        1. Neikist
          11.12.2019 21:30

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


        1. m-rv Автор
          11.12.2019 21:42
          +1

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


          1. Veidt
            12.12.2019 09:55

            Для следующей статьи у меня уже более чем достаточно пунктов. :)

            Работа с null'ами это в принципе беда во многих языках. Я сначала думал что в SQL этот 3-state это жесткая штука, но после того как последнее время пришлось много на JS писать, я понял, что в SQL еще легко отделались. Хотя надо сказать, что именно для задач фронтенда (по сути «тупиковых», которые никем не используются дальше) мне JS даже чем-то понравился, и весь этот огород с undefined и null'ами воспринимается как пусть и не очень приятная, но особенность.

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

            Плюс проблему работы с null'ами в 1С можно рассматривать как частный случай проблемы отсутствия явной типизации.


          1. EvilBeaver
            12.12.2019 10:48

            Если вам понадобилось ЗначениеЗаполнено в запросе, то у вас проблемы в модели метаданных, в понимании предметной области, а не разу не в 1С


            1. m-rv Автор
              12.12.2019 11:01

              ну естественно! если вам нехватает функций 1Са — значит вы используете 1С неправильно!


              1. EvilBeaver
                12.12.2019 11:08

                А вы исключаете такую вероятность, да? Если у вас в одной колонке может быть и пустая ссылка и примитивные типы и Null, то что это за колонка? Ее точно нужно проверять на "заполненность"? А что мы будем считать "заполненностью"? Если там не Неопределено, то значит в нее что-то заполняли, причем в явном виде. И если туда "заполнили" пустую ссылку — это заполнено или нет? Ведь значение-то присваивали и присвоенное значение — это GUID 0000. Оно значимое и именно вы его туда записали. Зачем? Чтобы потом что делать с такой колонкой? Но виноват, конечно 1С, ага :D


                1. m-rv Автор
                  12.12.2019 11:16

                  Оно значимое и именно вы его туда записали

                  метод ЗначениеЗаполнено с вами не согласен


                  1. EvilBeaver
                    12.12.2019 11:27

                    Не надо путать метод языка и тип колонки в результате запроса. ЗначениеЗаполнено проверяет, что значение не является значением по-умолчанию для заданного типа. Аналог: x == default в C# 7.x. Язык запроса вернет вам значение записанное в базу данных. Проверять его на соответствие результату дефолтного конструктора типа — это не задача языка запросов. А сама постановка задачи намекает мне на то, что с этой колонкой явно что-то не так. Такая задача в принципе не должна возникать, если метаданные адекватные.


                    1. m-rv Автор
                      12.12.2019 11:38

                      ЗначениеЗаполнено проверяет, что значение не является значением по-умолчанию для заданного типа

                      разве метод называется «ЗначениеПоУмолчанию»?


                      1. EvilBeaver
                        12.12.2019 11:51

                        Разве документация говорит о его поведении что-либо иное?


                        1. m-rv Автор
                          12.12.2019 12:02

                          название говорит о его поведениии что-то другое


                          1. EvilBeaver
                            12.12.2019 12:05

                            Разве? Что, например?


                            1. m-rv Автор
                              12.12.2019 12:10

                              ну… что значение заполнено… я это как-то перефразировать должен?


                              1. EvilBeaver
                                12.12.2019 12:15

                                Дык загвоздка-то как раз в том, что такое "Заполнено". В C# с его default и в 1С есть четкое определение того, что считается заполненным. И это по сути — значение типа по-умолчанию. И работает, так как описано. А какой вы смысл в понятие "заполнено" вкладываете, я не знаю.


                                Можете сформулировать свое определение "заполненного значения" для произвольного типа данных?


                                1. m-rv Автор
                                  12.12.2019 12:20

                                  метод ЗначениеЗаполнено определяет стандарт того что в 1С считается заполненным, а что нет. таким образом, формально выражаясь:
                                  ЗначениеЗаполнено(Справочник.Имя.ПустаяСсылка()) = Ложь
                                  , что входит в противоречие с вашим утверждением

                                  если туда «заполнили» пустую ссылку — это заполнено или нет? Ведь значение-то присваивали и присвоенное значение — это GUID 0000. Оно значимое и именно вы его туда записали


                                  1. EvilBeaver
                                    12.12.2019 13:36

                                    Давайте начнем с того, что в СУБД колонки строго типизированы. А в "поле составного типа" — могут быть типизированы нестрого. За скобками оставляем, как это хранится в СУБД, мы же про язык запросов говорим и его понимание "заполненности".


                                    Итак. 1С считает значение "незаполненным", если это значение совпадает со значением типа по-умолчанию. Это документировано. Вернемся к СУБД. Есть колонка составного типа. Она может принимать значение одного из N возможных типов. Если колонку "заполняли", то тип известен, если колонку не "заполняли", то ее значение "Неопределено". На мой взгляд, здесь понятие заполнености абсолютно прозрачно. Значением по-умолчанию для "составного типа" является Неопределено. Если там что-то другое — значение заполнено. Соответствует спецификации.


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


                                    Если в скриптовом языке появится тип значения "СоставнойТипИзNДругихТипов", то его значением по умолчанию будет Неопределено, а ПустаяСсылка будет "заполненной". Но, слава Богу, такой тип никто не собирается вводить, ибо незачем. Он существует только для результатов, получаемых из СУБД и то, только потому, что СУБД имеют строго-типизированную природу и нестрогая типизация языка 1С для результата запроса эмулируется с ограничением на число типов.


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


                                    1. m-rv Автор
                                      12.12.2019 14:19

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


                                      1. EvilBeaver
                                        12.12.2019 14:49

                                        К сожалению, вы неверно меня читаете.


                                        1. Я не придумывал строгую типизацию языка запросов, напротив, я сказал, что строгую типизацию имеют СУБД, а язык запросов эмулирует нестрогую типизацию языка 1С в рамках единой системы типов.
                                        2. этот пункт просьба пояснить. Что рассыпется? У Док.Объект нет значения по умолчанию, вы неверно прочли предложение "значение незаполнено, если оно совпадает со значением типа по-умолчанию". У ДокументОбъект значения по-умолчанию, доступного в скриптовом языке просто нет. Ничего не рассыпется.
                                        3. Я пытаюсь пояснить свою мысль введением аналогии про "странный строгий тип". Аналогия не зашла, ну что-ж жаль. Неудачная оказалась.
                                        4. к какому выводу?
                                        5. Да, 1С всего лишь инструмент. Если он чего-то не позволяет, иногда надо просто понять, что задача вышла за возможности инструмента. Не все работы при ремонте квартиры можно сделать перфоратором. Даже хорошим. А вот когда перфоратором начинают вкручивать лампочки — тут и возникает мой вопрос — а вы точно знаете, что делаете?


        1. EvilBeaver
          12.12.2019 10:46
          -1

          ПустаяСсылка это не null, не пишите ерунду. ПустаяСсылка это uuid 0000-0000...


    1. DMGarikk
      11.12.2019 18:35

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

      это не всегда возможно кстати, не весь код вокруг нас — opensource, что кстати особенно касается вотчины java — энтерпрайза


      1. Neikist
        11.12.2019 18:39

        Тем не менее декомпиляторы очень неплохо спасают, если конечно есть хотя бы скомпилированная и не обфусцированная версия. ctrl+b в идее и уже смотришь декомпилированный кусок кода. В 1С же даже предположить невозможно что у конкретной функции под капотом и как будет зависеть ее работа от объема данных например. Ну и с open source все гораздо лучше конечно.


    1. m-rv Автор
      11.12.2019 19:13

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


  1. bvn13
    11.12.2019 18:40

    готовься, что если ты сейчас топовый 1Сник — твой доход скорее всего восстановится когда ты станешь уверенным middle'ом. Как правило, это не меньше 2-3 лет практики

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


    1. m-rv Автор
      11.12.2019 19:14

      с иглы 1С сразу на позицию сеньора java девелопера
      а чо, так можно было??? )))


      1. Neikist
        11.12.2019 19:49

        Ну… Я тоже перешел без потери в окладе… Правда повезло, да и как у 1сника оклад был не очень.


        1. bvn13
          11.12.2019 22:07

          А у меня есть история успеха с хорошим окладом 1сника :)


      1. bvn13
        11.12.2019 22:06

        Так нужно было. Если вкалывать, то по-полной!


  1. gennayo
    11.12.2019 19:08
    +1

    Хочется обнять и плакать…


  1. iliabvf
    11.12.2019 20:31

    Вот вам примерный план перехода с 1С на Java:


    1.Начать читать Философия Java и Javarush(не обязательно, но полезно), установить IntelliJ Idea, Open JDK


    2.Найти готовый гид по созданию CRUD приложения с нуля, технологии: Java WebApp Spring, Angular, сервер Tomcat. (все это время читать теорию)


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


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


    Дорогие коллеги по 1С, кто имеет вопросы по переходу на Java пишите сюда или в личку, готов помочь всем кому смогу по мере сил.


    1. EvilBeaver
      11.12.2019 22:16
      +1

      Да ептыть — берите и делайте фичи из проекта стат. анализатора для 1С (https://1c-syntax.github.io/bsl-language-server/) — предметная область знакомая, а написано на Java. Идеальное место, чтобы 1С-нику, оставаясь в модели языка 1С кодить на Java. Плюс крайне дружелюбное сообщество.


      1. Neikist
        12.12.2019 00:16

        Хм, почему то был уверен что вы все на C# ваяеете… Вообще то что вы предлагаете можно было бы советовать, только одно но, если сам не пользуешься инструментом — может быть неинтересно его ковырять (ну либо будет проблематично понимать потребности пользователей и фиксить ошибки). А инертность многих команд такова что его внедрить будет очень сложно))


        1. EvilBeaver
          12.12.2019 02:07

          BSL Lang Server и плагин для SonarQube написаны на Java. На шарпе сделан скриптовый движок oscript.io


      1. iliabvf
        12.12.2019 10:58

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


        1. EvilBeaver
          12.12.2019 11:22

          Аргументировать сможете?


          1. iliabvf
            12.12.2019 13:08

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


            1. EvilBeaver
              12.12.2019 13:24

              Нет, аргументировать то, почему 1С-нику не будет легче начать изучать Java с участия в около-1С-ном проекте BSL Language Server.


              1. iliabvf
                12.12.2019 16:13

                Какие технологии из полезных для получения работы использует проект? Как можно объяснить будущему работодателю что ты делал? Можно ли гордиться результатом? Сомневаюсь.
                (Как вы поняли я не любитель 1С Предприятия как платформы и 1С как фирмы и их методов, в будущем не хочу иметь ничего общего).

                Лучше наверное сделать кросс-платформеное веб приложение с оффлайн доступом, с современных фронтом и БД на облачных сервисах как альтернативу скажем не сложной Торговле или CRM?


                1. EvilBeaver
                  12.12.2019 16:32

                  Какие технологии из полезных для получения работы использует проект?

                  Из того, о чем знаю я:


                  • antlr4
                  • gradle
                  • lombok
                  • jackson
                  • language-server-protocol
                  • какая-то кодогенерация и темплейтинг

                  точнее могут рассказать авторы (думаю, они читают тред)


                  Как можно объяснить будущему работодателю что ты делал

                  … я делал статический анализатор кода с парсером на базе antlr, работал с графом узлов AST. Применял паттерн visitor, библиотеки А,B,C DI-контейнер X, писал правила эвристики, выявляющие ошибки в чужом коде


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

                  решение enterprise-класса, применяемое в десятках крупных предприятий страны, чем не повод для гордости


                  1. iliabvf
                    12.12.2019 17:24

                    может и так, и все это как костыль для «языка» 1С? Круто


                    1. EvilBeaver
                      12.12.2019 19:10

                      Не совсем понятно, как статический анализ может являться "костылем" языка? Причем, неважного какого. Вот есть SonarQube для C# — это костыль для C# или как?


                      1. iliabvf
                        12.12.2019 19:58

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


  1. vis_inet
    11.12.2019 21:32

    На Java вы уже достигли уровня дохода, который был на 1С?


    1. gennayo
      11.12.2019 21:54

      К счастью, не всё измеряется уровнем дохода :))


      1. bvn13
        11.12.2019 22:08

        Твой следующий чекпоинт — Scala :)


  1. EvilBeaver
    11.12.2019 22:12
    +1

    Какая-то немного путанная статья… Старание изучать новое, безусловно, похвально, но вы и сами отметили, что 1С-ники шарят в быстрых запросах намного лучше многих и многих тертых Джава/Шарпистов. Я сам сейчас наблюдаю на работе (перешел в C#) как "ведущие погромисты" такое в SQL отправляют и потом думают: "а где же тормозить может...?"


    Далее — анализ предметной области, анализ задачи. У 1С-ников в крови понимание смысла предлагаемой бизнес-идеи, и отсюда гораздо более качественная ее декомпозиция на модули, сущности, интеграции. Опять же, "настоящие" программисты — специально пишу в кавычках, потому что уже насмотрелся на них — говнокодеры похлеще самых сраных 1С-ников — думают про иерархии классов, а будет ли на выходе адекватная система, которая делает то, что от нее хотели — им пофиг. Если аналитик за них не подумал, лепят горбатого и прикрываются отмазкой "ну так в аналитике". А то, что сука, здравому смыслу постановка противоречит и хотя бы задуматься "а не накосячил ли аналитик" — нет, это выше моих сил, я вот классы будут сверху до низу проектировать, смысл это не ко мне.


    Средней руки 1С-ника можно смело ставить лидом аналитиков, не прогадаешь. Да еще и SQL соптимизирует и ORM-щиков краснеть заставит.


    1. m-rv Автор
      12.12.2019 08:19

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


      1. EvilBeaver
        12.12.2019 09:02

        Не прижилась? Где не прижилась, откуда информация? Программист, который понимает смысл задачи, а не monkey-coder, который делает РОВНО то, что написано — приживётся везде, и будет любим и оплачиваем


        1. m-rv Автор
          12.12.2019 09:10

          SAP например не соединяет функции аналитика и программиста в одном человеке. да и 1Сные конторы как только поднимаются чуть выше плинтуса обзаводятся аналитиками/методологами.


          1. EvilBeaver
            12.12.2019 09:14
            -1

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


            1. m-rv Автор
              12.12.2019 09:25

              ну и поинт то в чем? пусть ваш сильный разработчик сходит в гугл — расскажет им что он достоин зп $200k в год, потому что он прошел школу жизни


              1. EvilBeaver
                12.12.2019 09:57

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


                1. m-rv Автор
                  12.12.2019 10:04

                  Не обязательно быть 1С-ником, чтобы быть говнокодером. Верно и обратное
                  это правда


            1. Neikist
              12.12.2019 09:30

              А помимо синтаксиса еще поменять голову, которая совсем к другому программированию привыкла))


              1. EvilBeaver
                12.12.2019 09:55

                При наличии оной — это несложно. Скажем так, если делал курсовик на C на первом курсе — можешь писать на чем угодно из мейнстрима.


                1. Neikist
                  12.12.2019 10:03

                  Ну, на первом курсе у меня еще ПК не было, но курсе на третьем читал K&R. И да, писать то можно на чем угодно. Но писать ХОРОШО — далеко не факт. Ну и C — тоже процедурный язык. Перестроить голову на ООП и ФП — далеко не просто (даже если забыть про маргинальные случаи вроде акторов (хотя не такой уж и маргинальный), хардкорных ФП языков и прочего).


  1. tundrawolf_kiba
    11.12.2019 22:40

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


    1. m-rv Автор
      12.12.2019 08:06

      хорошая штука, спасибо. посмотрел пару задач — чем-то напоминает хакерранк


      1. tundrawolf_kiba
        12.12.2019 13:02

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


        1. m-rv Автор
          12.12.2019 13:19

          я не знаю есть ли у хакерранка платные услуги, но я обошелся без них, полностью free.
          и раздел interview preparation там действительно есть, но есть и problem solving на котором надо тренироваться


          1. tundrawolf_kiba
            12.12.2019 13:50

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


  1. ZEEGIN
    11.12.2019 22:42
    +2

    Как показывает практика нормальный 1Сник осваивает java на уровне хорошего мидла за неделю.
    Смотреть здесь https://github.com/1c-syntax/bsl-language-server


    1. Neikist
      12.12.2019 00:30

      Хм, больно крутые у вас 1сники. Я до сих пор в байт-коде почти не шарю, (особенно том что для классической jvm а не для андроидных далвика и арта, все таки отличаются довольно неслабо они, да и не очень интересно мне), с многопоточностью пробелы гигантские, да с адекватным построением архитектуры и паттернами пробелов немало. Про библиотеки и вспоминать страшно, сколько их существует и сколько еще не знаю. А ведь почти год как начал изучать и писать на ней. На котлине правда, но один фиг jvm. Это я еще не вспоминаю про сопутствующий инструментарий вроде обработчиков аннотаций, гредла с мейвеном, докеров всяких и прочей бубуйни.
      Ну ладно можно вдвое сократить сроки за счет того что я не сказать что очень активно впахиваю. Ну еще вдвое за счет того что менторов нет и приходится до всего доходить только головой и гуглом. Еще вдвое можно скостить за мою общую тупость. Ну даже еще вдвое за то что был посредственным 1сником — все равно не вижу как можно за неделю освоить java на уровне хорошего мидла.


      1. EvilBeaver
        12.12.2019 02:08

        Тут место для картинки "C++ за 21 день"


      1. ZEEGIN
        12.12.2019 09:34

        Архитектура и паттерны не относятся к java. Это фундаментальные знания.
        Байт код мидлу нахер не нужен.
        Принципы построения многопоточности во всех языках похожи.
        Библиотеки всегда учатся только те, которые нужны. В целом одна дополнительная библиотека осваивается от 2 часов до недели.
        Градл мавен докер надо понимать, но чем это
        отличается от других сборщиков? мидлу не обязательно лезть в дебри. Надо уметь настраивать сборку и понимать последовательность. В 95% случаев за сборки отвечают более опытные разработчики, чем среднестатистический мидл. Ну а докер вообще к яве не относится. Предполагается что ты его уже знаешь! Все ведь запускали 1с и edt в докере, нет?


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


        1. Neikist
          12.12.2019 09:55

          Архитектура и паттерны не относятся к java. Это фундаментальные знания.

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

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

          Угу, обенно в 1с и java. Очень смешно, да.
          Библиотеки всегда учатся только те, которые нужны.

          Тем не менее нужно их много, и на разных местах/проектах они разные. И багаж этих знаний у мидла довольно высок чтобы без проблем выбирать нужные под конкретную задачу, зная подводные камни и плюсы каждой.
          Градл мавен докер надо понимать, но чем это
          отличается от других сборщиков? мидлу не обязательно лезть в дебри. Надо уметь настраивать сборку и понимать последовательность. В 95% случаев за сборки отвечают более опытные разработчики, чем среднестатистический мидл. Ну а докер вообще к яве не относится. Предполагается что ты его уже знаешь! Все ведь запускали 1с и edt в докере, нет?

          Вы живете в мире сказочных пони. Большинство 1сников до сих пор ни разу не слышали про докер, на edt ругаются, а системы сборки для них магия. Опять же, мне вполне себе в последнее время приходится ковыряться с gradle. CI вот буду настраивать в скором времени. А я ведь еще даже не мидл. Да и докер только как пример был. Нормальному разработчику еще дофига чего нужно знать из ПО, чего средний 1сник не встречал.

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

          Если говорить об 1снике который как и большинство их замкнуты в 1сной экосистеме и за ее пределы не выходили — это те же годы почти. Ну раза в 2 скостить можно.
          Если говорить о прошаренном 1снике который старается быть в курсе того что и как в других экосистемах — будет чуть проще, но одна теория и домашние эксперименты без тысяч часов практики погоды не сделают, но да, въехать будет проще.
          Ну и про изучение явы с нуля без фундаментальных знаний и без опыта — 2 года это вы махнули. За этот срок если у человека не исключительные способности и если он не впахивает по 100 часов в неделю — мы хорошо если jun+ получим.


          1. ZEEGIN
            12.12.2019 11:08

            Вы были на последнем инфостарте?
            Сейчас про докер едт и системы сборки не знает только совсем темный и ленивый.


            1. Neikist
              12.12.2019 11:23

              Не всем оплачивают инфостарт. Тем более что мне он уже перестал быть интересен. Вы сейчас серьезно опыт пары-тройки тысяч 1сников пытаетесь на всех растянуть?


              1. EvilBeaver
                12.12.2019 11:30

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


                1. Neikist
                  12.12.2019 11:34

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


                  1. EvilBeaver
                    12.12.2019 11:56

                    Да, есть проблема в нежелании 1С-ников вылезать из своего мирка. Но разве это проблема 1С, как фреймфорка?


                    1. Neikist
                      12.12.2019 12:01

                      Коммьюнити формируется в т.ч. усилиями вендора. Ну и как бы выше просто упомянули «опытного 1сника», т.е. примерно медианного, без всяких оговорок, и он якобы подтянется до уровня хорошего мидла за неделю. Хотя, я уверен, даже человеку приходящему из гораздо более близкой экосистемы C# потребуется месяц-другой чтобы сравняться с нормальным мидлом java. Ровно и наоборот.


                      1. EvilBeaver
                        12.12.2019 12:04

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


                        1. Veidt
                          12.12.2019 12:14

                          «С козырей решил зайти» :) Вы еще COBOL вспомните.


                          1. EvilBeaver
                            12.12.2019 12:17

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


                            1. Veidt
                              12.12.2019 12:22

                              Ну а на COBOL по городским легендам проводится 80% всех финансовых транзакций в мире. Только непонятно зачем на них смотреть. Они как и 1С заняли свои ниши, не по причине качества продукта, а потому что были первыми на рынке, которые ему хоть что-то цельное предложили. Но это не повод всю жизнь оставаться в «средневековье».


                            1. Neikist
                              12.12.2019 12:40

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


                    1. Veidt
                      12.12.2019 12:13

                      Вопрос в том, что 1С в принципе не хочет интегрироваться в IT-сообщество. Может или не может технически (например использовать готовые системы управления зависимостями, или встраиваться через всякие DI) другой вопрос, но не хочет это точно. И понятно почему, им выгодно, чтобы 1С-ники не смотрели по сторонам. А то начнут сбегать к бесплатным конкурентам не дай бог при любой возможности, и вендор-лок ослабнет, а 1С потеряет деньги.


        1. m-rv Автор
          12.12.2019 10:06
          +1

          все что вы описали 1Сник не знает, даже опытный


          1. EvilBeaver
            12.12.2019 10:51

            Это написал опытный 1С-ник и я подтверждаю, что он это знает. Если вы, работая с 1С, всего этого не осилили, то обобщать на всех, право, не стоит


            1. m-rv Автор
              12.12.2019 11:05
              +2

              come on! а middle Java developer умеет проводить операции на сердце и запускать ракеты в космос!
              давайте будем честны: если мы говорим о массовом сегменте — 1Снику не свойственны такие знания


              1. EvilBeaver
                12.12.2019 11:59

                Хотите, я вам покажу пару десятков профессиональных C#-разработчиков, которые про докер не знают ровно ничего? А про async/await они знают, что это хорошо, но не знают почему. Быть невеждой можно не только на 1С, это не проблема фреймворка.


                1. Neikist
                  12.12.2019 12:02

                  Но это автоматически означает что они ни разу не мидлы, а просто мимокрокодилы какие то.


                  1. EvilBeaver
                    12.12.2019 12:06

                    Нет. В трудовой книжке и в зарплатной ведомости у них написано, что они мидлы. Да и в прицнипе, C# знают хорошо, библиотеки, фреймворки. Но только на уровне ежедневных потребностей. Вглубь не лезут. Это потому, наверное, что Microsoft плохой и .NET говно.


                    1. Neikist
                      12.12.2019 12:09

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


                      1. EvilBeaver
                        12.12.2019 12:13

                        Боюсь, классификация джун/мидл/сеньор слишком условна, чтобы завязываться на нее в дискуссии. То, что я понимаю под словом "мидл" — они этому соответствуют. Задачи делают, библиотеки знают, на ревью откровенного говна отдают немного. НО — дальше рамок своих служебных задач не интересуются. Докер, Девопс, особенности TPL и async — "зачем, оно просто работает и я знаю, как это использовать". Это мидлы, в моей классификации, а в вашей — возможно нет, см. первое предложение в этом каменте.


                    1. m-rv Автор
                      12.12.2019 12:09

                      ну вы бы еще посмотрели что у них в резюме написано


                      1. EvilBeaver
                        12.12.2019 12:10

                        Не понял тезис. А чем мне бы это было полезно?


            1. Neikist
              12.12.2019 11:29

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


              1. androidt1c
                12.12.2019 13:19

                Вот я — 1С-ник со стажем 18 лет. И впервые слово Докер прочитал тут в комментариях. Мельком погуглил — на кой вообще это нужно тем, кто занимается 1С?


                1. Neikist
                  12.12.2019 13:41

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


                  1. EvilBeaver
                    12.12.2019 13:46

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


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


                    Вывод: "товарищи" выше не утверждают ничего необычного, и уж тем более того, что докер знает любой 1С-ник.


                    1. Neikist
                      12.12.2019 13:52

                      Цитирую ZEEGIN

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

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


                      1. EvilBeaver
                        12.12.2019 13:56

                        "ленивый и совсем темный" не подразумевает "1С-ник", верно же?


                        1. Neikist
                          12.12.2019 14:04

                          Ммм… И? Во-первых среди 1сников таких гораздо больше по моим наблюдениям, среди них вообще немногие программированием интересуются и развиваются в этом направлении спустя время. Во-вторых из за обособленности экосистемы и коммьюнити 1снику таки сложнее перескочить. И уж тем более сразу за неделю с уровня мидла в 1с на уровень мидла в java/kotlin/c#/js/etc.


                          1. EvilBeaver
                            12.12.2019 14:50

                            За неделю не знаю. Без бэкграунда точно нельзя, а с бэкграундом и stackoverflow под рукой — думаю можно


    1. m-rv Автор
      12.12.2019 08:10

      смотря что вы называете уровнем хорошего мидла…


  1. krav_sergey
    12.12.2019 08:08

    Спасибо за статью. Некоторые «особенности» 1С-разработки подмечены очень точно.

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

    — а от этого вообще чуть слеза не покатилась)

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


    1. EvilBeaver
      12.12.2019 09:04

      Когда начнете писать энтерпрайз-приложения с базой данных, моделями предметной области и ui — вспомните 1С не одним добрым словом, поверьте.


      1. Neikist
        12.12.2019 09:25

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


        1. EvilBeaver
          12.12.2019 09:46

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


          1. Neikist
            12.12.2019 10:00

            1с хороша только в основном за счет доступности кадров в регионах, выстроенной системе франчей, низкого порога входа и большого количества готовых решений многое в которых open source, пусть и платно. Преимуществ в платформе как таковой особых нету. Не говоря уж о языке. Даже какой нибудь js (чтоб его черти сожрали, ужасная дрянь) — пусть уродлив, но куда гибче.


          1. Veidt
            12.12.2019 10:11

            Кстати. Меня постоянно пинают, что я в статье не упомянул плюсы 1С. И я честно ищу их для второй части статьи, чтобы она была не такой однобокой.

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

            Другое дело, что в современном мире польза такой расширенной работы в отчетах, а особенно в оборотках весьма сомнительна. Современные системы должны быть (и бывают) куда более бизнес-процесс ориентированными, где пользователь работает в АРМах, где он одновременно и видит нужную ему информацию и вводит ее в систему. А в этом плане у 1С все очень плохо. А оборотки (и другой интерфейс аналитических отчетов) по сути важны в процессах аудита / бухгалтерии и там где процессы очень плохо автоматизированы. Как инструмент же BI СКД очень неудобен.

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


            1. speshuric
              12.12.2019 21:46

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


              1. (Мой любимый пример) Числа. В 1С есть только аналог BigDecimal в контексте переменных встроенного языка (и numeric/decimal в данных). Это офигенно роняет производительность (сравните цикл инкрементов до миллиарда с любым языком, даже с Python). Но сколько же раз я видел ошибок прикладных программистов в решениях связанных с этим. То float начинают для денег использовать, то с округлением напортачат, то за maxint уйдут, то в конвертации между типами ерунду наделают. А как прекрасно выглядит java-код, который интенсивно работает с bigdecimal/biginteger! Особенно через пару месяцев, после его написания. Я после пары раз такого опыта, для этих задач настоятельно рекомендую kotlin или scala (ну или .NET) — там хотя бы перегрузка операторов есть.
              2. Unicode. Что, блин, может быть проще? Не надо в 2019 году использовать однобайтные ASCII кодировки (кроме интеграции с дремучими legacy). Ни за что. Но нет же. Раз в год-два я очередной раз объясняю людям, что надо использовать nvarchar и не надо однобайтный varchar в БД (когда этой системы будет 100-200 инсталляций кастомизированных по несколько ТБ и в одной самой ценной невозможно будет внести имя клиента — будет прикольный фэйл). В 2015 году у gitlab отваливалась LDAP-авторизация из-за неправильной работы с кодировками, у JetBrains IDE до сих пор не везде работает с кириллицей в именах файлов. Ну чёрт подери — доколе?
              3. Нумерация документов/справочников. В 1С она точно не самая гибкая и не самая лучшая. Но что делают в банковском софте и в самописных системах учёта — ну это же просто мрак. То identity воткнут (и потом "ой, а почему у нас дырки"), то наоборот, сделают генератор, который работает с блокировкой на уровне СУБД (и станет узким местом).
              4. Составные типы. Я не рад тому, как это сделано в 1С. Но опять же ровно до того момента, как приходит пора увидеть очередную попытку их переизобрести в самописных решениях. Ну как же так вот у этих людей (senior+ уровня!) и гуру C# и Java получается сделать ещё хуже? Да даже с идентификаторами ссылки. 1С приняла волевое решение — всё, все идентификаторы ссылок абсолютно синтетические, но последовательные, примерно как NEWSEQUENTIALID в MS SQL и нет больше проблем, например, при репликациях/обменах. Нет же, разработчики других систем упрямо лепят что-то типа identity (она же короче!), тащат их в GUI, пока не придёт пора делать несколько связанных инстансов (и тут их ждёт открытие).
              5. Ещё одна мелочь — отображение списков. В 1С есть достаточно удачные механизмы листания (больших) списков и навигации по ним. Вообще тема достаточно неприятная, она идеально не решается: тут либо интуитивно и просто (но риск огромных рекордсетов на клиенте), либо той или иной кривизны пейджинг. Те, кто делают пейджинг часто делают его криво. Те, кто делает честный скроллбар — кладут базу данных, канал и клиента.
              6. Одно место для проектирования пользовательского интерфейса (я про управляемые формы). Спору нет, в веб-клиенте интерфейс работает не то чтоб идеально. Но работает. А вот для многих других учётных и банковских систем сделать удалённое рабочее место — это проект уровня предприятия. Оговорка: к счастью для тех кто изначально сделал на вебе это либо не нужно, либо есть Электрон.

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


              1. Veidt
                12.12.2019 22:35
                +1

                Все то, что вы написали стандартный «набор джентельмена» для любой высокоуровневой (в частности ERP) платформы. И все они в 1С реализованы мягко говоря так себе. Я надеюсь вы читали эту статью.

                В ваших же пунктах вы кстати почему-то сравниваете с совсем низкоуровневыми платформами вроде Java (даже не .Net где хотя бы LINQ есть). Ну и составные типы если они ссылочные, то это просто костыль для обхода наследования, а если там мешаются разные примитивные типы, то это мина замедленного действия с точки зрения производительности (и сам 1С не рекомендует их использовать по сути). Впрочем в статье выше это все есть.


                1. speshuric
                  13.12.2019 01:09

                  1. Вашу статью я читал. С чем-то согласен полностью, с чем-то частично, с чем-то полностью не согласен, но статья очень хорошая. Даже начинал писать комментарий, но а) я понял, что он по объёму может стать сопоставим со статьёй, б) там и так тьма комментаторов (и опять же — с кем-то согласен, с кем-то нет). Писать такой комментарий ради "в интернете кто-то не прав" — только тепловую смерть вселенной приближать :)
                  2. Все то, что вы написали стандартный «набор джентельмена» для любой высокоуровневой (в частности ERP) платформы. Для SAP и DAX — соглашусь, но если посмотреть шире, то боюсь разрушить вашу веру в человечество. Если б вы знали, какой трешак происходит в банковской и финансовой сфере даже по перечисленным пунктам.
                  3. В ваших же пунктах вы кстати почему-то сравниваете с совсем низкоуровневыми платформами вроде Java (даже не .Net где хотя бы LINQ есть). Потому что эти пункты низкоуровневые. Я могу, наверное, 100 пунктов хорошего и 100 плохого написать разной степени низкоуровневости и высокоуровневости. Потому и выбрал именно эти пункты, что сравниваю не только и не столько с Java, сколько со всеми распространёнными языками/платформами. Всё перечисленное применимо для Java/JS/C# и большая часть для Ruby/Python, а то что про СУБД для SQL Server/Oracle/PostgreSQL/MySQL.
                  4. Главный посыл, что если в платформе/среде есть доступ к распространённым языкам программирования (Java/JS/C#), или прямой доступ к структуре БД, то скорее всего будет возможность, особенно на ранних стадиях разработки решения, наделать решений, которые для этого класса задач будут очень неприятными. А в 1С — не самые лучшие решения, но от типичных грубых ошибок спасают. Я был бы рад, если бы этих грубых ошибок не было, но я их вижу в крупных финансовых организациях во всех без исключений. И во многих "не ERP" решениях (Jira, gitlab, IDEA прямо упомянуты). Отсутствие этих ошибок позволяет гораздо быстрее создать MVP на 1С (в определённом классе задач) и позволяет MVP дальше масштабировать.
                  5. Ваши статьи по lsFusion внимательно читаю. Не со всем согласен, настроен скептически, но искренне желаю удачи.
                  6. Ну и составные типы если они ссылочные, то это просто костыль для обхода наследования Мне кажется, что правильнее было бы приводить аналогию, что это тип-сумма из алгебраических типов данных, которые активно используются в ФП. Но работа с ними по-хорошему требует полноценного pattern matching и вообще, гораздо более зрелой работы с типами. Но это всё споры типа "эта какашка больше похожа на орхидею или на розу" — не похожа она ни на то, ни на другое и вообще лежит и пахнет.
                  7. мина замедленного действия с точки зрения производительности — не такого уж и замедленного, ага, и я выше кидал ссылку на свою статью.


                  1. Veidt
                    13.12.2019 10:14

                    какой трешак происходит в банковской и финансовой сфере даже по перечисленным пунктам.

                    Я в курсе. Но да, фокус в том, что и не понятно какие платформы там использовать. С их то требованиями к ИТ.

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

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

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

                    7. Ну так в статье есть ссылка на рекомендации по использованию их самим 1С. И она сводится по сути к тому что: не используйте.


      1. m-rv Автор
        12.12.2019 09:30
        +1

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


    1. PS_erg
      12.12.2019 13:26

      Почему Swift, а не Java? Как прогресс?


      1. krav_sergey
        12.12.2019 16:33

        Субъективно больше понравился. Наверное, потому что я отдаю предпочтение iOS, нежели Android. Интереса ради поставил как-то раз Хакинтош, запустил Xcode и понял, что все это время жил неправильно. Строгая типизация, подсветка синтаксиса и ошибок, именованные параметры у функций, замыкания, опциональные значения… В общем для человека, не видевшего ничего кроме 1С — это было сильно.
        Сейчас прохожу курсы. Как закончу, буду работу искать.
        С чем тяжело, так это думаю с декомпозицией, архитектурой. В 1С процедуры по 4000 строк, делающие все и сразу — в порядке вещей. Хочется писать красивее)


        1. Neikist
          12.12.2019 16:40

          Брррр. Ну про 4к строк это вам просто видимо с конфой не повезло. Все таки так даже на 1 не пишут.


          1. krav_sergey
            12.12.2019 17:03

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


        1. PS_erg
          13.12.2019 08:47

          Интересно было услышать мнение другого человека, что на том же пути. В 1С больше 10 лет, до этого немного паскаля, делфи, с, с++. Давно хотел заняться мобильной разработкой, но руки не доходили. Делал приложения и под IOs и под Android на мобильной платформе 1С, но это, если честно, ужас. Посмотрел курс Стэнфорда по Swift, кое-что повторил, понравилось. Учу английский, на русском информации очень мало, да и вакансий тоже мизер.


          1. krav_sergey
            13.12.2019 10:09

            Я с 1С лет 6 проработал. В какой-то момент стало скучно. Даже с учетом того, что появляются какие-то новые вещи типа расширений и EDT — все равно тоска.
            Тоже пробовал мобильную платформу от 1С, но что-то не зашло. Swift начинал изучать также со Стэндфордских курсов. Делал все лекции, ДЗ. Потом понял, что не хватает базы, смотрел курсы cs160a, cs106b — тоже Стэнфорд. Потом еще алгоритмы и структуры данных на Coursera, мобильная разработка на edx, задачки на HackerRank — в общем все, на что времени хватало) На английском несопоставимо больше информации. Хотя сейчас прохожу русские онлайн курсы. К ним, конечно, много вопросов в плане качества, но полезную информацию я и оттуда получил.


            1. Neikist
              13.12.2019 10:18

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


              1. EvilBeaver
                13.12.2019 10:30

                Просто мобильная разработка сама по себе появилась не так давно по времени. Новое, развивающееся, востребованное. Туда не только из 1С уходят. Доля стационарных PC в мировом трафике все ниже


  1. Irwin
    12.12.2019 08:16

    Еще хороший вариант готовиться к экзамену 1Z0-815/816 или 1Z0-808/809. Можно не сдавать, но добиться прохождения пробных тестов на 70-80%. Позволяет посмотреть на многие вещи в Java под другим углом, не так, как их понимаешь при прохождении курсов и написания домашних проектов.


    1. m-rv Автор
      12.12.2019 08:21

      как мне кажется, это хороший способ вылезти из мидлов в синьеры, а не из 1Сников. но может кому-то прийдется по душе…


  1. redskif
    12.12.2019 11:16

    С JavaRush как то не законченна мысль. Стоит потом продолжать проходить уровни с 15 по 40 или нет смысла если придерживаться программы из статьи?


    1. m-rv Автор
      12.12.2019 11:20

      я бросил, не знаю что там дальше 15 уровня


  1. kazinaki
    12.12.2019 11:18
    +1

    О, как мне это знакомо. 3 года назад, после 13 лет 1с-а понял, что хочу что-то новое. Не помню уже конкретно почему (что-то прочитал в инете про выбор языка программирования), но выбрал Android разработку. Так же начал читать про джаву, потом всякие сайты по программированию Android. Даже купил и прошел курс «мобильный разработчик» на geekbrains.ru. Это, наверное, самая глупая трата денег в моей жизни.
    Через пол года начал слать резюме в разные компании. Сейчас с улыбкой вспоминаю, свои тестовые задания с сетевыми запросами на AsyncTask-ах и God Activity. В одной, после тестового задания, мне отказали, но hr (спасибо ему большое) выслал мне перечень с ссылками, что надо изучить: rxJava, Clean Arhitecture, MVP, Dagger… Еще месяца через 3-4 уже что-то мог писать на Rx-ах и устроился в одну компанию, которая разрабатывала приложение на Xamarin и С#, ну там в процессе работы переучился на C#. Переход Java -> C# гораздо легче, чем 1C -> Java. Там работал 2,5 года, почти каждый день узнавал, что-то новое. И пришел к понимаю, что хочу разрабатывать на нативе, ушел в другую компанию. Теперь пишу на Java и Kotlin.
    По зп, где-то через год достиг своей 1с зарплаты. Но, как писали выше, деньги конечно хорошо, но это не главное. Главное, что получаю удовольствие от работы. 1С очень ограниченный язык, да и знание бухгалтерии (которая достала) необходимо.
    Ощущение от перехода с 1с на Java: вот дали тебе большой лист бумаги, а ты в уголочке рисуешь одним простым карандашом, и внезапно узнаешь, что есть и карандаши других цветов, и лист большой, и до хрена чего нарисовать можно.
    Извините, сумбурно получилось.


  1. Nilpferd
    12.12.2019 11:27

    Самое важное тут — это Тим лид. Ты должен был познакомиться с ним на тех.собесе и «он должен был выбрать тебя и ты должен был выбрать его» (с).

    "— А как я узнаю, что он меня тоже выбрал?
    — Он захочет тебя убить…" ©


  1. longmaster
    12.12.2019 13:24
    +1

    Вставлю свои 5 копеек. Интересно, а много вообще людей пришли в программирование, сразу начиная с 1С? Я лично пришёл в 1998 году, когда только вышла 7.5. Пришёл с неоконченной вышкой, и уже определенным общим багажом знаний, включая опыт решения задач на всяких Бейсиках, асмах, Си(++), Паскалях. До 1С шабашил написанием курсовых и дипломов. На том языке, который требовался заказчику. Это конечно не было серьёзными масштабными проектами, но тем не менее. И дальше ещё несколько лет, уже став ведущим разработчиком 1С, сейчас бы это называлось тим лид, тогда таких слов не было, я очень активно продолжал заниматься ещё множеством других технологий.
    То, что теперь называется фулл стэк. Да, конечно же, времена очень сильно поменялись. И сейчас поддерживать тот уровень, который удавалось держать тогда во множестве технологий, уже практически не реально. И я со временем ушёл полностью в 1С. Просто потому, что мне это было интересно, и за это всегда и везде платят вполне хорошие деньги по меркам ИТ. Со временем я, конечно же, стал перегорать. И сейчас 1С уже просто как средство для обеспечения всей остальной жизни. А в остальной жизни вернулся к старым навыкам, которые уже не работа, а хобби: микроконтроллеры, паяльник, юниксы, си, php, JS. Конечно же, я не претендую на то, что быть сеньйором во всём этом зоопарке, но и врядли много найдётся джунов, которые со мной потягаются.
    Так что я к чему всё это? Я не признаю определения 1Сник, Джавист или Шарпист. Есть программисты. Хорошие, и не очень. И криворукие уроды ещё :-).
    Да, ещё есть и 1Сники, но это те, которые консультируют и настраивают, они не программисты, и практически никто из них никогда не станет хорошим программистом. Но исключения тоже бывают.
    Изучить конкретный инструментарий, это дело некоторого времени, и самое главное — наличия причин для этого. Тут автор всё правильно написал, прямо сразу даже мидлом не получится. Вот вариант — как это делать, я вижу единственный приемлемый: это работая в компании, в которой используются разные технологии, постепенно сместится в другой сектор. У нас сейчас, в крупном фин.холдинге, среди коллег люди так и приходили в 1С, и уходили из неё.
    Упираться рогом, типа «опостылила эта ваша 1С!» и уходить просто в никуда с нуля, это весьма спорное решение. Я вот для себя причин не могу найти, даже при том, что для меня другие технологии представляются примерно как вождение машины, трактора или квадроцикла. Если действительно хорошо умеешь на одном, то на любом другом виде поедешь практически сразу, а через короткое время и наработаешь навыки до должного уровня, при желаемом условии постоянной реальной практики. По деньгам, по месту работы, по должностям, по перспективам — лично для себя я не вижу причин, уходить с 1С. Я вижу только одну возможную причину — ненависть :-). Скорее всего конкретно к прикладным областям. Тут можно походить к психиатру, но у нас это не принято :-). Сам я считаю это скорее моим преимуществом в области ИТ: я отнюдь не чистый ИТшник, я знаю ещё массу всего о хоз.деятельности, причём во множестве отраслей. Благодаря тому, что прошёл весь положенный путь от франча, и включая многопрофильные компании.


    1. EvilBeaver
      12.12.2019 13:40

      Дай расцелую!


    1. Neikist
      12.12.2019 13:45

      Интересно, а много вообще людей пришли в программирование, сразу начиная с 1С

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


  1. Nilpferd
    12.12.2019 14:22
    +1

    Упираться рогом, типа «опостылила эта ваша 1С!» и уходить просто в никуда с нуля, это весьма спорное решение. Я вот для себя причин не могу найти, даже при том, что для меня другие технологии представляются примерно как вождение машины, трактора или квадроцикла.

    1С — это песочница с более низкими бортами, по сравнению с другими фреймворками. И здесь реально(пока реально!) годам к 35 достать до края этого бортика и понять, что именно в разработке здесь принципиально далее двигаться некуда. Сфер применения мало. Ну производство, ну WMS, ну ритейл, ну ещё несколько вариантов. Опробовав и наладив в каждой из сфер свое решение, проект, одно, второе, третье, далее понимаешь, что следующее — это просто калька с предыдущего. И всё — далее потеря интереса к работе, потому что начинается день сурка.
    Доходы тоже ограничены сверху. Ну вырос ты в своем городе до потолка по доходам. Далее — ну переехал в столицу, там вырос по доходам до верхнего уровня. И всё. Куда далее? За пределами бывшего СНГ 1С не распространено, включать трактор без смены профиля смысла нет.
    Уходить в руководство — это опять-таки отказ от себя в роли разработчика.
    Становиться фрилансером многостаночником, развивать свое — это тоже уже не разработка, да и ситуация с интересной работой ещё хуже, чем в первом абзаце.
    Вот и получается что на четвертом десятке лет перед человеком встает вопрос о смене песочницу на другую, где борта повыше, а перспектив побольше.


    1. EvilBeaver
      12.12.2019 14:52

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


      1. Neikist
        12.12.2019 14:53

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


      1. Nilpferd
        12.12.2019 15:03

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


    1. longmaster
      13.12.2019 10:54

      Всё примерно так. Но тут уж тогда вопрос глубже. Работа для жизни, или жизнь для работы?
      Я за свои уж более 20 лет стажа прошёл уже практически всё упомянутое: и руководство, и несколько городов сменил, от мелких к крупным. Ну разве что фрилансом сильно не увлекался, там тоже надо иметь определенный склад характера, важно быть не столько программистом, сколько предпринимателем. Заграницы мы с супругой рассматривали, и пришли к выводу, что они того не стоят. Большинство из наших знакомых, которые свалили, страдали откровенным отвращением ко всему советскому/российскому/русскому, и именно это было основным их движетелем. Мы такой фигнёй не страдаем. В остальном надо себе отдавать отчёт обо всех сопутствующих неудобностях: другая культура, языковой барьер, фактический разрыв с друзьями и родственниками и т.п. И ради чего тогда всё? Я езжу по заграницам, и мне интересны не тур.достопримечательности, а повседневная жизнь людей там, насколько её можно так мельком разглядеть. И я не вижу, чтобы я, мы как семья, могли рассчитывать на принципиальное улучшение качества жизни. Скорее наоборот, очень реально в нём потерять.
      В итоге теперь, уж на пятом десятке, да, честно могу признать, я подвыгорел.
      Вот только во-первых, каждое утро по прежнему иду на работу с удовольствием: крутая компания, один из лидеров в своей отрасли, отличный коллектив, хорошее отношение.
      Во-вторых: полная уверенность в стабильности себя и семьи. Я найду работу практически где угодно и когда угодно, будь то Москва, или мухосранск. И по меркам места она будет вполне достойной. Мы можем в любой момент распродать недвижимость тут и переехать практически в любую точку России, будь то Владивосток, Сочи или деревня в средней полосе. И я, при всё критическом восприятии мира, не вижу причин, чтобы в перспективе 10-20 лет что-то поменялось в этом плане. Как говорится, лишь бы не было войны.
      В-третьих: о планке сверху. Я стараюсь отслеживать тенденции зарплат в ИТ. И я как-то вот нифига не вижу, чтобы в других специализациях планки были сколь-нибудь заметно выше. Да, выше бывает в относительно узкоспециализированных направлениях, те же SAP/Axapta. Или правильнее сказать — были выше. Вот только резко сужается свобода выбора места работы. И куда чаще бывает, что выше планка зависит не от специализации, а от эксклюзивных условий работы, пресловутой «незаменимости». Вот в таких условиях и 1Сники сидят сильно далеко за 200 т.р., и не только в Москве.
      В-четвертых: уже давно таки работа для жизни. Как разработчик, я реализуюсь теперь уже вне работы, проектирую дом, системы умного дома в нём. А работа мне всего лишь позволяет всем этим заниматься, оставляет мне время для этого и даёт средства.
      Причём я отнюдь не считаю такой подход единственно верным, всё зависит от человека. Сам порой с некоторой ностальгией вспоминаю времена, когда жил работой. Теперь — иначе.


      1. CrushBy
        13.12.2019 14:16

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

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

        Я вам открою секрет, но если бы Вы сейчас знали JavaScript, Python, PHP или любой другой современный язык, то Вы бы не были привязаны к Москве и Мухосранску, а могли бы выбрать любую страну для жизни, работая или удаленно, или в офисе. Хоть Испанию, хоть США, хоть Таиланд. Или перемещаться между ними. Не думаю, что стоит рассказывать в чем преимущество такого выбора.


        1. longmaster
          13.12.2019 16:37

          Ой, вот уж прямо секрет! А я же не зря описал своё отношение к переездам в другие страны. Я оценивал такие перспективы, и они мне не интересны по совокупности факторов, причём ИТ-специализация на тот момент не являлась решающим фактором. Преимущества такого выбора отнюдь не однозначны, это уже дело личного мировозрения человека. Как я упомянул, кто-то питает ненависть ко всему здесь, и власти и людям, а кто-то не приемлет свободы и ограничения, царящие в западных странах. Кто-то чувствует себя гражданином мира, не привязанным ни к чему, а кто-то держится корней, и для него имеют огромное значение близкие родственные и дружеские отношения. Так же принципиально меняют ситуацию дети, таскать их с собой по миру — вот уж совсем сомнительное мероприятие.
          К тому же есть несколько стереотипное отношение, что вот всякие джавы допускают удалёнку, а 1С нет. Сейчас основная причина, которая тормозит развитие удалёнки в среде 1С-разработчиков, это доступность спецов на местном рынке.
          В нашей компании уже давно все процессы выстроены таким образом, что присутствие на рабочем месте совершенно необязательно, с пользователями-заказчиками видимся эпизодически в лифтах. Пока ещё существуют некоторые корпоративные предубеждения относительно удалённой работы, но они ослабевают по мере роста и децентрализации компании. И для себя собственно следующей планкой в ближайшей перспективе я вижу строительство дома в пригороде с личным кабинетом и договорённость с моим непосредственным руководством об удаленной работе.


          1. CrushBy
            13.12.2019 18:29

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


      1. m-rv Автор
        13.12.2019 14:27

        что вы понимаете под термином «качество жизни»?


        1. longmaster
          13.12.2019 17:51

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


          1. dzsysop
            13.12.2019 17:58

            Можете более развернуто пояснить что такое «уровень личного благосостояния»?
            Если у вас зарплата в Москве будучи программистом 200К или примерно 3К в зеленых бумажках. А у рабочего в Нью Йорке 4К. Его уровень личного благосостояния выше вашего или ниже?

            климат и экология.

            Пару лет назад вроде леса вокруг Москвы дымили так что все кто мог оттуда сбежали к бабушкам в деревню.

            А по совокупности факторов на планете довольно много мест которые выиграют у Москвы.


          1. m-rv Автор
            14.12.2019 08:34

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


            1. longmaster
              14.12.2019 11:23

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


              1. m-rv Автор
                14.12.2019 18:21

                вы знаете, меня иногда пугает пропаганда. в какой еще стране третьего мира, кто-то возьмется на полном серьезе утверждать, что «мы тут живем лучше, чем в развитых странах»?..
                загуглить «ввп на душу населения», «динамика реального располагаемого дохода» — это же так просто!
                не нравятся вам «большие цифры» — возьмите отношение средней зп (net) к аренде какой-нибудь двушки не совсем на отшибе. в Москве будет 80/50, в Германии 168/105. Можно цифры Германии пересчитать по курсу ППС, если так вам больше нравится, получится 60/37 (все цифры в тысячах рублей)
                не нравятся вам вообще цифры — возьмите натуральные показатели обеспеченность жильем, топ продаваемых автомобилей (тут/там).
                вот можете еще ознакомиться, дальнобойщик машину жене купил в штатах. дом плотника в германии. дом тестировщика в штатах. я понимаю, что «коммуналка то дороже!!!», но на коммуналке свет клином не сходится.
                А про качество российского образования, лучше вас я и не скажу:

                там её специализация без переучивания ничего не будет стоить


  1. DimaCHV
    13.12.2019 08:12

    Помню, в институте, 1С — это была единственная технология, за которую агитировал один из преподавателей и обещал работу в своей компании. Также еще объявление висело о стажировке на SAP. А чтобы найти работу явистом, мне пришлось попотеть и затем ездить на другой конец Москвы. Видимо, для многих 1С становится доступным вариантом войти в мир программирования. Но есть хочется расти, надо двигаться дальше. На яве много финансового софта пишется, опыт 1С может и пригодится.


  1. vvf1973
    13.12.2019 08:13

    1C как идея имеет мало смысла, имхо. Имеет смысл только в налоговой среде — беспощадной и бессмысленной, а по сути бандитской. Бухгалтера давно превратились во внештатных сотрудников ФНС на содержании организаций-налогоплательщиков. Для остального — управленческий учет, производство, бюджетирование может иметь смысл, но там требуются очень серьезные познания и практики, которые очень мало у кого есть.


    1. dzsysop
      13.12.2019 16:54

      1C как идея имеет мало смысла, имхо.

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

      Почему идея сделать качественный продукт для удовлетворения спроса целевой аудитории кажется вам лишенной смысла?


      1. vvf1973
        13.12.2019 20:56

        Т. е., со всеми остальными высказываниями, кроме 1с, Вы согласны. Это так теперь называется: стандарты бухучета и специфика ведения коммерческой деятельности. А 1с -это все автоматизирует. IBM тоже автоматизировала кое-что кое для кого в 30-40 годах прошлого века. Правда, продукты на базе 1с качественными я бы поостерегся называть, впрочем, как и саму платформу, имхо.


        1. dzsysop
          13.12.2019 21:58

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

          Но я бы вам посоветовал иногда оценивать качество такого рода продуктов исходя из мнения целевой аудитории. Рядовых бухгалтеров, финансовых аналитиков, продавцов, кладовщиков и прочих. 1С реально на всем пространстве СНГ покрыло очень много задач, которые не имеют и по сей день почти никаких альтернатив.

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

          Попытка «состарить» 1С сравнением с 30х-40х, совершенно смешна. То есть у вас нет конкретных аргументов и вы начинаете давить на психологию?
          Вы бы посмотрели на 1С версии 1991 года по дос, развитие к 1995 в версию 6.0 с интерфейсом под Виндоуз, в 1999 выпуск 7.7 предложил уже вполне современную среду разработки бизнес приложений, 8.0 вышла в 2002 уже с обновленным интерфейсом и массой современных фич. Последняя версия 8.4 вышла в 2015 и основной упор был сделан на работу 1С в кластере. Фирма постоянно делает усилия для того чтобы осовременить среду. И сделать ее удобной и понятной для программистов из других областей не связанных с 1С.

          Так что если бы вы были в теме вы бы не пытались сказать что 1С впаривают что-то очень устаревшее или несовременное.

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


          1. Veidt
            13.12.2019 22:20

            дешевыми отлаженными типовыми решениями,

            Вы форумы 1С гляньте. Там в минорных релизах целые ветки ломаются. Дешевыми — возможно (хотя как раз платформа мягко говоря не дешевая). Отлаженными — я вас умоляю.
            простотой установки и использования

            Ну конечно. Проще чем yum install которой ставятся половина других платформ? Вам про ключи защиты напомнить?
            скоростью разработки решений как с нуля

            В 7.7 еще можно было как-то согласиться. Но в 8.3 с их МенеджерамиВременныхТаблиц, РеквизитФормыВЗначение, &НаСервереБезКонтекста, временными хранилищами, ручными, ой управляемыми, блокировками и еще с десяток таких пунктов.

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


          1. vvf1973
            13.12.2019 22:31
            -1

            IBM тесно сотрудничала с гитлеровской Германией, в том числе в области учёта заключенных. Там инновации были ещё те, правда, ради чего они были хорошим не назовёшь.
            Аналогии Вы не уловили. 1с — порождение сложившийся «специфики»и паразитирует на ней. Убери эту «специфику» или заставь замолчать ихние принтеры — 1с ловить будет нечего и, скорей всего, канула бы в лету. А IBM осталась. Сам в ИТ слишком давно, а с 1с работаю ещё с начала времен 7.7. Ваши маркетологические рекламные речи очень складны, но весьма смешны. Правды в них столько, сколько в мусоропроводе чистоты.