Как школьнику побороть выгорания и вкатиться в программирование?
Добрый день!
Видел множество вопросов схожих по содержанию с моим, в том числе от ровесников, но так и не получил того ответа который хотелось получить. Быть может такого и нет в природе, но я все же попытаю счастье и продублирую вопрос звучавший на этом форуме уже сотни раз.
Небольшой экскурс касаемо моего знакомства с программированием:
Компьютерами я начал пользоваться еще в раннем детстве (4-5 лет), по большей части, разумеется - для игрушек. Непосредственно в моей семье компьютеров не было, потому свои желания и мечты я воплощал в гостях у друзей и родственников, у которых они были.
Программирование меня стало интересовать лет эдак в 9-10. Тогда я, еще совсем ничего не понимающий в этом, на зло себе выбрал в качестве объекта изучения C++ и за неимением компьютера, писал код в блокноте, списывая его из роликов на ютубе :)
Разумеется, мой интерес, после пары дней использования подобного подхода к обучению - иссяк.
Прошло несколько лет, мне уже было порядка 12-ти. Я обзавелся смартфоном и узнал о существовании Питона, а также о том, что код написанный на нем, можно компилировать и запускать на моем мобильном. Счастью не было предела и я на протяжении пары недель увлеченно впитывал обучающие ролики ХаудиХо, Гоши Дударя и прочих подобных "просветителей". Однако и тут интерес был не шибко долгим и быстро пропал, потому что я не понимал как можно использовать полученные мною знания для чего-то действительно полезного и после парочки написанных программ подобных калькулятору или решателю квадратных уравнений, я снова забросил программирование.
У меня были и некоторые другие подвижки к изучению, появляющиеся с завидной регулярностью. Я также пробовал Руби на пару с онлайн компиляторами и наверняка что-то еще, чего уже не помню.
В 15 лет у меня наконец появляется компьютер. Я скопил какое-то количество денег и одновременно с этим мой друг купил себе новую платформу, а за ненадобностью отдал мне свой комплект на 1155 с 8гб ДДР3 и пнем г840, а также блоком питания. Взяв свои накопления, я купил б\у монитор, ССД и собрал открытый стенд, потому что на корпус денег не хватило :)
Тогда же я вновь загорелся идеей изучения программирования и пришел к Веб-разработке. Учился верстке на HTML и CSS, было весьма интерено. Особенно меня привлекало то, что ты моментально видел результат своей деятельности.
Моим первым проектом, если это можно назвать проектом был простейший блог-сайт о Линусе Торвальдсе, разумеется без каких-либо JS элементов.
К сожалению, я и тогда снова перегорел и забросил это дело.
Текущая ситуация:
Мне 16 лет, я учусь в 10-ом классе самой обыкновенной ГБОУ. Информатика в школе на скудном уровне, можно сказать что она вовсе отсутствует: 1 урок в неделю, на котором мы занимаемся рисованием открыток в Пеинте и другими весьма тривиальными задачами.
Имею большое количество свободного времени, особенно накануне стремительно приближающихся летних каникул.
Имею желание, но не имею представления о том, что делать.
Не знаю как справиться с постоянным перегоранием. Если вы прочитали предысторию, то понимаете насколько это является проблемой для меня.
В попытках справиться с перегоранием прыгаю из сферы в сферу, пытаясь найти тот язык, который действительно завлечет меня. Пока что остановился на JS, но и по отношению к нему испытываю некоторые сомнения.
Пробовал решать задачки на сайтах вроде CodeWars, пробовал браться за проекты посложнее, но так или иначе сталкиваюсь с постепенным выгоранием. При чем я не могу сказать что оно происходит из-за того, что я не люблю программирование. Мне нравится процесс и я не знаю почему это происходит. Все что я делаю либо слишком легко, либо слишком сложно. Как то, так и другое отбивает интерес, я не могу найти ту золотую середину, которая съест меня и заставит что-то делать долгое время.
Для чего предыстория?
Предыстория возможно поможет кому-то из желающих помочь, составить несколько более внятную психологическую картину обо мне.
Чего я хочу?
Быть может желания мои велики, но я хочу конкретных инструкций или хотя-бы методов, по которым их можно составить самостоятельно. Я хочу узнать, как мне побороть это тянущееся годами выгорание, как взяться за ум и наконец заняться делом.
Буду также рад если вы поделитесь своим собственным опытом обучения.
Как кто-то писал: "it - наверное, единственный работающий социальный лифт у нас в стране".
Если у вас не хватает мотивации трудиться, чтобы иметь возможность прокатиться вверх на этом лифте, то, вероятно, другие способы себя мотивировать уже точно не помогут (Имхо)
У вас нет выгорания. Выгорание - это результат постоянного стресса и утомления. Когда хочешь что-то делать, но просто физически не можешь.
То что происходит у вас называется "потеря интереса". И вот тут самый главный вопрос: "зачем вам программирование"? Обдумайте этот вопрос. Он на самом деле очень глубокий. И ответ содержит очень много подсказок к решению остальных вопросов.
Конечно, хочу.
Зачем мне программирование? Программирование в моем представлении единственный способ зарабатывать нормальные деньги не потеряв честь и не пройдясь по головам. В добавок к этому, программирование еще и единственная сфера в которой я могу представить свое будущее.
Я не вижу себя юристом, не вижу себя врачом или кем-то еще. Возможно это просто какое-то когнитивное искажение и я сам навязал себе подобное желание, но я действительно не хочу заниматься чем-то кроме программирования. При этом заниматься программированием основательно и достаточно долго, чтобы чего-то добиться у меня тоже не получается, как я описывал выше.
ReasonerNum2, я здесь слышу две вещи.
Первая сформулирована утвердительно - "зарабатывать деньги". Но деньги - это достаточно слабая мотивация. Если вы 8 часов в день занимаетесь тем что вам не по душе - это прямой путь к выгоранию и никакие деньги тут не помогут. Отсрочат - да. Но не решат проблему.
Вторая сформулирована отрицательно - "не вижу себя кем-то еще". Я сейчас утрирую, но если довести до максимы, то это примерно так: "Не хочу быть врачом, юристом, инженером, летчиком.... Кем же я не хочу быть меньше всего? Программистом?"
Я не зря сказал что вопрос очень глубокий. То что вы ответили - это то что лежит на поверхности. Поэтому давайте копнем глубже: "Зачем вам программирование? Зачем вам быть программистом?"
"Не хочу быть врачом, юристом, инженером, летчиком.... Кем же я не хочу быть меньше всего? Программистом?"
Вы, наверное, бесконечно правы в этом выражении. Но что же тогда делать? Идея о том, что можно делать то, что нравится и обеспечивать себя кажется мне выразимой только в программировании. Мне нравится решать задачи и писать код, я получаю удовольствие когда решаю какую-то задачку над которой сидел час, два. Разве это не есть любовь к программированию? Я не испытываю подобные чувства ни к чему иному.
Если пройтись по школьным предметам, то мне привлекательны история и литература, но что делать с такими интересами? Я не представляю как можно реализоваться в этих сферах. Чтобы зарабатывать хорошие деньги будучи историком или литератором, нужно быть действительно одаренным и посвятить этому жизнь. В программировании можно достичь схожих результатов вложив меньше усилий и при этом добиться этого с большей вероятностью. К тому же есть огромное количество удобств, которые дает программирование в сравнении с большинством других профессий. Из оных: удаленная работа, работа по свободному графику, возможность применять рабочие навыки для своих нужд (написать что-то для себя) и многое другое, что так сразу и не приходит на ум.
ReasonerNum2, уже значительно лучше. Теперь звучит выражение "нравится программировать", которого не было в предыдущем ответе. И это важно.
Теперь давайте отвлечемся от всего внешнего: зарплаты, условий работы, "удаленки", "свободного графика" и тому подобного. Вот есть вы, есть компьютер и есть собственно процесс программирования. Что именно нравится в этом процессе? Какие конкретно эмоции вызывает это состояние, этот процесс?
Михаил, то, что ты создаешь. Сам факт того, что ты занимаешься созидательной деятельностью. Что ты написал программу и она работает, что компьютер послушно ее выполняет. Ты имеешь свободу и власть, здесь и сейчас, а масштаб твоей свободы и власти ограничивается лишь твоими знаниями и навыками. Наверное в этом самый сок
ReasonerNum2, окей. А теперь давайте перенесемся к моменту потери интереса. Вот недавно было интересно что-то делать (С++, Питон, сайт и т.д.). И вот наступает то что вы назвали "перегоранием". Какие в этот момент эмоции? Что вообще в этот момент происходит с удовольствием от программирования?
P.S. Ответ прочитаю и напишу свой уже, видимо, завтра.
Михаил, просто пропадает желание обучаться. Именно обучаться, а не писать код. Чувствуешь какую-то моральную тяжесть, когда садишься за компьютер и думаешь что тебе надо вот какую-то тему пройти или еще что-то поделать. Хочется делать большее чем какие-то простые программки, но для этого не хватает знаний и навыков. А получать знания тяжело и не всегда интересно. Я понимаю что это необходимо и без этого никуда, но вот уж никак не могу себя заставить.
Если пытаться в анализ и думать о причинах подобного, то возможно здесь играет роль и то, что это занятие исключительно добровольное и если бы мне кто-то стучал палкой по голове когда я ничего не делаю, то я бы и занялся делом.
Вообщем, хочется на саночках кататься, а саночки в гору тащить - нет. Проблема вроде как ясная, а как бороться с этим нежеланием мне лично неясно. Просто заставлять себя - не думаю что из этого выйдет что-то хорошее, а скорее наоборот, может даже отвращение к этому делу появится.
ReasonerNum2, во-первых я слышу разделение на "обучение" и "программирование". И они как-то странно противопоставлены. На самом деле у программиста это разделение скорее условное: учишься через практику, практикуя чему-то учишься. Чтение книг (теория) мало полезно без практики, которая помогает уложить знания в голове.
И вот тут у меня возникает ощущение, что теоретические знания до конца не уложились, не "обкатаны", а вы пытаетесь идти дальше, к "больше чем какие-то простые программки". В какой-то момент не хватает базы, возникает непонимание "где я и что я здесь делаю?" и обучение становится сложным. Сложность порождает дальнейшее непонимание, что приводит к закручиванию "спирали". Если это так, то это признак того что нужно вернуться на несколько шагов назад.
Вообще, программирование это про постепенность. Это про возможность делать даже большое проект небольшими шагами. Написал маленькую функцию, запустил, убедился что работает. Написал следующую функцию.
Про возможность движения маленькими шагами очень хорошо написал Кент Бек в книге "Экстремальное программирование. Разработка через .... Он пишет, что можно двигаться быстро, когда вы чувствуете уверенность, но в ситуации неуверенности (а изучение любой новой темы - это ситуация неуверенности, уверенность приходит с практикой) - лучше двигаться маленькими шагами. Движение маленькими шагами порождает меньше стресса и в конце-концов формирует ту самую уверенность.
Еще у Эндрю Ханта и Дэйва Томаса я встречал такое упражнение как "ката". По аналогии с боевыми искусствами (где "ката" - это комплекст движений, которые боец оттачивает до идеального исполнения), "ката" - это некоторая задача, которую программист решает раз за разом. Это не про решение задачи (решение уже найдено и известно), это про тренировку. Решая одну и ту же задачу раз за разом до состояния "могу написать эту программу не приходя в сознание" закрепляются навыки, формируется уверенность. Да, в какой-то мере это скучно. А иногда в процессе решения "ката" приходит неожиданная мысль - это можно сделать иначе.
Не обязательно использовать "ката". Но изученные темы надо отрабатывать, желательно самому придумать и решить какие-нибудь задания. Изучили массивы? Сделайте 3-5 программ на эту тему. Изучили наследование? Сделайте 3-5 программ про это. И тогда обучение следующим темам, приемам программирования не будет слишком сложным. А если все-таки оказалось слишком - то это признак что где-то какой-то необходимый шаг пропущен. И нужно сначала сделать его, а не пытаться "заставить себя" или "взять нахрапом".
Михаил, У меня немного по другому. Пишу на java. Делаешь простой проект и понимаешь что это просто не нужный хлам. Пытаешься прошит микроконтроллер и сделать проект на железе. Чувства будто то что ты делаешь не нужный хлам и детская безделушка. И не масштабная штука.
Nurik, а как вы определяте, по какому признаку - "хлам" или "не хлам"? Как я уже писал, возьмите небольшой проект и напишите программу, реализующую хотя бы минимальный функционал. А потом развивайте дальше.
Например: напоминалка, которая умеет работать через телеграм. Вы ей пишете когда и о чем напомнить - в заданное время (с заданной периодичностью) она вам напоминает.
Михаил, Определяю по признаку: Это уже сделали до меня 30 лет назад. Проекты как:калкулятор,todolist и так далее. Но есть идей для больших проектов но получится ли осуществить большой проект?
Nurik, а при чем тут что кто-то это уже сделал? Он сделал это иначе, чем можете сделать вы.
Беру калькулятор и начинаю делать, вот просто для примера:
1. Складывать-вычитать-умножать числа.
2. Добавляю функции (возведение в степень, извлечение корня, тригонометрия, логарифмы и т.п.)
3. Добавляю перевод в разные системы счисления
4. Добавляю построение графиков
5. Добавляю работу с большими числами (больше 1e308)
6. Добавляю работу с валютами
7. Добавляю работу с процентами (включая сложные проценты)
8. Добавляю работу с обыкновенными дробями
9. Добавляю работу с выражениями (чтобы не нажимать кнопки, а вводить прямо текстом: "5*8+24")
10... Лень думать что туда еще добавить. Может тетрис?
Аналогично. Беру любую игру, хоть тот же "Арканоид". И начинаем:
1. Отбивалка шарика
2. Новые блоки (прочные, движущиеся, взрывающиеся, падающие и т.п.)
3. Новые бонусы
4. Таймер (время на уровень)
5. Новые правила подсчета очков
6. и так далее, вплоть до сюжетных вставок
Главное - чтобы было интересно делать, потому что это ваше собственное творчество.
СОглашусь с тем что это не выгорание.
Тут или лень - разбираться в чем то сложном, или действительно просто пропажа интереса.
НО - это не развлечение, это РАБОТА!!! И Вам надо понимать, что если Вы идете по этой специальности, то никто на работе не будет Вас спрашивать - нравится Вам задача или нет, "выгораете" Вы или нет.
Есть задача - её надо сделать. И чтобы "оно работало". КАК делать - это никого не волнует. ВОт с этой позиции попробуйте посмотреть)
Значит так: сейчас напишу свое решение этой проблемы. До того, как погрузиться в эту всю сферу (конкретнее - я сейчас веб фронтенд), я долго хотел заняться программированием, это же круто! Сидишь за компом, пишешь код, не убиваешься на заводе и при этом получаешь деньги и плюс сам процесс созидания прикольный: ты поработал и увидел результат, который хотел и который тебе нравится.
Значит, занимался я этим по началу чисто для себя, причина была примерно такая: испытываю визуальный оргазм от красивых интерфейсов, сайтов итд..., поэтому хочу сам писать красивые сайты, чтоб хотя бы самому смотреть и кайфовать. Начал делать и забросил. Теперь главный вопрос-ответ в этом тексте, внимание: ПОЧЕМУ Я ЗАБРОСИЛ И ПОЧЕМУ МНОГИЕ ЛЮДИ ДЕЛАЮТ ТАК ЖЕ? ПОТОМУ ЧТО: люди не понимают, какие ИМЕННО задачи им нужно решить, используя код на любом из выбранных языков!!! Ну например, вот я хочу написать сайт, а что дальше делать? Когда я написал свой первый "заказ" (это даже толком сайтом назвать было нельзя), это была одна страничка на html/css, каким-то текстом, картинками и кнопочкой со ссылкой на телеграм. За него я тогда получил что-то около 3000руб на русские деньги (или 800грн), но сейчас не об этом. В процессе написания РЕАЛЬНОГО заказа начинаешь понимать, что и зачем тебе надо. Давай возьмем более сложный проект - сайт строительной компании. Ты берешь заказ, накидываешь дизайн, а дальше думаешь: вот, мне надо, чтобы эта кнопочка отправляла заявку, но так, чтобы страничка не перезагружалась. Ага, для этого мне надо использовать javascript с его запросами на сервак (ajax). Начинаешь искать, как такое сделать, параллельно разбираешься. Потом тебе надо сделать, чтобы, допустим, выбор какого-то чекбокса на сайте или, допустим, темы, сохранялся у пользователя после перезагрузки. Опять начинаешь думать. Выясняешь, что это можно сделать либо через сессию (краткосрочно), либо через куки (долгосрочно, пока не почистятся) и опять смотришь, как сохранять данные в куки или в сессию. И так по ходу выполнения разбираешься, что как работает, но самое главное - ПРИХОДИТ ПОНИМАНИЕ, ЗАЧЕМ ТЕБЕ ЭТО НУЖНО И КАК ТЫ МОЖЕШЬ ЭТО ИСПОЛЬЗОВАТЬ, ЧТОБЫ НАПИСАТЬ ЧТО-ТО ПОЛЕЗНОЕ И ЗАРАБОТАТЬ. Так что для начала выдели сегмент, где бы ты хотел развиваться (например пусть это будет веб) и придумай сам себе задание - написать сайт для строительной конторы. Когда есть какое-то более-менее реальное задание - сразу проще думать становится. Отбрось пока деньги, ты все равно сразу их не будешь получать, а просто пиши, чтобы даже потом можно было добавить это в портфолио и использовать решения оттуда в других проектах и экономить время. Удачи!