В чем проблема с учебой программированию?

Всем привет. Месяца 3 назад упорно занялся javascript, до этого только верстал, подключал всякие плагины на jQuery и немного писал на чистом javascript, но это выглядело... плохо, как мне кажется. Сейчас же решил что хочу упорно этим заниматься и меняю работу на младшего frontenda. Вообщем вопрос в следующем, имеются большие проблемы с пониманием программирования в целом, то есть я сейчас могу на чистом js написать скрипт который при каком-либо событии с помощь ajax получает json, и формирует требуемый вывод, и далее взаимодействует с пользователем, могу написать валидатор для форм или свою мини библиотеку аля jQuery. Но при этом когда смотрю какой-нибудь курс или книжку читаю и там ставиться задача вывести в консоль решетку 8 на 8 вида:
#  #  #  #  #
  #  #  #  #  
#  #  #  #  #
  #  #  #  #  
#  #  #  #  #
  #  #  #  #

или какой-нибудь треугольник
*
    **
   ****
  ******
*********

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

Всем спасибо.

Кстати задачу решил)
var cols = 8;
var flag = true;

    for (var i = 0; i < cols; i++) {
      for (var j = 0; j < cols; j++) {
        if (flag) document.write('# &nbsp;');
        else document.write('&nbsp; #');
      }

      flag = !flag;
      document.write('<br>');
    }
  • Вопрос задан
  • 1732 просмотра
Решения вопроса 1
trevoga_su
@trevoga_su
и там ставиться задача вывести в консоль решетку 8 на 8 вида .... то я впадаю в ступор, и бьюсь над задачей пару часов
я тоже впал в ступор, прикинь? а я проф программист.

просто не надо решать откровенно идиотские задачи, не real-life задачи. любые алгоритмы ты начнешь понимать и реализовывать в процессе обучения, с опытом. А сейчас, будь добр, начни писать на ЯП реальные задачи, а не идиотские типа той, что ты привел.

Выучи основные конструкции управления, которые есть во всех современных ЯП. Учи сам язык. Пиши на нем. И рано или поздно все получится, поверь.

Но не надо обучаться, НИКОГДА не надо обучаться на задачах, которые не имеют мотивации и смысла. Вот эти задачи с выводом треугольника в консоль - они действительно отобьют всю любовь к программированию.
Хочешь научиться писать на JS? Молодец, JS надо знать в любом случае.
Напиши на нем галерею, объект для валидации форм, что угодно пиши. Главное задача должна быть обоснована. А пока ты занимаешься чем-то вроде покраски травы - вроде и опыт, а нахрена оно нужно - не понятно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 11
OnYourLips
@OnYourLips
и бьюсь над задачей пару часов, пока не посмотрю в ответы

Очевидно, что этого мало.
Фильтруйте задачи (ставьте задачи для начинающих и задачи, у которых больше всего процент решения) и решайте часов 100-200: acmp.ru/index.asp?main=tasks
Ответ написан
masterworks
@masterworks
Синтетические задачи это плохо потому что они отдаляют от реальной работы. Учитесь на реальных задачах. Не ставьте цель что то выучить. Ставьте цель чтобы работало. Потом будет понимание как сделать это красиво. Если работаете в команде - спросите более опытных как лучше сделать.

Вообще, я в свое время испытал дикое отвращение к учебному процессу. Позже пришел к тому, что учить строго по каким то курсам - неинтересно и мотивация сразу пропадает. Сразу делайте что вам интересно. Тогда будет удовольствие от сделанного. Сразу - не значит брать нахрапом, это не отменяет этапного подхода, планирования и т.д.
Ответ написан
mistik_max
@mistik_max
Копирайтер, йог и созидательный инвестор))
Думаю здесь абсолютно нет никакой проблемы, и это временное явление все, пока опыта и знаний по соответственной тематики нормально не подчерпнете)
Ответ написан
@nirvimel
Умение программировать - это не тоже самое, что владение одним или несколькими языками программирования. Мы все (кто как) владеем русским языком, но это не делает нас писателями автоматически. Об этом не упоминают авторы книг по ЯП, что их прочтение не сделает программиста из читателя, как учебник русского языка ни из кого еще не сделал писателя. Одно дело - уметь писать код, другое - уметь программировать. Задачи, на которые вы натолкнулись, требуют именно программирования, а не просто выражения в программном коде некоторой последовательности действий, описанной естественным языком.

