Привет, Хабр! Я - начальник отдела разработки небольшой IT-компании, и мы - те самые люди, которые не ищут на работу сеньоров, и мы готовы брать не только мидлов, но даже и джуниоров, и готовы растить их до уровня крепких мидлов. Однако 80% приходящих на вакансию frontend-разработчика соискателей, даже называющих себя мидлами, с опытом работы, по сути оказываются не то что джуниорами - вообще не программистами. Что же на самом деле должен знать джун, чтобы попасть в компанию, подобную нашей? И как к этому прийти, если за плечами нет высшего программистского образования или богатого опыта программирования в школе? Я расскажу об этом и о том, как устроено техническое собеседование в нашей компании.

Базовый уровень программирования

Итак, к нам приходит среднестатистический кандидат, который прошел курсы по JavaScript, сделал там пару проектов. Потом узнал, что во многих местах хотят React, сходил на курсы по нему, тоже сделал пару проектов, выложил их на Github. Приходит к нам, уверенный в себе. И мы его просим написать функцию, которая выбирает из строки все большие буквы, или реализовать "вручную" какой-нибудь метод из array. И половина кандидатов в этом месте выбывают из строя. Кто-то вообще не может это сделать, у кого-то на двухминутную функцию уходит больше получаса. Зачем мы вообще это спрашиваем и почему с этого начинаем?

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

  • то нужно покрасить гласные буквы;

  • то написать правильное окончание у слова с числительным (2 ракетки, но 5 ракеток, и вам нужно в автоматическом режиме подставить окончание);

  • то вычислить новые положения всех точек змейки после очередного шага; и так далее.

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

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

Почему он этого не знает?

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

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

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

Матчасть

Но, допустим, перед нами соискатель, который научился базовому программированию. Следующее, что мы просим на собеседовании, - найти на странице все кнопки и покрасить их в какой-нибудь цвет. В этом месте отваливаются еще 30% соискателей. Возможно, с этого стоит начинать разговор - с человеком, который не знает ответа на эту задачу, можно распрощаться за 7 минут, а в предыдущей на это уходит минут 15-20 обычно :) Но как так, спросите вы? Человек сделал 4 проекта, разве он ни разу не делал чего-то подобного за это время?

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

  • работа с DOM-моделью (изменение стилей, атрибутов, html-кода);

  • работа с событиями (как минимум - обработка кликов по кнопкам, в том числе - сгенерированным в процессе работы);

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

И вот эти штуки, хотя бы в базовой версии, тоже надо знать очень хорошо, а применяемые команды и их синтаксис - наизусть (благо, их не так уж много). Как выбрать элемент - по тэгу, классу, атрибуту, его значению; как поменять стили, как поменять атрибуты, innerHTML и insertAdjacentHTML. Как обработать событие, что там внутри event (хотя бы target и currentTarget); как быть, когда кликабельные элементы сгенерированы или когда их очень много. Как отправить на сервер данные (fetch или даже хотя бы $.ajax). И, вы не поверите, если вы знаете наизусть синтаксис этих штук и применили их в реальных задачах раз по сто - ваша скорость разработки увеличивается еще в 5-10 (!) раз. То есть разница по скорости разработки между обычным соискателем и соискателем, который знает базовое программирование и базу матчасти языка, может доходить до 100 (!!!) раз.

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

Что должен знать мидл

Собеседование с мидлом начинается, на самом деле, по той же схеме:

  • сначала задачка на базовое программирование;

  • потом на выбор элементов и покраску/скрытие/изменение атрибутов;

  • потом какое-нибудь простое событие и обсуждение стрелочных функций;

  • потом отправка данных на сервер и разговоры про GET/POST;

  • и пару слов про git (его, слава богу, хотя бы в базовом варианте умеют использовать даже джуны).

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

А дальше можно разговаривать в очень разных направлениях. Мы задаем много вопросов, но не ждем, что соискатель-мидл ответит на все - крепкий мидл должен знать процентов 70-80, начинающий - 30-40. Обычные вопросы в нашем случае такие:

  • всякие подробности про промисы;

  • какие-то другие способы взаимодействия с сервером, кроме ajax (например, websocket);

  • сборщики (webpack, gulp), разделение кода по компонентам;

  • event loop, всякие детали событий, кастомные события;

  • прототипы и полифиллы;

  • filter, map, reduce;

  • работа с линтером;

  • тесты и заглушки;

  • декораторы, throttle и debounce;

  • регулярные выражения.

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

Движение от джуниора к мидлу

Тем, кто только стал джуниором, для начала лучше идти в организации, в которых используют vanilla js, может быть, с небольшими усовершенствованиями, и первые год-два проводить именно здесь. Почему я так думаю? Ведь если вам удастся устроиться сразу React-разработчиком, вам, скорее всего, будут платить больше денег!

Дело в том, что если вы работаете с обычным js, вы гораздо лучше понимаете, что и как устроено изнутри (и потом вам будет легче понимать и то, как устроены конструкции в React-е). У вас становится гораздо больше опыта работы с css-свойствами, больше способов сбора данных с кнопочек и форм; вы начинаете гораздо легче читать чужой код, потому что вы видели несколько способов и синтаксисов сделать то, что вы делаете, некоторые из них вы переняли; вы уже пробовали настраивать всякие штуки типа сборщиков и линтеров, потратили на это довольно много времени и знаете кой-какие нюансы. И дальше, когда вы идете уже непосредственно работать с React-ом, то вы все это уже умеете, и в 95% случаях вам не приходится учить еще и это. Потому что возможности мозга ограничены, и при большом объеме того, что нужно понять сразу, вы рискуете не справиться. Точнее, не справляться примерно первые несколько лет работы. И вам будет очень трудно, вы регулярно будете хотеть бросить работу, а ваши коллеги, которые уже имеют этот бэкграунд, будут обгонять вас в росте с космической скоростью.

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

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

О реальных сроках роста

Существуют ли вообще люди, которые за полгода смогли пройти курсы, хорошо устроиться на работу и потом быстро вырасти? Да, они существуют. Проблема в том, что 90% из них имеют несколько лет бэкграунда самостоятельного кодинга, или школьного/университетского программирования, то есть это совсем не те люди, которые пришли с нуля. У них получится так быстро, а у вас нет :)

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

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

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

Как войти в IT

Резюмирую. Путь, по которому стоит войти в IT и стать джуном, которого берут на работу, в первую очередь включает в себя обучение базовому программированию. Если у вас этого еще нет, но уже есть курсы js и/или react - потратьте на это три-шесть месяцев, и процент интервью, которые вы будете проходить, резко возрастет. И к этому добавьте знание и практику матчасти по работе с DOM, событиями и ajax. Откровенно говоря, в этот момент вам должно казаться, что вы можете сделать на сайте примерно всё, что угодно. И это не очень далеко от правды, но. Многих технологий вы еще не знаете, как и многих деталей и нюансов DOM-модели. Еще вам предстоит изучить способы делать многое проще и быстрее; научиться хорошей организации кода; и так далее. И вот этому уже вы будете учиться на работе.

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

