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

Слово "алгоритм" ни в вопросе, ни в многочисленных ответах не встретилось ни разу. 

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

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

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

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

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

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