Необразованная молодёжь. Ответ бизнеса

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


    Дорога к хорошей работе всегда непростая и требует усилий

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

    Так вот, у нас вечное кадровое недоедание во всех сферах: от продажников до программистов. Да, ребята приходят, общаемся, директор (он же главный разработчик) лично по три часа собеседует каждого соискателя. И расходимся. Потому что есть понимание того, что человек у нас не задержится. Почти все наши программисты пришли к нам студентами и всех мы вырастили сами, начиная с языка и заканчивая code style. Неудивительно, что такие люди работают в компании по 10-15 лет — они идеально к ней подходят. Но! А вот дальше огромная цепочка разных «но», почему таких ребят всё меньше.

    «Любите меня, я подарок»


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

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

    Офис. Опять же, на Хабре можно насмотреться на прекрасные офисы Google, Avito, Badoo… Шлифануть это парой фильмов про Силиконовую долину — и вот уже новичок ищет глазами гамак, пуфики, настольные игры и кроватки для послеобеденного сна. Крутой офис — в их понимании. Начнём с того, что большинство ИТ-компаний, особенно в регионах, сосредоточены на том, чтобы офис был современным, комфортным и рабочим, а потом уже все эти прибамбасы гигантов. Поверьте, пуфики вообще не решают. А вот уровень софта и готовность к обучению — решает. Кстати, если вы не будете смотреть на картинки, а придёте в офисы больших компаний (например, на митапы), то увидите, что все сидят и работают за мониторами и ноутбуками, а не играют или покачиваются в гамаках. А если и лежат где-то, то непременно с ноутбуком на животе с открытой IDE, например.

    Работа. Думаю, никто из хабровчан не удивится, что разработка — это часть кода, над которой ты работаешь. Молодёжь полагает иначе (и это косяк образования): что они придут, сядут за крутой ПК (а и это не всегда) и начнут пилить полностью какую-то Программу, а лучше игру. Не-а. Вы придёте и начнёте с малого — возможно, даже просто минимального тестирования. Постепенно вы получите свой блок работы и будете коммитить сперва через ревью руководителя, а потом и самостоятельно. Если компания вовлечённая, то к вам будут прислушиваться и вы сможете предлагать какие-то свои разработки и усовершенствования (и даже претендовать на долю с их внедрений). Основная причина такого постепенного погружения проста — безопасность и коммерческая тайна. Ну и отсутствие необходимых навыков у молодого сотрудника.

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

    Забудь дедукцию — давай продукцию!


    Если не смотрели эту репризу Аркадия Райкина, обязательно найдите и посмотрите — она очень точно отражает спор последних дней на Хабре. Если коротко, то вузы не дают нам тех специалистов, которые нам нужны. Собственно, именно поэтому и открываются школы крупных компаний для студентов — ребят с хорошей теоретической базой обучают решению практических задач, выбирают самых-самых и забирают в коммерческий бизнес. Круто, полезно, удобно. Но остальным тоже надо работать, а кроме того, есть выпускники, которые стремятся попасть в небольшую компанию или даже стартап (мы писали об этом). И вот они, очевидные болячки вузовского образования, всплывают в начале стажировки или работы молодого специалиста (и не только программиста!).

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

    Устаревшие учебные планы. Да, преподавать некому — и это катастрофа. Толковые уходят в бизнес, старые не могут освоить новое, молодые тырят лекции из интернета. И чтобы сохранить хоть какое-то равновесие в образовании, методические отделы ставят те предметы, которые штат может преподать. И это вина тех, кто устанавливает преподавателям порнографически низкие зарплаты. Вот вам инсайд буквально прошлой недели — доктор наук, профессор, зав. кафедрой, совмещающий ещё одну административную должность и имеющий ставку учебной нагрузки, получает 53 000 рублей. А прикиньте, сколько он к этому шёл! Что говорить о молодых преподавателях — собственно, суммы уже были названы в первом ответе.

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

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

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

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

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

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

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



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

    Нам интересны специалисты в области разработки IT-решений и техподдержки с широким стеком технологий, а также опытные продажники. Звоните +7 (499) 709-81-41 (Москва), +7 (831) 233-13-03 (Н.Новгород) или присылайте резюме на почту personal@regionsoft.ru

    RegionSoft Developer Studio

    140,00

    CRM-система, программное обеспечение для бизнеса

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

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

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

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

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

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

          И, чтобы два раза не вставать, — офис, НН и Делфи — вы серьезно?
            +3
            Все зависит от того, что за софт вы продает. Если речь о коробке это одно, если речь о тяжелом энтерпрайз софте, то ценность для покупателя это сам софт, процессы, ноу-хау внедренца, и еще тьма всего, плюс визуализация этого в убедительном расчете ROI. Тут много ролей, и, к сожалению, до разработчика медальки не доходят и ни в каких саксес стори вы его не увидите.
              +5
              От софта конечно зависит, но дело больше в психологии и памяти людской. Разработчик как правило работает на далёкую и не всем очевидную перспективу, а продажник приносит деньги здесь и сейчас. Поэтому и выглядит в глазах например бухгалтера добытчиком. А разработчик с его запросами купить новый SSD-наоборот растратчиком. Через несколько лет картина такая-в продажнике никто не нуждается потому что хороший софт продат себя сам(рекомендации коллег, положительные отзывы на Хабре и т.д). А про разработчика уже забыли. Он ведь получал зарплату за свою работу тогда, несколько лет назад?
                +9
                Да-да! Всецело согласен! Работаю в компании, производящей учебное оборудование. Но 16родажники толкают сферическое оборудование в вакууме, с зачастую нереальными сроками поставки. В итоге продажникам процент от продаж и дифирамбы, а инженерам? А инженерам ненормированный рабочий день в 15-16 часов из-за сокращенных сроков (политика компании: дешевле, быстрее, качественнее) и символическая премия.
                +4
                Оба раза точно в десятку. И про отношение работодателя к продажникам, и про ценность и вклад разработчика…
                  +3
                  Нет. Нужную конторе ценность создал разработчик (-ки). А продажник ее продал.


                  Можно посмотреть с другой стороны: продажник создал потребность (нашел того, кто платит) и возможность компании заработать.
                  Не даром многие не хотят кодить на себя, им комфортнее, когда есть работодатель с штатом продаж.
                    +6
                    Мне однажды премию выплатили через два месяца после увольнения.
                      0
                      Мне через 2 года, с джунской позиции, 5000р.
                      +1
                      Любой (вру, не любой, — адекватный) бизнес поднимет зарплату хорошему сотруднику, и не раз. Но только в ответ на экономический эффект от работы сотрудника. Проще говоря, ты приносишь фирме больше — она тебя весомее благодарит.

                      Не согласен. Вернее, это действует не везде. Например, в той же торговле, если сотрудник рвет задницу, перевыполняя план, и получает ЗП больше, чем рассчитывал платить работодатель, то либо ставится невыполнимый план, либо уменьшается процент. Да и не только в продажах так.
                      Хотя казалось бы, такой сотрудник — приносит больше пользы компании. Но работодателя жаба давит платить вменяемые деньги.
                      P.S. Я, если что, в торговле работал более 10 лет назад. Но, подобное до сих пор применяется.
                        0
                        «Ценность, которую принесет разработчик в большой продукт, может быть монетизирована фирмой через пару лет. „

                        Насколько я понял посыл статьи, речь идет о выпускниках институтов.
                        Вы реально видите много примеров, когда выпускник устроился джуном в компанию и сделал вклад в продукт, который оценивается большими деньгами?
                        Я сплошь и рядом вижу, что новички, пришедшие на первую свою должность, зачастую неспособны просто самостоятельно настроить себе рабочее место в соответствии с инструкцией на вики, месяца 2-3 тратят только на то, чтобы заполнить букмарки с важными инструментами в инфраструктуре. Но когда через полгода нужно сменить пароль, снова вместо того, чтобы поискать готовый ответ на внутренней вики, всех дергают, поскольку аккаунт залочился после 5-й попытки сделать красивый пароль, хотя при его смене требования к паролю написаны прямо на экране.
                        P.S. Исключения конечно есть, но они так редки, что лишь подтверждают правило…
                          +1
                          Может быть, у вас просто не умеют отбирать кандидатов?

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

                            Даже при всем понимании конкретного менеджера, а то и владельца компании, о том, что «кадры важны», как только компания достигает уровня 100-300 и более сотрудников, все становится слишком сложно, ибо нельзя найти 20-30 человек с одинаковой идеологией. А следовательно найти 20-30 руководителей на все посты, чтобы они одинаково следовали ценностям — тоже нельзя.
                            Всем нужно идти навстречу друг другу.
                            0
                            Удивили детали:
                            аккаунт залочился после 5-й попытки сделать красивый пароль,
                            хотя при его смене требования к паролю написаны прямо на экране

                            — в AD «лочится» за 5 неправильных «вводов» текущего пароля
                            и блокировка эта «на время» ( не связано это со сменой пароля)

                            — если новый пароль не соответствует,
                            то просто форма ввода не закрывается
                            вводишь до упора

                            готовый ответ на внутренней вики

                            Не меньше 8 + «буквы, цифры, запятые» — удостоены статьи в Wiki?
                            ( и, кстати, есть или нет это «на экране» — не помню, хотя и пытался вспомнить)
                            всех дергают
                            всех кроме сисадмина?

                            через полгода
                            уменьшите срок до 40 дней, тогда есть шансы «довести до автоматизма»
                              0
                              И какое отношение имеет уровень программирования к навыкам смены пароля? Навыки корпоративного user-а несколько ортогональны
                                0
                                Кроме AD есть еще множество других авторизаций. ldap, websso, какая-то база Оракла соседнего проекта, в котором заводятся тестовые пользователи для разработчиков, и если ты забыл пароль, то нужно обращаться не к сисадмину, а к этому проекту.
                                В общем как только появляется что-то посложнее, чем один пароль и один сервис, что-то, что требует некоторых навыков самоорганизации, 99% выпускников на этом заваливаются по полной.
                                  –1
                                  (
                                  множество других авторизаций
                                  Я таки предчувствовал
                                  )

                                  Всякую всячину надо бы интегрировать с AD

                                  тестовые пользователи
                                  Выставьте в тестовой среде
                                  опцию «не требовать смены пароля» на уч.записях

                                  требует некоторых навыков самоорганизации,

                                  Как бы это культурно выразить? Что бы без обид?

                                  Но и промолчать мне, ведь то же вредно для вас же — что многое «не так» видно сходу ( по первому сообщению)

                                  1) Вы зря «наехали» на «юных падованов»
                                  2) следствие: у вашей орг-ции большие шансы «прославиться» «аки» Медок

                                  P.S. Неужели у ваших заказчиков тоже множество систем и без SSO, и без «стыковки с AD»? Зачем вам тестировать на стенде не соответствующем реалиям заказчика?
                                  P.P.S. к Jira и Сonfluence точно есть внешний компонент стыковки с AD по керберос
                                    0
                                    Зачем все интегрировать с одним и тем же AD?
                                    И даже при наличии такой интеграции, может быть двухфакторная авторизация, вторая часть которой обслуживается другой службой.

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

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

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

                                    Пароли второго типа — это пароли, на которые не должны распространятся правила по смене/сложности пароля. В идеале можно ввести либо единый пароль, либо пароль = имя пользователя.

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

                                      Даже в обычном веб-проекте, пароль от mysql и shell — разные. Я реально не понимаю, почему при виде нескольких паролей, вы сразу обвиняете в беспорядке компанию.
                                      Почему бы не предположить, что корпоративная система может быть достаточно комплексной, сложной, состоять из десятков тысяч сотрудников, и один единый пароль на все системы — нереален из-за инфраструктуры, которую нельзя упростить из-за совершенно объективных требоавний, а не «беспорядка».
                                        0
                                        Пароль от локальной машины — это моя учётка в AD. Пароля локального админа я не знаю, да и не должен знать. В базы данных также хожу под своей доменной учёткой — благо и Oracle и MS SQL отлично работают с AD-пользователями.

                                        В моей компании я использую всего 3 личных пароля для различных систем — особенности корпоративной иерархии. (Притом использую один и тот-же, чтобы не забывать и не путаться и меняю все одновременно.) Тут проблемы нет — т.к. 3 пароля запомнить легко. Для всего остального пароли хранятся в документации / конфигах или существуют правила (к примеру для всех тестовых юзеров 1 пароль) — и их не нужно менять каждые n дней.

                                          0
                                          То есть в вашей компании три пароля вас устраивает, а когда я говорю «у нас больше одного пароля», вы придираетесь.

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

                                          Двойные стандарты?
                                            0
                                            По поводу 3-х паролей, нет, меня не устраивает — хочу иметь 1 пароль на всё. К тому же в комментарии выше я писал «В идеальном случае паролей первого типа должно быть ровно 1». Т.е. я понимаю, что не всегда это возможно, но нужно к этому стремиться…

                                            По поводу паролей в документации и конфигах — в том то и дело, что их не нужно менять и чаще всего даже вводить. Забрал последнюю версию конфига с TFS/Git, а там уже пароль лежит для подключения к БД. Запустил приложение протестировать, а там пароль такой-же как и имя пользователя. Красота! Обычно новички запоминают такое после первого объяснения и больше не спрашивают…
                                              0
                                              Отвечу лучше здесь ( так удобней для чтения ):
                                              инстансов может быть десятки

                                              Если требуется время жизни не меньше полугода,
                                              то «всё» стыкуем с «местным» AD ( внутри DMZ зоны)

                                              Внутри ещё TS или мини/midi :-) VDI
                                              падованы и гуру заходят по RDP «давят» Yes
                                              меняют пароль

                                              И никого не «отвлекают каждые полгода» Ж-)

                                              Т.е.:
                                              «В идеальном случае паролей первого типа должно быть ровно 1». Т.е. я понимаю, что не всегда это возможно, но нужно к этому стремиться…
                                    0
                                    Как-то нужно было сделать пароль на локальной учетке. Розы. РозыКрасивые. РозыКрасивые2017. РозыКрасивые2017+. РозыКрасивые2017+!.. РозыКрасивые2017+! ЧеТебеНеХватает***.
                                    Позвал админа. Он попробовал чего-то добавить после звезд, не взлетело. Почесал затылок и забил
                                    Зщшг-2017. Прокатило.
                                +7
                                > Не всегда требуемая соискателями компенсация коррелирует с их уровнем.

                                Вам шашечки или ехать? Если не можете закрыть вакансию с текущим уровнем компенсации — это ваше понимание взаимосвязи уровня компетенций и компенсации не коррелирует с финансовыми реалиями рынка.
                                  +4

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

                                    +7
                                    > Если специалист или джун на рынке стоит Х, то он стоит X.

                                    Все рассуждения о перекосах (даже если они есть и растет очередной пузырь) — нытье в пользу бедных нанимателей. Цена на рынке определяется балансом спроса и предложения. На этом нужно ставить точку.
                                      +5
                                      После того, как знакомая HR искала кузнеца на 500К оклада, я перестал считать IT вакансии дорогими.
                                        –1

                                        А если перекос в другую сторону (тупые изменения в налоговой политике из-за которых временная просадка) — это разговор в пользу бедных специалистов?


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

                                          +1
                                          > А если перекос в другую сторону (тупые изменения в налоговой политике из-за которых временная просадка) — это разговор в пользу бедных специалистов?

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

                                          > Потому что перекосы на самом деле есть и чаще разумнее их учитывать, чем просто идти «по рынку».

                                          Ну вот расскажите пожалуйста, что такое перекосы. Возьмем для примера физический рынок рядом с момим домом. Там в одном магазине есть помидоры за 200 рублей и помидоры за 600 рублей килограмм. Это перекос? Да нет, это просто объективная реальность — у разного товара разная цена. Или вот например те же самые помидоры в пятерочке будут стоить меньше 200 рублей. Но они дальше от моего дома, поэтому закономерно что цена ближе к дому выше. Т.к. я покупаю товар у дома и доплачиваю деньгами за скорость. А соседка покупает в пятерочке и денег платит меньше, но тратит больше времени и сил. В итоге мы с ней покупаем немного разные помидоры.

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

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

                                          Многие семьи посматривают в сторону покупки второй машины при наличии первой, однако есть определенный лимит, выше которого платить не готовы. Это не значит, что таких денег в семье нет, а значит лишь то, что достаточных выгод от покупки Bentley они не получат, когда рассчитывают на Pajero, хотя Bentley своих денег стоит. Ровно также и в бизнесе: специалист просит 100к/месяц, его квалификация именно столько и стоит, но компания не готова платить более 60к, т.к. соответствующий продукт на выходе у специалиста принесет лишь 100-120к, а ведь еще налоги, различные платежи, оборудование, аренда. Так что в каждой ситуации есть определенные лимиты, которые работодатель может пересмотреть лишь в случае пересмотра отношения к самой вакансии (например, расширение списка задач для соответствующего сотрудника, или еще чего-нибудь).
                                            +2
                                            Пример с семьей и машиной отличной. Только в таких случаях обычно адекватные члены семьи не жалуются на хабре, что «автомобилей — жуткая нехватка, не можем найти автомобиль, все цены неадекватно высокие!». Автомобилей-то полно, по разным ценам. Была бы настоящая необходимость — купили бы тот, который доступен.

                                            Чуть ниже про это как раз отлично написали.
                                          +1
                                          Возможно есть компании которые в настоящее время без оглядки проедают бюджетные/инвестиционные деньги и перегревают рынок по этой позиции.

                                          Интересно, а с какого рожна я должен входить в положение бедного нанимателя? Вот у нас например высокий % по кредиту, потому что гос. компании берут деньги и не возвращают, и этот невозврат закладывается в % по кредиту лично мне. Это такое же пердергивание рынка, и вы знаете, что-то еще ни один банк не вошел в мое положение и не выдал мне кредит под 2%, чтобы нивелировать передергивания. С чего вдруг я должен это делать?

                                            0
                                            Интересно, а с какого рожна я должен входить в положение бедного нанимателя?

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

                                              0

                                              Да это-то понятно. Я к тому что "передергивания рынка" не являются оправданиями ни для работодателя ни для специалиста.

                                              +2
                                              У нас высокий процент по кредиту не поэтому. Банк, чтобы выдать вам кредит, занимает деньги либо у вкладчиков, либо на денежном рынке. А на денежном рынке у нас регулятор есть — ЦБ, выдающий кредиты по базовой ставке и берущий вклады чуть дешевле.
                                              Так что банку ну вообще не выгодно занять деньги под 8-9% и выдать вам под 2%.
                                                0
                                                компании берут деньги и не возвращают, и этот невозврат закладывается в % по кредиту лично мне

                                                Это влияет только на маржу банка, а основная часть вашего процента — проценты ЦБ.
                                            +13
                                            > Не всегда требуемая соискателями компенсация коррелирует с их уровнем.

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

                                            > Любой (вру, не любой, — адекватный) бизнес поднимет зарплату хорошему сотруднику

                                            Бизнес платит сотруднику столько, чтобы сотрудник не ушел работать в другой бизнес. Бизнес работает ради прибыли. Иначе это не бизнес, а благотворительность. Хороший сотрудник, который не показывает признаки мобильности будет сидть без повышений оплаты годами.
                                              +10
                                              Именно так и есть, для того чтобы тебя оценили надо уволиться) Сталкивался с таким циничным подходом-решать проблему тогда когда она возникнет. Собрался уволиться человек? Пусть уходит, другого найдём. Не можем найти такого же или лучше за эти же деньги? Хорошо, поднимем планку ЗП и будем искать дальше, но тому «предателю» повышать ЗП и удерживать не будем.
                                                +1
                                                Это пример однозначно плохого работодателя, который не ценит свои деньги и время, а ведется на какие то глупости.
                                                У меня при уходе из последних мест, все говорили, если разонравится на новом месте — возвращайся к нам, возьмем. Некоторые даже удержать пытались подъемом ЗП.
                                                Мы, когда в 2014 году искали 2х весьма средних С++ разработчиков в Москве, просто с опытом не senior. Мы потратили просто тонну времени, чтоб найти адекватных. На двоих мы отсобеседовани около 50 человек по скайпу и около 10 очных провели. То есть это прям дофига и больше времени рабочего старших разработчиков. А это еще даже не включает времени на адоптацию новых сотрудников и все сопутствующие расходы.
                                                  +1
                                                  Если не секрет, каких знаний вы требовали от этих разработчиков? Просто не верится, что из 60 С++ программистов, 58 оказались дураками…
                                                    0
                                                    Есть и более суровые наблюдения в этой сфере. Например, есть статья, в которой утверждается, что 199 из 200 разработчиков не могут решить задачу fizzbuzz.
                                                    Правда, статья не наша и десятилетней давности, но я не вижу причин, почему у нас все должно кардинально отличаться.
                                                      –1
                                                      a game children often play (or are made to play) in schools in the UK. An example of a Fizz-Buzz question is the following:

                                                      Write a program that prints the numbers from 1 to 100. But for multiples of three print «Fizz» instead of the number and for the multiples of five print «Buzz». For numbers which are multiples of both three and five print «FizzBuzz».

                                                      Most good programmers should be able to write out on paper a program which does this in a under a couple of minutes.
                                                      А на «пуркуа» решать детские головоломки, да ещё и на время?
                                                      А программа на Prologe засчитывается?
                                                      И зачем леса истреблять? Ж-) (про бумагу)
                                                        0
                                                        Соискателю — для того, чтобы его взяли на работу.
                                                        Работодателю есть смысл предлагать такие задачи потому, что 99% отказавшихся откажутся лишь потому, что не осилили. То есть, большая экономия времени интервьювера.
                                                          –1
                                                          ( 99% отказавшихся откажутся --не потому)

                                                          Ну если честно, то FizzBuzz лучше чем тесты на IQ, но не намного...

                                                          Вы их, конечно, поручаете проводить «девушке из кадров»?

                                                          Тогда ещё есть шансы, что тестируемый подумает:
                                                          — Опять кадровики Инета начитались

                                                          P.S. На основе всё ещё ждущего модерации ком-та:
                                                          Загадка -- угадай фирму
                                                          Решал практическую задачу:
                                                          набрал в ddg.gg
                                                          ZZZ курсы английского

                                                          Курсов не нашёл ( их не для сотрудников, кажется, не существует ),
                                                          но впечатлений от чтения первой пары дюжин ссылок — масса, рекомендую

                                                          Cобствено вопрос: с 2014 года тесты не поменялись
                                                          Например, про (n-m)/(n!-m!) спрашиваете?


                                                          А всё же:
                                                          А программа на Prologe засчитывается?
                                                          И зачем леса истреблять? Ж-) (про бумагу)
                                                            +1
                                                            99% отказавшихся откажутся — не потому
                                                            А почему? Чем этот вопрос отличается от любого другого вопроса по программированию?
                                                            FizzBuzz лучше чем тесты на IQ, но не намного
                                                            Не согласен. Если человек сдал тест IQ на низкий балл, это мало что значит — он все еще может быть хорошим разработчиком. А вот если он не смог написать FizzBuzz — не может.
                                                            А программа на Prologe засчитывается?
                                                            И зачем леса истреблять? Ж-) (про бумагу)
                                                            Если бы я проводил такое собеседование, я бы не имел ничего против любого языка программирования (или даже просто алгоритмического языка, как в ЕГЭ по информатике), который мне понятен. И не был бы против программирования этой задачи на компьютере. Правда, вероятно, я бы предложил google doc или что-то вроде того, потому что требование соискателя дать ему IDE для решения такой задачи ничего хорошего о нем не говорит. И разумеется, я бы предложил бумагу и доску, потому что есть люди, которым комфортнее писать на собеседовании не на компьютере.
                                                              0
                                                              если он не смог написать FizzBuzz

                                                              а если не захотел? Ж-)

                                                              Напишите программу, которая печатает цифры от 1 до 100. Но для кратных трех напечатать «Fizz» вместо номера и для кратных пяти напечатать «Buzz». Для чисел, кратных как трех, так и пяти печатным «FizzBuzz».

                                                              вот куда печатать числа и буквы — на StdOut?
                                                              И это в год столетия 1917-го? И 60-летия спутника?

                                                              В ADA вообще для этого надо отдельный модуль подключать

                                                              в Сlarion ( не сейчас, давно) полистал 3-х сантиметровую книгу --нашёл ( TYPE) Раз в жизни применил Ж-)

                                                              требование соискателя дать ему IDE
                                                              я тут уже про кнопку F9-C-C упоминал
                                                              может тестируемый без любимой кнопки уже и не может

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

                                                              P.S. Уточняющие «вводные» — заметно меняют дело, надо обдумать

                                                              P.P.S. Идея: в FizzBuzz --шипящие согласные печатать красным цветом
                                                              P.P.P.S. или упростим — гласные желтым
                                                                0
                                                                Забавно: в Clarion уже и не вспомню как делить по модулю Ж-)
                                                                ( в TP — mod)
                                                                  0
                                                                  а если не захотел?
                                                                  А если он не захотел на какой-то другой вопрос отвечать? Значит, он сам себе злобный буратина, пусть в другое место идет работать.
                                                                  куда печатать числа и буквы — на StdOut?
                                                                  Да куда угодно, для целей, которые ставятся перед этой задачей (быстро проверить, что человек умеет хоть что-то) это не важно. Есть сомнения — спросите.
                                                                  я тут уже про кнопку F9-C-C упоминал
                                                                  может тестируемый без любимой кнопки уже и не может
                                                                  Вы и правда думаете, что найдется человек, который без Ctrl+Ins не сможет десять строчек набрать, но с Ctrl+Ins станет хорошим разработчиком? Думаю, это множество очень мало и им можно пренебречь.
                                                                  в Clarion не уверен, что отдельный компилятор вообще есть
                                                                  А зачем вам в этой задаче вообще компилятор?
                                                                    0
                                                                    Элегантные 100 строчники принимаются?

                                                                    Ладно, будем считать это быстрым прототипом:

                                                                    @echo 1
                                                                    @echo 2
                                                                    @echo Fizz
                                                                    @echo 4
                                                                    @echo Buzz
                                                                    @echo Fizz
                                                                    @echo 7
                                                                    @echo 8
                                                                    @echo Fizz
                                                                    @echo Buzz
                                                                    @echo 11
                                                                    @echo Fizz
                                                                    @echo 13
                                                                    @echo 14
                                                                    @echo FizzBuzz
                                                                    


                                                                    Ну и так далее

                                                                    Про набрать: когда я редактировал autoexec.bat ( или .sh)
                                                                    в редакторе TP использовались ^K^B и ^K^C
                                                                    Особенно для label

                                                                    И это экономило время на отладку в cmd /c /y

                                                                    А зачем вам в этой задаче вообще компилятор?
                                                                    Для разработки «через тесты»

                                                                    P.S. Про F9-C-C — это не аналог ^V
                                                                    Вообще-то, мне на MacBook от испарившейся клавишы
                                                                    надо Ctrl-Alt-Ins на ".."

                                                                    P.P.S. Смайлики опущены Ж-) Но кое-где их нет
                                                                    ( выше по тексту — скорее есть,
                                                                    ниже — всё довольно серьёзно )

                                                                    P.P.P.S. Про не сможет или не захочет:
                                                                    Сперва тестируемый окинет взглядом интерьер
                                                                    представит лицо мамы/невесты/жены ( нужное подчеркнуть) по возвращении с охоты. На это будет упущено 30 сек.

                                                                    Самые битые жизнью отпросятся на экскурсию в места уед-ых ( студенты 3-их курсов мотайте на ус) раздумий
                                                                    Ещё более тщательно оценят обстановку

                                                                    ( Вот здесь есть тонкость — контора может размещаться
                                                                    на нескольких этажах или в раздных зданиях)

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

                                                                    alexeykuzmin0 не обижайтесь и не принимайте на свой счёт:
                                                                    ваша модификация IQ теста как раз имеет отклонения к лучшему,
                                                                    пишу я больше для начинающих тестируемых

                                                                    Но не стоит забывать, что реально-то все эти приколы оценят интеллект эмоциональный ( у своего HR можно взять перевод термина Ж-) )

                                                                      0
                                                                      Элегантные 100 строчники принимаются? Ладно, будем считать это быстрым прототипом
                                                                      Такой пример сразу вызовет вопрос «а вы можете написать более читаемый код?». Хотя, насколько я понимаю, статья, на которую я сослался, говорит о том, что 99.5% соискателей даже такое написать не в состоянии.
                                                                      Для разработки «через тесты»
                                                                      Что-то я сомневаюсь, что существуют хорошие разработчики, которые не могут написать FizzBuzz без TDD.
                                                                        0
                                                                        FizzBuzz без TDD
                                                                        Там как-раз подразумевался смайлик Ж-)
                                                                        «а вы можете написать более читаемый код?»
                                                                        Как раз для .bat циклы и арифметика гораздо менее читаемы Ж-)

                                                                        А при «красивом» коде можно, наоборот, спросить:
                                                                        Задача явно разовая. Почему излишние потери рабочего времени?

                                                                        Т.е. опять-таки задача на эм-ый инт-кт Ж-)
                                                                        статья, на которую я сослался, говорит о том, что 99.5% соискателей даже такое написать не в состоянии.
                                                                        Точно так
                                                          +1
                                                          Поправка: 199 из 200 кандидатов на позицию разработчика. Это не одно и то же.
                                                            0
                                                            FizzBuzz и для профи проблематичен тем, что экзотика ( см. здесь же)
                                                            0
                                                            Хм… А это правильное решение?
                                                            Судя по выводимому логу — да.

                                                            FizzBuzz implementation
                                                            using System.Globalization;
                                                            using System.Globalization;
                                                            using System.Linq;
                                                            using static System.Console;
                                                            
                                                            namespace FizzBuzz
                                                            {
                                                            	class FizzBuzz
                                                            	{
                                                            		private static bool IsFizz(int value) => value % 3 == 0;
                                                            
                                                            		private static bool IsBuzz(int value) => value % 5 == 0;
                                                            
                                                            		public static string GetFizzBuzz(int value)
                                                            		{
                                                            			bool isFizz = IsFizz(value);
                                                            			bool isBuzz = IsBuzz(value);
                                                            
                                                            			if (isFizz && isBuzz)
                                                            				return "FizzBuzz";
                                                            
                                                            			if (isFizz)
                                                            				return "Fizz";
                                                            
                                                            			if (isBuzz)
                                                            				return "Buzz";
                                                            
                                                            			return value.ToString(CultureInfo.InvariantCulture);
                                                            		}
                                                            	}
                                                            
                                                            	class Program
                                                                {
                                                            
                                                                    static void Main(string[] args)
                                                                    {
                                                            			const int beginValue = 1;
                                                            			const int endValue = 100;
                                                            
                                                            			//foreach (int i in Enumerable.Range(beginValue, endValue))
                                                            			//{
                                                            			//	WriteLine(FizzBuzz.GetFizzBuzz(i));
                                                            			//}
                                                            
                                                            			for (int i = beginValue; i <= endValue; i++)
                                                            			{
                                                            				WriteLine(FizzBuzz.GetFizzBuzz(i));
                                                            			}
                                                            
                                                            			ReadLine();
                                                                    }
                                                                }
                                                            }
                                                            


                                                            Однако, смущает в вашем исходном посыле, точнее, в статье, на которую даны ссылка, вот что:
                                                            Нормальный программист должен написать такую программу на бумажке за пару минут. Но вот что интересно: многие люди с профильным образованием вообще не могут справится с этой задачей. Были даже случаи, когда кандидаты, подававшие резюме на вакансию «Senior developer» тратили на эту программу больше 15 минут.

                                                            Ок — увидеть решение и написать простой цикл у меня заняло как раз пару минут.
                                                            Поскольку оставлять все в методе Main неправильно, вынесение логики в класс заняло как раз минут 15.

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

                                                            1. Увидеть, как я быстро схватываю задачу и вижу решение?
                                                            И тогда по боку проверки аргументов/входных данных (начиная от проверок на null и на диапазон, и далее по списку), побоку — должен быть в классе-хелпере сервисный метод статическим или нет, и нужен ли вообще это класс.
                                                            Ибо иначе не уложимся в «пару минут».

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

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

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

                                                            Но об операции получения остатка от деления — в любом случае, знают и умеют явно больше, чем 1 из 200.
                                                            Так что в той статье явное преувеличение.
                                                              0
                                                              А это правильное решение?
                                                              Правильное, вы бы прошли этот тест. Я бы написал иначе, на мой взгляд, лучше, но, думаю, это скорее связано с общепринятыми стилями в разных языках.
                                                              Когда просят сделать подобную задачу «за пару минут», то возникают вопросы:
                                                              Интервьюеру что нужно?
                                                              Казалось бы, это можно уточнить у интервьювера, он же рядом сидит. Что-нибудь вроде «Это довольно простая задача. Я могу написать ее быстро в acm-стиле, без всяких проверок и тд, либо потратить больше времени и написать хороший код, хорошо читающийся, поддерживающийся, расширяемый и тд, но это будет дольше. В production я всегда пишу код второго типа».
                                                              Ну и насчет посыла, что задачку FizzBuzz может решить только 1 программист из 200 — явная неправда.
                                                              За что купил, за то и продаю. Кроме того, статья написана в другой стране и несколько лет назад, так что может отличаться от наших реалий. И не «1 из 200 программистов», а «1 из 200 соискателей». Казалось бы, те, кто программировать почти не умеет, должны проходить больше собеседований до успеха.
                                                              Но об операции получения остатка от деления — в любом случае, знают и умеют явно больше, чем 1 из 200.
                                                              Применить остаток от деления — не проблема. Проблема — составить алгоритм с циклом и двумя ветвлениями.

                                                              Да, возможно, в статье преувеличение, но не думаю, что очень сильное.
                                                                0
                                                                Казалось бы, это можно уточнить у интервьювера, он же рядом сидит. Что-нибудь вроде «Это довольно простая задача. Я могу написать ее быстро в acm-стиле, без всяких проверок и тд,

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


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

                                                                Тоже не так все однозначно. Судя по тому, что я видел в значительном количестве проектов в production коде и то, какой код поощрялся, фраза "В production я всегда пишу код второго типа" может сыграть не в плюс.


                                                                Применить остаток от деления — не проблема. Проблема — составить алгоритм с циклом и двумя ветвлениями.

                                                                О, да. Как раз такой код (с проблемами на уровне цикл — пара ветвлений) часто можно видеть в production, что говорит о том, что собеседования с задачками FizzBuzz, видимо, не достигают своей цели.


                                                                Например, приходилось иметь дело таким кодом:


                                                                            var items = new List<object>();
                                                                            foreach (var item in items)
                                                                            {
                                                                                int itemIndex = items.IndexOf(item);
                                                                                // Do something with item ..
                                                                            }

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


                                                                    internal virtual int IndexOf(T[] array, T value, int startIndex, int count)
                                                                    {
                                                                      int num = startIndex + count;
                                                                      for (int index = startIndex; index < num; ++index)
                                                                      {
                                                                        if (this.Equals(array[index], value))
                                                                          return index;
                                                                      }
                                                                      return -1;
                                                                    }
                                                                

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


                                                                И, естественно, в официальной документации к методу указано, что его сложность — O(n).


                                                                Думаю, не стоит объяснять, во сколько раз выросла сложность обхода такого списка в результате неуместного использования foreach и IndexOf.


                                                                Рассылка вида "ребята, давайте так не делать, давайте лучше делать так":


                                                                            for (int i = 0; i < items.Count; i++)
                                                                            {
                                                                                int itemIndex = i;
                                                                                // Do something with item ..
                                                                            }
                                                                

                                                                вызывала в ответ только тягостное молчание, в т.ч. со стороны руководства.
                                                                При этом не были задеты ничьи чувства, т.к. человек написавший foreach/IndexOf уже пару лет как уволился и успешно отбыл в одну из стран в Южном полушарии продолжать писать столь же успешный код.


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


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


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

                                                              0
                                                              https://tproger.ru/news/programmers-are-confessing-their-sins-to-protest-against-whiteboard-interview/
                                                              Есть современная альтернативная точка зрения.

                                                              Hello, my name is David. I would fail to write bubble sort on a whiteboard. I look code up on the internet all the time. I don't do riddles.

                                                              — DHH (@dhh) 21 февраля 2017 г.

                                                                0
                                                                Что-то мне подсказывает, что любой из них в состоянии написать FizzBuzz.
                                                              0
                                                              50, а не 60. Нормальных реально было 4. 1 ушел в другую команду, 1 хотел от 250К — мы же его во столько не оценивали. Примерно 10 было Qt-ов, которые вообще ни на что тольком не могли ответить без Qt, для задачек мы им разрешали использовать Qt-е контейнеры, что они знали вместо std-ых. Но всеравно они все были никакие без базового понимания.
                                                              Возможно тогда была проблема с кандидатами на рынке и все валили из страны, хз либо сидели на своих местах и не рыпались.
                                                              Мы вообще почти знаний никаких не требовали. Знания языка базовые(мы не спрашивали про всякие virtual inheritance и вопросы с подвохом про С++), был вопрос как реализовано std::map/std::unordered_map в общих чертах по скайпу, но если кандидат не знает стандартной библиотеки, мы это пропускали. Но если пользовался std::map — и не читал исходников и не знает как оно работает, то это пробел.
                                                              Были несложные задачки на алгоритмы, про алгоритмическую сложность, базовое про знание float/double чисел, например, как сложить с минимальными потерами массив из float и какова сложность решения. Какие то базовые вещи про многопоточность, вроде mutex vs spinlock, написать mutex/spinlock.
                                                                0
                                                                Какие то базовые вещи про многопоточность, вроде mutex vs spinlock, написать mutex/spinlock.

                                                                Написать мьютекс самому руками в юзерспейсе?
                                                                  0
                                                                  Через CMPXCHG spinlock…
                                                                    0
                                                                    Так это спинлок. А мьютекс, с нежгущей CPU блокировкой и отдачей процессора другому треду?
                                                                      0
                                                                      Там всё веселее. Нормальный мьютекс — это несколько итераций спинлока, и только потом системный вызов. Причём спинлок — это не долбаханье CMPXCHG в цикле (это только будет лочить шину почём зря), а CMPXCHG с паузой в виде какой-нибудь бесполезной операции на 50-100 тактов (длина цикла может быть случайной).
                                                                        0
                                                                        Секундочку, мьютекс — это сущность, позволяющая в каждый момент времени только одному потоку захватывать разделяемый ресурс. А уж эффективно он реализован или нет, с ожиданием и передачей кванта другому потоку или нет — совсем другое дело.
                                                                        Если взять реализацию, скажем, CriticalSection в Windows, то там будет и спинлок в юзерспецсе некоторое время, сколько-то итераций, и падение в ядро с ожиданием. Но это не значит, что мьютекс — непременно такая эффективная вещь.
                                                                        Да, голый спинлок — это частный случай реализации мьютекса, пусть и неэффективный. Спинлок — реализация, мьютекс — абстракция (разделение доступа к ресурсу).
                                                                          0
                                                                          Я паршу «написать мьютекс/спинлок» вот так, через слеш, как два варианта одного задания. А если это два варианта, то они должны отличаться. Если это неправильная интерпретация — да, вы правы, конечно.

                                                                          Тут ещё, кстати, про одноядерные машины и preemption можно было бы поговорить, но то такое.
                                                                            +1
                                                                            Вопрос терминологии. Для меня «написать mutex/spinlock» звучит как «сделать мебель/табуретку», потому что мьютекс — более абстрактное понятие, более высокого уровня, а спинлок — уже деталь или способ реализации. Но не суть, мы друг друга поняли.
                                                                      0
                                                                      Этот вопрос как раз и показывает, понимает ли кандидат как оно работает. Если понимает, то в процессе размышлений должен спросить про примитив уровня ядра вида futex, на котором и должна базироваться реализация. Ну этот вопрос как раз почти всегда отвечали хорошо, кроме Qt-ов. Из них никто даже скайповое не прошел…
                                                                        +1
                                                                        > Если понимает, то в процессе размышлений должен спросить про примитив уровня ядра вида futex

                                                                        Это если пишет под Linux, в Windows же аналога ему нет. Наиболее низкоуровная вещь — CRITICAL_SESSION, но она в точности является мьютексом.
                                                                          0
                                                                          У нас в требованиях был опыт разработки под Linux.
                                                                            +2

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


                                                                            Для меня "опыт разработки под Linux" — слишком общее понятие, которое не подразумевает знания всей подноготной. То есть использование pthread с pthread_mutex_t — это и есть опыт разработки под Linux. Ну а лезть в недра glibc — это уже не задача рядового С++ программиста.

                                                                              0
                                                                              У нас не было конкретных вопросов про все детали(комментарием ниже я скорее сбился в процесс работы, чем то, что мы спрашивали реально), типа сколько байт занимает node в std::map или про дебри реализаций.
                                                                              Мы скорее вели дискуссию про такое. Как бы кандидат это реализовал и почему.

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

                                                                              У нас пару лет примерно такая вакансия и висела, но кандидатов вообще были единицы. Потом мы снизили порог, тк нужно было нанимать побыстрее.
                                                                                0
                                                                                > У нас пару лет примерно такая вакансия и висела, но кандидатов вообще были единицы. Потом мы снизили порог, тк нужно было нанимать побыстрее.

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

                                                                                    Да, это может занять несколько месяцев или даже пару лет. Одних знаний мало, нужен ещё и опыт. Не любой работодатель будет готов столько времени потратить на обучение.
                                                                                      0
                                                                                      Несколько месяцев — допустим, да, не любой работодатель потянет.
                                                                                      А зачем к нему идти, нужно выбираться от туда где проблемы с деньгами или экономия на сотрудниках.

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

                                                                                      Но да, новичку такая бага не по силам, ему нужно начать с чего попроще при поддержке того кто поопытней. Так что да, надежда на способного кандидата.
                                                                      +2
                                                                      > Но если пользовался std::map — и не читал исходников и не знает как оно работает, то это пробел.

                                                                      Вариант ответа: бинарное дерево без уточнения типа (красно-чёрное, AVL или ещё какое-нибудь) устроит? Главное, что время вставки/удаления/поиска — O(log N), а остальное — детали реализации.

                                                                      Ну читать исходники C++ STL — сомнительное удовольствие, дефайн на дефайне и дефайном погоняет, плюс дикий объём кода.
                                                                        0
                                                                        Ну детали имплементации сильно могут влиять. Для skype вопроса такой бы ответ устроил.
                                                                        Но AVL от RB довольно сильно отличается в некоторых вещах. И если пишешь на С++, то хорошо бы знать такие нюансы, так же знать сколько аллокаций требуется и памяти, например. Это совсем базовые вещи для С++. Иначе, тогда можно и на перле писать, если в таком не разбираться.
                                                                        Высокопроизводительный код на С++ вообще не очень приятно писать. Если страшно читать STL, тогда лучше его не использовать, что многие и делают.
                                                                          +1
                                                                          И если пишешь на С++, то хорошо бы знать такие нюансы, так же знать сколько аллокаций требуется и памяти, например.

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


                                                                          Это совсем базовые вещи для С++

                                                                          Не соглашусь с данным утверждением.


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

                                                                          Ну так высокопроизводительный код и универсальная STL — вещи малосовместимые.

                                                                            0
                                                                            В библиотеках MSVC, GCC, Intel реализации могут очень сильно отличаться друг от друга, и это нормально

                                                                            Верно, но мы и не использовали такой набор компиляторов. У нас была одна версия gcc, который нас полностью удовлетворял, про которую мы много чего знали. И компилятор и ядра мы оооочень аккуратно и медленно обновляли. Лучше ограничить себе задачу и не поддерживать, например, сборку под macosx или windows, если никто и никогда этот код там не будет запускать. То же и про версии ядер и компиляторы.

                                                                            Ну так высокопроизводительный код и универсальная STL — вещи малосовместимые.

                                                                            Я скорее, про то, что оба занятия не самые простые и приятные. Но часто нужно читать реализацию, прежде чем использовать. Как, например, после чтения дикого сгенерированного кода protobuf выяснилось, что он работал медленнее, чем самописный реккурсивный json-parser. То есть бинарная десериализация работала медленнее, чем текстовая json. Из-за кучи различных аллокаций по месту и нет в protobuf-е.
                                                                              0
                                                                              > Как, например, после чтения дикого сгенерированного кода protobuf выяснилось, что он работал медленнее, чем самописный реккурсивный json-parser.

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

                                                                              У меня в проекте тоже используется самописный Json-конвертер, и он тоже быстрее библиотечных. И библиотека для распараллеливания у меня тоже своя (накладные расходы в parallel_for уменьшились в разы). Ускорение за счёт снижения универсальности — это нормально.
                                                                                0
                                                                                Ага, а потом программистов почему-то начинают ругать за написание велосипедов.

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

                                                                                Ускорение за счёт снижения универсальности — это нормально.

                                                                                Да, так и есть.
                                                                                0
                                                                                Я на всякий случай переспрошу: вы чтением кода выяснили, что он работает медленнее? Не профилированием всего приложения, не чем-то таким, а чтением?
                                                                                  0
                                                                                  Мы решили просто посмотреть, что он генерит, затем было видно по коду(возможно сейчас это уже давно не так), что делается много лишних теледвижений вроде аллокаций и копирований памяти туда-сюда. Потом мы сравнили скорость на наших данных. И поняли, что оно хуже нашего текущего json-парсера, и решили нигде его особо не использовать, где важна скорость. Хотя до этого была идея попробовать из-за удобства для использования в различных языках.
                                                                              +1
                                                                              Если страшно читать STL, тогда лучше его не использовать, что многие и делают.
                                                                              Дело не в том страшно или нет, тяжело или нет, а в том, хватит ли у вас денег чтобы человек этим занимался за подходящую ему ЗП. Именно поэтому многие на C++ не пишут.
                                                                                0
                                                                                Я обожаю С++, это мой самый любимый язык из императивных, хлебом не корми дай шаблонами обмазаться и vtune по коду погонять, но хедеры libstdc++ я читать патологически не могу. Шланговская libc++ вот поприятнее уже будет.
                                                                                  0
                                                                                  самый наркоманский по чтению STL, имхо, у MSVC++
                                                                      0
                                                                      Есть два варианта, или в фирме типовые задачи, или она быстро разорится. В обоих случаях — отлично что ушли. Кстати, если есть восприятие, что фирма хорошая, то можно через полгода зайти узнать как дела, и вернуться на полуторную-двойную зарплату.
                                                                    0
                                                                    молодым менеджером можно заработать в теории больше, чем начинающим разработчиком

                                                                    А откуда возьмётся молодой менеджер без руководящего опыта?
                                                                    (реально интересно)

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

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

                                                                        0
                                                                        Менеджер — специалист управляющий процессом (продажи, логистика, закупки т.д.), не обязательно персоналом.
                                                                        0
                                                                        молодым менеджером можно заработать в теории больше, чем начинающим разработчиком
                                                                        Насколько я понимаю, джун без опыта в Москве вполне может получить тысяч 50. Неужели продажник без опыта имеет шансы получить больше?
                                                                          0
                                                                          Если у него хорошо получается продавать с первого дня, да. Продажнику платят за результат, а не за «опыт».
                                                                            0
                                                                            Ну это не ответ. Есть ли сколько-нибудь заметный процент тех, кто реально столько получает?
                                                                              0
                                                                              В январе 2014 года я пришел в компанию, где 50 000 можно было сделать, продав продукции на 1 500 000. Скажем так, у среднего менеджера по продажам это был месячный план. У новичка — это план на 2 месяца. У опытного специалиста — на 2 недели. Это всего 2 машины с грузом. При этом новичку вполне могло повезти и он мог сделать этот объем буквально за 2-3 дня 1 сделкой.
                                                                        0
                                                                        Согласен, за примерами далеко ходить не надо. Я учился в городе чуть выше 400 тыс. населением, где практически все производство уже давно исчезло или находится в умирающем состоянии. В городе минимум 2 вуза, обучающих спецов по АСУТП. Каждый год — по 50+ человек с соответствующим дипломом. А сколько нужно таких людей региону? Никого это не волнует. В советское время их могли бы распределить туда, где есть недостаток соответствующих кадров, а сейчас человек может это сделать лишь самостоятельно. При этом если выигрыш в зарплате будет минимален (если вообще будет), жильем никто не обеспечит, и прочие прелести рыночной экономики.
                                                                        Продолжают клепать спецов в количестве, значительно превышающем потребности рынка, а потом удивляются: чего это у нас так мало людей работает по специальности?
                                                                          +4
                                                                          Живу и работаю в промышленном городе, где больше половины предприятий завязаны на 1,5 компании предлагающие услуги спецов АСУТП. Естественно, руководство каждого завода считает их цены оху завышенными и хочет инженера АСУТП за 25-30 тысяч в месяц в режиме 24/7, так как нанимать двух штатных специалистов — это уже слишком. Или повесить эти обязанности на сисадмина, а то он не занят.
                                                                          IMHO, инженеры АСУТП нужны, но платить им и обучать их мало кто готов.
                                                                            0
                                                                            Продолжают клепать спецов в количестве, значительно превышающем потребности рынка, а потом удивляются: чего это у нас так мало людей работает по специальности?

                                                                            "Продолжают, удивляются" — кто продолжает и удивляется?
                                                                            Ну не принудительно же людей в АСУТП затаскивают, они сами ведь идут, на что-то надеются. И скорее всего получают желаемое, работая в макдаке менеджером или переезжая туда, где спецы АСУТП нужны.

                                                                            0
                                                                            > любую вакансию можно закрыть, предложив достаточную компенсацию. Значит не очень надо.
                                                                            зацепился за фразу «любую». Есть вакансии, список потенциальных претендентов на нее исчисляется единицами и все они уже пригреты и обласканы. И сколько бы вы не предлагали денег (а у любого предложения есть верхний предел экономической целесообразности) сотрудник не бросит свою квартиру в уютном районе с хорошей инфраструктурой, с детсадом и школой для детей, парком, прикормленными уточками в соседнем пруду, сворой знакомых, родственников и т.д. Ну вот не повезло вам иметь свой офис не там где живет этот уникальный специалист. Хотя если бы повезло, то он бы к вам обошелся очень и очень бюджетно.
                                                                              0
                                                                              Все так, но мы ведь говорим не о лауреатах нобелевской премии и не о стиве джобсе, а больше о «программиста на delphi». Ну а если есть «верхний предел целесообразности» и как-то и так обходитесь по многу лет — значит и не нужен вам особо этот специалист, правда?
                                                                                +1
                                                                                Да ладно, про нобелевку и джобса. Просто его одного приходится заменять на 5-6 узких спецов. А это приводит к тому, что для решения проблемы на стыке всех этих специальностей приходится проводить совещания такой кучей народа (с соответствующим расходом времени нервов и разных языков). А был бы один, он там в голове чего-то пошевелил извилиной и все.
                                                                                Конечно можно обойтись и без него, но его наличие дает кардинальный прирост в решении нестандартных проблем и задач. Именно такие придумывают решения которые устраивают сразу по многим параметрам.
                                                                                Это как переводить с русского на английский имея под рукой только русско-монгольский, монголо-китайский, китае-немецкий и немецко-английского переводчиков. Причем каждый из них не в полной мере владеет предметной терминологией (точней все владеют, но в разных диапазонах).
                                                                                Радует, что с русского на английский переводит нужно не часто. Но когда нужно, хочется просто застрелиться. А был бы русско-английский переводчик, всем было бы проще жить.
                                                                                  0
                                                                                  Всегда удивлялся существованию таких мифических персонажей. Он и бэкэнд выстроит, чтоб безопасно и фронт напишет на cutting edge-технологиях, еще и железку космосоустойчивую спаяет. Конечно все хотят такого, но насколько его хватит и какая очередь задач при этом к нему выстроится, учитывая, что его одного заменяют аж пятеро узких спецов? И через сколько времени будет готов некоторый продукт в таком случае? Да и люди не железные.
                                                                                    +2
                                                                                    Они есть. Просто чаще встречаются там где занимаются НИОКР-ами, а не линейной разработкой. Он не заменяет 5 узких, он служит им дополнением (тут вопрос спорный, кто кому служит дополнением), чтобы все что делают пять узких могло нормально работать в комплексе.
                                                                                      0
                                                                                      Как бы главные архитекторы для этого и придуманы, разве нет? Разве что сама сфера узкая и соотвествующие специалисты разброснаы территориально. Вроде того чувака, который по удаленке отлаживал свой код на реальной железке.
                                                                              +6
                                                                              Советская экономика учила кучу инженеров, трудоустраивала их (пусть и за хлеб с водой, попутно гоняя «на картошку») и большинство было довольно.
                                                                              Советская экономика трудоустраивала по принципу «обязаны дать работу всем». Из-за этого отделы были раздуты, в реальности в отделе инженером могло быть только парочку человек, а остальные — просто с дипломом. Конкуренции полноценной не было. И результаты труда тоже не требовались конкурентные. В результате неэффективные структуры, которые спокойно можно посылать на картошку.
                                                                              Сейчас же рынок инженерных специальностей значительно схлопнулся, а количество выпускающихся меньше не стало.
                                                                              За счет массового внедрения компьютеризации, а так же из-за того, что парочку внятных инженеров сделают больше, чем десятка-два никаких. Вот только в бизнесах так же не хватает шарящих людей.
                                                                              Пример из мебели, в глубинке: два человека из 6 делали больше половина объема индивидуальных заказов мебели каждый месяц. Причем когда я пришел и начал там автоматизировать и внедрять новую версию ПО, то в результате оформление упростилось в разы. Но расклады по объемам изменились мало. Более того, из кучи людей, что там работало до и после — кроме меня и этой парочки ударников труда никто вот вообще не задумывался над упрощением и автоматизацией. Всем было поооофиг. Найти не пофигистов — практически не реально…

                                                                              Сейчас друг сменил мебельную фирму (уже про Мск). Сделал во второй месяц заказов на зп выше сотки, сотрудник, который работал ещё до него — тысяч на 40-50. Мой друг причем оказался при этом еще и недозагружен. Да и количество ошибок при этом относительное меньше имеет. Угадайте, кстати, кто из них номинально старший в отделе?

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


                                                                                Есть подозрение, что кучами лежат отнюдь не бриллианты. Да и орлы стаями не летают. А значит, 120рублевые инженеры в массе своей были инженеграми, пригодными только для распивания чаев и чего покрепче (сужу по рассказам тех, кто в советские времена в «Алмазе» работал — на отдел человека 4, которые тему тянут, остальные балласт для картошки)
                                                                                +7
                                                                                «Любите меня, я подарок» — с такой позицией приходит кто угодно, и вчерашние студенты и бывшие сотруднии крупных компаний. И я бы не сказал, что кого-то из них явно больше. Если соискатель к вам не пошел, это означает, что он получил более выгодное предложение от другой компании, а не то, что у него завышенные ожидания, и он остался сидеть на диване ждать офера из гугла.
                                                                                  +14
                                                                                  Вот вы знаете, профессионалы и эксперты почему-то склонны в себе постоянно сомневаться и исходя из этих сомнений расти, учиться, экспериментировать. А вот молодые специалисты прекрасны априори — сомнения в сторону, яжпрограммист.
                                                                                    +1
                                                                                    Эксперт эксперту рознь. ЧСВ как бы никто не отменял.
                                                                                      +4
                                                                                      А нам за ЧСВ бонус доплачивать? :-)
                                                                                        +1

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

                                                                                          +2
                                                                                          Это же рынок. Не доплатите вы, доплатит кто-то другой.
                                                                                            +1
                                                                                            а может и никто не доплатит, и эти специалисты будут жаловаться что работы нет(тм)
                                                                                              +2
                                                                                              Значит, не так уж нужна работа.
                                                                                              Это же рынок.
                                                                                              Самые базовые понятия экономики, не нужно объяснять, надеюсь?
                                                                                            +1
                                                                                            А потом вот эти люди устраивают программисту классическое собеседование с просьбой продать ему ручку, и оценкой социальных качеств. (и не говорите что вы не такие, не раз видел ситуацию когда берут человека с харизмой вместо знаний, и потом плачут… )
                                                                                              +3
                                                                                              А как собеседовать джуниора только что выпустившегося из института без каких-либо знаний? За огонек в глазах и берут. Сам так делал, а как его еще оценить?
                                                                                                +2
                                                                                                Не такие. Трюк с ручкой — устаревший хлам. Собеседование у нас больше похоже на разговор + рабочая часть (техническая или коммерческая), без социальных тестов и прочей фигни типа «подловить на чём-то». И да, огонёк в глазах что-то да значит.
                                                                                                +3

                                                                                                К сожалению, на практике это людям без ЧСВ недоплачивают)

                                                                                                  +2

                                                                                                  Если вам специалист таки нужен, а вакансия уже полтора года незакрытая висит — то наверное таки да. Доплачивать за ЧСВ и тщательно холить и лелеять.
                                                                                                  Вообще-то не мне вас учить бизнесу, раз вы что-то таки продаёте, но ИМХО — у вас какие-то вредные шаблоны в голове. В комментариях неоднократно мелькали фразы: "вам шашечки или ехать", "рынок труда, а не ваше мнение, диктует цену" и тому подобные. Но вам как об стенку горох: вынь да положь готового перспективного спеца, согласного работать на устаревших технологиях, а ВЫ к тому же ещё и хотите решать — сколько платить и как часто повышать ему з/п.
                                                                                                  Хочется спросить — у вас там капитализм уже или всё ещё советская власть?

                                                                                                    +3

                                                                                                    Очевидно:


                                                                                                    • работодатель считает "раз технология вышедшая из моды, то можно платить меньше", забывая о том, что речь не о пенсионере на старом заводе, который хочет дотянуть там до пенсии, и который уже ничего нового учить не станет
                                                                                                    • работник видит, что если он будет работать на Java или C#, то он и через пять лет будет востребованным высокооплачиваемым работником, а если будет работать на Delphi, то через пять лет он рискует оказаться невостребованным
                                                                                                      => работник согласится работать на Delphi, только, если ему за него будут платить не меньше, а БОЛЬШЕ, чем за модные Java и C#, потому что только в этом случае будут покрыты будущие возможные риски связанные с перспективами на востребованность через несколько лет.
                                                                                                      0
                                                                                                      Абсолютно согласен, люди прогнозируют свою будущую востребованность. Именно поэтому 10 лет назад ушел с Delphi
                                                                                                        0
                                                                                                        10 лет назад ушел
                                                                                                        а он бац Ж-) и всё ещё жив
                                                                                                        Как там у А.C.? «Вздыхать и думать про себя»?

                                                                                                        P.S.
                                                                                                        Он уважать себя заставил И лучше выдумать не мог.
                                                                                                          0
                                                                                                          Он жив крайне мало где. Вот как раз в таких конторах, которые годами пилят один и тот же софт с одними и теми же фреймворками, одними и теми же людьми.
                                                                                                            –1
                                                                                                            Раз выходят новые коммерческие версии и есть Free Pascal,
                                                                                                            то жив как технология

                                                                                                            жив крайне мало где
                                                                                                            А Ваша выборка в терминах статистики репрезентативна?

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

                                                                                                            Так вот, если перочинный нож выполняет свою задачу — то что?

                                                                                                            Или кузнецов возьмём: ну не скучно им
                                                                                                +17
                                                                                                Если я приду на собеседование и начну сомневаться в себе, то итог абсолютно предсказуем.
                                                                                                  +5
                                                                                                  если честно говорить: «не знаю»/«забыл» и тд — то это повышает шанс приема на работу
                                                                                                    +21
                                                                                                    Это не так. Я проверял :)
                                                                                                      +5
                                                                                                      Значит у нас разнится опыт, потому что я тоже проверял)
                                                                                                        0
                                                                                                        С какой стороны вы проверяли? Тут без подробностей частный случай рассматривать как кальку общего нельзя:)
                                                                                                          +4
                                                                                                          Никогда не стеснялся честно признать, что не знаком с предметом про который меня спрашивают. Три раза подряд трудоустраивался, три раза подряд не стеснялся признаваться в незнании, три раза подряд это не помешало, и предложение я получил(два раза принял)
                                                                                                            +1
                                                                                                            Это зависит от того на сколько толковый попадется работодатель.
                                                                                                      +1

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

                                                                                                    +3
                                                                                                    Сошлюсь на обратный «эффект Даннинга — Крюгера», так что есть вероятность, что как раз «профессионалы и эксперты» будут в итоге получать меньше.
                                                                                                      +1
                                                                                                      Вот вы знаете, профессионалы и эксперты почему-то склонны в себе постоянно сомневаться


                                                                                                      Как-то рассказывали о кандидате на должность программиста в крупную it-компани: «Сегодня приходил парень, вроде нормально рассказывал, но жутко неуверенный в себе. Не взяли, неуверенные нам не нужны».
                                                                                                      С другой стороны, думаю, что если бы отвечал отлично, то взяли бы не смотря на неуверенность.
                                                                                                    +41
                                                                                                    Вы пишете про устаревшие учебный планы, и ищете программиста на почти умершем Delphi. Повеселило :-)
                                                                                                      +7
                                                                                                      Выбираете шутки за 300? :-) Delphi — мощный язык, который позволяет писать крутой бизнес-софт, например, известную систему SAP. А ещё кучу игр, средств разработки, промышленного софта и т.д. И Embarcadero свои продукты отлично развивает и лихо на них зарабатывает — ввиду востребованности крупными разработчиками.
                                                                                                        +14
                                                                                                        Он довольно низок в рейтинге языков и, скажем так, в целом не обладает рядом хоть каких-то удобных фич, которые бы мотивировали на него перейти. Более того, delphi еще и не кросс-платформенный, а значит разработка обязательно под Windows.

                                                                                                        Я оставил delphi очень давно, так как, скажем, до сих пор не очень понимаю, чем он лучше для разработки, чем тот же C#, если говорить про Windows.

                                                                                                        Апелляция к legacy системам, которые писать давно тоже не катит, так как на C#, Python, Java, C++ и еще куче языков тоже пишутся серьезные вещи и вполне успешно.
                                                                                                          +7

                                                                                                          Но ведь Delphi таки кроссплатформенный. Довольно давно уже есть все возможности для разработки под MacOS, iOS, Android. А с не давних пор присутствует и LLVM-компилятор для Linux.

                                                                                                            +1

                                                                                                            C# таки уже тоже кроссплатформенный. Именно потому, что он не вымерший и его развивают. .Net Standart, .Net Core, Xamarin, Mono и т.п.

                                                                                                              0
                                                                                                              Может оно и так. Но в индексе, которым постоянно попрекают Delphi позиции шарпа за последнее время сильно поиссякли. И это всё не взирая на кроссплатформенность и открытие сырцов:
                                                                                                              www.tiobe.com/tiobe-index/csharp
                                                                                                              Так что вопрос о вымирании открыт. Прогноз отрицательный. Если так пойдет дальше то скоро он 'догонит' Делфи в индексе :)
                                                                                                              Делфи же, как говорится, со стабильным прогнозом, висит на своём, почетном, десятом, месте десятилетиями:
                                                                                                              www.tiobe.com/tiobe-index/delphi-object-pascal
                                                                                                              А в последнее время еще и поднялся.
                                                                                                                0
                                                                                                                Отлично вы цифрами манипулируете:
                                                                                                                Лучше посмотрите сюда:
                                                                                                                www.tiobe.com/tiobe-index

                                                                                                                Во-первых C# — 4.8% от рынка разработки, а Delphi — 1.8%. Получается только исходя из этого можно сказать, что для шарпеев рабочих мест в 2-3 раза больше. Прибавьте сюда 2% от VB.Net (который родной брат C#-а и разница только в синтаксисе — т.е. переучиться максимум 2 недели).

                                                                                                                По поводу взлётов и падений — вот Java уже много лет на первом месте, но за последний год потеряла аж 5% (т.е. больше чем весь C# целиком). Думаете это значит, что джаву не стоит учить?! Что в C#, что в Java кода написано столько, что ещё очень надолго хватит, да и для Enterprise — продуктов пока ничего лучше не придумали…
                                                                                                                Кстати у мегапопулярного сейчас JavaScript — только 2% и 7ое место в рейтинге…
                                                                                                                  0
                                                                                                                  Я показывал тренды. А тренды, увы, далеко не в пользу шарпа.

                                                                                                                  Кстати у мегапопулярного сейчас JavaScript — только 2% и 7ое место в рейтинге

                                                                                                                  Вот и вопрос — настолько ли он мегапопулярен? Незанчительно выше Делфи по индексам :)
                                                                                                                    0
                                                                                                                    Я думаю это говорит о странном подсчете индекса tiobe.
                                                                                                                    Потому как судя по вакансиям, ну вы поняли.
                                                                                                                      +1

                                                                                                                      Если рейтинг составляется по признакам использования (например, на основании упоминания на форумах), это может говорить о разных вещах:


                                                                                                                      1. Вакансии на Дельфи не появляются в изобилии по причине превышенич спроса у соискателей над предложением работодателей (быстро закрываются)..
                                                                                                                      2. Вакансии на Дельфи заполняются в основном не на открытом рынке, а "своими", "по знакомству".
                                                                                                                      3. Дельфи применяется в основном не для разработки больших коммерческих проектов, а "для дома" или для автоматизации каких-то рабочих процессов своими силами (например, какой-нибудь ученый ваяет на нем специфические программы для особенной обработки своих данных.
                                                                                                                      4. Что-то еще.

                                                                                                                      В какой пропорции оно может быть намешано — пес его знает

                                                                                                                        0
                                                                                                                        Методика расчета есть у них где-то на сайте. Можно посмотреть что и как. То, что индекс, очевидно, не коррелирует с количеством вакансий может указывать на то, что нельзя измерять популярность, полезность и необходимость языка одними только вакансиями. Стат. данные нужно очень внимательно изучать, иначе можно сделать соверешенно неверные выводы. Программистам ли это не знать? :)
                                                                                                                          0
                                                                                                                          Начнем с того, что хз что такое «популярность». И связано ли оно с кол-вом вакансий. Если у нас больше людей знают Х, чем нужно рынку, т.е. вакансий нет вообще — это популярность? Ну, ведь вон сколько людей им владеют.
                                                                                                                +4
                                                                                                                ( «не кросс-платформенный» — по-моему, уже «кросс»)

                                                                                                                Т.е. Вы, SirEdvin, берётесь переписать работающий проект с Delphi на C#/C++ / etc.?
                                                                                                                И какой видите срок окупаемости?
                                                                                                                  0

                                                                                                                  Таки уже да, к сожалению, сразу эту инфу не нашел.


                                                                                                                  Т.е. Вы, SirEdvin, берётесь переписать работающий проект с Delphi на C#/C++ / etc.? И какой видите срок окупаемости?

                                                                                                                  Как я уже сказал


                                                                                                                  Апелляция к legacy системам, которые писать давно тоже не катит

                                                                                                                  Проблемы легаси это проблемы легаси.

                                                                                                                    +1
                                                                                                                    > Как я уже сказал

                                                                                                                    про то что Вы лично ушли с Delphi я читал,
                                                                                                                    про бизнес последствия — здесь не было, по-моему

                                                                                                                    Вопрос про окупаемость был скорее риторический:
                                                                                                                    навряд ли фирма автора поста считает переход окупаемым
                                                                                                                      +3
                                                                                                                      Значит, фирме автора стоит сказать, что так и так, у нас legacy, а не делать вид, что delphi нормальный язык программирования, на котором стоит начинать что-то разрабатывать.
                                                                                                                      Или же привести другие разумные причины, почему все-таки нужен Delphi. Вот я не люблю Go, но мне понятно, почему на нем стоит писать. А почему стоит писать на Delphi?
                                                                                                                        +1
                                                                                                                        ( Go — начал читать, смотреть и т.д.)

                                                                                                                        > почему стоит писать на Delphi?

                                                                                                                        Мне лично Modula-2 нравился больше чем Turbo Pascal ( в своё время)
                                                                                                                        И Clarion больше чем Delphi

                                                                                                                        Но...

                                                                                                                        Доступной ( не за деньги, а поизучать) ADA для x64 нет,
                                                                                                                        Modula-3 — нет отладчика под Win, c Oberon — часто хотят отдельную(!) OS
                                                                                                                        И т.д. и т.п.

                                                                                                                        Выходит, Delphi «достаёт» ненужным ключевым словом «begin»,
                                                                                                                        но на практике кроме него и нет особо сред разработки языков «европейской школы»
                                                                                                                          0
                                                                                                                          Выходит, Delphi «достаёт» ненужным ключевым словом «begin»

                                                                                                                          А мне begin с end-ом в паскале и его производных как раз нравится.
                                                                                                                          Фигурные скобки не очень хорошо цепляются взглядом, в отличие от словесных скобок.

                                                                                                                            0
                                                                                                                            А мне begin с end-ом в паскале и его производных как раз нравится.
                                                                                                                            Фигурные скобки не очень хорошо цепляются взглядом, в отличие от словесных скобок
                                                                                                                            Да, это так и есть

                                                                                                                            Поясню про «излишние begin-ы»:

                                                                                                                            DECLARE 
                                                                                                                               a number(3) := 100; 
                                                                                                                            BEGIN 
                                                                                                                               IF ( a = 10 ) THEN 
                                                                                                                                  dbms_output.put_line('Value of a is 10' ); 
                                                                                                                               ELSIF ( a = 20 ) THEN 
                                                                                                                                  dbms_output.put_line('Value of a is 20' ); 
                                                                                                                               ELSIF ( a = 30 ) THEN 
                                                                                                                                  dbms_output.put_line('Value of a is 30' ); 
                                                                                                                               ELSE 
                                                                                                                                   dbms_output.put_line('None of the values is matching'); 
                                                                                                                               END IF; 
                                                                                                                               dbms_output.put_line('Exact value of a is: '|| a );  
                                                                                                                            END; 


                                                                                                                            Это PL/SQL ( на ADA похож неимоверно)

                                                                                                                            смотреть Ж-) где ELSIF — находим там отличия от TP
                                                                                                                            «не вооруженным взглядом» Ж-)

                                                                                                                            Меньше «букв» — мелочь, а приятно Ж-)

                                                                                                                            с циклами нечто похожее

                                                                                                                            P.S. вот PL/SQL уж точно годится для «зарабатывания денег» в IT
                                                                                                                            Это встроенный язык Oracle
                                                                                                                  –7
                                                                                                                  То, что вы не видите ряда удобных фич — не означает, что их нет. Ну как пример…

                                                                                                                  Для большинства языков access violation фатален и приводит к немедленному завершению программы. А на delphi — это всего лишь аппаратный exception, который можно обработать. К этому добавляются удобные конструкции try..finally и try..except.

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

                                                                                                                  А у профи… У меня северное приложение работает 15 лет в режиме 365 на 24.

                                                                                                                  Так что любую бизнес-задачу, разовый отказ которой грозит потерями миллиона рублей — есть смысл делать на дельфи. В том числе и CRM.
                                                                                                                    +5
                                                                                                                    Для большинства языков access violation фатален и приводит к немедленному завершению программы. А на delphi — это всего лишь аппаратный exception, который можно обработать. К этому добавляются удобные конструкции try..finally и try..except.

                                                                                                                    В Java и Python — это вполне себе exception, который так же можно отловить через try ..except.


                                                                                                                    GUI абсолютно аналогично просто выдаст ошибку, если правильно написано, а не упадет все. Абсолютно аналогично работает и большинство веб-серверов на этих языках программирования, только один запрос вернет ошибку. Я более чем уверен, что C# работает абсолютно так же.

                                                                                                                      –2
                                                                                                                      В Java и Python — это вполне себе exception, который так же можно отловить через try ..except.

                                                                                                                      Насколько мне говорили в java для этого нужно запускать с ключом.

                                                                                                                      Вы лучше приведите пример приложения (GUI или консоль), написанного не на дельфи (или дельфийском варианте С++), которое бы выживало после access violation. Ну хоть одно найдете?

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

                                                                                                                      Веб-сервера работают на совсем иных механизмах восстановления. Там многопоточность и при ошибке поток просто падает. А при запросе ищется свободный поток. Если его нет — поток создается. Аналогично работает и chrome, причем у него вместо потоков — процессы.
                                                                                                                        +2
                                                                                                                        Веб-сервера работают на совсем иных механизмах восстановления. Там многопоточность и при ошибке поток просто падает. А при запросе ищется свободный поток. Если его нет — поток создается. Аналогично работает и chrome, причем у него вместо потоков — процессы.

                                                                                                                        Простите, что? Попробуйте, например, flask. Там просто стоит отлов всех exception и их транслирование в запихивание ошибки в response, а само приложение не падает. И это все работает в один поток. Потому что python пробрасывает ошибку PyErr_NoMemor в случае чего.


                                                                                                                        Вы лучше приведите пример приложения (GUI или консоль), написанного не на дельфи (или дельфийском варианте С++), которое бы выживало после access violation. Ну хоть одно найдете?

                                                                                                                        Мммм… https://github.com/odoo/odoo? Вроде работает, даже если возникнут какие-то проблемы с выделением памяти, которые реально сложно получить.


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

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

                                                                                                                          0
                                                                                                                          PyErr_NoMemor — опять софтверная ошибка. Аппаратные — access violation, stack overflow и так далее.

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

                                                                                                                          Приятель, ушедший туда тимлидом, рассказывал обратное. Стоит ли спорить о вкусе устриц с теми, кто их ел?
                                                                                                                            0
                                                                                                                            PyErr_NoMemor — опять софтверная ошибка. Аппаратные — access violation, stack overflow и так далее.

                                                                                                                            Потому что runtime для python преобразовывает аппаратные ошибки для вас в софтверные. Или это плохо?


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

                                                                                                                            Не знаю, я сужу исключительно как потребитель.

                                                                                                                              0
                                                                                                                              Плохо — это непонимание, чем аппаратные исключения (внутрение прерывания)отличаются от софтверных ошибок. Курс по архитектуре процессоров проходили? Если да, то могу пояснить.
                                                                                                                                –1

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

                                                                                                                                  –2
                                                                                                                                  Знаете, если бы все писалось идеально, то нужды бы в этом механизме не было. Но обертки пишут люди, системные вызовы — тоже люди, даже JVM и JIT — люди, так что ошибки бывают.

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

                                                                                                                                  У нас даже процессор с отколотым уголком как-то был. Причем он работал, только пару раз в сутки вылетал. :-)

                                                                                                                                  Смысл в том, что 365*24 — это 365*24 невзирая на все сбои. И именно потому delphi и применяется для такого рода систем. А CRM — это как раз 365*24.
                                                                                                                                    +3

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

                                                                                                                                      +2
                                                                                                                                      365*24 достигается только кластерами

                                                                                                                                      Да

                                                                                                                                      Плюс спец. железо ( т.е. лучше одновременно и кластер, и HW)
                                                                                                                                        –2
                                                                                                                                        Ну да, но резервный сервер — это последняя линия обороны, а не единственная.
                                                                                                                                          +2

                                                                                                                                          Но необходимая.
                                                                                                                                          Если у вас нет резервного сервера, все ваше 365 на 24 не работает.


                                                                                                                                          Отвечу вам тут же на предыдущий комент:


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

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


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

                                                                                                                                            +1
                                                                                                                                            криворукий админ выдернул шнур интернета у физической машины.
                                                                                                                                            Как все два шнура? Ж-)

                                                                                                                                            P.S. Патч-кордов, как правило, минимум два
                                                                                                                                            P.P.S. Отключение одно ( хотя бы и для работ) — штатное событие
                                                                                                                                            P.P.P.S. Но всё равно — согласование сроков, план и т.д.

                                                                                                                                            Ах, да: потому и обязательна система мониторинга,
                                                                                                                                            что один шнур/диск не заметен, а когда уже «все» в down, тогда «поздно боятся, надо было раньше»

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

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

                                                                                                                                              Интернет — чреват террактами и хакерами. На такого рода системах его нет. Даже клиентские машины изолированы от интернета физически. Только две собственных локалки.

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

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

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

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

                                                                                                                                                  –1
                                                                                                                                                  А подскажите другие линии обороны, которые бы помогли.
                                                                                                                                                  2-3 версии программ. Если клиент своими запросами свалил пару серверов — даем ему предыдущу версию. Устойчиво роняет и её — даем ему заглушку примитивную lite-версию.

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

                                                                                                                                                  Вот именно в этом и отличия ваших веб-серверов с АСУТП. У вас цена состояния сервера — ноль. Или почти ноль. А в АСУТП обычно это самое ценное. Потому у вас и упор на сервера, а в АСУТП — на робастность кода.
                                                                                                                                                  Чем поможет вот эта возможность обработать повреждение памяти, если как уже указали ниже, это довольно сложно сделать правильно для всех случаев
                                                                                                                                                  Тем, что это сильно быстрее и сильно дешевле полной отладки «до последнего бага». Для всех — не сделать. Для наработки на отказ 500 лет — сделали.

                                                                                                                                                  К вам тот же вопрос — насколько часто обнаруживаются баги в вашем коде? И что бы вы сделали, если бы вам надо было довести период между обнаружением багов до 10-20 лет?
                                                                                                                                                    +1
                                                                                                                                                    2-3 версии программ. Если клиент своими запросами свалил пару серверов — даем ему предыдущу версию. Устойчиво роняет и её — даем ему заглушку примитивную lite-версию.

                                                                                                                                                    Звучит как что-то очень странное… А масштабировать не проще?


                                                                                                                                                    Вот именно в этом и отличия ваших веб-серверов с АСУТП. У вас цена состояния сервера — ноль. Или почти ноль. А в АСУТП обычно это самое ценное. Потому у вас и упор на сервера, а в АСУТП — на робастность кода.

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


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

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


                                                                                                                                                    К вам тот же вопрос — насколько часто обнаруживаются баги в вашем коде? И что бы вы сделали, если бы вам надо было довести период между обнаружением багов до 10-20 лет?

                                                                                                                                                    Уже вот предлагали всякие ADA и математическое доказательство правильности работы кода. Вот что-то из этого, вот только это работает на маленьких критически важных системах. В больших системах это не работает, и сделать там период обнаружение багов хотя бы 1 год уже что-то из разряда фантастики. Хотя с критическими багами то проще.

                                                                                                                                                      +1
                                                                                                                                                      Звучит как что-то очень странное… А масштабировать не проще?

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

                                                                                                                                                      Даже когда второй движок медленный, и пропускается оно всё потом оффлайн.
                                                                                                                                                        0
                                                                                                                                                        Это имеет смысл в рамках отказоустойчивости? В духе, если упал новый, вернуть данные со старого?
                                                                                                                                                          +1
                                                                                                                                                          Да. Новая модель, конечно, лучше, но старая лучше, чем ничего.
                                                                                                                                                            0
                                                                                                                                                            Скорее если от этого клиента упало два новых — роутить его на старый, пока программисты не исправят баг. Или в обслуживании отказать, пока он вам все сервера не уронил.

                                                                                                                                                            Рассматривайте клиента, уронившего вам пару серверов, как хакера, проводящего DOS-атаку. Так понятнее будет?
                                                                                                                                                          0
                                                                                                                                                          Звучит как что-то очень странное… А масштабировать не проще?

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

                                                                                                                                                          А если таких клиентов будет тысяча — то 3.6 миллиона по минимуму. За чужой счет — запросто.

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

                                                                                                                                                          Ну не бывает надежных систем, у которых есть единая точка отказа. А у вас единая точка — баги в в вашем коде.

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

                                                                                                                                                          Что значит нет? Судя по вики, у нас как раз кластер с теплым резервом.

                                                                                                                                                          Горячий резерв нельзя по простой причине. Представьте себе двоих за рулем одной машины. Как думаете, через сколько минут будет авария? У пилотов два штурвала, но управляет один: «отдал-принял», то же самое на тепловозе, причем с блокировкой — взял управление на себя, значит второго принудительно перевел в резерв.

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

                                                                                                                                                          А если кластер позволяет игнорировать такого рода ошибки, какой мне толк от этого?

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

                                                                                                                                                          Как связаны баги с этим?

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

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

                                                                                                                                                          Можно ваш критерий большой системы? Ну вот на ПАК ФА — 4 млн строк кода, это какая система? Наша — видимо маленькая, 135 тысяч строк.
                                                                                                                                                          сделать там период обнаружение багов хотя бы 1 год уже что-то из разряда фантастики.

                                                                                                                                                          Обнаружения или проявления? У нас период обнаружения бага — порядка месяца, проявления (влияния бага на функции системы) — по рассчетам порядка 500 лет. При этом всякие опечатки в логах я считаю за баг.
                                                                                                                                                            –4
                                                                                                                                                            Клиент ждет ответа на запрос 1000мс, не дождался — новый запрос.

                                                                                                                                                            Клиент напрямую из своей кривой приложухи шлет запрос и эту приложуху вы никак не можете поменять? Звучит очень печально.


                                                                                                                                                            Что значит нет? Судя по вики, у нас как раз кластер с теплым резервом.

                                                                                                                                                            Мне казалось, что у вас автоматического failover нет по словам "когда падает, должен кого-то уведомить". Я ошибся?


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

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


                                                                                                                                                            Можно ваш критерий большой системы? Ну вот на ПАК ФА — 4 млн строк кода, это какая система? Наша — видимо маленькая, 135 тысяч строк.

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


                                                                                                                                                            У нас период обнаружения бага — порядка месяца, проявления (влияния бага на функции системы) — по рассчетам порядка 500 лет.

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

                                                                                                                                                              0
                                                                                                                                                              Клиент напрямую из своей кривой приложухи шлет запрос и эту приложуху вы никак не можете поменять? Звучит очень печально.
                                                                                                                                                              Ваш клиент из вашей приложухи шлет запрос вашему серверу. А сервера падают. Или хакер умышленно роняет ваши сервера один за одним.

                                                                                                                                                              Мне казалось, что у вас автоматического failover нет по словам «когда падает, должен кого-то уведомить». Я ошибся?
                                                                                                                                                              Ошиблись. Failover по принципу мертвой руки есть, но тормозной — то ли 15, то ли 30 секунд таймаута. Слишком уж было боязно, что 2 системы одновременно станут работать.

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

                                                                                                                                                              А логическая порча памяти обычно не обнаруживается очень долго. Ошиблись на единичку, записали в другой элемент массива — вот и порча. И как вы это поймаете? Да никак. Только тесты + вычитка кода.

                                                                                                                                                              У AV, как правило, причины не в порче памяти. Большинство AV — это обращения через нулевой указатель. То есть пропущенная проверка на NULL.

                                                                                                                                                              Ну как пример — в дельфи при исключении в конструкторе вызывается деструктор. И этот деструктор должен понимать, что объект недоконструирован. А иногда — не понимает. Вот и появляется AV.

                                                                                                                                                              Use adter free у нас практически нету, ибо используется FreeAndNil.

                                                                                                                                                              Так что реально есть две ситуации: AV единичный и AV постоянный. Ко второму типу относится и ваша любимая глобальная порча памяти.

                                                                                                                                                              А вот что-то среднее — редкость. Это надо так попортить память, чтобы не задеть структуру кучи (она проверяется), не сломать инварианты (они постоянно проверяются), но сломать ровно 1-2 указателя. 3 сломали — будет 3 AV, выйдем на следующий уровень защиты. Указатели не задели — значит AV не будет.

                                                                                                                                                              Чувствуете, насколько это редкая и специфичная проблема?

                                                                                                                                                              А так как я криворукий парень, то взял и написал код, который подставляет неправильные даты. И потом эти даты пошли клиентам, в базы данных и везде. Или от такого вы тоже как-то страхуетесь?
                                                                                                                                                              Угу, физическим недопуском криворуких к коду. :-))) Систему писали 4 зубра (пятый зубр генерил идеи), один из них придумал потом идею языка Котлин, другой — потом написал Auslogics Registry Defrag … Ну в общем криворуких там не было.

                                                                                                                                                              Интересно, а как вы это подсчитали?
                                                                                                                                                              Потолочный расчет тут.

                                                                                                                                                              Не можете же вы вводить новую версию ПО целых 500 лет полностью.

                                                                                                                                                              Переведите, плиз?

                                                                                                                                                              Если вы имеете ввиду время между релизами, то, пардон, как часто вы обновляете ПО в стиральной машине? А в микроволновке? Купили — и работает. Помрет со смертью железа.
                                                                                                                                                                0
                                                                                                                                                                Большинство AV — это обращения через нулевой указатель. То есть пропущенная проверка на NULL.

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


                                                                                                                                                                Потолочный расчет тут.

                                                                                                                                                                Самая большая проблема с вашим расчетом в том, что цифры взяты с потолка в большинстве случаев. Занижены они или завышены в целом не важно. Тот же "а у нас багов не было месяц" — это не о чем. Вот я тоже написал простого чатбота, так он проработал 3 месяца без багов, а как только я начал разрабатывать его дальше, так баги и посыпались. Или у вас только минимальные правки без каких-то там рефакторингов, оптимизации работы и прочего?


                                                                                                                                                                Угу, физическим недопуском криворуких к коду. :-))) Систему писали 4 зубра (пятый зубр генерил идеи), один из них придумал потом идею языка Котлин, другой — потом написал Auslogics Registry Defrag … Ну в общем криворуких там не было.

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


                                                                                                                                                                Переведите, плиз?

                                                                                                                                                                Если вы имеете ввиду время между релизами, то, пардон, как часто вы обновляете ПО в стиральной машине? А в микроволновке? Купили — и работает. Помрет со смертью железа.

                                                                                                                                                                То есть ваш продукт вы не обновляете? Ну и современные штуки таки иногда обновляются :)

                                                                                                                                                                  –1
                                                                                                                                                                  И тут мы пришли к тому, что то, что вы в delphi делаете через отлов AV, в других язык является софтверным исключением

                                                                                                                                                                  Смотря в каких. В С++, например, будет аппаратное исключение. А вообще-то для нашей схемы ничего не меняется, она одинаково работает для любых исключений.
                                                                                                                                                                  То есть им банально не нужен отлов AV, потому что повреждение памяти самой программы runtime не допускает, а с внешними проблемами никто не может помочь.

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

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

                                                                                                                                                                  Сервер правили один раз. Сервера там были на Pentium-III 300 Мгц под WIN NT 4. В некоторый момент там сменили и машины и ОС. Поскольку машины поставили двухпроцессорные, то перекомпилили сервер (там был ifdef на однопроцессорную и многопроцессорную конфигурацию, для однопроцессорной у нас была своя быстрая критсекция).

                                                                                                                                                                  Клиента обновили, когда вводили второй экземпляр системы на соседний стан. И потом ещё раз — была мелкая проблема с новой windows.

                                                                                                                                                                  Вот и получается такое. Человеческий фактор то все равно работает.

                                                                                                                                                                  Так от «у нас готово» до «система сдана» минимум год проходит. Ну минимальные сроки опытной и опытно-промышленной эксплуатации — по полгода.

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

                                                                                                                                                                  То есть ваш продукт вы не обновляете? Ну и современные штуки таки иногда обновляются :)

                                                                                                                                                                  Ну а кого вы обновляли? Стиралку? Микроволновку? Холодильник? Телевизор? Лифт? Автомобиль? Не было желания двигатель в машине поменять? Или в телевизоре конденсаторы обновить? :-))))

                                                                                                                                                                  А главное — зачем? Бесплатной работы вам хочется, что ли????

                                                                                                                                                                  Это заказная работа. Нам заказали систему — мы её сделали. Дальше — гарантия, после неё только авторский надзор.

                                                                                                                                                                  АСУТП проще рассматривать как устройства (приборы), а не как софт. Вот сделана железка — и работает.

                                                                                                                                                                  Не, конечно бывает, ползучая модернизация, но там софт меняется вслед за сменой железа. Но это делают сами заводчане. В очень веселом режиме — раз в месяц ППР — и у всех трое суток без сна. И два часа на отладку, когда на выходе из ППР идет плановый брак.
                                                                                                                                                              0
                                                                                                                                                              Проще, когда денюшки чужие. Давайте посчитаем. Клиент делает запрос, который валит ваш сервер так, что час восстанавливается копия базы. Клиент ждет ответа на запрос 1000мс, не дождался — новый запрос. Вам нужно как минимум 3600 серверов на одного такого клиента.

                                                                                                                                                              А и не всегда поможет — положил 2 сервера из-за ошибки, положит и 10, и 3600.