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

Сначала была история.

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

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

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

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

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

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

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

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

Все довольны. Деньги при деле, дети при бумажках. А че с этими бумажками делать?

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

«Айм из Дата Аналистик Пайтон.», или акт следующий.

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

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

И вот на приеме у специалиста по подбору в ЦЗН, листаю буклетики и опа. Аналитика данных пайтон. Курсы. Бесплатно безработным и мамочкам в декрете. Институт этакий. Проект демография.

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

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

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

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

Шок, это слабосказательное уменьшительное описание, когда видишь часы и объем учебной баз и помнишь про демографию. В институте это 8 групп по 50 человек и 80% девушки в декретном отпуске, в большинстве со знаниями ит, как запилить видосик с чадом в тик ток. То есть стартовать с нуля можно, если iq шкалит, либо рядом спец, который прокачает знания экспресс‑онлайн.

Судорожное перечитывание договора и опа. Это курсы повышения квалификации. Тоесть сидит человек, корпеет в экселе, с отчетом в 300 000 строк и пару сотен столбцов, плюет, идет учит пайтон и пандас на курсах, и за 15 минут делает то на что месяцы тратились.

Но у нас мамочки!!!!

Это что, развод на бабки? 50% просто не сдадут и первый раздел.

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

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

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

Собственно о чем это повествование?

Во первых, что о вине институтов речи и быть не может. Состав преподавателей отрабатывал свой хлеб. Как и виноватых в принципе. Просто сама ситуация есть, совокупность мелких недоработок и упущений.

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

О том, что я не знаю, что страшнее, оказаться не у дел усилиями ИИ или затеряться в толпе «переквалифицированных специалистов» с рекомендациями.

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