Удачной вам учебы и дальнейших поисков работы!

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


  1. Lazytech
    00.00.0000 00:00
    +1

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

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


    1. integralik Автор
      00.00.0000 00:00
      +2

      На самом деле под "освоил React" среднестатистическим выпускником курса подразумевается, что он освоил знания в объеме учебника вроде этого https://habr.com/ru/company/ruvds/blog/471040/ (27 постов, 45 занятий) и реализовал один или оба проекта, описанных и доверенных до конца в учебнике. Хотя этот объем знаний при наличии хорошей базы читается за 3 часа (я читал), с учётом практики - дело на пару дней, и информации собственно про React там кончик верхушки айсберга от того, что реально надо знать, чтобы освоить React..


      1. Lazytech
        00.00.0000 00:00
        +1

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


        1. integralik Автор
          00.00.0000 00:00
          +2

          React действительно не слишком интуитивен :) Я не всё понимаю даже в учебных проектах соискателей на гитхабе.
          Просто я гораздо меньше верю в то, что человек реально знает React, если он даже событие на клик в обычном js или хотя бы jquery повесить не может.


          1. gandjustas
            00.00.0000 00:00
            -4

            Разве на jquery кто-то сейчас пишет? Ну кроме вас.

            В реакте он же совсем не нужен.


            1. integralik Автор
              00.00.0000 00:00
              +3

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


              1. sshmakov
                00.00.0000 00:00
                +2

                Учат jQuery вместо JS... Как много я пропустил. Теперь уже и jQuery без JS можно использовать.


                1. integralik Автор
                  00.00.0000 00:00
                  +2

                  В далеком 2010 многие только так и делали. :)


                  1. sshmakov
                    00.00.0000 00:00

                    Как можно что-либо написать на jQuery, не имея представления об JavaScript?

                    Меня терзают смутные сомнения, что под JS вы понимаете не просто JavaScript. Но что тогда - ReactJS? AngularJS?


                    1. integralik Автор
                      00.00.0000 00:00

                      Ну, jquery используется для выборки документов, назначения атрибутов, стилей, перезаписи html, отправки ajax, обработки событий. Когда я начинал делать сайты в 2005, обычный javascript требовал разбираться c XMLHttpRequest. Понятно, что по запросу "как отправить данные на сервер" вылезало первым делом $.ajax. Дальше можно было просто прочитать основы документации по библиотеке - и вуаля! Хочешь - целой коллекции элементов стиль присваивай, хочешь - атрибуты меняй, мне даже в голову не приходило, что это не нативный js, я думал, что это просто удобный нативный синтаксический сахар :) так-то цикл или иф я могу написать, тем более, что я сто раз видел их в других языках.

                      Под JS я понимаю просто JavaScript.


                    1. Fell-x27
                      00.00.0000 00:00

                      Ой, легко. В свое время выросло целое поколение "jQuery-разработчиков" вообще не знавших js. Дело в том, что разрабы Жука зашли слишком далеко и почти весь язык имплементировали у себя в библиотеке заново, но по-своему.


          1. Racionalus
            00.00.0000 00:00

            Вы в данный момент нанимаете? Если да, как с вами связаться?


            1. integralik Автор
              00.00.0000 00:00

              Нанимаем. Фронт, бэк и фулстек (js+PHP). Напишите на integralik@gmail.com.


              1. Kengurogoff
                00.00.0000 00:00

                А бэкенд у вас на PHP, или что-то другое?

                Я бы тоже написал с удовольствием, но во фронтенде (и в React'e в частности) большого опыта не имею.


                1. integralik Автор
                  00.00.0000 00:00
                  +1

                  Да, на PHP. Пришлю ссылку на вакансии в личку.


              1. Sylphur
                00.00.0000 00:00

                Возможно вопрос не совсем к вам с вашим стеком, но может вы подскажете.

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

                Wannabe джун, изучаю js/ts, покоряю небезызвестные курсики, сотрудничающие с епамом, скоро возьмусь за Angular


                1. integralik Автор
                  00.00.0000 00:00

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


    1. timonbandit
      00.00.0000 00:00
      +2

      Вот совсем не показатель.
      Я провожу собеседования на junior и middle фронтов и встречаю огромное количество выпускников всяких codeschool и буткемпов со знанием только реакта.
      И если бы это был единичный случай, но мне кажется сейчас таких джунов большинство.
      Буквально в этот четверг мне человек позиционирующий себя как миддл плюс копировал объект через пропсы в реакте. А про то, что бывает Shallow Copy и Deep Copy - он сказал что ему это не нужно знать, а если будет нужно он нагуглит)
      Если человек освоил JS, то реакт вообще не проблема. Но не наоборот.


      1. Lazytech
        00.00.0000 00:00

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


        1. integralik Автор
          00.00.0000 00:00
          +2

          Их правда таких много, у меня та же самая картина. Сейчас же реклама "Прошел курсы JavaScript? Пройди еще за 3 месяца курсы по React, будешь мидлом, и тебя с руками оторвут" :) И они приходят на собеседование и говорят "ну я умею оптимизацию на React-е, а на обычном javascript я писал три месяца назад, можно я погуглю querySelector?" За последние три недели я отсобеседовал 20 человек (которые прошли входной тест, сумев как-то выделить из строчки большие буквы), эта ситуация - у каждого второго, собеседование заканчиватеся за 15 минут.


        1. timonbandit
          00.00.0000 00:00

          Прошу прощения, у меня еще и проблема в том, что я ищу в EU, там в целом уровень соискателей сильно ниже чем в пост-СССР.
          Никакого расизма и прочего, но самые сильные соискатели это из пост-советов.
          Я почти всегда уверен что украинец, белорус или русский будут гораздо сильнее ребят из Европы. Но мы их почти не берем, так как и так их много, а мы ж в Европе, нужно diversity и всё такое)


    1. madev
      00.00.0000 00:00

      На курсах успеешь освоить только useState, useEffect и .map c деструктуризацией


      1. Lazytech
        00.00.0000 00:00

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

        Если что, на YouTube есть каналы с очень приличными туториалами по современной веб-разработке (см. примеры ниже).

        Timur Shemsedinov // на русском

        Фронтенд // на русском

        Steve Griffith - Prof3ssorSt3v3 // на английском

        Coding Addict // на английском


  1. gandjustas
    00.00.0000 00:00
    +2

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

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


    1. integralik Автор
      00.00.0000 00:00

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

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


      1. gandjustas
        00.00.0000 00:00

        дайте ссылку на хорошие курсы чтоли


        1. integralik Автор
          00.00.0000 00:00
          +3

          Хекслет :) Я сам прошел там один проект по PHP, дошел до второго и узнал много нового, даже с учетом большого опыта программирования. Собеседовать начинаю людей, у которых есть 2, а лучше 3 законченных проекта там.


          1. euhoo
            00.00.0000 00:00
            +2

            Плюсую. Я сам из тех людей, кто за полгода прошел курсы и потом хорошо устроился ровно туда, куда хотел. И из тех 5-10%, у кого абсолютно не было бэкграунда. Начал в декабре 2018, закончил в мае 2019 и уже 10 июня вышел на первую работу. Прошло 4 года(о как быстро) и я уже тимлид маленькой фронтовой команды в хорошей крупной компании из топ-10 списка ИТ-работадателей РФ. Не знаю, как сейчас, но тогда именно эти курсы я и проходил и съел там не один пуд соли за эти полгода. Хочется добавить, что чтобы идти такой дорогой нужно, чтобы как минимум это очень нравилось. Я очень люблю программировать(до сих пор).


  1. TataSysueva
    00.00.0000 00:00
    +3

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


    1. nkgrig
      00.00.0000 00:00
      +26

      А никак. Отдыхать надо. Я могу подсказать, как разрешить конфликт двумя способами.

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

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

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

      Есть ещё одна хитрость, понять, что всё суета. Экклесикаст - real talk. Но это приходит после, и находится за рамками вашего вопроса.


      1. TataSysueva
        00.00.0000 00:00
        +1

        Спасибо за ответ, мне было важно это прочитать. Я на грани выгорания.


        1. Wannabeacoder
          00.00.0000 00:00

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


          1. TataSysueva
            00.00.0000 00:00

            Мама ещё в 00х в ЗОЖе, был такой журнал, прочитала про мухомор и стала делать настойки) оказывается, толк есть, а я нос воротила) если что, я шучу) спасибо за совет, я почитаю


      1. RomeoGolf
        00.00.0000 00:00
        +8

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


      1. csharpreader
        00.00.0000 00:00

        Я собираю про себя информацию

        Это прекрасно (я без иронии). Великолепная формулировка.


    1. integralik Автор
      00.00.0000 00:00
      +2

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


      1. TataSysueva
        00.00.0000 00:00

        Спасибо за предложение) Я хочу поискать возможности сделать, как вы говорите и как , говорит комментатор выше, просто снизить обороты, а не пытаться выжать из себя что то за 10-12 часов. И начать нарешивать как раз простые задачи, на них я и впадаю в ступор, тут не надо даже ваше время тратить, чтобы это понять


        1. Didntread
          00.00.0000 00:00

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


    1. gandjustas
      00.00.0000 00:00
      +2

      Ну вы же знали на что идете или нет? Как вообще вы решили пойти в программирование?


      1. TataSysueva
        00.00.0000 00:00
        +1

        Я думала, это только врачам и учителям говорят)


        1. gandjustas
          00.00.0000 00:00

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

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

          И как мне кажется статей на эту тему даже на хабре миллион.


          1. micronull
            00.00.0000 00:00
            +1

            В программировании, конечно, денег больше, чем у учителей и врачей

            Но не в цивилизованных странах. Там зп программиста на уровне других специальностей.


          1. integralik Автор
            00.00.0000 00:00
            +1

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


            1. gandjustas
              00.00.0000 00:00

              Смотря что вы называете базой. Из всего что я учил в универе 15 лет назад на сегодня не устарели только теория БД и sql-92, а также частично HTTP.


              1. integralik Автор
                00.00.0000 00:00

                Ну, в 2015 действительно был придуман ES6, до этого на те же вопросы мы ждали других ответов, это правда :) И входить во фронтенд относительно легко стало тоже только после 2015. Я в 2017 даже переучивался несколько месяцев.


          1. M_AJ
            00.00.0000 00:00

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

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


            1. gandjustas
              00.00.0000 00:00

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


      1. integralik Автор
        00.00.0000 00:00
        +4

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


    1. Hebe
      00.00.0000 00:00
      +2

      "за красивые глаза"

      важный фактор ????
      остальному при желании можно научить


  1. Dzenbuddist
    00.00.0000 00:00

    Сохранить мотивацию на такие сроки - ужасно сложно.


    1. integralik Автор
      00.00.0000 00:00
      +1

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


    1. gandjustas
      00.00.0000 00:00
      +6

      А что вы хотели? Большинство программистов обучались этой профессии в Вузе, это 2-3 предмета каждый семестр в объеме около 40-60 каждый, лабы и курсовые, и так на протяжении 4-5 лет. И то выпускники ВУЗов обычно обладают недостаточными знаниями и навыками программирования, если самостоятельно не изучали технологии.

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

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


  1. omican
    00.00.0000 00:00

    А Интегралик-то Лебега! По названию статьи и нику сразу понял, кто автор =) Добро пожаловать в захабренные! Много лет - со времен подработки у тебя - не занимаюсь веб-программированием, но читать, как и твои посты в ВК, очень интересно.


    1. integralik Автор
      00.00.0000 00:00

      :)) спасибо, Олег! :))


  1. rkadyrov
    00.00.0000 00:00
    +1

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

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

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


    1. integralik Автор
      00.00.0000 00:00

      Мы такие задачи на собеседовании не даём. Даем максимально простые - с ними бы справились :)


      1. rkadyrov
        00.00.0000 00:00
        +1

        Да я и справился. Только сути для меня это не поменяло. Убежден, что решать нужно задачи, решения у которых нет или оно хотя бы не так однозначно, чем, как выразился @strokoff- популярная задача - значит, не единожды уже решённая. Для всего остального есть github, там тысячи раз к числительным уже подобрали окончания, оптимизировали, обернули в библиотеки и модули. Лично я бы давал такие задачи, но не ограничивал абсолютно в использовании чужого кода. Пусть использует, а я потом просто пробегусь с ним по коду этой библиотеки и выспрошу про технологии используемые в ней. Так делал один из уважаемых преподавателей моего вуза, и я с ним полностью согласен. И вот тут уже собеседуемый обломается на том, что впервые видит промисы (к примеру), а я детально посмотрю за его глазами и участками библиотеки, которые его пугают, а в каких он спокойно при нужде разберется. Времени по моей гипотезе отнимает гораздо меньше, чем если человек сидит и горбатится полчаса над тем, что никогда не видел или забыл потому что подобное 5 лет назад решал. В конце концов, на самóй работе в лучшем случае придётся проделывать именно это - код ревью, проверка кода на качество, где он хочет или не хочет но объяснит новую зависимость во всём условном репозитории, либо, в плохом случае - вообще будет всё равно, как именно человек достигает искомого результата, так почему бы не ускорить фазу найма подходящего человека?) P.S. пмы вам в штат не нужны?))


        1. strokoff
          00.00.0000 00:00

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


        1. integralik Автор
          00.00.0000 00:00
          +1

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

          ПМы - нет, у нас пока их достаточно, спасибо :)


    1. strokoff
      00.00.0000 00:00

      Но по сути независимо от яп это популярная задачка и решается она через вычисление модуля от 10 + пара ифчиков, ну и падежи вспомнить


      1. rkadyrov
        00.00.0000 00:00

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

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


      1. integralik Автор
        00.00.0000 00:00
        +1

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


      1. demimurych
        00.00.0000 00:00

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

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

        Для примера - семантика только символов (не слов, а минимальной семантической единицы языка) в страницах А4 14 шрифтом занимает почти 90 страниц.

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


    1. Uasya88
      00.00.0000 00:00

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


  1. kurgeniy_L
    00.00.0000 00:00
    +1

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

    В IT пришёл не за деньгами. Пробовал разные направления: хватался всего по чуть-чуть, всё было интересно попробовать. В итоге во многих направлениях поверхностные знания. Ныне работаю в инженером в техподдержке (helpdesk). Хочу перейти в разработку внутри своей компании. Мне больше интересен фронтенд, но у нас больше уважают backend-разработчиков на Java. Вот разрываюсь между фронтендом и джавой. Я - визуал, мне больше "заходит" фронтенд. Рынок не исследовал, но, говорят, в джаве больше вакансий, больше шансов выйти на удалёнку через год-полтора после трудоустройства, больше работы в целом. Так ли это? Каковы перспективы фронтенда? Конкуренция среди юных разработчиков адовая, но есть различные пути обхода (один из них — переход в разработку в своей же компании). Ну и немаловажный момент: судя по общению с коллегами в компании и в интернете, джаву для трудоустройства учить нужно года два-три, с фронтендом же можно справиться быстрее раза в два: за год-полтора освоить можно. Это тоже немаловажный момент: хочется побыстрее заполучить место — и дерзать. Цель — стать достойным и уважаемым специалистом.

    Ответить


    1. integralik Автор
      00.00.0000 00:00

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


      1. kurgeniy_L
        00.00.0000 00:00

        Благодарю за ответ! Написал в личку!


  1. blinikar
    00.00.0000 00:00

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

    Точно нужна статья как составить резюме на Junior вакансию


    1. rkadyrov
      00.00.0000 00:00
      +3

      А здесь как в сфере недвижимости уже практически, появились "риелторы" и по ту сторону баррикад - помогающие составлять резюме и пропихивать его нужным HR'ам, они же, по совместительству - продают курсы, по которым "получаются" за полтора месяца "специалисты", обойдёмся без наименований контор, но можно нагуглить по сумме ключевых слов "IT", "курсы" и "100% трудоустройство".

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

      Беспощадно ври. Не месячный опыт стажировки в крупном красном банке, а полтора года работы в одной из крупнейших IT компаний страны, не "могу отвечать на вопросы миддлов", а "устал решать задачи сеньоров, потому что тимлиду это скучно", не "очень большой бэкграунд школьного/университетского программирования", а "очень большой бэкграунд школьного/университетского преподавания программирования", и вот тогда все HRы обратят на тебя внимание. Я бы на их месте даже, более того, свёл бы половину искомых навыков к одному единственному вопросу, "Умеете ли Вы врать?". Ты со своим уверенным джун+ играя честно можешь рассчитывать только на стажёра-, мир кругом очень несправедлив, даже если пытается выглядеть противоположным.


      1. Newbilius
        00.00.0000 00:00

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


        1. csharpreader
          00.00.0000 00:00

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

          (речь идёт как раз о крупном корпорате в несколько тысяч человек)


          1. integralik Автор
            00.00.0000 00:00

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


            1. rkadyrov
              00.00.0000 00:00

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


              1. integralik Автор
                00.00.0000 00:00

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


        1. rkadyrov
          00.00.0000 00:00

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


    1. integralik Автор
      00.00.0000 00:00

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

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

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

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

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

      Второй пункт отдельным комментарием пойдет. :)


      1. Denis1205
        00.00.0000 00:00

        "Если Вы не относитесь к категориям людей, к которым у hr заведомо предвзятое отношение" - а можете пожалуйста уточнить что это за категория такая?


        1. integralik Автор
          00.00.0000 00:00

          Ну, если у вас проблемы при трудоустройстве на любую должность - то и на должность в IT будут такие же проблемы. Это скорее вопрос общественных стереотипов.


          1. Denis1205
            00.00.0000 00:00

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

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

            https://www.youtube.com/watch?v=ZDpy_q0InSk&ab_channel=AnBor

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


    1. integralik Автор
      00.00.0000 00:00
      +1

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

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

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

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

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


      1. dom1n1k
        00.00.0000 00:00
        +1

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

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


    1. integralik Автор
      00.00.0000 00:00

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

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


    1. integralik Автор
      00.00.0000 00:00

      И еще одно, прямо моя боль. Если знаете React и подаетесь на вакансию с чистым js, сделайте отдельное резюме, из которого уберите строчку "ищу работу на React/Redux/Mobx/TS" (весь опыт с React можно оставить). Или не делайте, но мы уже перестали таких звать на собеседование, потому что у нас нет этих технологий в работе.


  1. kimisa
    00.00.0000 00:00
    +2

    решения простых алгоритмических задач на сайтах Codingame, CodeWars и LeetCode

    С каких пор решение задач стало показателем знаний?

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

    Вот объясните как они мне помогут поднять сервак при атаке или правильное построить архитектуру приложения.

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


    1. gandjustas
      00.00.0000 00:00
      -1

      Если ты можешь много чего решить, то реши задачи на leetcode ;)

      Раньше на собесах требовали теорию

      Сейчас не спрашивают?

      И я веду речь про сеньоров

      А цитируете зачем-то коммент про джунов.


  1. edogs
    00.00.0000 00:00
    +2

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

    Ооо, это литр бальзама на душу. Спасибо!
    Реально устали слушать нечто вроде "нюансы языка программирования знать не надо, все есть в мануалах и хинтах в иде, вы чего из прошлого века" или "зачем мне знать алгоритмы, все нагуглю за 5 минут, базу-то я знаю, для кого гитхаб вообще, слышал об этом или нет, фидошник блин".
    А потом начинается - 45 минут реализует функцию (при чем не полностью) которая есть в ЯП, потому что не знал о ней и не повезло ее найти. И еще 3 раза по 15 минут гуглит решения 3 мелких задач, тратя еще по 15 минут на каждую для адаптации (выкинуть лишнее, добавить нужное, переименовать по стандарту). После чего 45 минут тестит это и исправляет ошибки.
    И заявив что программист эффективно в день может работать не больше 4 часов (что-то там пробормотав про ворк-лайф баланс) - закрывает ноут и уходит домой.
    Хотя всей работы было минут на 45 - вкрячить функцию из мануала и набросать 3 небольших кусочка кода.
    Вопрос основ ЯП (те самые задачи "что сделает хитровыделанный код" или "какой функцией делается это") это не вопрос квалификации в чистом виде, это вопрос скорости работы. Равно как и вопрос практики в конкретной области (поэтому не работает вот это "я 20 лет программирую на ява приложения для ракетостроения, что ж я веб-проект не осилю"). При чем касается это не только джуна, но и миддла и отчасти сеньора, т.к. без этого они не смогут ни проверить качественно код джуна, ни спустить ему грамотную задачу, ни дать грамотную подсказку.


    1. integralik Автор
      00.00.0000 00:00
      +1

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


  1. ammadis
    00.00.0000 00:00
    +4

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


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

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


    1. integralik Автор
      00.00.0000 00:00
      +1

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

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

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

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


  1. eugeneledenev
    00.00.0000 00:00
    +3

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

    Мои выводы/гугления(возможно и ошибочные). Автор работает в госконторе более 10 лет.(что вы там делаете столько времени?) Зарплата там 70-100джун, 120-160мидл. Сеньеров скорее всего не могут себе позволить, а возможно они к ним не хотят идти. Используют php на котором уже практически не пишут крупные конторы.

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

    Знания “как поменять атрибуты, innerHTML и insertAdjacentHTML, $.ajax, gulp” нужны только там где адсткое легаси. Пусть деды этим занимаются, а не джуны.

    “Тем, кто только стал джуниором, для начала лучше идти в организации, в которых используют vanilla js” - позволяет затормозить карьеру. Вы не вспомните потом react/vue/…, а эти знания в чистом виде без фреймворка никому не нужны. Найти работу где нужен только js без фреймворка очень сложно и денег там будет мало.

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

    “Хотя, конечно, лучше иметь ментора, … один-два раза в месяц созваниваться, … не все себе могут это позволить :)” - ментор это руководитель на работе или коллега.

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

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


    1. integralik Автор
      00.00.0000 00:00

      В наших требованиях к джуну даже фреймворка нет :)

      Про деньги:
      - вилка для джуна на самом деле 50-120, сильно зависит от уровня джуна, и зарплата растет с ростом уровня. По-моему, для джуна совершенно адекватная цена.
      - мидлы могут получать у нас и больше, чем вы написали (хотя и 120-160 нормальная вилка для слабого-среднего мидла). Я только на прошлой неделе собеседовал двух мидлов, которые хотели 180, но оба не прошли.
      - для сеньоров у нас нет интересных задач. Те, что есть, мы делим между собой.

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

      React/vue этим людям (во всяком случае, приходящим к нам соискателям) не надо будет потом "вспомнить", они его и не знали никогда, им показалось. Им надо будет его нормально выучить.

      Ментор-коллега - это большое счастье, доступное немногим. И то даже в этом случае имеет смысл иметь внешнего ментора, более крутого, чем коллега, и понимающего, как идти еще выше и каким путем.

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


    1. ammadis
      00.00.0000 00:00
      +2

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


      1. dom1n1k
        00.00.0000 00:00

        Я встречал случаи, когда люди, вошедшие в реакт минуя ванилу, очень любят везде и без разбору совать спред-оператор. Он же удобный и очень в реактовском духе.
        Например, воткнуть его в тело цикла и получить на абсолютно ровном месте O(n^2).
        Или вот примерно такое видел (где products это и так уже массив):

        [...products].filter(product => product.id !== id)

        Это о грани между знанием и пониманием.


  1. SkyLine2R
    00.00.0000 00:00

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

    Не понял только почему filter, map, reduce спрашивают с мидла? Базовые, вроде, вещи.

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


    1. integralik Автор
      00.00.0000 00:00

      Ну, filter, map и reduce, если джун не знает, можно выучить за пару дней, здесь особой проблемы нет. Мидл, скорее, давно это знает и странно, если нет, но тоже в целом не критично.

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


  1. Mirzaev
    00.00.0000 00:00
    +3

    Я дам три совета начинающим веб-разработчикам:

    1. Никакого zero-coding на тильде, ни за какие деньги (кому как совесть позволяет)

    2. Никакой работы в веб-студиях (кому как совесть позволяет)

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

    Самые питательные заказчики приходят из вашей повседневной жизни. Например однажды я совершил покупку графического планшета у одной девушки на avito, а у неё было хобби по отливке свечей. Я ей предложил помочь с изготовлением форм для отливки, когда закончу сборку 3D-принтера, из-за чего она меня запомнила как "умный паренёк-программист" . Когда её знакомый директор крупного предприятия попросил помочь найти программиста, то она дала контакты того самого паренька с которым виделась полтора года назад.

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


    1. integralik Автор
      00.00.0000 00:00

      Мне кажется, что пункт 1 - это путь, но просто это не путь веб-разработчика :)

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

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

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


    1. Mirzaev
      00.00.0000 00:00
      +2

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

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


      1. eugeneledenev
        00.00.0000 00:00
        +1

        Оценка трудозатрат сложная вещь. Можно и заработать или сработать в минус. Работа с клиентом может быть в разы дольше чем само программирование, а эта часть не оплачивается клиентом. 10 клиентов парят мозг, один купил. Вы с этого одного должны взять денег за общение с 10ю предыдущими. Плюс офис, 50% налоги с зарплаты(если считать от суммы на руки) сотрудникам. Бывают и простои в работе при этом все расходы компании остаются. 100тыс руб за говносайт это не много. Откройте компанию так чтобы вы там только руководили и прочувствуете все эти проблемы.

        С основным тезисом что в студиях работать не стоит соглашусь на 100%.


        1. Mirzaev
          00.00.0000 00:00

          Сегодня получил вот такое заявление о том как студия на тильде сделала лендинг за 1 800 000 рублей. ОДИН МИЛЛИОН ВОСЕМЬСОТ ТЫСЯЧ РУБЛЕЙ ЗА (((ЛЕНДИНГ))) И это не какой-то там крутой лендинг, а самый обычный на 10 страничек где просто текст и картинки на дефолтных шаблонах - такое студент за сутки напишет. Название той самой веб-студии на скриншоте, а сам сайт по обычной стоматологии в моём городе

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


          1. integralik Автор
            00.00.0000 00:00

            Слушайте, а в чем проблема?

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

            Во-вторых, я вообще полагаю, что идти джуниорам стоит как раз в веб-студии. Просто действительно надо не вляпаться а) в Битрикс (если человек не хочет идти именно этим путем) и б) в то, что половина работы - на Тильде (это тоже нормальный путь, но это не путь веб-разработчика, тем более фронтендера). Скорее я полагаю, что задача человека, ради которой он трудоустраивается в веб-студию, - это много разноплановых задач разной сложности плюс возможность учиться в рабочее время и зарабаывать конкретно программированием, а не другой основной работой, на которую уходит 8 часов в день. И там за 2 года, практически независимо от задач, если человек дополнительно ботает, он проходит всю основную базу js, получает мощную практику - а потом берет хороший курс или учебник по React, и дальше он реально становится уже low-middle специалистом, которого так ищут в больших компаниях. По-моему, это один из самых понятных путей.

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


          1. eugeneledenev
            00.00.0000 00:00

            И где эти деньги? Скорее всего деньги перевели студии, та взяла свои 200 тыс а остальное отдали откатом назад. Вопрос кто купил себе новую тачку? Представитель заказчика или директор студии? Если эти деньги вычитаются из налогооблагаемой базы заказчика, то налоговая может сделать оченку реальной стоимости работ и оштрафовать за уклонение от налогов. Такая сделка в теории возможна, но реальная вероятность один на миллион, если не меньше. И даже если она была реальной, то при налоговой проверке могут быть проблемы. "В денежном круговороте нет места для инженера (Бедная Саша)" - найдите ролик на ютубе если не смотрели :)


  1. kirillbelash93
    00.00.0000 00:00

    А как вашим джунам пробиться на работу если среднее число откликов на вакансию 500? До них тупо не дойдут руки hr.


    1. integralik Автор
      00.00.0000 00:00

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


      1. teimur
        00.00.0000 00:00

         к сожалению, нужно высшее образование)

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

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

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

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

        А вы как считаете зачем оно нужно по факту и почему его требуют?


        1. integralik Автор
          00.00.0000 00:00

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

          Но лично я считаю, что в подавляющем большинстве случаев для работы, если не учитывать конкретно скиллы программирования, хватает знаний 8-го класса за глаза. И высшее образование необязательно. Хотя высшее программистское, если оно хорошее, дает большую фору, человек много знает алгоритмы, имеет большой опыт кодинга, что-то понимает про серверную часть и ее настройку, в общем, там много всего полезного. У нас на работе таких людей несколько, и они довольно круты.

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


  1. arsenyukrainsky
    00.00.0000 00:00

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

    Из статьи действительно имея базовые навыки и поработав год на чистом js было бы в РАЗЫ проще уже в проекте.

    Для себя эту проблему частично устранил решая задачи на code wars каждый день пока не дошел там до уровня где ни одной задачи решить не могу по сложности, параллельно начал читать ОРейлли JavaScript: The Definitive, и тут тоже сложности с пониманием читая главы по очереди многое было непонятно сходу, например сами классы там объясняются на примере классов до ES6, или цикл while понятен, но где его практически применять нет. В итоге работая и со временем как-то само собой становится понятнее , возвращаюсь перечитываю и ни один раз, бывает открываю простые задачки свои же и переписываю их или решаю схожие, всё это в совокупности и даёт какой-то базовый фундамент, которого так не хватает на курсах.
    В защиту курсов скажу: там упор на быстрый результат там сразу говорят на джуна или интерна получится, если будете учиться каждый день и еще дополнительно сами читать, и тот же code wars там проскальзывает сразу же наставление решать задачи там дополнительно каждый день.
    В итоге скажу что с одних и тех же курсов по одной программе знания получатся разные.
    На моём потоке на страте тогда было около 200 человек на первой лекции и за год много отваливалось брало академ или перевод и на последней лекции дипломной уже было лишь 8 человек.
    По статистике самих же курсов говорится 70% выпускников находят работу, но не говорится что находят её сразу)
    По ощущению сам до сих пор толком не знаю ничего, понимаю нужно время и не бросать дополнительно решать задачки или читать статьи) знаю что такое веб пак и 2-3 раза собирал проекты разные работал с mobx redux react ts хелперы пишу на чистом js, но часто бывает элементарные вещи просто вижу впервые например декораторы , ну не было их никак нигде, классы до сих пор вызывают дискомфорт, привык уже всё в функциональных компонентах, логика вообще в ramdajs.

    Не уверен прошел бы к вам собес как раз по причине что кнопки на чистом js я выбирал только во время учебы сказал бы про querySelector() наверное , первые буквы массива слов делал бы с.map.charAt().toUpperCase().slice(), но не стал бы делать через базовый for потому что с самого начала привык к forEach и map, и это тоже проблема.

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


    1. integralik Автор
      00.00.0000 00:00

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


  1. Researcher190b
    00.00.0000 00:00

    Если резюмировать всё выше сказанное, то выходит следующее: Если у меня не было бэкграунда за плечами, но при этом я закончил курсы frontend-developer в котором затрагивался как React так и JS, я все равно не должен устраиваться, а должен зубрить JS, до состояния полного понимания?


    1. integralik Автор
      00.00.0000 00:00

      Нет, почему :) смотрите, это совет для тех, кто никак не может устроиться, хотя вроде бы знает js и react, или кто устроился, но ему очень тяжело работать и он регулярно заваливает задачи.

      И не нужно зубрить весь js до состояния полного понимания, учебник learn.javascript огромный :) Я обозначил выше три темы (DOM, события, отправка данных на сервер/прием с сервера). Имеет смысл хорошо знать их + базовую работу с циклами, строками и массивами - и этого вполне достаточно, чтобы идти собеседоваться и выглядеть на собеседовании (в компании, где нужен vanilla js) достаточно неплохо. Ну, и "знать" означает теория + практика. Но это не запредельный объем, за полгода-год берется.


      1. Researcher190b
        00.00.0000 00:00

        Хотелось бы уточнить. Вы упомянули vanilla JS. В 23-м году, ещё требуются такие специалисты? Каждая вторая вакансия: React или Vue + TypeScript..


        1. integralik Автор
          00.00.0000 00:00

          Нам требуются. :) Я видел еще вакансии, в которых требуются.

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


  1. befart
    00.00.0000 00:00

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


    1. integralik Автор
      00.00.0000 00:00

      Понимаете, есть несколько причин, по которым мы не берём таких людей.

      Во-первых, если крутой мидл получает ну пусть 250 (оценка сверху) и пишет эту задачу в 15 раз быстрее, то такой джун должен получать 250/15 - меньше 20 тысяч в месяц. Не говоря уже о том, что на его обучение тратится в разы больше времени гораздо более дорогих специалистов, которые в это время могли бы что-то написать. И срок, за который мотивированный джун догонит нужный уровень, я оцениваю примерно в полгода. И я полагаю, что за эти полгода платить должен обучаемый, а не обучающий. Ментор в этом случае будет намного дешевле :)

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

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

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


    1. taujavarob
      00.00.0000 00:00

      Вы правы.

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

      Поэтому они изобрели такое, что чтобы хоть как-то кого-то отличить. И его взять на работу.

      Конечно это не поможет им в конечном счёте.

      Ибо идеально было бы для них - брать всех желающих и делать отсев через неделю, месяц, три месяца.

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


  1. Plovchik
    00.00.0000 00:00

    Интересно было прочитать. Спасибо.

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

    Сейчас прохожу курсы fronend разработки на codecademy, и Вы правильно заметили, на курсах сильно не хватает практики. Добиваю задачками с codewars. Пока все нравится.


    1. integralik Автор
      00.00.0000 00:00
      +1

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

      Но дело не только в программе курса, хотя у них местами есть очень полезные штуки, которых почти ни у кого-то другого нет (линтер, например). Дело в том, что им как-то удается построить обучение так, что студент очень много практикуется. Там два с половиной десятка курсов только по PHP, каждый на 15+ занятий, это тупо много. Плюс когда студент пишет проект, он сначала его пишет полностью до рабочего состояния, а потом ещё шесть раз переписывает по рекомендациям куратора (я сам проходил один проект, переписывание идёт реально почти под ноль, чтобы усвоить некоторые полезные принципы). Если вы можете себе организовать такой объем правильных задач - хоть сами, хоть с ментором, хоть с репетитором, - то вы можете идти на любые курсы, а после них брать два-три месяца на практику. Ну, я, например, понимаю, какие задачи нужно подобрать, как их проверять, как советовать, поэтому веду несколько человек в формате менторства/репетиторства - и я понимаю и подсказываю, когда уже по уровню пора начинать ходить на собеседования, и дальше трудоустройство должно произойти относительно быстро; если надо будет что-то доучить, мы проанализируем с человеком собеседования, я ему дообъясню все, что потребуется. И самое важное, на мой взгляд, что появляется у моих студентов - ощущение, что они реально могут решать боевые задачи. Что простые задачи не вызывают у них проблем на собеседованиях. Что они в восторге от того, что у них получается! Да, на каких-то собеседованиях из могут завалить на сложных задачах или нюансах теории, но они точно будут уверены, что базу они ответили хорошо, и что прикладные задачи они решать умеют. И просто надо пройти несколько собеседований, чтобы получить мэтч - студент нравится компании, компания студенту, и он подходит под ее задачи.

      Мне кажется, что самостоятельно это сделать очень трудно. Поэтому я рекомендую либо репетиторство/менторства, либо см. выше. :)


  1. teimur
    00.00.0000 00:00

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

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

    К сожалению мне никогда не платили за то что бы я находил глассные буквы и перекрашивал их, или вручную велосипедил функцию map, reduce и прочие массивов. Я не пройду собеседование, не то что на джуниора, но даже и на программиста, несмотря на то что у меня есть проекты которые продаются и приносят деньги, магазины, интеграции маркетплэйсов и т.д. К сожалению мне приходится работать на javacript (node js и его библиотеками, react, vue, jquery, нативным javascript), php (laravel, нативный php) python (django, Flask). И мой мозг просто не в состоянии запомнить все методы работы со строками, массивами и т.д. этих трех языков. Они путаются в голове и забываются. Из за чего приходится просто открывать справочник. И на собеседовании я врятли точно вспомню как пишется та или иная функция.

    Пример, как узнать тип на трех языках

    • PHP: gettype($x)

    • Javascript: typeof x

    • Python: type(x)

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

    Я так и не смог найти работу где платили бы строго за знания нативного javascript.


    1. integralik Автор
      00.00.0000 00:00

      >Я конечно плохой программист
      Слушайте, а что Вам мешает стать хорошим программистом? Потому что хороший программист как раз может выбирать задачи. Необязательно между фронтендом и бэкендом, фуллстеком быть, разумеется, лучше. Но я уже 18 лет в веб-программировании (а до этого еще 6 лет в школе, где мне дали суперотличную базу), и всё это время я тоже делаю задачи, за которые платят. И со временем я вышел на задачи, за которые платят очень хорошо. И в процессе этого я а) стал хорошим программистом, б) выработал критерии, какие программисты, по моему мнению, хорошие, а какие - слабые. С ними можно соглашаться или нет, но для меня они многократно проверены опытом и рабочими результатами. Можете рассказать, почему у Вас не получается?

      Я за себя, например, могу сказать, что я всегда считал себя неплохим программистом и уже в 2009 мог сделать на сайте практически всё. Но когда меня в 2015 году коллеги нормально научили пользоваться классами и ООП на PHP, а в 2017 году я разобрался в теории javascript, я поразился тому, насколько медленно и неэффективно (хотя все еще хорошо и оплачиваемо) работал раньше. Тогда я был джуном, сейчас - крепкий мидл (у меня есть некоторые сеньорские навыки, но их, на мой взгляд, недостаточно, плюс я сейчас больше занят управленческой работой). И если Вы много лет в программировании, то нет никакой проблемы стать хорошим специалистом.


    1. integralik Автор
      00.00.0000 00:00

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

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

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

      >Я так и не смог найти работу где платили бы строго за знания нативного javascript.
      Когда у вас есть хорошее знание нативного javascript-а и базы, добавить чуть-чуть знаний php, буквально на 4-5 занятий, - и каждая вторая вакансия годится. Да, там платят как джуниору, но человек на этом уровне и есть джуниор. И через пару лет уже дойти до React и идти нормально мидл-фронтенд-разработчиком.

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

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


      1. teimur
        00.00.0000 00:00
        -1

        Отвечу сразу на 2 комментария.

        Сейчас я работаю удаленно, плюс на меня работают мои проекты, в месяц получается вытягивать 2500-3000$. Но были проекты по знакомству где и во много раз больше заработал. Я оцениваю хорошесть программиста в его затрачиваемом времени на работу и оплате труда. И 3000$ по различным сайтам вакансий, это ниже джуниора. Могу даже поискать и примеры скинуть. Если человек работает по 16 часов в сутки и при этом его ЗП 3000$, я не назову такого программиста хорошим. Уверен что есть программисты которые знают яваскрипт и алгоритмы просто по памяти и пишут с закрытыми глазами, но получают максимум 2к$....

        а что Вам мешает стать хорошим программистом?

        Для начало что такое хороший программист для меня. Хороший программист получает от 10 000$ в месяц на руки. И это в каком нибудь мелком городе, удаленно.

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

        Я просто физически не успеваю подготовится ко всем вариантам собеседований.

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

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

        Немножко примеров,

        Было время когда я делал проект с докером, и зазубрил все его команды, обширный список, пользовался ими около года, проект закончился, через пол годика опять проект с докером, и я обнаружил что я все забыл. Я не забываю саму суть, но забываю команды, функции, параметры, методы классов. Я всегда пользуюсь в основном табом в линукс, а в IDE пользуюсь ctrl+space. И даже когда я что то зазубриваю, я забуду через какое то время.

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

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

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

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

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

        Но на собеседовании спросят именно про typeof, вот тут собака зарыта!!! Ты должен делать одно, а спрашивают совсем другое!

        А что касается уровня абстракции - то хороший мидл понимает, какой примерно класс задач с хорошей вероятностью умеет решать человек, если он может вручную написать filter-map-reduce.

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

        Лет 8 назад я на c++ решал задачи со связаными списками, сортировками. Сейчас уже ничего не вспомню.

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

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

         И все равно какие-то смежные технологии всегда пригодятся - Websocket там, например.

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

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

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


        1. integralik Автор
          00.00.0000 00:00
          +1

          Вы знаете, это только мое мнение, но я думаю, что реальная зарплата хорошего программиста JS/PHP, даже в Москве - 50-120 тысяч рублей у джуниора, 100-220 у мидла и 180-300 у сеньора (но, конечно, при загрузке 8 часов, не 16). Я собеседовался как-то на вакансию за 300-500, но это была вакансия девопс, в чистом программировании я таких зарплат просто не знаю. 10к$ обычно получают не за скиллы, а за ответственность, руководящую роль и так далее. Хотя скиллов там тоже очень много, конечно, но в бесконечность уходит именно цена рисков и ответственности.

          И чистый мидл-фронтендер - это как раз положенное на хорошее знание базы js знание React или Angular. И это довольно спокойно поднимается за 2-3 года. И с этим берут прямо в чистый фронтенд. Но зарплата там будет 150-200к, до 3.000$ Ваших это не дотянет :) Поэтому Вам, скорее всего, и не нужен этот путь.

          А если Вы прямо хотите куда-то устроиться, то надо просто брать две недели перед собеседованием и вспоминать конкретно синтаксис всего, что написано в вакансии. Тогда, с Вашими знаниями, шансы на прохождение технического собеседования я бы оценил навскидку в 80%. Но если Вы работаете 16 часов в день, то это очень тяжело сделать. Но, возможно, Вам больше подойдет работа за 150, но 8 часов в день, чем за 220, но 16 часов.


          1. teimur
            00.00.0000 00:00

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

            1) У вас в компании реально день изо дня делают такие вещи как на пример filter, reduce, map. И готовых свободных аналогов точно нет. Можете привести пример?

            2) Я хочу привести такой пример на отстраненную тематику, но схожую по смыслу. В свои 18 лет, у меня был старый автомобиль мазда 90 года. Так вот денег тогда толком не было, но на ней сломалось сцепление. И мне пришлось изучить эту тему, и отремонтировать его самому. Сделал я все хорошо. И сейчас если меня спросить, "знаешь ли ты как работает сцепление?" я отвечу да. Но тогда вы дадите мне сцепление в разобранном виде, инструменты и скажите собрать его и установи на тот автомобиль, но только вот болты будут без резьбы, нарежешь ее сам, а вместо пружин проволока, вон тебе станок, рассчитай и сделай пружины сам, все это на время и т.д. То я вам скажу что я не справлюсь, даже если резьба и пружины будут готовы. Но пройдет какое-то время, я практикуюсь, и стану профи в этом деле. Но потом я узнаю что за это все платят сущие копейки, и всегда сцепление идет готовое с болтами и пружинами! И представим что я изучил полностью автомобиль, запомнил все (я гений) и прихожу на работу. Меня берут, но в основном я просто меняю чип на блоке управления и прошиваю его, и за это платят, так как это востребовательно. Проходит пол года, а я уже забыл как собирать сцепление. Но моя компания закрывается, и я ищу работу по перепайки и прошивке чипов. Нахожу ее, а меня там просят собрать уже двигатель... И только после этого я смогу паять чипы.  То я задам вопрос, зачем я изучал как собирать сцепление? Переводя это все по нашей теме. (тот же чип будет поиском и перекрашиванием кнопок, сцепления поиском гласной буквы в словах, двигатель промисом) Зачем мне знать как написать тот же промис, когда я легко могу им пользоваться? И платить мне будут за его использование, а не изобретение велосипеда, с учетом, что в основном я буду селектить разные DOM элементы и юзать события?

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

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

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


            1. integralik Автор
              00.00.0000 00:00

              Отвечаю :)

              1) Нет, смотрите, тут идея в другом. Когда у нас в задаче простой фильтр, то, конечно, мы используем filter, никакой проблемы нет. Но когда у нас в задаче суровая предметная область, когда фильтруемые значения и условия завязаны на кучу всего, то filter может стать нечитаемым. К примеру: мы фильтруем данные, допустим, по зарплате в каком-то отчете. И нам нужно фильтровать их с учетом того, что они должны быть не меньше, чем аналогичные данные предыдущего годового отчета; зарплата руководителей должна учитываться с коэффициентом 0,8; внештатные сотрудники должны идти со знаком "минус", а еще надо проверять, есть ли на уровень выше ограничение по общей зарплате на отдел. Ну, я довольно невнятно описал задачу, но упаковывание всего этого еще и в filter требует дополнительного напряжения мозга как того, кто его пишет, так и того, кто будет потом читать. А если развернуть filter по определению, то гораздо проще разбивать это на логические части.

              Ну и плюс - собственно, когда объясняют filter, его же как раз и объясняют через написание руками. Array.filter(function(elem) { ... }) - это все равно, что

              let resultArr = [];
              for (let i = 0; i < srcArr.length; i++) {
                if (filterFunction(srcArr[i])) {
                  resultArr[resultArr.length] = srcArr[i];
                }
              }

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

              2) Мне кажется гораздо более точной такая аналогия: вы учите химию, но принципиально изучаете сразу только молекулы. И у каждой молекулы вы изучаете свойства, как она реагирует с другими, и так далее. И вам приходится запоминать кучу всего про то, как взаимодействует каждая пара молекул. А я задаю вопрос "а можете собрать из атомов?" И когда вы знаете про атомы, а их меньше, чем молекул (чуть более 100 в таблице Менделеева, и в работе чаще всего нужны не все), вам гораздо легче понимать принципы, почему целый класс вот таких молекул взаимодействует с другим классом примерно одинаковым способом. У вас есть способ это понять, язык это описать, и возможность отлаживать на уровне атомов, а не молекул, если это не работает. Потому что очень часто люди, знающие на уровне молекул, но не знающие на уровне атомов, упираются в какую-то проблему и говорят "а мы не знаем, как ее решить". И гугл, внезапно, тоже не знает, как только начинается сколько-нибудь сложная предментая область. А техникой спуска на уровень атомов человек не владеет.

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

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

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

              Окончание отдельным комментарием :)


              1. teimur
                00.00.0000 00:00

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

                Вот я опишу вчерашнюю задачу которую мне нужно было сделать как мне сказали "еще вчера". Есть 30 select элементов которые исходят из библиотеки selectize.js. У них у всех одинаковые options, задача в том что бы при выборе одного значения у одного select, эта option исчезала у остальных, и появлялась если выбрать другую. Звучит просто, пробежался по всем селектам и удалил все ненужное, и добавил нужное, но на деле оказалось что с selectize.js не все так просто, так как нужные функции не документированные, не удалишь элемент просто так и не добавишь. Пришлось гуглить, и нашел не документированные функции которые косвенно помогли это реализовать, но потратил время....

                Я это написал что бы продемонстрировать за что мне конкретно платят. И дополню тем, что это старый проект который я не трогал с сентября прошлого года. И selectize.js используется только там, так захотел разработчик, который начал тот проект. Я же использую semantic ui. То есть мне не резонно изучать к примеру selectize.js. Запоминать какие там у него методы и т.д. Так как завтра меня попросят сделать что-то вообще в другой библиотеке, о которой я может и не слышал. За это мне платят.

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

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


                1. integralik Автор
                  00.00.0000 00:00
                  +1

                  Конечно, простую! Идея именно в том, чтобы человек показал, что он умеет пользоваться циклами, длиной строки, читать и сохранять в массив. Всё, больше ничего не надо :) И в принципе все задачи с нашего собеседования решаются этими знаниями плюс DOM, Events, fetch. У нас очень простое собеседование! :)

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


              1. SkiffCMC
                00.00.0000 00:00

                Ваще ни к чему не было возражений, кроме как вот к этой штуке "ну если сложное условие написать в фильтре, то будет нечитаемо, в for лучше"- собственно, почему нечитаемо? Ну то есть если прям адски нафигачить все условия как есть- да, будет треш, но так оно и в цикле будет несильно лучше. Не лучше ли сделать просто .filter(checkVeryDifficultCondition), а уже в отдельном методе checkVeryDifficultCondition спокойно и, вероятно, тоже с подфункциями (как минимум применение весов типа 0.8 для боссов и -1 для внештатников напрашивается на отдельный метод через что-то типа массива объектов вида {condition: (employee: Employee) => boolean, weight: number}, через который мы прогоним каждый элемент и который потом меняется при желании за 2 минуты)? А если ещё и нормально имена методов подобрать, так и ваще огонь и никаких проблем с читаемостью, несмотря на .filter:)


                1. integralik Автор
                  00.00.0000 00:00

                  Это иногда требует собрать дополнительной инфы для этой checkVeryDifficultCondition, если у сущностей сложные связи. Но так-то да, можно :)
                  P.S. Миша, привет :)))


                  1. SkiffCMC
                    00.00.0000 00:00

                    Ну да, требует иногда, но кмк так читаемость таки будет лучше. Вообще я бы прилично подвис, если бы надо было придумать пример, когда нужен посконный for, но не .map, .filter, .foreach или .reduce(бывает, но очень нечасто кмк).

                    Привет, да)))


            1. integralik Автор
              00.00.0000 00:00

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

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

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

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

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

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


              1. teimur
                00.00.0000 00:00

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


            1. integralik Автор
              00.00.0000 00:00

              И еще скажу про универсальность и плоскую заточенность, таких комментов только открытых было два, а от нехабровцев скрытых еще десяток (почему бы это, интересно? :)))

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

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

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

              Вообще, во многих случаях важно про какие-то вещи скорее знать, что они существуют. Например, когда-то очень давно я не знал про css-свойство transition и пытался реализовывать слайдер путем подбора скорости движения картинки на js в разные моменты, и это был epic fail. Но, конечно, подробности про это свойство я буду гуглить заново, и буду удивлен, если меня спросят знание этого на собеседовании наизусть. И сам спрашивать не буду.


              1. teimur
                00.00.0000 00:00

                Видимо у Вас очень хорошая компания попалась, и как я понимаю вы там находитесь в офисе. А я вот все пытался найти удаленно. И вот нашел, сейчас у меня на самом деле две с половиной работы. И моя универсальность состоит именно в том что я описал. И даже настройка OpenVPN, настройка микротиков, создания VLAN, работа на сетевом уровне с пакетами, парсинг всяких маркетплэйсов, создания различных веб приложений, интеграций, и еще много разных технологий, что-то знаю хорошо, что-то забываю, а что-то изучаю, работать приходится много, вплоть до 16 часов в сутки, и выходных так же нет. Но самое что тут важное, за это платят, и бывает (очень не часто) что я могу и 20 000$ заработать за месяц, но это было пару раз. В такие моменты я просто не могу отказаться от работы. Вот в голове и путаница, платят то за одно, а на собеседованиях которые проходил я, вопросы были совсем другие, отсюда и вывод я сделал уже давно, что до программиста мне далеко. Так как собеседования показывают что нужно знать то что я либо забыл, либо даже не использовал. Уровень моей неуверенности в себе у меня стал очень большим....


        1. taujavarob
          00.00.0000 00:00
          +1

          Вы нормальный программист - универсал. - Это как швейцарский нож.

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

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

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


          1. dom1n1k
            00.00.0000 00:00

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


  1. DimaSimfer
    00.00.0000 00:00

    Две мысли возникли по прочтении Вашей статьи:

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

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


    1. integralik Автор
      00.00.0000 00:00

      Давайте так: основная претензия к выпускникам курсов - то, что они не знают материал с курсов. Уверен, что на абсолютно любом курсе JavaScript есть querySelector, addEventListener и fetch. И да, от любого выпускника курса я жду, что он знает, чем отличаются

      document.querySelector('.btn [data-id]')
      и
      document.querySelector('.btn[data-id]')

      или, например, что document.querySelectorAll возвращает коллекцию, и поэтому

      document.querySelectorAll('.btn').style.backgroundColor = 'red';

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

      document.getElementsByClassName('btn btn-buy');

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

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

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


      1. DimaSimfer
        00.00.0000 00:00

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

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

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


      1. teimur
        00.00.0000 00:00

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

        document.getElementsByClassName('btn btn-buy');

        Сразу, 5 секунд открываю в гугле и вижу ответ, возвращает все элементы которые содержат class="btn btn-buy" причем неважно в каком порядке, но должны содержать все.... Но вы уже меня не возьмете, потому как я кучу таких методов не знаю наизусть. Да и вообще мне только раз попадался модуль в котором используется нативный javascript, в основном на этом месте JQuery. Мелочь, а уже не подхожу... Вот именно об этом я говорил. Тут зубрить нужно, а потом придется поневоле забыть. И даже сейчас я это уже узнал, пройдет 3 дня и я не отвечу на этот вопрос, так как уже голову займут реальные вещи. На мою работу это не повлияло бы ни как, если вы реально используете нативный яваскрипт для браузера, то без проблем, 2-3 дня и я все буду помнить, пока не перейдем на другой проект без этого. И вот я такой прихожу, у меня куча проектов, и заваливаюсь на первом же вопросе.... А такого было не мало. И никто не думает что человек запомнит эти методы на раз два, он их не помнит потому как не работает с ними сейчас. Меня даже заваливали на методах console, так как я знал только log....

        Еще пример. Я в свое время изучал детально яваскрипт по книге "Дэвид Флэнаган JavaScript Подробное руководство" И там есть детальное описание необязательной точки с запятой, и я детально все изучал и практиковал на тот момент.

        Но на одном собеседовании меня спросили

        var a
        a
        =
        3
        console.log(a)

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

        var a; 
        a=3;
        console.log(a)

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


        1. integralik Автор
          00.00.0000 00:00

          Да нет, Вы не улавливаете наш принцип :)

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

          Про "var a = 3" я бы для начала ответил, что в компании не внедрен линтер, и было бы неплохо его внедрить. А ответили-то Вы что на этот вопрос? Потому что из общих соображений очевидно, что это выведет 3. Ну, представьте себе, что Вы компилятор, где Вы не можете обойтись без точки с запятой между строками, иначе syntax error? В двух местах. Это компилится? Да. Ну и все, ответ готов. Вы можете оказаться и неправы, но, по крайней мере, будет понятна логика.

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


          1. teimur
            00.00.0000 00:00

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

            Ну если только так, то да. Было бы очень тяжело работать с тем что ты не понимаешь)

            А ответили-то Вы что на этот вопрос? Потому что из общих соображений очевидно, что это выведет 3.

            Ответил я

            var a=3;
            console.log(a)

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

            Есть куча собеседований, где спрашивают то, что автор вопроса прошел вчера, или какие-то детали,

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


  1. Genaa
    00.00.0000 00:00

    Статья получилось очень информативной и человеку которому ещё предстоит собеседование, и подготовка к нему, полученная информация на вес золота!


  1. haska2748
    00.00.0000 00:00

    Поцоны тут обсуждают космические материи, а джунов отсеивают сразу HR. Тут даже до тестового не доходит.

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

    Фильтр HR проходят только те кто догадались соврать.


    1. integralik Автор
      00.00.0000 00:00

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

      Не надо врать. Просто покажите интересный проект (а лучше два) на гитхабе. Который показывает большинство ваших знаний. Не надо сверстанный сайт, не надо куцый todolist. Что-нибудь типа такого надо: https://battleship-loukianen.vercel.app/ Чтобы одно только ТЗ, если его расписать, потянуло на 9 страниц. И чтобы было понятно, где именно там нужен фронтенд, а не сплошной render с версткой и json-ы в 80% кода.

      Знаете, сколько резюме с интересными проектами всего на 500 присланных? Два. И оба получили работу.

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


      1. sergeypr
        00.00.0000 00:00

        Основная проблема джунов - отсутствие интересных (или хотя бы реальных) задач для обучения...

        Давайте наооборот - дайте реально сложную задачу для написания (так, чтобы ТЗ было на 9+ страниц ????, но нормальное ТЗ!) и посмотрите, как будут решать


        1. integralik Автор
          00.00.0000 00:00

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


  1. sergeypr
    00.00.0000 00:00

    на 200% процентов согласен с teimur!!!

    Цитата:

    "Я не пройду собеседование, не то что на джуниора, но даже и на программиста, несмотря на то что у меня есть проекты которые продаются и приносят деньги, магазины, интеграции маркетплэйсов и т.д. К сожалению мне приходится работать на javacript (node js и его библиотеками, react, vue, jquery, нативным javascript), php (laravel, нативный php) python (django, Flask). И мой мозг просто не в состоянии запомнить все методы работы со строками, массивами и т.д. этих трех языков. Они путаются в голове и забываются. Из за чего приходится просто открывать справочник. И на собеседовании я врятли точно вспомню как пишется та или иная функция."

    У меня абсолютно аналогично - по работе приходится решать задачи на php, js, bash, mikrotik, vmware, proxmox, настройке linux (от IPTV, LAMP до Zabbix), настройке свитчей... В том числе легаси код, бывает что и 10 летней давности...

    В результате я всё это знаю, умею и делаю - например, сейчас делаю большой проект на php+js (IPTV сервер для интернет провайдера), но собеседование даже на джуна 100% не пройду, так как из-за разнообразия "зоопарка" ЯП привык (и считаю это правильным!) решать задачи посредством гугления и осмысления того, что нагуглил (обычно 5-10 разных вариантов решения требуемой/аналогичной задачи хватает чтобы написать оптимальный код на любом языке). Спроси меня собеседовании, как решить простенькую задачу, например вывод на форму элементов в зависимости от уже выбранных - я могу принцип рассказать, а вот написать это за 2мин/полчаса - нет!

    И это, я считаю правильно! Как пример - та же задача (выше, на форму) - переписывал 5 раз, в итоге, из 100+ строк осталось 12 (!!!), но через неделю, спроси меня еще раз написать тот же код - не напишу - надо погрузиться в задачу, посмотреть на аналогичные решения, оптимизировать (да, да, я "перфекционист") до "конца!"


    1. sergeypr
      00.00.0000 00:00

      Кстати, интересно было бы посмотреть на решение этой задачки здесь присутствующими (javascript, конечно же, любой фреймворк, по желанию (у меня jQuery):

      1. На форме есть select - в нем выбираем одно из 26 предопределенных значений (пусть будет item0...item25), после выбора - записываем в БД. При открытии формы на добавление новой записи, на этапе выбора в select, уже записанные в БД значения должны быть недоступны для выбора (то есть, если в БД уже есть записи с item4 и item6, то, при открытии, списка select, эти значения должны быть disabled (или не видны вообще). (Пока все просто, да?)

      2. Если мы открываем запись на редактирование (та же форма) - то всё аналогично, за исключением того, что itemХ, который, принадлежит данной записи должен быть доступен (то есть, открываем на редактирование запись, где указано item6, например, в этом случае item6 должен быть доступен для выбора!).

        Есть желающие показать варианты решения такой (простенькой) задачки?

        В реальности код, в итоге, со всем форматированием (vs code, форматирование по умолчанию) - 15 строк.


    1. integralik Автор
      00.00.0000 00:00

      Ну, я на работе имею дело тоже с большим зоопарком. PHP, JS, RabbitMQ, nginx, apache, bash, zabbix, docker, Astra Linux, Rosa Linux. Это не мешает мне уметь проходить собеседования и решать некоторые задачи по программированию в 20 раз быстрее Вас. Но это не значит, что у Вас прямо все плохо. Может, Вы хороший админ, и это компенсирует незнание базы по программированию, почему нет. Может быть, Ваш темп программирования устраивает работодателя, тоже проблем не вижу.


      1. sergeypr
        00.00.0000 00:00

        Я немного не о скорости...

        Вот, например, сколько Вы знаете способов реализации CRUD в PHP?

        Я, на момент, когда мне понадобилось, знал 3 варианта... Сейчас знаю уже десяток РАЗНЫХ вариантов, из которых "собрал" тот, что мне нужен, плюс (из-за того, что подсмотрел, как реализуют другие) добавил "красивостей" и защиту "от дурака" в свой код...

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

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

        Может я и неправ, но, как я уже писал сверху - я перфекционист, люблю делать "сразу" хорошо


        1. sergeypr
          00.00.0000 00:00

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

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

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

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