Нужно ли учить алгоритмы?

preview_player
Показать описание
Рекомендации по теме
Комментарии
Автор

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

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

Если кратко: научить ДУМАТЬ человека именно думать по-программерски крайне сложно. А вот научить пользоваться чем-то сильно дешевле и проще!

Возьмем скажем Inversion Of Control? Если надо чтоб человек его понимал, то сколько займет донесение до него? Дать задачу где это можно применить. Он напишет свой велосипед и получит практический опыт как в принципе можно решить задачу. Показать ему после его решения то, как надо решать с помощью этого принципа и почему. Дать ему вторую задачу, где можно применить этот принцип. Проверить решение. Показать ему ошибки в его понимании. Спустя 4-5 задач он будет его понимать! Для больших компаний это не очень дорого!

Но как часто мы видим ситуацию, когда разработчик пишет код, который выполняет настолько быстро насколько это в принципе возможно и который почти не потребляет памяти? Вы скажете этого не надо? Да ладно? Мы же ежедневно работаем за компами, ноутом включая в свое личное время! Неужели нам не хочется, чтоб софт который мы используем работал бы эффективно? Давайте не будем врать себе: мы хотим такой софт. Очень хотим чтоб у нас всегда был только качественно написанный софт. Но как такая ситуация в принципе возможна? Если средний программер будет думать только про то как правильно пишется Декоратор, Фасад, Абстрактная фабрика и ему будет до лампочки что в том или ином месте он может применить бинарный поиск работающий за O(log(N)) вместо tuj текущего решения за O(N^2), то что мы будем получать? А будем получать то что я использую на работе. Корпоративный софт написан так, что при его использовании у меня возникает мысли сходить за яйцами и сделать себе глазунью на клавиатуре ноута )))

ntvisigoth
Автор

Учить - нет. Понимать какие существуют и когда нужно применить - да.

valeriikuzivanov
Автор

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

mykytaslywko
Автор

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

dmitriyobidin
Автор

ОНИ ВАМ понадобятся 100%!!! У меня на собеседовании в амазон спрашивали и задачи по ним были, учите братцы :)

timurakhalaya
Автор

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

SecretYouTubeAgent
Автор

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

cannibalirk
Автор

вижимо поэтому они имеют гугл, оракул, виндовс, эпл, а мы медок :D

yevhendatsenko
Автор

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

Goldfinger
Автор

это чел говорит то что вы хотите услышать...

alert
Автор

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

nkondusov
Автор

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

artikhon
Автор

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

СергейКондратенко-оц
Автор

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

b
Автор

Сильно зависит от того, что программист будет делать. Если это кодер и его работа - рисовать кнопочки и работать с БД, то алгоритмы не столь нужны. Для того, что называется Software Engineer, требование по знанию алгоритмов идёт сразу за требованием по знанию языков программирования. Технологии, библиотеки - они где-то в самом конце.
Даже если у вас замечтальные framework'и и есть библиотеки на все случаи жизни, то без знания алгоритмов, в них реализованных, сложно выбрать наилучшую для вашего случая функцию. Да и залезть куда-нибудь в библу и понять что она там делает будет сильно проще.

konstantinstepanovich
Автор

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

demyan_ua
Автор

Как можно давать советы, если ты сам не знаешь эти самые алгоритмы и на что знание это влияет)...

SergSab
Автор

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

artemkuznetsov
Автор

Как насчет паттернов проектирования? Когда начинать учить и разбираться в них? Где-то у Вас на канале слышал, что лучше это делать после 1года опыта за плечами. Так ли это?

Alex-hzdk
Автор

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

mashamanina