Как гуманитарий старше 35, начавший плотно изучать программирование с начала этого года, увидел много знакомого. Советов давать не буду, для этого тут достаточно более подготовленных людей, но могу поделиться опытом. Получится длинно, но вдруг кому-то поможет. ИМХО, мне не дают перегореть и помогают преодолевать сложности две вещи – завышенная самооценка и внезапно обнаруженное маниакальное пристрастие к написанию кода. Я реально получаю от этого удовольствие, как от какого-то наркотика. То есть, «уехать за границу» в свете некоторых известных реалий тоже было бы неплохо, но я бы не смог заниматься программированием что называется «не по любви». Мне для этого хватает нынешней профессии. Ну, и плюс у меня есть конкретные цели, проекты, которые я в будущем хочу реализовать с помощью новых знаний.
Завышенная самооценка работает примерно так. Таинственный голос в голове тебе шепчет: «Какой-то шведский инфантил Маркус Перссон написал Minecraft, а финский студент создал ядро Linux. И вообще, ты видел вчера этих смешных подростков у полки IT в книжном магазине, листавших литературу по C# и обсуждавших, как подготовиться к собеседованию? Нет, ты их видел? Неужели такой великий гений, как ты, не сможет разобраться хотя бы в основных алгоритмах сортировки и не поймет, как работает паттерн Декоратор? Соберись, тряпка! Нам с тобой еще захватывать мир, и нужно уже с чего-то начать». Ну, и действительно берешь и в конце концов разбираешься. Не сразу, конечно, но прогресс идет.
Собственно, все, что вы описываете, я плюс-минус тоже проходил. Когда начинаешь изучать что-то конкретное и выясняешь, что тебе нужно предварительно изучить пять других фишек, технологий и т.п, а потом берешь ту из них, что кажется самой легкой, и обнаруживаешь, что тебе опять ничего не понятно, потому что нужно сперва изучить то-то и то-то, и руки совсем опускаются. Хорошая новость в том, что по этому дереву, как я выяснил, вполне реально добраться до корня. В каждом конкретном случае он будет свой. И это вовсе не какой-нибудь ассемблер или что-нибудь столь же фундаментальное, а курсы, книги, сайты с заданиями, проекты, подходящие для вашего нынешнего уровня понимания. То есть, в моем случае пришлось дойти до «углубленных» учебников по информатике за 10-11 класс Полякова и геймдева на Scratch’е. После них все встало на свои места, так как я сумел в общих чертах увидеть картину целиком.
Ну, и в частных случаях примерно шел по тому же пути. Например, захотел разобраться в алгоритмах. Решил, что читать Кнута пока рано, и Кормена, наверное, тоже, поэтому взял Скиену, так как показалось, что он будет проще. Завис на второй главе. Потом через пару месяцев купил «Грокаем алгоритмы» какого-то индуса, где основы объяснялись на пальцах и на смешных картинках, очень образно и доступно. Да, еще немного комбинаторики было в этом промежутке: курсы по ней прошел на курсере и первые две главы задачника Виленкина прорешал. Теперь Скиена идет намного легче. Примерно то же с матаном. Учебник МГУ я не осилил, но после комиксов Гоника уже показалось, что зверь не так страшен.
Ну, или, скажем, впервые взять IT нахрапом я попытался несколько лет назад, начав сходу с изучения Yii по какому-то англоязычному пособию. Тогда я хотел сделать сайт под один свой проект. В итоге потерпел крах. Но все время с тех пор я со своим мелким занимался Скретчем, чисто ради фана, ну, и еще сочинением всяких приблуд для Майнкрафта с помощью Питона, по книге с подробными инструкциями. Когда-то в детстве я делал игрушки на спектрумовском бейсике, поэтому с понимание n = n + 1 проблем, конечно, не было, что такое переменные, циклы и функции, я тоже имел базовое понятие, но о существовании, скажем, рекурсии узнал только в этом году, так что в целом Скретч – это как раз то, что мне нужно было, чтобы поверить в свои силы. Это был мой уровень на тот момент. В итоге от простых проектов мы перешли ко всяким игрушкам типа симулятора сельского хозяйства, стрелялке, гоночкам в стиле ZX Spectrum и т.п., в общем в какой-то момент Скретч я перерос. И тогда такой: «Ну, блин, раз я могу сделать простую игру на Скретче, попроще, но по сути не намного хуже того, что в моем Андроиде, то что мешает просто выучить другой синтаксис и повторить то же самое?» Месяцев 9 назад записался на курсы по Питону для начинающих на Курсере от ВШЭ. Вот, с этого все закрутилось. Не могу сказать, что все шло гладко. Первые недели все было слишком легко, а последние – слишком сложно. Курс показался не до конца сбалансированным, так скачок от простого к сложному слишком резкий. Но в целом возникло подозрение, что Питон я в итоге осилю.
Дальше повторялось много раз то, что я уже описал. Например, брал книгу Лутца о Питоне, доходил до чего-то, чего не мог понять, скажем, до регулярных выражений, зависал, а потом после школьного учебника, где тема разбиралась на пальцах, преодолевал это препятствие. То есть, как мне кажется, все сложности преодолимы. Главное, что нужно прокачать – это мотивацию, веру в себя. Ну, и дальше идешь к тому узлу древа познаний, где все еще более-менее понятно, но уже есть то, что еще неизвестно.
Очень сильно помогают всякие полуигровые ресурсы в интернете. В моем случае это codewars. Пишешь много кода, применяешь те же алгоритмы на практике. За 9 месяцев я получил там 3 кю. Для выпускника какого-нибудь факультета прикладной информатики это так себе успех, а я там многому научился. В начале года иногда зависал на задачах 6-7 кю, сейчас делаю зачади 3-4 кю.
Ну, и, конечно, реальные проекты, но доступного уровня. Скажем, сейчас мы с мелким делаем текстовую РПГ на питоне, тренирую скилл по ООП, а для одной подруги понемногу пилю сайт на Django. Второе продвигается медленнее, чем хотелось бы, но и мотивирует неплохо. Вот, как-то так. Мотивация + алгоритм «от сложного к простому». Ну, и вера в себя. И да поможет нам компьютерный бог!
Завышенная самооценка работает примерно так. Таинственный голос в голове тебе шепчет: «Какой-то шведский инфантил Маркус Перссон написал Minecraft, а финский студент создал ядро Linux. И вообще, ты видел вчера этих смешных подростков у полки IT в книжном магазине, листавших литературу по C# и обсуждавших, как подготовиться к собеседованию? Нет, ты их видел? Неужели такой великий гений, как ты, не сможет разобраться хотя бы в основных алгоритмах сортировки и не поймет, как работает паттерн Декоратор? Соберись, тряпка! Нам с тобой еще захватывать мир, и нужно уже с чего-то начать». Ну, и действительно берешь и в конце концов разбираешься. Не сразу, конечно, но прогресс идет.
Собственно, все, что вы описываете, я плюс-минус тоже проходил. Когда начинаешь изучать что-то конкретное и выясняешь, что тебе нужно предварительно изучить пять других фишек, технологий и т.п, а потом берешь ту из них, что кажется самой легкой, и обнаруживаешь, что тебе опять ничего не понятно, потому что нужно сперва изучить то-то и то-то, и руки совсем опускаются. Хорошая новость в том, что по этому дереву, как я выяснил, вполне реально добраться до корня. В каждом конкретном случае он будет свой. И это вовсе не какой-нибудь ассемблер или что-нибудь столь же фундаментальное, а курсы, книги, сайты с заданиями, проекты, подходящие для вашего нынешнего уровня понимания. То есть, в моем случае пришлось дойти до «углубленных» учебников по информатике за 10-11 класс Полякова и геймдева на Scratch’е. После них все встало на свои места, так как я сумел в общих чертах увидеть картину целиком.
Ну, и в частных случаях примерно шел по тому же пути. Например, захотел разобраться в алгоритмах. Решил, что читать Кнута пока рано, и Кормена, наверное, тоже, поэтому взял Скиену, так как показалось, что он будет проще. Завис на второй главе. Потом через пару месяцев купил «Грокаем алгоритмы» какого-то индуса, где основы объяснялись на пальцах и на смешных картинках, очень образно и доступно. Да, еще немного комбинаторики было в этом промежутке: курсы по ней прошел на курсере и первые две главы задачника Виленкина прорешал. Теперь Скиена идет намного легче. Примерно то же с матаном. Учебник МГУ я не осилил, но после комиксов Гоника уже показалось, что зверь не так страшен.
Ну, или, скажем, впервые взять IT нахрапом я попытался несколько лет назад, начав сходу с изучения Yii по какому-то англоязычному пособию. Тогда я хотел сделать сайт под один свой проект. В итоге потерпел крах. Но все время с тех пор я со своим мелким занимался Скретчем, чисто ради фана, ну, и еще сочинением всяких приблуд для Майнкрафта с помощью Питона, по книге с подробными инструкциями. Когда-то в детстве я делал игрушки на спектрумовском бейсике, поэтому с понимание n = n + 1 проблем, конечно, не было, что такое переменные, циклы и функции, я тоже имел базовое понятие, но о существовании, скажем, рекурсии узнал только в этом году, так что в целом Скретч – это как раз то, что мне нужно было, чтобы поверить в свои силы. Это был мой уровень на тот момент. В итоге от простых проектов мы перешли ко всяким игрушкам типа симулятора сельского хозяйства, стрелялке, гоночкам в стиле ZX Spectrum и т.п., в общем в какой-то момент Скретч я перерос. И тогда такой: «Ну, блин, раз я могу сделать простую игру на Скретче, попроще, но по сути не намного хуже того, что в моем Андроиде, то что мешает просто выучить другой синтаксис и повторить то же самое?» Месяцев 9 назад записался на курсы по Питону для начинающих на Курсере от ВШЭ. Вот, с этого все закрутилось. Не могу сказать, что все шло гладко. Первые недели все было слишком легко, а последние – слишком сложно. Курс показался не до конца сбалансированным, так скачок от простого к сложному слишком резкий. Но в целом возникло подозрение, что Питон я в итоге осилю.
Дальше повторялось много раз то, что я уже описал. Например, брал книгу Лутца о Питоне, доходил до чего-то, чего не мог понять, скажем, до регулярных выражений, зависал, а потом после школьного учебника, где тема разбиралась на пальцах, преодолевал это препятствие. То есть, как мне кажется, все сложности преодолимы. Главное, что нужно прокачать – это мотивацию, веру в себя. Ну, и дальше идешь к тому узлу древа познаний, где все еще более-менее понятно, но уже есть то, что еще неизвестно.
Очень сильно помогают всякие полуигровые ресурсы в интернете. В моем случае это codewars. Пишешь много кода, применяешь те же алгоритмы на практике. За 9 месяцев я получил там 3 кю. Для выпускника какого-нибудь факультета прикладной информатики это так себе успех, а я там многому научился. В начале года иногда зависал на задачах 6-7 кю, сейчас делаю зачади 3-4 кю.
Ну, и, конечно, реальные проекты, но доступного уровня. Скажем, сейчас мы с мелким делаем текстовую РПГ на питоне, тренирую скилл по ООП, а для одной подруги понемногу пилю сайт на Django. Второе продвигается медленнее, чем хотелось бы, но и мотивирует неплохо. Вот, как-то так. Мотивация + алгоритм «от сложного к простому». Ну, и вера в себя. И да поможет нам компьютерный бог!