Жду комментов...

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


  1. JYE
    17.10.2023 22:10
    +14

    В свою компанию всех кандидатов сначала собеседует офис менеджер, ну как собеседует, дает им задания на листочке и они должны его решить, тоже на листочке. Я понимаю, что это кринж программировать ручкой на листике, но ни чего другого не придумал. Задания очень простые: проверка знания массивов, циклов, условий и знание sql. Проверяю только алгоритмы, на синтаксис внимания не обращаю. Так вот из 20 прошедших только 1 что то пишет. Большинство не может внимательно прочитать условие задачи (а может врут, что невнимательно прочитали) и пишут совсем не то. Из примера: есть задача вывести простые числа, простое число делится без остатка только на 1 и на себя. Несколько последних кандидатов просто проверили, что если число делиться на 1 и на себе без остатка, то оно простое!!! И много других подобных перлов.


    1. SlavikF
      17.10.2023 22:10
      +18

      У вас хоть что-то писали.

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


      1. SaM1808
        17.10.2023 22:10
        +16

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

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

        Я спросил, реально ли они это используют в работе? Поблагодарил и отказался от собеседования, вообще не интересно вникать в этот бред.

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

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


        1. Alexandroppolus
          17.10.2023 22:10
          +14

          страшно другое - что собеседующий примет это как мой самый лучший код.

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

          Я спросил, реально ли они это используют в работе?

          Судя по описанию, там задача на регулярку (на замену по регексу). Просто они не смогли придумать нормального лаконичного условия.


          1. SaM1808
            17.10.2023 22:10
            +14

            Согласен, но млин, что мешает просто спросить? Я бы сделал так:

            - С регулярками как?

            Вариант 1:

            - Отлично!

            - Ну раз отлично, во напиши мне регулярку вот к этому.

            Вариант 2:

            - Ну пользую иногда!

            - Ну раз знаком, как будешь делать регулярку к этому?

            Вариант 3:

            - Никогда не пользовал!

            - Почему?

            Абсолютно здравое общение ИМНО


            1. Alexandroppolus
              17.10.2023 22:10
              +2

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


            1. tenzink
              17.10.2023 22:10
              +5

              Нисколько не здравое. Есть мастера очень красиво говорить, но не способные ничего сделать. Были случаи, что приходит супер-сеньор с опытом 20+, нужно отрывать с руками, а он не может две строчки кода связать (i.e. тривиально развернуть строку)


              1. SaM1808
                17.10.2023 22:10
                +2

                Ну ладно вам... Опыт 20+ ещё ни о чем не говорит, зря делаете выводы только на основе опыта, что "нужно с руками отрывать".

                Звучит так, что "лучше б не говорил, а делал", верно, но отчасти, потому что есть и контр-примеры: у меня девочка знакомая 20 лет, математик от бога, разложить может что угодно наверное, но она аутист, пойди договорись с ней...

                Я к чему, исключительно мое мнение, собеседующий должен:

                1. Понимать, кто ему нужен.

                2. Уметь понимать, кто перед ним. Однозначные выводы о человеке только на основании кол-ва лет опыта в резюме, умении в голове составлять регулярки, умении писать код на листочке, красноречии и т.п. - ошибочные. Но! Возможно, я ошибаюсь, и вам нужен именно такой человек :).


                1. tenzink
                  17.10.2023 22:10
                  +2

                  Под 1 и 2 подпишусь. Но если возвращаться к коду, то как без этого обойтись я не представляю. Для меня это фильтр - если человек не пишет что-то разумное (в IDE/на бумажке) для простой задачи, то фильтр на джуна он провалил. Иногда бывает неожиданное, поэтому я бы давал всем. Такая задача на скажет, что человек сеньор, но подскажет когда его брать нельзя.

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


                  1. SaM1808
                    17.10.2023 22:10

                    Я б дал тестовое, небольшое, на 2-3 часа, и потом бы спросил с каждой строчки кода.


                    1. wataru
                      17.10.2023 22:10
                      +9

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

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


                      1. SaM1808
                        17.10.2023 22:10

                        Ну претензии про лайфкодинг такие же...

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


                      1. wataru
                        17.10.2023 22:10

                        Типа "отвернитесь", что-то поменять в коде и "теперь ищите ошибку?". Это задание на внимательность в первую очередь а не на понимание кода.

                        Ну претензии про лайфкодинг такие же

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


                      1. SaM1808
                        17.10.2023 22:10

                        Не согласен про "неудовлетворит", меня например бы удовлетворило, но as you wish...

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


              1. imanushin
                17.10.2023 22:10

                Были случаи, что приходит супер-сеньор с опытом 20+

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

                , нужно отрывать с руками,

                Для ответа на этот вопрос создаем интервью

                а он не может две строчки кода связать

                Эксперимент был поставлен, результаты были выявлены. Вывод: или эксперимент неудачен (например, человек был усталый, задачи были на css, несмотря на опыт в C++ и так далее), или же исходный тезис "нужно отрывать с руками".


                1. wataru
                  17.10.2023 22:10
                  +3

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


              1. olegchir
                17.10.2023 22:10
                +1

                В реальном мире, ты с npm качаешь модуль reverse-string, и этим решение задачи заканчивается. И это решение будет работать в разы быстрее, чем наивная имплементация "из головы", что важно для кода на проде. Если решение с npm кажется оверкиллом, то все равно, решение задачи на переворачивание гуглится быстрее, чем ты даже пытаешься начать его обдумывать. Зачем спрашивать решение задачи, которую человек никогда за 20+ лет не решал? Разве что, чтобы проверить, как он будет решать совершенно новую для него задачу "с нуля" без предварительных знаний...


                1. Jianke
                  17.10.2023 22:10
                  +7

                  Зачем спрашивать решение задачи, которую человек никогда за 20+ лет не решал? Разве что, чтобы проверить, как он будет решать совершенно новую для него задачу "с нуля" без предварительных знаний...

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

                  PS есть ли у вас идея как это проверить альтернативным способом?


                1. wataru
                  17.10.2023 22:10
                  +11

                  В реальном мире, ты с npm качаешь модуль reverse-string, и этим решение задачи заканчивается.

                  Как раз такой подход - бездумно качаем что-то с npm - это очень-очень-очень плохо. Еще хуже, чем бездумно копировать первый попавшийся кусок кода со StackOverflow. Только тут еще код и не читают часто и даже не задумываются об этом. Оно же в npm лижит, значит - готовая библиотека. Вот из-за этого мы имеем всякие рекурсивно работающие за линию IsOdd или left-pad, удаление которого ломает половину сайтов в интернете.

                  Кстати, этот приведенный вами reverse-string, работает через регекспы! Регекспы при развороте строки, крал! Да еще и рекурсивно! Во-первых, это почти наверняка тормозит, а во-вторых, это write-only код, в котором невозможно ни найти ошибку ни понять, что он вообще делает.

                  В итоге имеем дичайше тормозащий веб, из-за того что почти все программисты вот так решают задачи. В описании в npm вроде написано, что мне надо - качаем. И node_modules уже весит гигабайты, зато "мне алгоритмы не нужны".

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


                1. qw1
                  17.10.2023 22:10
                  +6

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

                  Даже стало интересно, что там сделали "в разы быстрее".
                  И в ядре я увидел "наивную" ужасную имплементацию

                  	var result = '';
                  	for (var i = string.length - 1; i >= 0; i--) {
                  		result += string[i];
                  	}
                  	return result;
                  

                  Обмазанную сверху регекспами, чтобы корректно перевернуть многосимвольные unicode-эмодзи. Как я понимаю, каждая конкатенация - это переаллокация? Вы слишком хорошего мнения о пакетах в npm ))


                  1. wataru
                    17.10.2023 22:10

                    Обмазанную сверху регекспами

                    И еще рекурсией!


                    1. qw1
                      17.10.2023 22:10

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


                      1. Alexandroppolus
                        17.10.2023 22:10

                        Рекурсия там отрабатывает на глубину не более 1.


                      1. wataru
                        17.10.2023 22:10
                        +2

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


                  1. Alexandroppolus
                    17.10.2023 22:10
                    +1

                    Как я понимаю, каждая конкатенация - это переаллокация?

                    За прошедшие годы движок js научился узнавать и отдельно оптимизировать этот паттерн (конкатенация в цикле), так что там не n^2.

                    А в целом, далеко не каждая операция со строкой переаллоцирует. Есть rope для конкатенации, общий буфер для substr и т.д.


                    1. qw1
                      17.10.2023 22:10
                      +2

                      То есть, у нас npm-пакет под конкретный js-движок.


                      1. Alexandroppolus
                        17.10.2023 22:10

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


              1. AnthonyMikh
                17.10.2023 22:10
                +2

                а он не может две строчки кода связать (i.e. тривиально развернуть строку)

                Напоминаю, что задача "развернуть строку" не нужна на практике от слова совсем и требует довольно нетривиального кода для обработки Unicode хотя на уровне code point, не говоря уже о grapheme cluster.


                1. iig
                  17.10.2023 22:10

                  А в чем проблема с Unicode? Или многобайтные символы нужно как-то по особенному копировать?


                  1. mayorovp
                    17.10.2023 22:10
                    +1

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


                    1. iig
                      17.10.2023 22:10

                      Для начала строку нужно на эти символы поделить.

                      Если в языке есть строки Unicode - оно само поделит же. На чистом С - нужно упарываться, да.

                      на графемы

                      Ну да, согласен. Составные символы и прочие удивительные вещи.

                      чтобы результат был более осмысленным

                      Перевернутая строка - сама по себе достаточно бессмыссленная вещь ;)


                      1. tyomitch
                        17.10.2023 22:10

                        Если в языке есть строки Unicode - оно само поделит же.

                        Это, мягко говоря, не так. В том же JS есть строки Unicode, а попробуйте-ка поделить JS-строку на символы?


                      1. iig
                        17.10.2023 22:10

                        s = "中国"
                        s[0]
                        Out[3]: '中'
                        s[1]
                        Out[4]: '国'

                        Я думал что все так умеют ;) JS так не делает?

                        console.log(s)
                        中国 debugger eval code:1:9
                        undefined
                        console.log(s[1])
                        国

                        Вроде делает.


                      1. Alexandroppolus
                        17.10.2023 22:10
                        +1

                        Иероглифы - это пустячок, они помещаются в обычный юникод (в JS символы двухбайтные). А вот, например, эмодзи уже не помещаются.

                        https://learn.javascript.ru/unicode


                      1. randomsimplenumber
                        17.10.2023 22:10
                        +1

                        s = '✮⋆˚。???? ⋆。°✩'
                        print(s)
                        print(s[1])

                        ✮⋆˚。???? ⋆。°✩

                        В python вроде работает. Картинка про девочку и javascript ;)


                      1. iig
                        17.10.2023 22:10

                        s = '✮⋆˚。???? ⋆。°✩'
                        "✮⋆˚。???? ⋆。°✩"
                        console.log(s[1])
                        ⋆ debugger eval code:1:9
                        undefined
                        console.log(s[2])
                        ˚ debugger eval code:1:9
                        undefined
                        console.log(s[0])

                        Вроде работает. Или это не те эмодзи?


                      1. tyomitch
                        17.10.2023 22:10

                        Это называется не "обычный юникод", а "основная многоязычная плоскость" :)


                      1. tyomitch
                        17.10.2023 22:10

                        > s="????"
                        < '????'
                        > s.length
                        < 2
                        > s[0]
                        < '\uD83E'
                        > s[1]
                        < '\uDD14'


            1. Shatun
              17.10.2023 22:10
              +3

              Ну я например регулярки если давно нетрогал сходу немогу написать, хотя лет 5 назад активно использовал. Перед тем как написать мне надо минут 15 доку покурить. Так же и многие другие специфичные вещи, тот же баш, jq, JavaEE, ЭЦП . Зато могу сейчас написать на бумажке python и SQL alchemy, хотя питон обычно даже не указываю в резюме-просто потому что за последние полгода довольно много скриптов на нем написал. Или cloudformation, при этом думаю если пару лет небуду использовать начинать буду с доков.


              1. RichardMerlock
                17.10.2023 22:10
                +1

                Вот вот такой ответ и будет самым нормальным на собеседовании! Если на собесе ну прям капец как регулярки критичны, то я бы даже cheat-sheet кандидату выдал, чтобы он регулярку составил без судорожного вспоминания опыта 5 летней давности.


            1. auddu_k
              17.10.2023 22:10
              +2

              А почему бы не ответить: такое делают регулярки, но это write only language и я стараюсь обойтистороной и с ходу не напишу, но знаю что есть, могу ещё предложить решить кодом с помощью конечных автоматов, но это будет чуть дольше. Или как-то ещё...

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


              1. Alexandroppolus
                17.10.2023 22:10
                +4

                 регулярки, но это write only language

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


                1. auddu_k
                  17.10.2023 22:10
                  +2

                  Ну, каждому своё, за эту свободу мы любим программирование, но тут топик про лайфкодинг и реакцию на него.


                1. vesper-bot
                  17.10.2023 22:10
                  +1

                  Вот не всегда. Например регексп "совпадение, если число делится на 7" имеет вполне монструозную длину, но заменяется одной строкой (двумя, если исходные данные - строка).


                  1. alexxisr
                    17.10.2023 22:10
                    +4

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


                    1. vesper-bot
                      17.10.2023 22:10

                      Таки в десятичной.


            1. saboteur_kiev
              17.10.2023 22:10
              +4

              Все так. Я тоже примерно так делаю:
              Спрашиваю - цените ваши знания регулярок по 10бальной шкале.
              Окей, вопрос на X
              не? тогда вопрос на Y
              не? Окей, пример того, что вы решали регуляркой.

              P.S. По каждой теме можно уточнить глубину знаний и задать 2-3 вопроса чтобы подтвердить эти знания. Главное не путать знания и свою личную экспертизу.


          1. Ravager
            17.10.2023 22:10
            +2

            Судя по описанию, там задача на регулярку (на замену по регексу)

            это сразу в бан. если надо писать аналог регулярки типа https://leetcode.com/problems/regular-expression-matching/ то это хард, и за час в стрессовых условиях это не решить. если нужно написать просто регулярку то это тоже в бан, потому что подобные решения делать приходится очень редко и они сразу выгружаются из памяти.


            1. auddu_k
              17.10.2023 22:10

              О! Классная задачка, спасибо)

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

              Ну, а на нет и куда нет - сразу в бан ????


              1. Alexandroppolus
                17.10.2023 22:10

                Ну там первое что почти сразу приходит в голову - "регулярку" порезать регуляркой

                /(?:[^*]\*)*\.\*(?:[^*]\*)*/

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

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


                1. wataru
                  17.10.2023 22:10

                  Или DP: удовлетворяет ли префикс длины i префиксу регулярки длины j. Там несколько случаев, но они все довольно простые.

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


        1. imanushin
          17.10.2023 22:10
          +8

          Я спросил, реально ли они это используют в работе?

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

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

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

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


        1. semennikov
          17.10.2023 22:10
          +1

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


          1. SaM1808
            17.10.2023 22:10
            +2

            Эх... я бы провалил бы у вас собеседование, и не потому, что я не могу найти простые числа, а потому, что я бы во время собеседования тупо бы не вспомнил определение "простых" чисел, перепутал бы их с "натуральными" или ещё хуже - "с составными".


            1. piton_nsk
              17.10.2023 22:10
              +1

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


              1. SaM1808
                17.10.2023 22:10
                +4

                Так и представил себе этот диалог:

                • На листочке, пожалуйста, напишите код, который находит простые числа, из вот этого ряда числел...

                • Извините, а что такое простые числа?

                • Спасибо, мы вам перезвоним...


                1. iig
                  17.10.2023 22:10

                  Извините, а что такое простые числа?

                  Извините, а что такое деление по модулю?


                  1. Jianke
                    17.10.2023 22:10
                    +8

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


                1. Wan-Derer
                  17.10.2023 22:10

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


            1. JYE
              17.10.2023 22:10
              +3

              У нас в задании написано, что такое простое число. И в моем комментарии об этом сказано. Это еще и тест на то, что человек умеет читать и понимает, то что прочитал


              1. tyomitch
                17.10.2023 22:10
                +5

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


        1. Wan-Derer
          17.10.2023 22:10
          +2

          будет самый мой плохой код

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


          1. SaM1808
            17.10.2023 22:10

            А без этого они не увидят вообще никакого твоего кода

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

            Если я не увижу код, я не могу составить мнение.

            Сколько людей, столько и мнений. :)


            1. Wan-Derer
              17.10.2023 22:10
              +2

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


            1. wataru
              17.10.2023 22:10

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

              Адекватные люди, все-таки делают скидку на стрессовость интервью и неудобство доски/блокнота. На интервью не оценивают красоту кода, а то, что кандидат вообще может цикл с одним условием написать.


              1. Jianke
                17.10.2023 22:10

                кандидат вообще может цикл с одним условием написать

                Хе-хе, я люблю в качестве задания вчерашним выпускникам давать один цикл for(,,;,,;,,) с несколькими условиями. ^__^


          1. Jianke
            17.10.2023 22:10

            Надо шарить экран и кодить в привычной среде.

            ... что даёт возможность втихую использовать помощь друга chatGPT.


            1. Wan-Derer
              17.10.2023 22:10
              +1

              А блокнотик - не позволяет? :)

              Хочешь идеальный собес - зови человека в офис. Я не предлагаю ограничиться только кодингом, остальная беседа остаётся на месте. Вряд ли сварщика удивит если, помимо проверки теории, ему предложат сварить две железки. Почему тогда программисты истерят и сливаются? :) Да, стресс. Что поделать... Надо и этот навык тренировать, так же как рассуждения про методы класса Object степени изоляции транзакций и шаблоны проектирования.


      1. JYE
        17.10.2023 22:10
        +2

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


    1. eugenk
      17.10.2023 22:10
      +1

      Жуть... Если не секрет, каков примерно их средний возраст ???


      1. JYE
        17.10.2023 22:10
        +4

        25 -30 лет


        1. eugenk
          17.10.2023 22:10
          +3

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


          1. Jianke
            17.10.2023 22:10
            +7

            Деградирует образование...

            Потому что сейчас нельзя отчислять откровенных двоечников. :-(


            1. Javian
              17.10.2023 22:10
              +1

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


            1. Lexicon
              17.10.2023 22:10
              +6

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

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


              1. Jianke
                17.10.2023 22:10
                +5

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


                1. Lexicon
                  17.10.2023 22:10

                  Было бы чье время терять. ВУЗы и ССУЗы гребут деньги
                  А на качество выпускаемых кадров плевать
                  Отличники тоже не с ноги на собеседование дверь открывают


                1. Neyaskin
                  17.10.2023 22:10
                  +1

                  Ну вот окончил я техникум, отучился на Специалиста по информационным системам. Так или иначе знаю C#, его ORM фреймворм и фреймворк для разработки desktop. В свое время пробовал веб на python, мобилку на Java. С SQL работал, запросы писать умею. Спроектировать БД могу. Все что тут в комментариях расписали, что люди на собеседовании сделать не могут элементарного, я в принципе сделаю легко. На собеседованиях отвечал на вопросы про ООП в принципе без проблем. На вопросы по SQL связанные с Join`ами отвечал правильно и т.д. Только итог всегда один, либо отказ по причине "вы нам не подходите из за плохих знаний SQL" раза 2-3 так было, хотя единственный вопрос по SQL, который был на собеседовании, это "Как получить все данные из таблицы User", либо в целом отвечаю не плохо, но потом разраб, который меня собеседует начинает задавать вопросы по проблемам с которыми он сам же столкнулся при разработке и решал около месяца, по его словам. А потом тебя просто HR игнорит и никакого отклика даже не дает. И ты сидишь потом, и думаешь, какой же все таки ты наверное тупой


                1. Wan-Derer
                  17.10.2023 22:10

                  а сейчас даже простейший цикл написать на этом же языке не могут ибо "забыли"

                  А на кого они приходят наниматься?


                  1. Jianke
                    17.10.2023 22:10

                    Хотят работать в IT и круто зарабатывать. Пришли на собеседование на позицию программиста.


                    1. Wan-Derer
                      17.10.2023 22:10
                      +1

                      Получается, они вообще не понимают чем программисты занимаются на работе :)


            1. nikolz
              17.10.2023 22:10
              +4

              Их уже лет тридцать нельзя отчислять. Они уже сами преподавателями стали.


          1. Ravager
            17.10.2023 22:10
            +9

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


            1. JYE
              17.10.2023 22:10
              +3

              О, да!!!

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

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


          1. KvanTTT
            17.10.2023 22:10
            +2

            Типичные разговоры "раньше трава была зеленей".


          1. igorts
            17.10.2023 22:10

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

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


            1. sshemol
              17.10.2023 22:10
              -1

              Вы математикой занимаетесь или разработкой?


              1. igorts
                17.10.2023 22:10

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

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


    1. Equinoxer
      17.10.2023 22:10
      +3

      От такого интервьювера с задачками на знание алгоритмов проверки чисел на простоту надо сразу бежать. Вы кого ищете-то ? Кто зазубрил 100500 алгоритмов или кто будет реально решать задачи бизнеса ?


      1. mayorovp
        17.10.2023 22:10
        +11

        А почему нельзя представить, что вывод простых чисел - это и есть задача бизнеса, и решить её так же как решалась бы задача бизнеса, без зазубривания?

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


        1. 1755
          17.10.2023 22:10
          +7

          А вы даете пользоваться поиском?

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

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


          1. MountainGoat
            17.10.2023 22:10
            +17

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


            1. 1755
              17.10.2023 22:10
              +3

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

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


              1. select26
                17.10.2023 22:10
                +5

                О каких алгоритмах вы говорите? Речь о простых числах! Это азы даже не программирования. Алгебры азы.
                Конечно, и такие работу находят. Но результат выдают соответствующие. Их и заменят скоро языковые модели.


                1. nikolz
                  17.10.2023 22:10
                  -2

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

                  Именно такому писательству и учат на ускоренных курсах "молодого бойца" еще в начальных классах школы.

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


                  1. saboteur_kiev
                    17.10.2023 22:10
                    +3

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

                    А чем задачка на простые числа деление, сравнение и циклы, не связана с умением написать что-нибудь на каком-нибудь питоне?


                    1. nikolz
                      17.10.2023 22:10
                      +2

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

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

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

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

                      Когда Вы программисту задаете задачки на сообразительность, Вы проверяете его не как программиста на каком-нибудь питоне, а как разработчика алгоритмов вне зависимости от какого-нибудь языка программирования. Либо, что еще хуже, и на то и на другое одновременно.

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

                      Но он не писатель романа(алгоритма) , который он переводит.

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

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

                      Более того, он может и не знать ваш какой-нибудь питон, но при надобности освоит его за пару недель.


                      1. mayorovp
                        17.10.2023 22:10
                        +1

                        Человек, переводящий алгоритмы с одного языка на другой, называется "кодер". Однако, эта профессия почти всюду ушла в прошлое, чистые кодеры почти нигде не нужны.

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


                      1. nikolz
                        17.10.2023 22:10
                        -1

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

                        Основные из них : метод, алгоритм,программа, тест,оптимизация.

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

                        Практически никто не заморачивается разработкой алгоритмов как таковых.

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

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

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


                      1. mayorovp
                        17.10.2023 22:10
                        +4

                        Ваши представления о программировании устарели, и вот почему.

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

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

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

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

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


                      1. nikolz
                        17.10.2023 22:10

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

                        Непонятно, почему Вы полагаете, что питон позволяет сразу написать более правильный алгоритм, чем старые языки такие как Алгол, Фортран, Паскаль, Ada, C,C++?

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

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


                      1. mayorovp
                        17.10.2023 22:10
                        +1

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

                        Вы путаете алгоритм и его представление. Если алгоритм представлен, скажем, на Питоне - это никак не делает его не-алгоритмом и никак не мешает в дальнейшем его переписать на Си++.

                        При этом скорость выявления ошибок и их количество при программировании сокращается на порядки.

                        За счет чего?

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

                        Ну да, ну да. Закончились аргументы - обвини оппонента в глупости и непонимании!


                      1. nikolz
                        17.10.2023 22:10
                        -3

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

                        Попробую вам объяснить в чем преимущество.

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

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

                        Например, в алгоритме надо сделать цикл от 1 до 1000.

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

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

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

                        Когда изучил этот метод и написал строго по нему то удивился скорости решения задачи.


                      1. mayorovp
                        17.10.2023 22:10
                        +1

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

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

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

                        ---

                        Например, в алгоритме надо сделать цикл от 1 до 1000.

                        Так вот, на питоне это пишется как for i in range (1, 1001). А на Rust так и вовсе for i in 1..=1000. И даже на Паскале это for i := 1 to 1000. Куда уж тут прямее-то?

                        В чём, блин, разница между вашим описанием "цикл от 1 до 1000" и любым из заголовков цикла выше?

                        Но даже если взять менее удобные языки, цикл for (int i=1; i<=1000; i++) - это идиоматический цикл, любой программист, который имеет хоть немного опыта, просто глядя на эту строчку увидит что в ней речь идёт о цикле от 1 до 1000.

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

                        Ау, давным-давно открыто нисходящее программирование, в котором сверху-вниз пишется сразу реализация.

                        21 век на дворе, проснитесь!


                      1. nikolz
                        17.10.2023 22:10
                        -1

                        Это землянки можно строить сразу.

                        Но проекты домов, городов никто не отменял.

                        Если Вы варите суп по готовому рецепту, то это и есть писание по готовому алгоритму.

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

                        Но сложную систему Вы не напишите один и без подробной структуры(алгоритма).

                        Но я же Вас не принуждаю.

                        Делайте как привыкли.

                        Привычка -вторая натура.

                        Я лишь сказал свое мнение, которое опирается на мой

                        "опыт, сын ошибок трудных".


                      1. qw1
                        17.10.2023 22:10
                        +1

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

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


                      1. nikolz
                        17.10.2023 22:10

                        Это системы РВ с ИИ обработки результатов испытаний авто и авиа, торговые роботы, IOT.


                      1. qw1
                        17.10.2023 22:10
                        +1

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


                      1. mayorovp
                        17.10.2023 22:10
                        +1

                        Вы уже второй раз ссылаетесь на строительство. Но принципиальное отличие программирования от строительства - в том, что программу редактировать можно, а построенное здание - нет. И именно потому перед написанием программы нафиг не нужны никакие "чертежи" этой программы. Генплан - да, нужен, а вот чертежи - нет.

                        Но сложную систему Вы не напишите один и без подробной структуры(алгоритма).

                        Один - нет, не напишу. А вот без отдельного алгоритма... То, что во времена системного проектирования считалось сложной системой, сейчас пишется командой из "формошлёпа", "крудовика" и "девопса", ни один из которых толком не понимает что делает. И только если MVP "выстрелит" - к этой команде добавят кого-нибудь более серьёзного.

                        А всё почему? Потому что раньше для сложения двух чисел нужен был Алгоритм, а сейчас есть нормальные языки программирования, стандартные библиотеки, менеджеры зависимостей, stack overflow и новомодный ChatGPT.

                        Осознайте уже: в 70х вопросами поиска подстроки в строке занимались трое учёных с мировыми именами. Сейчас их алгоритм знает наизусть любой школьник-олимпиадник, причём не на уровне "зазубрил", а на уровне "способен придумать с нуля среди ночи". Реализация же этого алгоритма есть в любой стандартной библиотеке...


                      1. nikolz
                        17.10.2023 22:10
                        -3

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

                        Даже в 70-х поиском подстроки не занимались ученые.

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

                        Это сейчас для программистов компьютер - "черный" ящик, а байты - это такое слово, которое надо искать.

                        А еще прикольно то, что все библиотеки матричной алгебры для tensorflow написаны на фортране.

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


                      1. mayorovp
                        17.10.2023 22:10
                        +1

                        Даже в 70-х поиском подстроки не занимались ученые.

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

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

                        Ага, за O(NM). А вот чтобы найти совпадение за O(N+M) - пришлось подумать трём учёным...


                      1. nikolz
                        17.10.2023 22:10
                        +1

                        Верно, тогда не было программистов.

                        Даже специальность инженер-математик появилась позже.

                        Ученые разрабатывали методы, которые сейчас реализованы в библиотеках, в том числе на Фортране.


                      1. tyomitch
                        17.10.2023 22:10
                        +1

                        @mayorovp задал вам вопрос, который вы проигнорировали: если алгоритм можно сразу же записать на ЯП (и сразу же запустить вживую и начать отлаживать), то зачем нужно его промежуточное представление на "языке алгоритмов"?

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

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


                      1. nikolz
                        17.10.2023 22:10

                        Возможно, что поэты не умели писать.

                        Что же касается алгоритмистов и кодеров, то это ваша придумка.

                        Я написал про технологию разработки сложных систем. Эту технологию придумала IBM, потом применяло NASA в программе Аполлон (кто выиграл гонку мы знаем).

                        Очевидно там ошибались, надо было делать как Вы, но они этого не знали.

                        ---------------------

                        относительно вопроса, на который я не ответил,но Вам интересно мое мнение.

                        Отвечаю: В народе говорят: "Заставь дурака богу молиться, он и лоб расшибет"

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


                      1. tyomitch
                        17.10.2023 22:10
                        +1

                        Программа "Аполлон" закончилась в 1972.

                        Сегодня 2023.


                      1. nikolz
                        17.10.2023 22:10
                        -1

                        И что?

                        Вы достигли большего, чем эта программа?

                        Чем гордитесь? Уточните.


                      1. wataru
                        17.10.2023 22:10
                        +4

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

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

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


                      1. tyomitch
                        17.10.2023 22:10

                        Это случайно не вы были? #comment_26070160


                      1. nikolz
                        17.10.2023 22:10

                        там мое имя ?


                1. sshemol
                  17.10.2023 22:10
                  -3

                  О каких алгоритмах вы говорите? Речь о простых числах! Это азы даже не программирования. Алгебры азы.

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


                  1. tyomitch
                    17.10.2023 22:10
                    +1

                    Ну и при чём здесь факторизация?

                    До вас в этом топике никто о факторизации речь не вёл.


              1. bilayan
                17.10.2023 22:10
                +3

                Да тут не алгоритмы, тут проверка на логику больше. Вы точно прочитали внимательно текст? Они проверяют что число делится на 1 и на себя. О том что они выполнили остальные проверки - нет речи.

                Ну и алгоритмы в данном случае это уже про оптимизацию а не решение)


          1. CorwinH
            17.10.2023 22:10

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


        1. b00
          17.10.2023 22:10
          +6

          Я примерно год назад что-то похожее решал в рамках Advent of Code. Сам факт решения похожей задачи - помню. Как именно решал - совершенно не помню.

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


        1. JYE
          17.10.2023 22:10
          +1

          вы серьезно? считаете, что это сложная задача?


          1. mayorovp
            17.10.2023 22:10

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


      1. Jianke
        17.10.2023 22:10
        +14

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

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


        1. iig
          17.10.2023 22:10
          +4

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


          1. domix32
            17.10.2023 22:10

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


        1. ALexhha
          17.10.2023 22:10
          +2

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

          а зачем придумывать велосипед, да еще и с квадратными колесами ?


          1. Jianke
            17.10.2023 22:10
            +14

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


            1. Ivan22
              17.10.2023 22:10
              -1

              наоборот, все бизнес задачи - это сборка из 20 имеющихся велосипедов - то самолета, то вездехода, то подводной лодки, по желанию заказчика


          1. sergio_deschino
            17.10.2023 22:10
            +2

            Открою секрет, практически все бизнес-задачи это придумывание велосипеда, в той или иной степени, правда, к велосипеду предъявляются определенные требования.


          1. semennikov
            17.10.2023 22:10
            +6

            Очень неудачный пример. Велосипеды придумывали, придумывают и будут придумывать. Сравните велосипеды с начала 20 века с шагом 10 лет. Вы очень удивитесь.

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


      1. MAXH0
        17.10.2023 22:10
        +15

        Знание? Знание конечного числа алгоритмов без умения их писать - худший навык, который прививает массовое обучение. Когда решения просто зазубриваются. Сначала в школе, потом ЕГЭ, потом в Вузе...
        Я, конечно, собеседований не веду. Я школьников учу. НО есть такая проблемка. Типичный пример: Ввели два числа. Вывели периметр... Добавили третью координату. Надо вывести площадь параллелепипеда (коробочки). Стон: "Мы не знаем формулу..." А подумать?

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


        1. domix32
          17.10.2023 22:10
          +2

          А подумать?

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


          1. semennikov
            17.10.2023 22:10
            +1

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


        1. starik-2005
          17.10.2023 22:10
          +3

          Не соглашусь про ЕГЭ сходу, т.к. в этом году писал аж 4 штуки (русский, математика, биология и информатика), при том школу закончил еще в далеком 96-м. Сейчас (на мой скромный взгляд) в ЕГЭ просто выучить подходы - этого для хорошего (80+)( балла недостаточно - нужно еще головой думать. Например, в биологии мне ппопалась шедевральная задача про коэволюцию мышей (белых и серых) и птиц (зорких и не сильно).

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


      1. Alexandroppolus
        17.10.2023 22:10
        +16

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


        1. JYE
          17.10.2023 22:10
          +2

          Отличная аналогия


        1. Ivan22
          17.10.2023 22:10

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


      1. eugenk
        17.10.2023 22:10
        +12

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


        1. MiraclePtr
          17.10.2023 22:10
          -2

          Ровно наоборот же.

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

          А вот с выводом простых чисел гораздо сложнее. Потому что единственное решение, которое придет в голову среднестатистическому разработчику - это наивный алгоритм с грубым перебором. И как сказали ниже, "тупое решение в лоб - это почти гарантированный отказ в найме", потому если уж компания решила задрочиться на собесах алгоритмическими задачками, то вероятнее всего она будет требовать решение с наилучшим О-большим - даже если по факту 99.9% их задач это перекладывание джейсонов в крудах с двумя запросами в секунду. А всякие более продвинутые алгоритмы, типа упомянутого Решета Эратосфена, в школах не проходят, а если и проходят, то наврядли человек помнит что-то, что ему рассказали 20-30 лет назад и что он с тех пор ни разу в жизни не использовал. То есть пройти такой тест смогут только те, кто специально готовился к алгоритмическим собеседованиям, прорешивая и разбирая подобные задачки где-нибудь на литкоде.

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


          1. eugenk
            17.10.2023 22:10
            +3

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

            Ну а собесы... Честно говоря последнее время у меня устойчиво складывается впечатление, что нужны они не для найма, а исключительно чтобы почесать ЧСВ (чувство собственной важности, Кастанеда) овер 80-го левела собеседующего. По мне, так ничто не дает узнать человека лучше, чем небольшое тестовое задание на 1-3 дня. Поэтому когда мне предлагают собес на любую тему кроме самых общих (описание опыта, навыков, проектов и т.п.) просто посылаю в пешее эротическое. А сейчас вообще забил на всё большой и ржавый болт. У меня есть некая сумма денег, чтобы очень скромно прожить год-полтора. Вот и пилю потихоньку свой игровой проект.


            1. MiraclePtr
              17.10.2023 22:10
              +3

              По мне, так ничто не дает узнать человека лучше, чем небольшое тестовое задание на 1-3 дня.

              С точки зрения нанимателя - да, с точки зрения нанимаемого - только если ему за эти 1-3 дня заплатят. Иначе говоря, собрался человек поменять работу, выбрал 5-10 интересных вакансий, и ему там зарядили "небольшие тестовые на 1-3 дня" - и все, неделя-две времени потеряны полностью.


              1. eugenk
                17.10.2023 22:10

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


            1. piton_nsk
              17.10.2023 22:10
              +3

              По мне, так ничто не дает узнать человека лучше, чем небольшое тестовое задание на 1-3 дня

              Особенно когда есть 5 - 10 вакансий, а там задание на 1 - 3 дня.


          1. qw1
            17.10.2023 22:10
            +8

            И как сказали ниже, "тупое решение в лоб - это почти гарантированный отказ в найме"

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

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


          1. nikolz
            17.10.2023 22:10

            Не, а. Просто надо в инете поискать решение. Так как задача с бородой, то ее гениальное решение есть в инете. И зачем изобретать велосипед из соседнего магазина.


            1. sergio_deschino
              17.10.2023 22:10

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


              1. nikolz
                17.10.2023 22:10

                Именно этому и учили в Вузах (по крайней мере, я так считаю и этому учил).


          1. semennikov
            17.10.2023 22:10
            +5

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


      1. wataru
        17.10.2023 22:10
        +9

        Серъезно? Задача на проверить, что "число делиться только на 1 и на само себя" - это надо зубрить 100500 алгоритмов? Это чуть-чуть сложнее "выведите сумму двух чисел до 1000". Это просто тривиальное задание на посмотреть, что кандидат может один цикл написать и закодировать квантр общности. По описанию вообще не похоже, что автор подразумевает даже оптимизацию про то, что можно гнать цикл до корня. Да, в этой задаче можно и умные алгоритмы применять, но это явно не то, что от кандидата на бумажке требуется.


        1. calculator212
          17.10.2023 22:10
          -1

          По факту не нужно очень многого знать, но если долгое время не сталкиваться с этим, то легко забыть и затупить, особенно если про сам алгоритм не помнить. Я например в последнее время занимаюсь на 90% работой с БД, написанием крудов и сбором метрик. Когда-то я работал с opencv и если меня попросят написать простой код на собесе связанный с этим, то я не смогу этого сделать, но если на работе попросят меня это сделать, то я посмотрю на код который я писал раньше, немного почитаю сохраненные статьи/материалы и напишу его. Из недавнего меня попросили написать написать воркер пул на собесе, но последний раз я это писал что-то похожее довольно давно и сходу не смог написать (в моём понимании эта задача не сложнее чем реализовать алгоритм решета эратосфена) и по сути это я думаю это стало красным флагом для собеседующего. На мой взгляд такие штуки не пишутся каждый день и держать в памяти это трудно, но поскольку это популярный вопрос людям приходится это заучивать. В целом собес был забавным, меня спрашивали про штуки вроде выравния полей у структур и про особенности работы словарей. В конце я хотел узнать, что же это за проект, где люди экономят память на выравнивании структур(не просто же так это спрашивали) и мне сказали, что это будет обсуждаться на след. собесе и сам человек не в курсе этого. И получается, что человека ищут под определенный пул проектов(это была обычная компания с +/- определнным пулом проектов), но в собеседование было просто на общие знания. Поэтому просить развернуть список, написать быструю сортировку по памяти, решить логичускую задачку, найти решение за O(log n) а не O(n) м.б. в этом и есть смысл если этого требует проект, но если человек будет работать писателем апи, то эти задачи вообще ничего не покажут. Человек может знать все особенности рантайма, но не знать как правильно написать модуль аутентификации или оплаты. И наоборот кто-то не знает как найти простое число, но он умеет хорошо работать с БД и знает как правильно написать платежный модуль. Если это большая компания и она предлагает выше рынка и просит решение алгоритмических задач, то это ок, но когда это просит обычная компания, где нагрузка в 100-1000 rps, то хз зачем им это. На мой взгляд это выглядит это как если бы на стройке искали рабочих у которых есть высшее образование, а для должности прораба просили бы степень кандидата наук


          1. wataru
            17.10.2023 22:10
            +6

            Вы долгое время не писали циклы и забыли как это делается? Вам для этого надо смотреть на более ранний код?

            в моём понимании эта задача не сложнее чем реализовать алгоритм решета эратосфена

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


          1. Bluewolf
            17.10.2023 22:10

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


        1. Abakumov
          17.10.2023 22:10
          -1

          Вообще все зависит от постановки задачи. Если кандидату дали задание написать программу которая вытащит из массива числа, которые делятся на 1 и на себя, то ок. А если было именно «найти натуральные числа» - это уже математику а не программирование проверяют


          1. Jianke
            17.10.2023 22:10

            Вопрос про натуральные числа явно трольский ^___^

            Натурáльные чи́сла (от лат. naturalis «естественный») — числа, возникающие естественным образом при счёте (1, 2, 3, 4, 5, 6, 7 и так далее ).


            1. ALexhha
              17.10.2023 22:10

              Изначально вопрос был про простые числа, а не натуральные


      1. Bluewolf
        17.10.2023 22:10
        +11

        Эмм, вы серьезно? Какие именно алгоритмы нужно зубрить, чтобы банально в цикле поделить тестируемое число A на все числа от 2 до A-1 и убедиться, что результатов без остатка нет? А потом немного подумать, и делить на числа от 2 до А/2. А потом подумать еще чуть-чуть, и делить на числа от 2 до sqrt(A)?

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


        1. i86com
          17.10.2023 22:10
          +4

          А потом немного подумать, и делить на числа от 2 до А/2. А потом подумать еще чуть-чуть, и делить на числа от 2 до sqrt(A)?

          А потом ещё подумать, можно ли как-то оптимизировать это, поделив только на нечетные числа из этого диапазона. Как минимум, можно шаг цикла сделать равным не 1, а 2, потому что четные числа больше 2 нет смысла проверять.

          А потом ещё подумать, можно ли как-нибудь также исключить остальные непростые числа (на них-то тоже смысла делить нет).

          А потом ещё подумать, сколько делений укладывается в один цикл процессора и можно ли это как-то обхитрить.

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

          А потом ещё блин, потестировать же надо, вдруг там у нас 100 квадриллионов +1 делится на два без остатка из-за "округления" (привет, JS!).

          А потом думалка устанет и надо пойти поесть и потупить в ютуб немного. А поел - уже и работать сегодня не прёт. Ну и ладно, завтра посмотрю, что ещё можно придумать.

          ---

          Вот так "простая задачка" выбивает из работы на день "крутого заучку-программиста".

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

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


          1. wataru
            17.10.2023 22:10
            +2

            Тут все зависит от чудаковатости интервьювера. Очевидно, что тут интервьювер был бы доволен нулевым шагом. Цикл до n-1 уже пошел бы на проходной бал.

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

            Ну такое себе. Если этот Груг где-то находит "сдвиг на -1" или работает с вещественными числами при написании тупого цикла до n-1, то он вполне также может и какой-нибудь IsOdd() из какой-нибудь библиотеки взять, проверить на числах от 2 до 7 а также 41 и 42, убедиться, что оно все работает и закрыть таску. (Бонусные очки за рекурсивную реализацию IsOdd за O(n)).


            1. tyomitch
              17.10.2023 22:10
              +3

              Увы, я видел, как человек, получив описание htonl(3) в виде рисунка на бумажке, реализовал её следующим образом:

              1. библиотечной функцией переводим число в двоичную строку;

              2. библиотечными функциями делим строку на четыре куска заданной длины;

              3. библиотечной функцией сцепляем куски строки в другом порядке;

              4. библиотечной функцией переводим двоичную строку в число.

              Всё строго по ТЗ! Что не так?!


              1. wataru
                17.10.2023 22:10
                +3

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

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


          1. Bluewolf
            17.10.2023 22:10
            +7

            Это же задача на бумажке, и цель у нее только в том, чтобы проверить базовое мышление за пределами гуглинга, так что можно остановиться на любом этапе оптимизации! Можно даже извиниться за эту проверку сразу, обосновав потоком кандидатов, которые вот правда не могут. Я бы не завернула (изолированно только из-за этого) даже за перебор 2..A-1.

            И адекватный диалог примерно такой:
            - нужно вывести список простых чисел в диапазоне от 1 до N, как будете решать?
            - можно для каждого числа перебрать все числа 2..A-1 и убедиться, что все они дают остаток, но наверняка для этой задачи есть более оптимальные алгоритмы, которые я в реальной работе погуглю, чтобы не изобретать велосипед
            - хорошо, напишите на бумажке простейший вариант
            - (пять строчек кода через пару минут)
            ВСЁ!

            Опционально:
            - а как можно сделать код с "2..A-1" быстрее?
            - (любая из идей оптимизации, шаг два, уменьшение диапазона, что угодно)

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


        1. Mox
          17.10.2023 22:10
          -1

          А потом еще подумать и понять что проверять делимость на 4 смысла нет если на 2 не делится, и вообще подумать про множители уже проверенных чисел.

          Кажется на собеседовании вас бы завалили )


      1. sergio_deschino
        17.10.2023 22:10
        +4

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

        Из разряда: какие входящие данные нужны, чтобы вернуть площадь круга.


      1. imanushin
        17.10.2023 22:10
        +3

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

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

        И это отличная проверка на то, что человек может выразить примитивные вещи в коде.


        1. 1dNDN
          17.10.2023 22:10
          +1

          Это было даже в ЕГЭ по информатике, когда я сдавал. И решалось брутфорсом на любом ЯП


      1. micronull
        17.10.2023 22:10
        +2

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

        Это простая задачка и такой я лично, был бы даже рад.

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

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

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


    1. roshemback86
      17.10.2023 22:10
      -7

      А что не так с этим решением?


      1. olsowolso
        17.10.2023 22:10
        +4

        Если число делится на 1 и само на себя без остатка, то из того не следует что оно простое - оно может делиться без остатка и на другие числа.


      1. mayorovp
        17.10.2023 22:10
        +7

        Ну, хотя бы то что оно вообще ничего не решает? Проверка `x % 1 == 0 && x % x == 0` - это тавтология на области определения.


        1. rsang
          17.10.2023 22:10
          -4

          Читаем полностью условие:

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


          1. mayorovp
            17.10.2023 22:10
            +5

            Из примера: есть задача вывести простые числа, простое число делится без остатка только на 1 и на себя


          1. Finesse
            17.10.2023 22:10
            +5

            Не владеть такой базовой логикой (видеть разницу между all и some) — это серьёзный минус для программиста. Она нужна везде, даже в шлёпании форм и CRUDов.


      1. AstroSphynx
        17.10.2023 22:10
        +9

        любое число делится на себя и на 1 без остатка, нужно исключить все остальные варианты


      1. JYE
        17.10.2023 22:10
        +14

        Это Вы были у нас на собесе?


    1. ReadOnlySadUser
      17.10.2023 22:10
      +11

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

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


      1. mayorovp
        17.10.2023 22:10
        +3

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

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


        1. ReadOnlySadUser
          17.10.2023 22:10
          +17

          лично я изучал его в пятом классе самой обычной районной общеобразовательной школы

          Мне вот 30. Я пятом классе я получается был... так давно, что забыл сколько лет назад. 20 вроде бы получается.

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

          В общем, как по мне, простая задачка, которую можно на бумаге дать - это массив перевернуть. Или там fizzbuzz написать. Все остальное - от лукавого) Хотя я вообще не присутствую лайв кодинг как явление и обычно игнорирую такие собеседования, потому что не умею хорошо думать без Гугла, времени и душевного спокойствия

          P.S.
          В моей голове, про решето Эратосфена я услышал впервые дай бог лет в 19, в ВУЗе на базовом курсе криптографии. До этого момента вообще не припомню, чтобы я хоть где-то его применял, нужды не было. Да и в целом не так чтобы помню, чтобы а обычной средней школе уделялось хоть какое-то особенное внимание простым числам, т.к. в школьной программе моих лет не так чтобы их свойствам было какое-то применение.


          1. mayorovp
            17.10.2023 22:10
            +7

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


            1. SergeyMax
              17.10.2023 22:10
              +16

              по сложности ушли недалеко от fizzbuzz.

              — Во валит! (С) анекдот


            1. ReadOnlySadUser
              17.10.2023 22:10
              +10

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


              1. mayorovp
                17.10.2023 22:10
                +4

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


                1. ReadOnlySadUser
                  17.10.2023 22:10
                  +4

                  Для меня вообще писать код в live режиме - это стресс, который я так и не смог преодолеть) Так что для меня что бумага, что IDE, всё одна боль) Я прост стараюсь не ходить на собеседования, где надо писать код, благо таких хватает)


                  1. Schalaeff
                    17.10.2023 22:10

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


              1. offline268
                17.10.2023 22:10
                +4

                 что тупое решение в лоб - это почти гарантированный отказ в найме

                По моему опыту это просто лотерея.

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

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


            1. ViacheslavNk
              17.10.2023 22:10

              Это зависит от условий, если задача проверить на простоту число произвольного размера, то тут нужно прямо крепко задуматься, даже самым тупым способом, где просто перебором от 2 до n/2, нужно еще длинную арифметику подключить, кучу обработок ошибок предусмотреть и т.д., особенно если это все на С/С++.


              1. mayorovp
                17.10.2023 22:10
                +3

                Это на бумаге-то?

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


        1. sergiodev
          17.10.2023 22:10

          видимо у вас была какая-то школа для вундеркиндов, т.к. унас в 5-м классе были дроби и ещё что-то простое, информатика вообще появилась в классе 9-м где-то


          1. mayorovp
            17.10.2023 22:10
            +3

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


      1. vrytov
        17.10.2023 22:10
        +1

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


        1. ReadOnlySadUser
          17.10.2023 22:10
          +1

          Вы правы, получается n * sqrt (n), что в целом тоже немало.


          1. vrytov
            17.10.2023 22:10

            А откуда множитель N? :)


            1. ReadOnlySadUser
              17.10.2023 22:10
              +2

              По условию задачи нужно вывести простые числа, т.е. проверить N чисел на простоту, ну или выдавать простые числа пока говорят next. Отсюда и N.


              1. vrytov
                17.10.2023 22:10

                А, точно!


              1. iboltaev
                17.10.2023 22:10
                +1

                делители, к слову, тоже можно перебирать только из ранее найденных простых чисел. Так что, если N - это кол-во проверяемых чисел, то там все же N * sqrt( N/log(N) ), учитывая теорему о распределении простых чисел. Но это навскидку, могу ошибаться


                1. mayorovp
                  17.10.2023 22:10
                  +1

                  Только вы не в том порядке функции применили. Должно быть N * pi (sqrt (N)), что равно N * sqrt (N) / log(N)


      1. AstroSphynx
        17.10.2023 22:10
        +1

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


        1. Ivan22
          17.10.2023 22:10
          +7

          если есть список простых чисел - бери его и выводи, зачем сравнивать еще что-то???


          1. SergeyMax
            17.10.2023 22:10
            +5

            Синьорный код.


          1. AstroSphynx
            17.10.2023 22:10
            +1

            а, я что то прочитал как будто надо из списка какого то рандомного найти простые числа)



        1. ReadOnlySadUser
          17.10.2023 22:10
          -2

          А хранить-то этот список где?) В современном стандарте FIPS 186-5, минимально приличными модулем для RSA считает 2048 бит. А в целом приличными считаются числа длиной вплоть до 4096 бит. Модуль складывается из перемножения двух простых чисел, так что можно считать, что нам нужны два простых числа минимум по 1024 бита длиной.

          Боюсь представить каков размер такой таблицы)


          1. domix32
            17.10.2023 22:10

            Врядли там предлагается искать все простые числа до ближайшего миллиарда.


          1. mayorovp
            17.10.2023 22:10
            +3

            Если смотреть не те задачи, которые возникают в криптографии, а те которые ставятся на собеседовании - то там числа обычно до миллиарда, а иногда и до миллиона (чтоб проще считалось).

            Все простые числа до миллиарда можно упихнуть в массив на 200 мегабайт, или в битовую карту на 125 мегабайт.


            1. domix32
              17.10.2023 22:10
              +2

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


          1. mpa4b
            17.10.2023 22:10
            +1

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


            1. ReadOnlySadUser
              17.10.2023 22:10

              Да, для таких жирных чисел придумали статистические тесты)


      1. wataru
        17.10.2023 22:10
        +2

        Да помилуйте. Это не задача с подвохом, она тут подразумевается как что-то чуть сложне FizzBuzz.

        Тупо цикл от 2 до n-1 с булевым флагом подойдет.


        1. Norgorn
          17.10.2023 22:10
          -4

          Все так говорят, а потом отказы вида "ой, а почему вы многопоточность не учли? Ну и что, что задние на 10 минут и в условии этого нет!". Увидев задачу писать код на бумаге, я бы просто ушёл, ведь там ещё и к синтаксису докопаться могут.

          Смысл в эту лотерею играть? Это вы адекватный (наверное), а чаще в таких случаях скорее не везёт чем везёт.


          1. tyomitch
            17.10.2023 22:10
            +5

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


    1. vtal007
      17.10.2023 22:10
      +1

      зачем это аналитику? Скуль то понятно, а вот массивы (массивы? в питоне же нет массивов), "простые числа" - нафига?


      1. iig
        17.10.2023 22:10

        зачем это аналитику?

        А чем занимается аналитик?


        1. vtal007
          17.10.2023 22:10

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

          Продуктовые ребята могут дизайнить аб-тесты и проверять их "исполнение"


          Инструменты дата-аналитика - пандас и SQL. И биай-инструменты

          (и это еще при том, что на рынке половина вакансий будет не с питоном, а с экселем (пусть и скуль там тоже есть))

          Я думаю автор этой ветки писал не про аналитиков. Просто люди камменты пишут не по теме статьи, а вообще

          Один мой знакомый недавно делал тестовое на аналитика в один банк - задача была найти ошибки в скуль-запросе и построить дашборд в экселе из выданного csv -файла. Конечно дашборд в экселе это чуток кринж, но для теста - норм. Ну и что-то еще в пандасе поковырять)


          1. iig
            17.10.2023 22:10

            КМК, если человек способен на такие трюки, то налабать простенький алгоритм он тоже сумеет.


            1. vtal007
              17.10.2023 22:10
              +2

              так это не связанные вещи

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


          1. Std137 Автор
            17.10.2023 22:10
            +2

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

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


            1. vtal007
              17.10.2023 22:10

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

              А что касается курсов. типовые курсы аналитика - 6 месяцев. Второе высшее - 2 года. Вот за 2 года можно реально чела прокачать до мидла (если чел будет стараться). Но за 6 месяцев - нереально (в массе). Но государство не хочет оплачивать 2 года учебы. А что касается коммерческих курсов - так клиенты не захотят платить в 4 раз больше. Сейчас полгода курсов стоят порядка 100к


      1. ti_zh_vrach
        17.10.2023 22:10
        +1

        (массивы? в питоне же нет массивов)

        Я тут мимокрокодил. И не сварщик. Но вот они. Да и list под капотом сделан на динамическом массиве (если я правильно понял, когда копался).


        1. vtal007
          17.10.2023 22:10
          +1

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

          А вот массивами олдовые ребята называют именно списки в питоне (в некоторых учебниках детских)


    1. l4rover
      17.10.2023 22:10
      -5

      Мда кринж конечно.

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


      1. iig
        17.10.2023 22:10
        +4

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

        ..на джуниорскую вакансию..


      1. MountainGoat
        17.10.2023 22:10
        +4

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


      1. mayorovp
        17.10.2023 22:10
        +10

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


        1. Boilerplate
          17.10.2023 22:10
          +15

          А потом имеем СПА, которое грузится по десятку секунд, лагают выпадающие списки и вкладка периодически падает. А всё потому, что там где-нибудь сложность О(N^4), где этот фронтендер наговнокодил.


          1. qw1
            17.10.2023 22:10
            -3

            Когда станет совсем невмоготу этим пользоваться, позовут того самого Васю с зарплатой +20%, который перепишет проблемное место на N*log(N). Увы, это дешевле, чем держать штат хороших программистов (которых ещё найти надо).


            1. Boilerplate
              17.10.2023 22:10
              +4

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

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


            1. wataru
              17.10.2023 22:10
              +5

              Часто нет какого-то одного места за O(n^4). Никакий профайлинг не поможет. Просто тупо весь код равномерно тормозит. Так что этому Васе придется перелопатить и переписать половину всего кода.


              1. qw1
                17.10.2023 22:10
                -3

                Значит, бизнесу не нужно быстрое приложение. И тратить деньги не будут.


    1. w0lf
      17.10.2023 22:10
      -6

      А можете объяснить, что тут не так?

      "Из примера: есть задача вывести простые числа, простое число делится без остатка только на 1 и на себя. Несколько последних кандидатов просто проверили, что если число делиться на 1 и на себе без остатка, то оно простое!!!"

      Я не увидел противоречий между описанной вами формулировкой задачи и тем, как вы описали её реализацию.


      1. EzikBro
        17.10.2023 22:10

        Тут не так слово "только" в определении. Чтобы число было простым, у него не должно быть никаких делителей, кроме единицы и себя. А тут проверили, что число на них делится, а другие делители просто проигнорировали


        1. w0lf
          17.10.2023 22:10

          Да, благодарю, за разъяснение, тупанул.


      1. me21
        17.10.2023 22:10
        +1

        Любое число делится на 1 и на себя без остатка. Получается, 4 - простое?


        1. MiraclePtr
          17.10.2023 22:10

          делится только (на 1 и на себя) без остатка.

          если делится еще на что-нибудь без остатка - то оно уже не просто. 4 делится без остатка еще на 2, так что нет.


          1. me21
            17.10.2023 22:10
            +2

            Вот и я о том же


    1. Hlad
      17.10.2023 22:10
      +1

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


      1. tyomitch
        17.10.2023 22:10
        +3

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


    1. red_void
      17.10.2023 22:10
      +1

      простое число делится без остатка только на 1 и на себя

      Хорошее определение. Я же правильно понимаю, что -1 — простое число?


      1. Dayl
        17.10.2023 22:10

        Не-а, -1 не является натуральным числом. А простое число - в первую очередь именно натуральное.

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


    1. Leetc0deMonkey
      17.10.2023 22:10
      -1

      Большинство не может внимательно прочитать условие задачи

      Большинство никому ненужных и отчаянно ищущих работу. А профессионал помашет ручкой ещё завидев издалека "задание на листочке". Если вы конечно не Гугл, или зепка хотя бы не 1М.


    1. SAWER
      17.10.2023 22:10

      А написать надо чисто логику или код?


    1. olegchir
      17.10.2023 22:10
      +1

      Кажется, в таком подходе проблема в том, что программирование очень редко связано с алгоритмами. По большей части ты склеиваешь миллион библиотек из npm и maven, чтобы они в связке давали то, что написано в ТЗ. Или запинываешь это миллионами ямлов в кубер. Или что-нибудь в том же духе. В крайнем случае, это что-то с Литкода про то, как правильно использовать хэшмэп. От этого задачи, в которых присутствуют простые числа, которые на что-то делятся, и прочая математика, выглядят дико, это нечто прямиком из другого мира. Наверное, дата-саентисты и чуваки которые пишут финансовые алгоритмы такое могут решать, но обычный человек будет помножен на ноль от самого факта наличия такой задачи. Имхо, лучше давать задачи вида "вот тебе ноут, за N часов напиши простенький аналог Твиттера". Там же можно и систем дизайн поспрашивать, что делать если действительно нужно писать Твиттер, каке там базы использовать и нужна ли для твитов Кафка.


    1. fixic
      17.10.2023 22:10

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


      1. wataru
        17.10.2023 22:10
        +2

        Вообще, нет проблемы. В гугле и прочих фаангах уже давно кандиадту выдают ноутбук с редактором. Не полноценным IDE, правда. Ставить все возможные IDE - не скейлится, да и не честно. Кому-то повезет, и им достанется привычная среда, а кто-то пишет только в emax только вот с такими вот плагинами и ему без разницы, достка или vs code - одинаково мерзко.

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

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


  1. eugenk
    17.10.2023 22:10
    +5

    Немножечко коряво, вот например это - "Мужи же видя, что люд тянется на курсы эти. Решили тоже не теряться, начать из далека.", но в целом респект, написано классно ! Плюсую ! А вообще мне кажется все эти курсы отстойное фуфло. Главное что человек должен выносить из ВУЗа, это умение УЧИТЬСЯ. Т.е. читать умные книжки, экспериментировать, не бояться ошибок и т.п. Особенно айтишник, который вообще должен учиться всю жизнь. Сам вот в свои 60+ изучаю совершенно новую для себя тему - разработку мобильных игр. Без всяких курсов. Просто смотрю отличный мотивирующий канал на ютубчике https://www.youtube.com@nikitadeveloper и тупо пишу код. Ну и что бы мне дали какие-то курсы ??? В лучшем случае рассказали бы про какой-то движок, типа юнити или анриал. А так я полез в глубины vulkan, со всеми его прибамбасами, уже научился решать на GPU дифуры и делать довольно неплохую физику, плюс много чего ещё. Ну кто блин этому научит ! Только сам всё, сам, своими ручками...


    1. s1berc0de
      17.10.2023 22:10
      +2

      Большинство вузов отстают от индустрии лет на 5, а это очень много, базу вуз может и даёт, но помимо базы в придачу насыпает бесполезных знаний, с курсами бед тоже хватает, знаю, что многие техникумы готовят сильно лучше всяких вузов и курсов - мой совет: идти в технарь, если сам прям не в силах


      1. ris58h
        17.10.2023 22:10
        +2

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

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


        1. Gremlinquisitor
          17.10.2023 22:10
          +5

          Мне довелось учиться в вузе по специальности с кодом "09.03.04 Программная инженерия". Что это дало?

          - C/C++ как база. Хорошая и полезная вещь. Великолепно подходит для изучения основ. Поверх C можно уже и Java накатывать, и шарп, да хоть питон тот же. Разобравшись с базой. Без базы потому что ересь вылезает. Что до актуальности... Си нужен и никуда не денется. Плюс база.

          - ASM и Verilog. Вряд ли обновится куда-то дальше, полезен для тех, кто дальше будет железки программировать. Остальным просто для общего развития.

          - Prolog для общего развития и понимания того, что под разные задачи нужны разные языки.

          - Java давалась под конец. И... Что там может устареть? Там же выполнять всё надо не копипастой. Хоть на двадцать первой пиши лабораторные. Главное чтобы работало как в задании указано.

          Было ещё по мелочи - 1С, немного для веба всякого. Ну и работа с БД, git, сети, алгоритмы и т.п. само собой, без этого никуда. Так что всё очень даже для программирования. И никакое отставание от индустрии не чувствовалось.

          Мой стек сейчас -- Java + Spring, вынесено всё из вуза ещё. Практика уже нарастила мясцо, разумеется, но без мучений и прочего. Просто дополнения к уже знакомому инструменту. Трудоустройство джуном сразу после окончания вуза, да ещё и с возможностью подумать, какой из офферов принять.

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

          Ну а тот, кто не хочет учиться, ничего и не вынесет после вуза. Заберёт корочку и уйдёт куда-то подальше от специальности, потому что завалит сотню собеседований из-за того, что надеялся выехать только на зазубренном "Hello world".


          1. Jianke
            17.10.2023 22:10
            -4

            Java давалась под конец. И... Что там может устареть?

            Если бы учили на первом курсе новомодному фреймворку, то за время обучения он успел бы выйти из моды и устареть. < / sarcasm >


            1. Gremlinquisitor
              17.10.2023 22:10

              А зачем фреймворки-то? Это уже сахар, который добавлять нужно по вкусу :)

              И с другой стороны... Допустим, в программе бы методисты напились и поставили на первый курс Java. И сразу первый spring, прям отдельными парами, раз фреймворк нужен. По рукам будут бить за использование более свежих версий. И... Что? Ну устареет несколько методов и потребуется всё время в maven repo выискивать древние библиотеки. Проапгрейдить до третьего спринга дело пары часов неспешного ковыряния, а то и меньше, так как всё равно ничего заумного делать в вузе не просят. И различия в версиях не так огромны.

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


              1. Jianke
                17.10.2023 22:10
                +1

                зачем фреймворки-то?

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


                1. Gremlinquisitor
                  17.10.2023 22:10

                  Прошли все такие статьи как-то мимо меня. Даже не знаю какую аналогию подобрать, настолько абсурдно звучит их хотелка. Чем на первом курсе им помогут фреймворки? Решить квадратное уравнение? Распарсить строку? Просчитать значения функции?


                  1. MiraclePtr
                    17.10.2023 22:10
                    +3

                    Чем на первом курсе им помогут фреймворки? 

                    Найти работу и начать решать задачи бизнеса :)


                    1. Gremlinquisitor
                      17.10.2023 22:10
                      +1

                      А, тю, да зачем на первый курс тогда? Давайте ещё сильнее будем продвигать "Войти в IT и получать 100500 деняк" и добавим как основной школьный предмет вместо всех предметов (грамматические ошибки плагин в IDE подсветит, калькулятор примеры посчитает, чтение документации литературу и английский заменит). Только труд оставить. Сгоревшие стулья чинить


                      1. MiraclePtr
                        17.10.2023 22:10
                        +2

                        да зачем на первый курс тогда? 

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


              1. mayorovp
                17.10.2023 22:10
                +3

                Ну вот вам пример. Курс микропроцессорных систем, лабораторные работы.

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

                Как они выглядели на древнем оборудовании? Студент писал код на листочке, переводил в машинные коды по таблице (ну, лично я нашёл в инете асcемблер для Z80, но вот остальные делали всё вручную), шёл в аудиторию, 4 часа потея ждал своей очереди (в аудитории было очень жарко из-за энергопотребления тех "микропроцессоров"), натыкивал программу на дребезжащей клавиатуре, час отлаживал на железе, шёл домой переделывать программу. С третьего-четвёртого раза сдавал.

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


                1. Ivan22
                  17.10.2023 22:10

                  у нас слава богу был не один "микропроцессор" на всех. А 15 чемоданов, на которых было по 8 светодиодов и по 10 клавиш. Их и программировали. Ну кто программировал, 2-3 человека из группы кто ассемблер знал, остальные списывали 1-в-1. И таких чемоданов, аж 3 вида, аж на 3 семестра.


          1. mayorovp
            17.10.2023 22:10
            +2

            А вот моя ситуация.

            Начали изучать программирование с Паскаля, изучали весь семестр по одному оператору в неделю, что тут вообще можно было изучить? Параллельно было изучение структурного программирования на блок-схемах, тут толку было больше, но спасли в итоге практические работы по Паскалю. Без них бы вообще ничего не выучили. Однако, изучать структурное программирование сильно мешала концентрация преподавателя на удобном UI (в текстовом-то режиме!). Нет, UI - штука важная, но требовать хорошего UI от тех кто даже циклы не освоил? В целом, "научились" лишь те кто и так программировать умел.

            Потом было объектно-ориентированное программирование, на С++. На нём мы изучали паттерны ООП и архитектуру приложений. В целом, вещь нужная, но давать её надо было тем кто уже умел программировать, а мы в итоге за весь курс так ничего и не написали. Кроме курсовой работы, но её я тоже написать не смог (хоть программировать и умел).В целом - ни ООП нормально не изучили, ни плюсов (если точнее, мы выучили тот самый язык "Си/С++", на который нормальные программисты ругаются матом).

            Далее - ASM. Вроде и нужная вещь, но почему только реальный режим x86 и только синтаксис того досовского MASM? Были практические занятия, на первом из который нам достались... рабочие станции на Линуксе без манов и доступа в интернет! За всё занятие мы так и не смогли скомпилировать "Hello, world!". Если до процентов перед регистрами и долларов перед константами наша группа методом тыка догадалась, то вот переставить операнды местами мы так и не смогли. Позже стало лучше, но в целом я так и не понял нихрена.

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

            Вот Subversion, СУБД и сети ЭВМ - это да, это было полезно. Правда, с первого всё равно пришлось на гит переучиваться, но это я делал хотя бы в ногу со временем, успел даже сторону Mercurial принять в холиварах. А, ещё теория автоматов мне здорово помогла при игре в Factorio, но я не уверен что это считается.


            1. Gremlinquisitor
              17.10.2023 22:10

              Не повезло. А вы по какой специальности шли? И в каком году?

              Паскаль у меня только в школе был, в вузе уже другое шло. Си ко второму курсу плавно перетёк в QT, ну и прочее. Вуз не самый понтовый по Петербургу и с уклоном в связь (СПбГУТ им. проф. М. А. Бонч-Бруевича), но преподы и на кафедре программистов великолепные.


              1. mayorovp
                17.10.2023 22:10
                +1

                ВМКСиС (Вычислительные машины, комплексы, системы и сети). 2007й.


                1. Gremlinquisitor
                  17.10.2023 22:10

                  А, ну у меня информация свежее -- поступление в 2017 было, т.е. через десять лет. И специальность уже.

                  Вижу ваш пост выше. Мы для железа писали на Verilog, само железо также было. Ну и в вузе в лабораториях всякое оборудование стояло. Правда, нашу группу к нему не подпускали -- не тот профиль.


                1. select26
                  17.10.2023 22:10
                  +3

                  Та же специальность - 2201.
                  Закончил в 1998.
                  Было древнее железо, 588 серия, если не ошибаюсь. И прекрасные педагоги: x86 asm protected mode, написание компилятора и линковщика и т.д.
                  И, конечно, были те, кто тянул от курсовика до курсовика, и те, кто горел и учился сам сверх учебного плана. Интернета тогда еще такого не было - ходили с винтами в гости, менялись компиляторами и доками. Самая популярная тулза для образования IDA и т.д.
                  Я до сих пор горю этим делом. Из моего курса, пожалуй еще двое.
                  В общем, разделяю негодование автора статьи. Быть неучем и программистом сейчас возможно. Но стыдно.


          1. dmitrii-bu
            17.10.2023 22:10
            +3

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

            Например, будучи Java разработчиком очень часто пользуюсь линуксовым perf’ом и strace’ом, чтобы, например, посмотреть что происходит внутри Postgres или Redis и почему он работает так как работает в той или иной ситуации. Gdb, чтобы более детально разобраться на какие нативные функции самого JVM HotSpot проксируется nio. Это сильно упростило жизнь при решении проблем с производительностью IO интенсивного приложения.

            Конечно, подобные задачи возникают относительно не часто, и сейчас ими чаще занимаются все таки не разработчики, а SRE инженеры (хотя это сильно зависит от компании), но тем не менее это может быть весьма полезным.


      1. zuek
        17.10.2023 22:10
        +3

        Большинство вузов отстают от индустрии лет на 5

        У Вас довольно оптимистичная оценка актуальности учебных программ ВУЗов...


        1. nameless323
          17.10.2023 22:10
          +7

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

          Если человек хочет быть программистом, но не во всяких околонаучных или science-heavy сферах, то университет для работы ему не нужен. Если человек всё равно пошел для того чтобы был диплом/отсрочка, то это скорее вопрос к тому, а проблема ли это университета, что человек хочет от ВУЗА того, для чего он не предназначен.

          Все чистое ИМХО конечно же.


          1. sergio_deschino
            17.10.2023 22:10
            +1

            Добавлю, что задача ВУЗа научить двум вещам: умею учиться самостоятельно и связи. Плюс теоретическая база, на фундаменте которой строится дальнейшее обучение/исследовательская деятельность/развитие.

            У нас в ВУЗах со связями совсем плохо, знаю)

            А сразу в профессию — это ПТУ, техникум, Ausbildung (если в Германии какой-нибудь)


      1. Hlad
        17.10.2023 22:10
        +3

        Пфф. 25-30 лет отставания - не хотите? Правда, это не программирование, а приборостроение...


      1. maledog
        17.10.2023 22:10
        +2

        Это если брать верхушку профильных. А какой-нибудь факультет автоматизации при аграрном университете может в методичке к лабам рассказывать про VS 2003 в 2021 году. Притом если погуглить, то выяснится что эти же методичку и задания один в один используют еще три десятка вузов.


    1. MountainGoat
      17.10.2023 22:10
      -1

      Учиться учиться в течении 6 лет, по моему, тоже фуфло.


      1. isitnull
        17.10.2023 22:10

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


    1. Ravager
      17.10.2023 22:10

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


      1. eugenk
        17.10.2023 22:10
        -1

        Ага... Так точно ! Давал уже тут выше ссылку на ютуб-канал который регулярно и с огромным интересом смотрю (увы, движок хабра её немного покоцал). Там чувак с точки зрения психологии разбирает мобильные игры, причем топовые по доходности. Дико интересно ! Очень советую, если не боитесь сильно ухудшить мнение о человечестве в целом. Что заметил для себя, нигде нет физики ! Не разлетов там всяких и фейерверков, а нормальной физики, где надо решать дифуры и т.п. Да и графика как правило дешманская псевдо-3D. А что, пипл хавает. Доходность - десятки миллионов баксов в месяц, причем игра говнище из говнищ. Для бизнеса этого достаточно. Чего на Васю тратится ??? Скоро GptChat будет такое лабать. И Вася вообще станет бомжом и будет жить на помойке. Но я конечно очень надеюсь, что меня оно сможет кормить, однако в какой-то степени пишу и для себя. А самому откровенно халтурить ну просто в падлу. Вот как-то так...


        1. nameless323
          17.10.2023 22:10

          Чего на Васю тратится

          Васе можно просто найти место где его знания физики, алгебры и рендеринга будут востребованны. Это фактически любой ААА геймдев, большинство content creations приложений типа Photoshop, 3d Max и т.д и т.п. Еще и конкуренция гораздо ниже будет, так как большинство просто отсеиваются на знании той же математики.


          1. sergio_deschino
            17.10.2023 22:10
            +1

            На самом деле такие Васи вполне себе живут в даже не продуктовой конторе в качестве экспертов (в лучшем случае) или огнетушителей (в худшем, правда, им это может надоесть, если пожаров слишком много, а Вася один) Но это все ИМХО, конечно.


  1. Golex
    17.10.2023 22:10
    +5

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


    1. Golex
      17.10.2023 22:10
      +2

      Но не так все однозначно. Коллега рассказывал, что по той же государевой программе (только для мамочек в декрете) в том же ТГУ на интернет маркетолога училась его жена и вынесла немало пользы для себя. Могу предположить что тема технологически проще, чем программирование - порог входа ниже - поэтому получилось не выплеснуть с водой ребенка.


  1. wifage
    17.10.2023 22:10
    -3

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


    1. CodeRush
      17.10.2023 22:10
      +9

      Отнюдь, потому что бумажка, которую нормальный университет дает - это, считай, первый шаг к возможному переезду в какую-нибудь другую страну. Не собираетесь переезжать - ну может соберетесь еще, время сейчас такое. Без этой бумажки же квест становится намного сложнее, нужен подтвержденный опыт работы, который в возрасте "сразу после школы" будет очень непросто набрать, и даже если наберете, все равно убедить работодателя в другой стране, что вы не верблюд, и опыт ваш - реальный, будет сложно. Подтверждение же диплома делается проще, для этого достаточно не учиться в негосударственном заборостроительном ВУЗе на факультете хорового пения (проверить свой на заборостроительность можно, например, в немецком Anabin), а после окончания подать заявление на признание в соответствующее ведомство другой страны.

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

      Короче, если не хотите на ровном месте усложнять себе жизнь - в "бесполезный" ВУЗ таки стоит сходить. Не хотите - ваше право, и ваше лево, но потом отсутствие "бесполезной" бумажки может больно щелкнуть по носу и закрыть многие двери.


      1. erdizz
        17.10.2023 22:10

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


    1. Std137 Автор
      17.10.2023 22:10

      Спорно.

      Сменить профиль, и пойти на курсы, попробовать себя в ином измерении, это тоже инициативность. Просто люди по разному пытаются получить знания. У меня есть база и я умею искать инфу, парсить справочники. А если с нуля? Где взять базу? Курсы это самое то. Но не то курсы сейчас и с таким посылом, что выпускник готов к труду и обороне.


  1. MegaMANGO
    17.10.2023 22:10
    +27

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


    1. TheHangedKing
      17.10.2023 22:10
      +5

      древнеславянский 

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


      1. domix32
        17.10.2023 22:10

        Прикольно. Не сказать что слишком сложно, разве что непривычно все эти юсы-еры кривоватенькие на лету парсить.


        1. tyomitch
          17.10.2023 22:10
          +1

          Потому что это "современный древнеславянский" от интернет-хомячков.

          А вы возьмите Слово о полку Игореве, приведённое к дореволюционной орфографии, и там уже не в юсах-ерах сложности: "земля тутнетъ, рѣкы мутно текуть; пороси поля прикрываютъ; стязи глаголютъ" и т.п.


          1. TheHangedKing
            17.10.2023 22:10
            +1

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


          1. domix32
            17.10.2023 22:10

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


        1. TheHangedKing
          17.10.2023 22:10
          +2

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


          1. domix32
            17.10.2023 22:10
            -1

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


    1. pocheketa
      17.10.2023 22:10

      "текстовкрй", "езопасности", точки вместо запятых...

      Повествование интересное, но правила языка лучше соблюдать, - и если это пайтон на листочке, и если древнерусский на экране )


  1. TDMNS
    17.10.2023 22:10
    +1

    Любые курсы не комильфо. Нужно не просто "смотреть видосики", а думать, и делать самому, осозновать. Жаль что большинству это не нужно, потому и на выходе такое.
    А вообще не все курсы это то что вы описали. Например, от Иннополиса курсы проходить весело будет.


  1. togame
    17.10.2023 22:10
    +2

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

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


  1. Nnrrt
    17.10.2023 22:10
    +3

    Что же в тексте столько ошибок. Кровь из глаз. Русский язык тоже надо учить.


  1. PavelBorsch
    17.10.2023 22:10
    +9

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


    1. Std137 Автор
      17.10.2023 22:10
      -5

      Спасибо всем, за комменты об ошибках.

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

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

      А тексты если откладываются, значит уже не публикуются...


      1. Ivan22
        17.10.2023 22:10
        +3

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


  1. DLevK
    17.10.2023 22:10
    +2

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


  1. vladvul
    17.10.2023 22:10

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


  1. GothicJS
    17.10.2023 22:10
    +2

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


  1. ALexhha
    17.10.2023 22:10
    +6

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

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


    1. MentalSky
      17.10.2023 22:10
      +1

      Если ты пишешь код 5 дней в неделю, то почему это вызывает такой стресс ?

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


      1. ALexhha
        17.10.2023 22:10

        наверное потому, что в IDE если ошибся, то тут же исправил, а на бумаге (когда все видят процесс) - всё, мы вам перезвоним?

        смотря какая цель у нанимателя, если унизить/отсеять - то да, если таки найти нужного человека - не вижу никаких проблем, ну исправил и исправил, да хоть 10 раз исправляй и переписывай с нуля. Зато будет виден ход мыслей кандидата. Разве не это самое главное ?

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

        ок, таким людям можно давать ноут с ide.

        Но как я вижу из комментариев - это тоже считается стрессом и зашкваром. Написать 10-30 строк кода на собеседовании ?! Да ну нее, это просто унизительно )))


    1. constXife
      17.10.2023 22:10
      -1

      Если ты пишешь код 5 дней в неделю, то почему это вызывает такой стресс ? 

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

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


    1. MiraclePtr
      17.10.2023 22:10
      -1

      1. Это сложнее и требует большей нагрузки на мозг. В IDE есть автодополнение - оно и подскажет в каком порядке идут аргументы, и за тебя напишет скелеты синтаксических конструкций, и покажет доступные методы у объекта. Последнее особенно может сильно помогать при решении алгоритмических задач, условно говоря, есть у вас структура данных, и надо с ней что-то сделать - пишете название переменной, ставите точку, и IDE показывает, какие методы есть в стандартной библиотеке - вы, может, о существовании каких-то из них вообще забыли, а без подсказок и возможности заглянуть в справочник начали бы запиливать то же самое вручную на циклах, тратя на это лишнее время и с большей вероятностью допустить ошибку. Плюс хорошие IDE для типизированных языков сразу производят проверку типов и подсчечивают если что не так. Аналогично, вы размышляете над проблемой, пишете какие-то наброски кода, тут студия вам говорит "чувак, ты здесь пытаешься килограммы с сантиметрами сложить, чзх" и ты сразу понимаешь, что думаешь куда-то не в ту сторону.

      2. Это банально ОЧЕНЬ НЕУДОБНО. Я пишу алгоритм на бумаге, пишу, пишу, а потом понимаю, что написал фигню - нужно зачеркивать. Пишу дальше, пишу, и понимаю, что есть какой-то отдельный кейс, и где-то вот тут в середине нужно добавить проверку условия и альтернативную ветку в алгоритме. И все, трындец - в IDE мне достаточно переместить курсор нажать enter (а бонусом IDE еще добавит отступов к коду для лучшей читаемости), а на бумаге я в принципе не смогу втиснуть новый блок кода между существующими строчками. В итоге нужно или полностью переписывать (опять же, время и вероятность ошибок), или колхозить стрелочками, где черт ногу сломает. А при написании даже простого алгоритма таких исправлений могут быть десятки.

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

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


      1. mayorovp
        17.10.2023 22:10
        +2

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

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

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

        ...на кукле


        1. MiraclePtr
          17.10.2023 22:10

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

          Ах если бы.

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

          ...на кукле

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


      1. ALexhha
        17.10.2023 22:10
        +3

        Никто ж не спорит что с IDE удобнее/быстрее/эффективнее, но ведь часто речь идет о 10-15 строках кода, разве нет ? Или на листике просят написать числодробилку с максимальным быстродействием и asm вставками, да и еще под конкретную архитектуру и чтобы без единой ошибки ?

        P.S.

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


        1. wataru
          17.10.2023 22:10
          +8

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

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


    1. Alexandroppolus
      17.10.2023 22:10
      +2

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


      1. MentalSky
        17.10.2023 22:10

        del


    1. event1
      17.10.2023 22:10
      +1

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


      1. tyomitch
        17.10.2023 22:10

        Вообще не проблема писать на бумажке или на маркерной доске не по порядку. Да хоть зигзагами и спиралями. Бумажка намного гибче любой IDE.


  1. starik-2005
    17.10.2023 22:10
    +1

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


  1. D1abloRUS
    17.10.2023 22:10

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


    1. offline268
      17.10.2023 22:10
      +4

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


  1. AChevozerov
    17.10.2023 22:10

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

    Ну ходят люди, пытаются "саморазвиваться", это для них как развлечение, в чём проблема?
    1 из 100 может действительно заинтересуется, углубится и выучится, а остальным если бы давали знания серьёзнее - не помогло бы.


  1. nikolz
    17.10.2023 22:10

    А вот и про простые числа.

    https://habr.com/ru/articles/468833/


  1. Wan-Derer
    17.10.2023 22:10
    +1

    Ну? И где ссылка на ту тётку, которая математику годно растолковывает? Я б послушал! :)


  1. denim
    17.10.2023 22:10
    +6

    а теперь немножко другая сторона медали - так случилось что за примерно 20 лет работы и около 500 проведенных собесов я все еще провожу собесы, но разница в том что потенциальным сотрудникам я буду платить уже из своего кармана, своими кровью и потом заработанными деньгами. Я пробовал брать «перспективных джунов, клянущихся мамой что готовы порвать **** в клочья лишь бы научится», матерых «профи» кивающих на свой гитхаб и запрашивающих 50$ в час сидя в каком нибудь мухосранске и понял пару простых вещей - верить на слово (сиви, гитхаб, тэйк хоум таск) никому нельзя. Реальных и единственный способ понять как человек прогается, думает и на что способен это потратить этот час и сделать лайв кодинг. Говоришь ты сеньор и мастер пера - давай напишем что нибудь из dynamic programming. Не можешь dp - окей, давай что попроще, джэйсончик там какой трансформируем но тогда я жду внимания к корнер кейзам, чистоте и организации кода. Говоришь что ты джун - ну супер, чему вас там учили, покажи что ты знаешь лучше всего. Еще ни разу не было такого что бы человек который нормально смог в лайв кодинг не смог потом эффективно работать с кодом, в противном случае это будет фэйл с вероятностью 95%. Я не готов рисковать деньгами и искать вот эти 5% заек и умничек, потому что головняк и потраченное время того не стоит. Извините аутисты (без оскорблений, у меня ребенок аутист и я знаю что это такое), чувствительные личности которые нервничают и не могут совладать с собой, сумрачные гении которые все могут когда никто не смотрит - вы все идете на мороз. То что устроили инфоцигане сейчас по всему миру, стань пистон девелопером за 4 недели, вот тебе корочка это днищенское дно. Вакансии заваливают дипломированные специалисты со всего мира, с сиви написаны профессиональным писателем сиви, заточенным под вакансию, выглядит так что можно брать не глядя. К сожалению это совсем не так, люди врут, манипулируют и готовы на что угодно лишь бы урвать возможность заработать копейку, войти в айти, а там дальше хоть трава не расти.

    TL;DR - лайв кодинг на данный момент это единственный адекватный способ понять что может кандидат. Систем дизайн - понять на сколько глубоко понимание что он делает и зачем. И культурный аспект ака софт скилы такой же критерий как и кодинг - не можешь нормально доносить мысль и изъясняться, жуешь сопли, не стрижешь ногти, пахнешь потом - на мороз, будь ты хоть Эйнштейн.


    1. mayorovp
      17.10.2023 22:10
      +4

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


      1. MentalSky
        17.10.2023 22:10
        +1

         тем кто на собеседовании задаёт вопросы без правильного ответа

        ооо, эта ситуация, когда ответов на вопрос несколько и все они - верные, но интервьюер ожидает только один ответ...

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


        1. tyomitch
          17.10.2023 22:10
          +5

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


          1. mayorovp
            17.10.2023 22:10

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

            И если на эти вопросы даже нормальным людям отвечать тяжело - то как этот фильтр проходить аутисту?


            1. JYE
              17.10.2023 22:10
              +3

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


          1. MentalSky
            17.10.2023 22:10
            +1

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

            Да я разве против? Но увы, бывают собеседования - именно беседа, а бывают - как викторина.


    1. Finesse
      17.10.2023 22:10
      +2

      Говоришь ты сеньор и мастер пера - давай напишем что нибудь из dynamic programming

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

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


      1. denim
        17.10.2023 22:10
        -3

        Сеньор не осилил прочесть следующее предложение?


        1. Finesse
          17.10.2023 22:10
          +2

          Ни одно из предложений в вашем комментарии не отвечает на мои вопросы


          1. denim
            17.10.2023 22:10

            Не можешь dp - окей, давай что попроще, джэйсончик там какой трансформируем но тогда я жду внимания к корнер кейзам, чистоте и организации кода. 


            1. qw1
              17.10.2023 22:10
              +1

              А вопрос был

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


      1. wataru
        17.10.2023 22:10
        +2

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


    1. bel1k0v
      17.10.2023 22:10
      -4

      20 лет работы и около 500 проведенных собесов

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

      Говоришь ты сеньор и мастер пера - давай напишем что нибудь из dynamic programming

      Любой каприз за ваши деньги

      В принципе ваше право терять 95% адекватных кандидатов, ценящих своё время. Такие клиенты и даром не нужны, вот вам тоже обратная сторона медали - с вами и не хочется иметь никаких дел. Вам обезьянка ручная нужна, и раз вы думаете, что платите деньги, то можете всё, что угодно делать.
      Фу, позор, ещё и ребёнка в комент припахал, отец года! Чушь собачья!

      В вашей истории только один аутист и это ВЫ!


      1. wataru
        17.10.2023 22:10
        +8

        Коммиты не умеете читать? Сомнительно

        Коммиты читать - хорошее дело, только вот не факт, что это коммиты кандидата.

        Потом, рабочий код почти гарантированно под NDA. Эти коммиты вам никто не покажет. Вам покажут специально отобранные, вылизанные кем-то коммиты, залитые на гитхаб. Да и то, тут вас надо порицать, что вы дискрименируете семейных людей - вам подойдут только те, кто увлечены проганием на все свободное время, у которых других хобби нет. Болшинство разработчиков в опенсорс не коммитят. Так вы сами "теряете 95% адекватных кандидатов, ценящих свое время".


      1. denim
        17.10.2023 22:10
        +2

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

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


  1. anatolykern
    17.10.2023 22:10
    -1

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

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


  1. Timah
    17.10.2023 22:10

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