hardterr
@hardterr

Что делать если не получается писать код имея нужные знания?

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

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

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

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

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

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

Вот к примеру задание:
// Объяви экспортируемую функцию getAvailableItems,
// которая принимает в качестве первого аргумента объект пользователя,
// а в качестве второго аргумента - массив объектов предметов,
// каждый элемент которого представляет из себя объект следующего вида:
// {
//	name - строка (обозначает имя предмета)
//	cost - число (обозначает цену предмета)
// }

// Пользователь представляет из себя объект следующего вида:
// {
//	name - строка (обозначает имя пользователя)
//	balance - число (обозначает баланс пользователя)
// }

// Функция getAvailableItems должна вернуть объект следующего вида:
// {
//	availableItems - массив, каждый элемент которого представляет из себя объект предмета, описанный выше
//	totalCost - число
// }

// В свойство availableItems возвращаемого объекта должен быть записан массив,
// который хранит в себе ближайшие к началу массива предметов предметы которые пользователю по карману
// Примечание: Эти предметы все вместе должны быть по карману для пользователя, а не отдельно,
// т.е. если у пользователя на балансе 500 условных единиц, то в массиве свойства availableItems
// общая стоимость предметов не должна превышать эти 500 условных единиц

// В свойство totalCost возвращаемого объекта должна быть записана сумма цен предметов,
// который суммарно по карману для пользователя. То есть это должна быть сумма цен предметов,
// записанных в массиве availableItems

Тут я понимаю что используются массивы, объекты, вспомогательная переменная, цикл for...of, if, функция, это все я понимал еще до того как увидел решение задачи. Но при этом я сидел и не мог решить задачу час и в голову не приходило просто ничего, я сделал базовую запись, то есть создал объект который нужно создать по заданию, создал массив и на этом все. Зато когда я увидел решение, мне стало так стыдно что я не смог решить, потому что и ответ и самое задание мне показались до боли легкими и так всегда и со всем. Хотя все нужные знания для решения у меня были

Извините за столь длинный вопрос. Мне очень нужна помощь, я не хочу бросать программирование, но как разобраться со своей проблемой я не знаю.
  • Вопрос задан
  • 6876 просмотров
Решения вопроса 5
approximate_solution
@approximate_solution
JS Developer. Angular\React\Vue\Ember
я сталкиваюсь с тем, что я не понимаю как его делать, хотя там есть все то, что я уже проходил.

Это нормальная практика, называется она "не набита рука".

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

Всё правильно, так и пишут код и находят решения 80% программистов. Гуглят решения -> компонуют решения под свой проект -> делают рефакторинг кода(если требуется) -> получают деньги. PS: не все крутые дядьки сеньоры-помидоры отличаются от вас мозгами, просто они уже вложили от 2000 до 10 000 часов на изучения материала, на который вы потратили только 100-200 часов. В этом вся разница.

но как разобраться со своей проблемой я не знаю.