Надеюсь, вы воспримете это без обид. Я сам не считаю себя великим программистом. И многие конкретно программистские задачи у меня тоже вызывают закипание мозга, несмотря на хорошее владение ЯП и достаточный опыт. Просто не всем русскоговорящим (т.е. русскопишущим в интернете) быть великим русскими писателями, и не всем кодерам быть великим программистами.
Ответ написан
Acuna
@Acuna
Заполнил свой профиль
Товарищи невероятно правы! Я сам даже не решал все эти абстрактные, оторванные от жизни программы и не тратил время на прочтение толстенных книг и просмотр видео-уроков. Вместо этого я уделял все свое время практике - писал свою CMS (Система управления сайтами), сначала, когда нужна была просто серверная сторона - взял какую-то открытую бесплатную CMS, перетормошил ее и написал на ее основе свою с чистого листа. Таким образом я выучил PHP. Затем, когда появилась необходимость в красивостях - стал обворачивать ее в JS и jQuery, узнавая о нужных для каких-либо задач плагинах, так же тормоша их и создавая на их основе свои так же с чистого листа. Так я вначале наполовину выучил нативный JS, дальше учить не стал, так как открыл для себя все прелести jQuery и с тех пор пишу браузерную часть исключительно на нем. Так что пИшите уже на jQuery - просто отлично, оттачивайте в нем свои навыки на реальных задачах, на том, что вам нужно уже сейчас, а все эти книжки и задачники выкиньте в помойку, они у Вас только любовь к программированию отобьют, а написать что-то дельное все-равно не сможете.
Ответ написан
thewind
@thewind
php программист, front / backend developer
Значит у вас проблемы с логикой и мысленным представлением. Поищите книги каие-нибудь... Ну или будете просто кодить по указке)
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Если трудно – значит, на этом учишься. Так и должно быть. Можно учиться на абстрактных задачах, можно на реальных – была бы разница «до» (– Не знаю, как вообще к этому подойти!) и «после» решения (– Ха! Так вот, как оно делается, совсем не сложно!).

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

Не важно, как – целиком своим умом, или с помощью коллеги, соседа, StackOverflow или Toster'а вы в итоге решите задачу – главное, решите, и уже будете понимать, как подобное делать.

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

Что касается примера с выводом в консоль. Как и с любой другой необъятной, «сложной» и непонятной задачей – бейте её на более мелкие, отбивайте кусочки, которые можете решить сразу самостоятельно. Вывод в консоль – можете вывести "Hello world?". Отлично, сделано. Вывести первую строку. Прекрасно! Вывести вторую? Мега. Теперь, может, что-то оптимизируем – ведь 1-я и вторая по сути очень похожи? И так далее, пока не образуется решение в одну строку, а вы отправитесь пить кофе, почитая себя гением на сегодня. : )
Ответ написан
copist
@copist
Мидл, хочешь стать синьором? http://copi.st/ExhE
В чем проблема с учебой программированию?

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

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

Программисты часто "курят" чужой код, прежде чем писать свой. И хоть какие-нибудь костыльные варианты для начала придумывают. В твоём случае с шахматной доской подошло бы для начала такое
console.log("#  #  #  #  #");
console.log("  #  #  #  #  ");
console.log("#  #  #  #  #");
console.log("  #  #  #  #  ");
console.log("#  #  #  #  #");
console.log("  #  #  #  #  ");

Это не сложное решение визуально даёт нужный результат :)

С моей точки зрения, с готовым решениями можно работать двумя способами:
1. решить и проверить своё решение
2. в случае тупика посмотреть решение, понять его, закрыть браузер и идти и повторять по памяти
Можно заучить наизусть, как билеты по ПДД :) Но не копипастить и не переписывать.

Примеры из жизни.
1. Университет. Первый год на "Технологии программирования" учились читать чужой код ("что будет выведено в результате исполнения этого алгоритма") и писать свои алгоритмы по 5-10 строк (найти сумму чётных элементов массива). Ну простейшие же задачи, а целый год.
2. Я умудрился уже четыре раза делать "стену", как вКонтакте на личной странице, для разных проектов. Все каждый раз становились только лучше.
3. Я написал несколько одинаковых мини-проектов (pet project) на разных языках или диалектах.

Так что не стесняйся костыльных решений, пиши код, учись.
Ответ написан
BBmike
@BBmike
Ты ниасилил прям "вноль", не понимая с чего начать или твой код в принципе правильный, но не работает из-за 1-2 однотипных ошибок?

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

Судя по задачам ты учишься по "Выразительный Javascript"

читай учебник на Javascript.ru, решай задачи, которые дал уважаемый OnYourLips и попроси, чтоб кто-нибудь тебя зарегистрировал на Codewars. Там очень классные задачи в неограниченных количествах.
Ответ написан
@Silm
Вакансия.
Поставщик геометрических фигур ищет опытного JS программиста, для разработки консольного ПО в цех производства треугольников

Это задачи на алгоритмы. Конкретно к JS они отношения не имеют.

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

А для развития фронтенд навыков, изучайте современные технологии, пишите реальные вещи.
Ответ написан
@robben1234
Ваш подход биться над подобной задачей несколько часов безумно глуп. Программирование, особенно фронтенд (вам же не шейдеры писать на С++), требует базовых понятий в логике, конечно да, но намного больше требует умения искать ответы. Не знаешь как сделать элемент галереи, криво ездит анимация? Составляй запросы в Google с применением site:stackoverflow.com

Если вам действительно очень хочется выработать у себя логику для решения подобных задач — наберите 10-20 штук подобных. Если с первой будут проблемы — посмотрите решение, постарайтесь выделить шаблонный алгоритм решения и после этого примените его на оставшихся примерах. Суть не в том, чтобы выдумать велосипед своей головой, суть в том, чтобы помнить (знать, где быстро найти) и уметь применять best practices, а для этого нужно просто повторять.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Sportrecs Москва
от 150 000 до 200 000 ₽