Нужно ли тратить кучу времени на задачу, которую знаешь как можно решить, но не до конца получается самому реализовать решение?
Здравствуйте. Уже как месяца два изучаю javascript. Для этого использую некоторые интернет-ресурсы. На одном ресурсе наткнулся на курс упражнений, где предлагается писать базовые алгоритмы. Ну они из разряда "заменить выбранное слово на другое выбранное" и т.д. Так вот я сталкиваюсь иногда с проблемой, когда знаю как можно решить эту задачу, что для этого нужно сделать, но реализация алгоритма меня иногда бросает в ступор. Например, как правильно пройтись по циклу, как правильно выцепить именно нужные элементы массива и т.д. В итоге я просто нахожу в интернете алгоритмы по данным действиям, совмещаю их, чтобы все это позволило решить задачу и прохожу дальше. Сразу скажу, что так я сделал пару раз, да и в основном это связано было с моим состоянием, когда тупо хотелось пойти дальше и было влом засиживаться на одной задаче. Для меня проблема заключается в том, что я не знаю - правильно ли так вообще делать? Просто мой препод всегда говорил, что хороший программист не тот, который знает, как решить, а тот, который знает где найти решение. Но свою жизненную позицию по одному высказыванию я выстраивать не собираюсь) В общем, как лучше всего заниматься самообучением? Стоит ли тратить время на решение каждой задачи, если знаешь, что для ее решения необходимо сделать? Или потом все это придет с опытом и зря я развожу панику?
"Решение"?
во-первых, научитесь никогда в единственном числе не произносить это слово. нужно понимать, что решений всегда очень много, с опытом осознание этого придет.
во-вторых, стоИт или не стоИт вопрос философский, иногда медицинский. Исходите из целей ваших, критерии оценки изменяются со временем, нет ничего плохого в том, что вы задаете себе одни и те же вопросы по нескольку раз, только оценивайте и ответы свои на эти вопросы, возможно вы заметите что изменилась ваша позиция и у вас уже вновь стоИт или не стоИт...
в-третьих, кроме самообучения другого обучения я не знаю.
Я против изобретения велосипедов, если алгоритм который вы нашли полностью решает проблему, то почему бы и не применить! Есть правда одно НО! Вы должны полностью понимать что написано в скопированном коде, иначе рискуете попасть в просак.
Сохраняй написанные тобой скриптики в какую-то папку.
И подсматривай в них, если нужно написать банальные циклы.
Иногда можно найти новый алгоритм в инете и сравнить у тебя так же или что-то новое.
А на самом деле, 2 месяца - ОЧЕНЬ МАЛО. Копи опыт и примеры своих рабочих скриптов. Каждый программист юзает свои шпаргалки
Рекомендую делать вывод на основании:
- цели, которая стоит при разработке задачи
- ожидаемого результат от проделанной работы
Если задача - это часть заказа, то задача выполняется строго по ТЗ и чем быстрее, тем лучше. Заказчик заказывал правильную архитектуру приложения? Если нет, значит решение с найденным алгоритмом себя оправдывает. Любая работа должна быть оплачена.
Если задача без ограничений, то разбираться в зависимости от сути задачи и времени на изучение:
- как правильно обойти массив и найти нужный элемент на страницы - это базовые задачи, которые необходимо уметь делать не задумываясь
- реализация анимации элементов может занять много времени, но хотя бы разок выполнить на чистом JS надо
- написание своей версии jQuery не рекомендуется
Для меня проблема заключается в том, что я не знаю - правильно ли так вообще делать?
Этим ты ведёшь себя к состоянию "я всё, всё, всё знаю, только вот написать не могу ничего". И таких "программистов" в мире - вагон и маленькая тележка. Они ничего не делают, только пользуются чужими программами.
Есть негласная рекомендация по использованию чужого кода, найденного в интернет: нужно посмотреть решение, понять его, заглянуть в мануалы, уточнить неясные места у автора ответа, закрыть и повторить решение по памяти.
Копипаст - это зло. Иначе когда-нибудь нарвёшься на ```rm -rf /``` с 100 плюсами и выбранный как решение и получишь попоболь.
Более продуктивным считаю отдавать свой рабочий или нерабочий код на ревью коллегам. Тебе укажут на ошибки, дадут ссылки на документацию, может быть даже поправят.