Очень просто. Решать типовые(и не типовые) задачи(от самых простых, до более сложных) по 5-8 часов в день, и каждый месяц делать breackpoint, анализируя пройденный путь. Если через полгода не будет результата - всё и правда плохо, и скорее всего вам нужно качать не только программирование, но и умение логически и критически мыслить, умение деструктурировать задачи на под задачи.
Ответ написан
fedorez
@fedorez
Хатуль мадан
да ну.
не бросайте. я считаю что "не твоё", "не дано" - это ерунда и так не бывает. как говорят в любимой Бобуком цитате - "специализация - удел насекомых". гуманитарии/технари, равно как физики/лирики - это такой же бред как "совы/жаворонки" - любой человек без органического поражения организма может всё. вообще всё - и писать музыку, и оперировать уравнениями Максвелла, и странный аттрактор ковырять, и детективы писать, и приложения под айфон на Objective-C сочинять.
главное желание разобраться и практика.
конкретно в вашем случае - читайте программы, как читаете книги.
мы в юные годы жили без компьютеров, с доступом к машинному времени час в неделю, у нас были книжки с листингами на паскале и бейсике - мы их читали, мы их в тетрадочке писали, обсуждали, находили косяки.
так и вы - читайте готовые проекты, разбирайте задачки, смотрите решения - это нормально.
читать чужое творчество - это правильно и хорошо.
не получается решить задачку - пробуйте снова, снова - если совсем вилы - подсмотрите ответ, решите аналогичную задачку. читайте код как книгу. он интересный)
тем более, у вас есть комп, его можно гонять раз за разом)
не можете написать что-то с нуля? возьмите букварь, вроде Big Nerd Ranch - там по шагам строится какое-то минимально функциональное приложение - с объяснениями, пройдите это.... пусть медленно.
скачайте готовый проект - поиграйтесь с ним - измените шрифт, цветовое решение, перекомпонуйте интерфейс, добавьте функционал какой-нить, вьюшек пару - с каким-то минимальным вам интересным чем_то...
блин, играйте! развлекайтесь! если вы будете страдать изучая - это путь мученика, не надо так)
удачи.
Ответ написан
NeiroNx
@NeiroNx
Программист
"Ноги есть, вроде двигаются, но ходить не получается - постоянно падаю."
"Ну это как с музыкой, ноты понимаю, но воспроизвести не могу - нет слуха."
Так и с программированием - чтобы уметь - нужно в голове воспроизвести работу этой программы.

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

Если совсем не получается - не лезь не твое это. Твой мозг просто не может формализовать задачу.

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

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

Так вот тренировать нужно методику разбиения задачи на составляющие.
Ответ написан
@alhaos
ИМХО не бывает канонического программирования, даже каллиграфический почерк отличается своей особенностью. А код это результат мышления. Главное не отчается и не потерять в себе любовь к этому делу, все остальное решает практика, "какой же я дебил, люди делают, это так непринужденно и легко, а я туплю и вымучиваю кривые решения", "я никогда этого не пойму....", это у всех бывает. кровь и пот всегда дают результаты. Решайте задачи, очень помогает.
Practice make progress!
Ну и последовательно от простого к сложному.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
1. Мало практики.

2. Мало нормальной практики. Ты выполняешь чужие задачи, вдобавок заданные формальным (неудобным для понимания конечной цели и смысла) языком. Поставь сам себе задачу, что бы ты хотел написать.

3. Иметь нужные знания это не почитать про них. Это означает уметь ими пользоваться. Ты в задачах перечислил настолько примитивные вещи, что аналогом может быть алфавит. Алфавит это не знания, это просто навык чтобы вообще читать и писать, знания - это умение пользоваться всеми этими массивами, функциями, условиями и циклами.

Если считаешь, что ИТ твое, пробуй дальше и скажи что будет через год.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@rusrich
Мой опыт:
Изучал JS по урокам и официальной документации.
1. Прекрасно знал, что такое переменная, массивы, функции, циклы и пр. Как это применять в практике - ни понятно.
2. Прочитал книгу O'relly для начинающих JS - еще больше стал понимать про переменные, циклы, массивы и пр. - Как это применять на практике - не понятно
3. Записался на продвинутый JS, NodeJS, React - изучил ES6, выучил классы, понял принципы работы React - как это применить на практике - не понятно.
4. Купил несколько англоязычных курсов на udemy (русские в топку), где создаются нормальные реальные проекты, не "туду листы" и повторял все за автором. Первый курс прошел и повторял все один в один, благодаря чему понял взаимодействие React с Нодой, как писать API, как деплоить и все дела. Второй курс уже сразу адаптировал под свои нужды. В итоге сделал свой проект и от проекта в курсе осталась только авторизация и базовые методы создания и чтения. Процентов 70 своего кода.

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

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

Войти через центр авторизации
Похожие вопросы