Программист VS Инженер

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

    Таков путь


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

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

    image

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

    Рассмотрим два базовых варианта:

    Программист


    Программист-колхозник

    На самом деле, разницы между рядовым программистом нашего времени (вы ведь тоже видите эти бессовестно врущие рекламы «стань Java разработчиком за 3 месяца!»?) и аккаунт-менеджером Светой — не так уж и много. Разумеется, я не говорю обо всех-всех аккаунт-менеджерах или обо всех программистах. Я беру основную «массу», которая, судя по всему, будет хейтить этот пост (первая версия была намного жёстче). Поехали.

    Программист — просто исполнитель


    Для большинства в наше время программирование стало просто работой. Да, самой, что ни на есть, простой работой, что, впрочем, и неудивительно; и объявления про курсы «Java за 3 месяца» тому прямое доказательство.

    Программист может писать, а может не писать.

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

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

    Программистом может стать каждый!


    К сожалению, это горькие реалии нашего времени.

    С одной стороны, это круто! Прогресс не стоит на месте, человечество развивается. А с другой (девочки из HR агенств меня поймут), рынок перенасыщен некомпетентными или низкоквалифицированными кадрами!

    Да, он в принципе перенасыщен, ценники стали выравниваться. Безумных вакансий, где компании ищут джунов за ₽100к, не осталось. По крайней мере, я таких давно не наблюдаю. Лиды всё чаще стоят до ₽250к, ну и т.д.

    Найти программиста просто


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

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

    На самом деле получается картина маслом: разраб не понимает базовых принципов веб-разработки (DOM, CSS Flow Layout, HTML 5 API, es6+, immutability, etc), он делает так «как показывали в том видосике». Или делает по принципу «я вам тут по доке писал…норм же?»

    Кому нужен программист?


    Безусловно, такие кадры тоже имеют определённую ценность.

    Кому они могут быть полезны в первую очередь?

    • Большим компаниям, где все процессы отлажены, а стек устаканен; как пример: mail.ru, yandex, rambler, Сбертех
    • Командам, которые работают «на поток», стек обычно используют тот, что скажет клиент, или максимум какие-то бойлеры+стеройды (rca+bootstrap/materialui+redux/mobx+fetch/axios)
    • Гос. конторы, там программист может спокойно расти или просто «отрабатывать» ставку, так как обычно в «госах» всё течёт довольно медленно из-за высокой бюрократии в процессах

    Инженер


    Инженер за работой

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

    Глубокий анализ


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

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

    Сперва анализ требований, потом проектирование, уже в конце разработка. Да, именно так и в таком порядке. По большому счёту, соотношение потраченного времени распределяется подобным образом: 40/40/20, ну, само собой ±.

    Применение мощных практик


    Применение сложных практик тоже является ключевой фишкой, ведь если спросить рядового разработчика, что он знает про *DD, с бóльшей долей вероятности дать внятного ответа он не сможет, с инженерами иначе. Код зачастую пишется через TDD, планирование флоу работы над продуктом из клиента посредством набора практик из BDD, проектирование продукта через DDD.

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

    Кому нужен инженер?


    • Опять же — большие компании, которые в поисках лидов или архитекторов на перспективу
    • Международные компании с офисами в РФ, разрабов они обычно берут на всякие рутинные задачи, а инженеров на более сложные задачи с перспективой роста до лида, архитектора
    • Закрытые продуктовые команды, там они просто собираются в небольшие группы и решают чего и куда, и программисты там мало что сделают

    И что теперь?


    House M.D. - And so what?

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

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

    Кто чаще всего нужен для вашей команды/проекта/компании?

    • 48,7%Программист19
    • 48,7%Инженер19
    • 0,0%Тимлид0
    • 2,6%Архитектор1
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 40

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

      «Программисты» попросту не понимают подход и суть действий «хакера». «Инженеры» кривятся и говорят: «Ну так же нельзя делать!»
        0
        Улыбнуло)
        Ну, эта цепочка постов всё-таки именно про поиск людей в команду, хакеры, боюсь, в данном контексте будут неуместны)
          0
          Мне приходилось как искать к себе в команду таких специалистов, так и самому выступать в роли. Есть ряд специфических задач где «программист» не осилит, а «инженер» не возьмётся.
            0
            Полностью согласен, но, боюсь, это уже другой пост, я не просто так запустил голосование
        0
        Не вижу варианта «уборщица»
          0
          Это подвид хакера.
          +3
          Ему не нужно ТЗ, так как знает, что это бесполезная трата времени

          Вот поколение смузи выросло. ТЗ пишет исполнитель (даже если он инженер), потому что заказчик в принципе неспособен на это. Разумеется, ТЗ потом с заказчиком обсуждается и утверждается.


          И пишется ТЗ лишь для того, чтобы заказчик не говорил «а я вот так хотел, не этак». ТЗ — это защита исполнителя, а никак не руководство к действию.

            –3
            Что такое «поколение смузи»?
              –1

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

                –3
                А. Ну, что поделать, большинству щас пофиг на инженерное дело, всем бабла грести хочется
            +3

            Тут произошла подмена понятий, описание "программиста" у вас соответствует "оператору ЭВМ", а "инженер" описан как программист.

              –2
              Нет, это совсем не так. Оператор ЭВМ — офисный сотрудник, уверенный, на уровне продвинутого пользователя ПК. В последних спеках всяких колледжей добавили базовый курс Линукса, но, это вообще не про компьютер сайенс, ни про разработку и ни про то, о чём я начал писать
                +3
                Во времена когда я учился прикладной математике было иначе, именно программист занимался анализом требований, проектированием, и остальной творческой частью работы, а оператор ЭВМ — знал синтаксис некоторого языка в достаточной степени для набора кода программы в соответствии с подробными инструкциями программиста, т.е. это примерно квалификация джуниора.
                И кстати, в то время в дипломе программиста писали «математик-программист», а не инженер :)
                  –2
                  К сожалению, сейчас реалии иные(
                    +2

                    Реалии такие, что для описанных вами типов деятельности уже есть подходящие определения. А вы придумали свои. Кстати, поищите статьи "программист" vs "кодер".

                      0
                      Как я уже и сказал это моё личное мнение и я ни на что не претендую. Да придумал. И что? Я много чего своего придумал, так как то, что в опенсорсе меня не устраивает. Что дальше?
                    0

                    Что писали зависело от специальности в конце 80-х — начале 90-х. ПМ 0102 — математик-программист, ПО 2204 — инженер-программист

                0

                Абсолютно с вами согласен.


                Вайтишники с 3-5 лет опыта, не понимающие элементарных вещей из cs, или религиозно покланающиеся своему единственно выученному языку/фреймворку/инструменту(и т.п.) доставляют, конечно.


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

                  0

                  А можно ли из программиста перейти в инженеры? И что для этого нужно? Опыт или что-то другое?

                    –2
                    Перво-наперво нужно понимать, что «инженер», как и «программист» — это разные векторы мышления.
                    К примеру:
                    — у нас есть блок
                    — в useEffect мы его маунтим после срабатывания таймера (revealing animation)
                    ≠ ломается появление/некорректно отрабатывает анимация

                    Программист:
                    — кинул консоль.лог
                    — обнаружил, что не объявлен таймер до срабатывания useEffect
                    — объявил = починил

                    Инженер:
                    — получил стектрейс
                    — написал адаптер animation-useeffect-timer-adapter
                    — просто вызывает абстракцию на нужном блоке

                    Понимаете разницу?
                      0

                      Разницу понимаю.


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

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

                        По Вашему мнению незнание паттернов делает тебя автоматически "программистом"?

                          0
                          Причём тут паттерны? Это что, единственный критерий который я указал? Речь вообще не про «знание»/«незнание» — речь про вектор мышления.

                          Я конечно может и хреновенько донёс мысль, но, посыл был именно в этом.
                          Впрочем это же моя первая паста. Вторая должна быть лучше.
                      +4

                      Знавал я одного умного человека, так вот то, что Вы описываете как "программист" он называл "кодер", а "инжинера" — "разработчик". И этот вариант мне кажется лучшим, т.к. в большей своей сути инжинер=разработчик, а программист в нашем мире это синоним разработчика. А кодер это да, сохранил веб-страницу на диск — добавил в резюме HTML/CSS/JS/etc

                        0

                        Я всегда именно этими словами и говорил. Хотя по образованию, я именно инженер. Так что поддерживаю.

                        0

                        Ищу работу программиста python джун.


                        Вот с другой стороны если посмотреть… Имею опыт разработки стендов, электронные платы, изучил bat/bash и имею опыт применения на практике в тех же стендах. Именно проектирую стенды, и есть у меня в подчинении программист, пишет на Scada. Возникает ситуация что все, что касается проектов — делаю я, вся муть бумажная и алгоритм программы, а все что только напечатать и как напечатать чтобы работало — на программисте. Сейчас изучил python и понимаю, что все эти задачи лучше писать именно на нем, и готов это сделать, но это никому не нужно. То как пишет этот программист меня очень сильно коробит-никакой системности, структурности, ни одного комментария, И при этом он получает больше меня…
                        Войти на должность Джуна не понимаю как в новой компании с отсутствием проектов на python.

                          +1
                          Сделайте свой pet-project, выложите на github и его показывайте.
                            –1
                            Я, в своё время, просто предлагал услуги «за копирайт», с этого и начинал
                            +1

                            Что за странная подмена понятий? Программист это и есть инженер, а то, что вы называете программистом — это кодер.

                              0

                              Есть официальные квалификации "программист", "техник-программист" ," инженер-программист"

                              0

                              Почему тогда нет понятия быдлокодер?

                                0
                                Потому что это мой пост. Моё мнение. И у меня нет такого термина как «быдлокодер».
                                0

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

                                  0
                                  Я уже писал, что это разные векторы мышлений. Паттерны-то тут причём?
                                  0
                                  Программист VS Инженер
                                  Жду следующую статью — «Мужчина vs Человек».
                                    0

                                    ТЗ всегда врут. Но лучше такое ТЗ, чем никакого.

                                      0
                                      Да тут не в этом же смысл, а в том, что ТЗ от заказчика в 80% случаев оказывается мутью и приходится делать самому.
                                      0
                                      Как инженер, вам всё-таки стоило бы разобраться кто такой программист, кто такой инженер, кто такой софтвэр инженер ну и тд, а то программистский подход получается.
                                        0
                                        быть может дело не в том, что я не разобрался? А в том, что это мой первый пост? Попробуй сам как-нибудь на досуге пописать, а предварительно всё это сформулировать. Такое себе, я тебе скажу)

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