Как стать автором
Обновить

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

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

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

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

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

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

Алгоритмы не нужно "учить", их нужно понимать. Принципы, подходы, ограничения. Зубрить не нужно.

Только не еще одна статья о том, нужны ли алгоритмы ... facepalm

Hidden text

Нужны

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

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

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

Сегодня только посмотрел Романа из Сан Франциско который утверждал что без алгоритмов ну никуда в Америке, да собственно и с алгоритмами тоже примерно та же ситуация, там полный п_ц, а мы в России идём своим путём - надо научимся, не надо - плюнем на него, и так пойдёт!

Интересно сколько времени займет изучение алгоритмов?

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

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

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

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

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

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории