Не получается программировать что делать
Я застрял! — 5 советов как выйти из ступора и начать программировать
Авторизуйтесь
Я застрял! — 5 советов как выйти из ступора и начать программировать
Начать программировать может быть сложно, потому что мозгу нужно перестроиться от объектов реального мира к абстракциям. Рассказываем, как организовать обучение программированию так, чтобы минимизировать отвлекающие факторы и не застрять на полпути.
Подготовка
Чтобы вас ничего не отвлекало освободите стол и оставьте открытыми только те программы, которые вам нужны. Для того чтобы сконцентрироваться на задаче вы можете использовать технику помидора или обычный таймер, чтобы определённое время заниматься только задачей.
Картинка с сайта https://skillbox.ru/media/management/pomodoro/
Начало работы
Любая программа это набор инструкций, как и любая задача это набор маленьких шагов. Прежде чем начать программировать например форму для регистрации пользователей вы можете поставить более мелкие задачи:
Так стоит поступать с любой, сколь угодно сложной задачей. В результате у вас всегда будет подробный план действий, каждый шаг которого можно легко выполнить.
Главное правило при встрече с багом — не паникуйте. Просто попробуйте сделать следующее:
Понимание
Большая часть работы программиста происходит в голове. Потому всегда пишите код руками и анализируйте каждую строчку до того момента, пока полностью не поймёте её. Код из интернета может решить вашу проблему, но ведь ваша задача начать программировать, а не гуглить. Не бойтесь гуглить синтаксис, но перед его использованием убедитесь, что понимаете, как он работает.
Применяйте знания на практике
Для того чтобы научиться программировать, нужно программировать. Поэтому, помимо поглощения информации и тестовых заданий, вам нужно написать пет проект. Во первых вы примените полученные знания на практике и лучше будете понимать весь цикл разработки, во вторых столкнетесь с множеством реальных проблем, которые возникают при разработке. Вы можете воспользоваться подборкой идей для программирования. И не забывайте выкладывать ваши проекты на GitHub, это будет большим плюсом при поиске работы.
Как учиться программировать: 6 вещей, которые я понял, учась на Хекслете
Когда я только начинал изучать программирование, у меня голова была забита кучей неверных представлений о профессии программиста и о том, как и что нужно учить. Со временем я понял несколько важных вещей, которые, если б я узнал это раньше, очень сильно упростили и ускорили бы мое обучение.
Большинство этих вещей до меня дошли именно в процессе обучения и общения с ребятами-программистами на Хекслете. Для кого-то это явно будут откровения Капитана Очевидность, но, возможно, кому-то оно и принесет пользу.
Какой язык программирования изучать первым? Неважно!
Не нужно тратить сильно много времени на выбор и мучаться этим. Берите Ruby, Python, JavaScript, PHP, Java, Lisp, да хоть паскаль — не ошибетесь. Для начала вам все равно нужно будет освоить базовые вещи, такие как циклы, условия, переменные, функции, объекты, рекурсию и т.п. Я когда-то в школе немного программировал на всяких бейсиках и C++, но к тому времени, как решил стать программистом, все это успешно забыл.
Начал изучение с Java, и не жалею, после этого было легче изучать менее строгие языки, вроде JS и PHP. Минус Java в том, что, если вы живете не в милионнике, вам будет весьма сложно найти на нем работу джуниора и получается, что обучение какое-то бесцельное, ради обучения, что сильно снижает мотивацию. В то время, как изучая PHP, например, уже очень быстро можно брать какие-то первые заказы на фрилансе, устроиться на первую работу в веб-студию и т.п., т.е. начать на своем хобби зарабатывать первые деньги, что очень сильно поднимает мотивацию.
Новички так серьезно подходят к вопросу «Какой же язык программирования выбрать», будто им предстоит подписать договор с дьяволом, и всю жизнь писать только на этом единожды выбранном языке. Лично для меня просветлением стало, когда я увидел профили высокооплачиваемых программистов на бирже Upwork, почему-то очень во многих из них было написано примерно следующее — могу Django, могу Rails, а еще Meteor и Angular, да и Spring тоже. И Joomla само собой.
Потом я спрашивал некоторых знакомых (и малознакомых) программистов об их карьере, и увидел некий паттерн, которого раньше не понимал. Человек может, например, год работать с PHP, потом уйти на Java, потом плюнуть и выучить руби, стать RoR разработчиком, и в итоге заняться Node.js или Clojure. Любой нормальный программист знает несколько языков хорошо и десяток поверхностно. Поэтому не ломайте голову, не пытайтесь выбрать Самый Лучший Язык и строчить для этого тысяча первый вопрос на тостере. Просто берите любой язык и прочитайте по нему хотя бы одну книгу/пройдите курс. Попытки выбрать Самый Лучший Фреймворк из той же серии.
Про первую работу
Очень многие программисты начинают свою работу с весьма непрестижных компаний и крошечных зарплат. И это нормально. Но это сложно принять, особенно тем, кто решает «войти в айти» уже не в юном возрасте, имея семью и детей. Мифам об огромных зарплатах программистов зачастую способствуют школы программирования, которым нужно продавать свои курсы и в итоге на своих лендингах они крупным шрифтом пишут какие-то заоблачные цифры, вроде «средняя зарплата JavaScript программиста 150 000 рублей», при этом часто забывают сказать, что такую зарплату получают люди с опытом в несколько лет (или даже десяток лет), которые могут решать реальные сложные задачи, а вам после их курсов на старте светит тысяч 30 на испытательный срок, и это в Москве. А то и вообще попросят бесплатно поработать. За опыт и еду. Не нужно бояться идти на непрестижную и малооплачиваемую работу, потому что как только вы официально начнете работать программистом, даже за 20 тысяч в месяц, ваша привлекательность в глазах других работодателей и HRов сильно вырастет. На старте работу никто не мешает менять хоть каждые 3-6 месяцев, каждый раз уходя на бОльшую зарплату и более интересные задачи.
Но я, конечно же, не говорю, что нужно идти работать за еду, может конкретно вы найдете первую работу и за 100 000 в месяц. Просто нужно понять, что карьера тоже требует немалых усилий, и необходимо активно изучать рынок труда, время от времени общаться с рекрутерами и ходить на собеседования, чтобы адекватно себя оценивать в каждый момент времени. А первая работа — это не навсегда.
Учиться программировать сложно
В процессе учебы должны быть моменты, когда мозг напрягается, и вам кажется, что вы ничего не понимаете. Если все получается легко и без напряга, значит вы учитесь не программировать, а повторять за диктором. Если привести грубую аналогию, вас учат не плавать, а шевелить ногами, лежа на песочке. Конечно, возможно, что вы гений и вам просто все легко дается. Чтобы реально оценить свои способности, сходите на пару-тройку собеседований по изучаемому языку программирования и попытайтесь выполнить тестовые задания, которые вам дадут.
Лично я долго (слишком долго) учился на всяких курсах из серии «посмотри на меня, делай как я». Когда начал учиться на Хекслете, у меня от некоторых заданий просто мозг кипел, да и сейчас кипит. Одно задание я пытался сделать 3 дня. Но в итоге я прокачался, и теперь могу решать более сложные задания, чем раньше. Мне кажется, именно в этом должна быть цель хороших курсов программирования. Не в том, чтобы натренировать вашу память на запоминание 1000 функций из какой-то библиотеки. А в том, чтобы заставить мозг напрягаться и с каждым днем решать все более сложные задачи.
Про code kata
На определенном этапе (почти сразу после изучения основного синтаксиса одного из языков программирования), нужно набить руку в решении простых (хотя бы простых, для начала), алгоритмических задачек. Есть десятки разных сервисов, где это можно делать — codewars.com, exercism.io, hackerrank.com и т.п. Проскочить этот этап не получится. Если вы зашли на codewars и просто не понимаете, что от вас хотят, и как решать даже самые простые задачи первых уровней, срочно вливайтесь в какое-то сообщество, где есть программисты и единомышленники, изучающие программирование, и где можно будет задавать вопросы и получать помощь. Одно из таких мест — слак чат Хекслета. Если вы не научитесь решать эти простые задания, вероятность резиста того, что вы сможете решать какие-то реальные рабочие задачи, крайне мала.
Не нужно зубрить названия функций
Смысл вообще не в этом. Это дошло до меня как-то внезапно и совсем недавно. Вообще не надо пытаться насильно их запомнить. Я пытаюсь понять смысл, построить какую-то абстракцию, грубо говоря, сформулировать для себя общую концепцию того, что изучил.
Кстати, это очень полезная штука и для изучения иностранных языков, я лично просто ненавижу делать какие-то списки, карточки и зубрить слова. Особенно у меня вызывают желание ругаться матом наборы слов, вырванные из контекста, типа «100 прилагательных на тему Погода». Это просто нереально запомнить, а даже если и зазубрил сегодня, через месяц 80 процентов забудешь. Гораздо эффективнее просто читать/смотреть интересный тебе контент на языке и искать незнакомые слова в словаре каждый раз, таким образом через какое-то время самые употребительные слова запоминаются естественным образом.
В общем, при изучении очередной фишки языка программирования достаточно понять в целом, что оно делает, и знать, как это загуглить.
Начните изучать разработку с бесплатного курса «Основы современной вёрстки». Вы научитесь создавать статические веб-страницы, стилизовать элементы, использовать редакторы кода с полезными расширениями. В конце курса вы опубликуете свой первый сайт на GitHub Pages.
Тупить — это нормально. (с) Елена Малышева
То есть люди, которые занимались программированием много лет, иногда тоже не могут самостоятельно разобраться в какой-то новой фиче, и совершенно не стесняются просить совета и помощи. Однако, с вероятностью 99% предварительно они пытались сами решить эту проблему, обратились к Google и Stackoverflow, но безуспешно.
Поэтому если вы пытаетесь стать программистом с нуля, вообще не парьтесь о том, что что-то непонятно и не ставьте на себе крест, вам должно быть очень многое непонятно! Не стесняйтесь задавать много вопросов, ну и гугл ваш лучший друг. Сперва всегда пытайтесь решить свои вопросы самостоятельно, а потом просите помощи, при этом желательно расписать, что вы уже пробовали для решения проблемы.
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях
Как программировать если совсем не хочется? План спасения на случай перегорания или дедлайна
Никакой воды в этой статье, только описание конкретного плана действий в случае если вы перегорели, у вас дедлайн, прокрастинация, депрессия, а также методики и советы, помогающие привести этот план в действие.
План написан под программиста (меня), да и вообще, в исходном виде подойдет не всем. Советую модифицировать этот план под себя.
Некоторые советы могут показаться банальщиной, но все равно проще им следовать, когда они собраны в одном месте.
Предисловие
Мне этот план помог превратиться из перегоревшего грустного бездельника, который несколько месяцев не мог заставить себя программировать, в более-менее продуктивного человека. Сейчас совмещаю 2 проекта и чувствую себя прекрасно. Не густо, но лучше чем ничего.
План действий
В очередной раз чувствуя себя разочарованным, от того что весь день не мог заставить себя работать, я понял что что-то делаю не так. Моя жизнь ухудшилась, я просто не мог работать и нужен был способ это все исправить. Нужен был план.
Не то что я раньше не пробовал строить планы. Как и многие, я пытался строить план на день, выписывать основные цели и задачи. Так вот, когда ты и так не можешь заставить себя работать, написать такой план — это верный путь к депрессии. Ты просто из раза в раз будешь проваливать его и от этого твое настроение будет только ухудшаться, каждая новая попытка будет даваться все тяжелее.
До меня дошло, что если и создавать план спасения, то он должен быть максимально гибким, чтоб можно было проваливать задачу за задачей, но не испытывать чувство вины. И еще он должен быть подробным, чтоб можно было всегда понять, что нужно делать, если не получается.
В итоге я написал стандартный список вещей, над которыми обычно работает программист, и рассортировал их по приоритетности. Смысл в том, чтоб всегда стараться выполнять то что вверху, использовать самую приоритетную стратегию, но если не получается — спускаться ниже и выбрать менее сложную, но и менее продуктивную стратегию. Таким образом, как бы сложно и плохо тебе ни было — ты всегда знаешь что делать, всегда есть план и ты не сидишь без дела. Уже только это сильно помогает бороться с апатией и прокрастинацией.
Важно, почти у каждого сценария должно быть максимальное время на выполнение, после чего следует перейти к другому сценарию, даже менее приоритетному. Серьезно, это очень важно, иначе вы весь день будете настраиваться работать, так что обращайте внимание на указанное максимальное время. Еще в плане должны быть учтены не только задачи программиста, но и чисто человеческие потребности и занятия.
Привожу сам план действий.
#1 Работать над самим проектом
Самое важное, в чем в идеале заключается рабочий процесс — работать над бизнес-проблемой, пытаться реализовать требуемый функционал. Это то, к чему мы стремимся.
#2 Подумай как сконцентрироваться
Макс. время: 1 час.
Не получается работать? Загляни в раздел советов внизу статьи и подумай, что можно сделать чтоб помочь себе сконцентрироваться на приоритетном сценарии.
Может помочь: еда, кофеин, прогулка, медитация, тренировка, дела по дому, реорганизация труда и целей, музыка, душ, дневник.
Может быть дело в: отравлении, недосыпе, никотине, чувстве вины, недостатке общения, недостатке витаминов.
#3 Незаконченные дела
Подумай, возможно есть какие-то дела по дому или социальные обязанности. Может это уборка дома, оплата коммуналки. Это все может отвлекать тебя от работы, потому стоит решить такие дела как можно скорее или реорганизовать их.
#4 Необязательные дела по дому
Макс. время: 2 часа.
Это такие дела, как готовка, уборка, поход в магазин. Они так высоко в списке приоритетов, потому что могут повысить концентрацию (выкинув их из головы, когда ты их уже сделал).
#5 Общение
Макс. время: 1 час.
Как и предыдущий пункт, должно быть обязательно ограничено по времени. Однако, можно пообщаться с девушкой, друзьями, родителями, конфой программистов немного отдохнув и набравшись мотивации. Еще можно поиграть с кошкой.
#6 Медитация или тренировка
Макс. время: 1 час.
Если сонный — лучше сделать короткую тренировку. Если бодрый, но встревоженный — медитация. Можно заменить прогулкой на свежем воздухе.
Теперь переходим к самому интересному, то, что касается рабочего процесса.
#7 Рефакторинг
Макс. время: 3 часа.
Снова возвращаемся к работе, если сценарии выше не помогли заняться решением бизнес-проблемы, то стоит облегчить задачу. Займись рефакторингом имеющегося кода, но не переусердствуй. Стоит исправлять только откровенные ошибки, а не «делать код лучше».
#8 Упрощение тестирования и отладки
Макс. время: 3 часа.
Подумай над тем, как упростить разработку приложения. Возможно, стоит обновить средства разработки, покрыть приложение тестами, изучить подробней средства разработки, посмотреть, какие есть расширения и встроенные функции IDE, упрощающие работу. Детальней углубиться в процесс сборки и тестирования, постараться это автоматизировать.
#9 Работа над сторонним функционалом проекта
Макс. время: 2 часа.
Можно заняться реализацией каких-то неважных, но интересных функций. Подключить аналитику, подправить интерфейс, добавить логгирование.
#10 Ревью кода проекта и документация
Макс. время: 1 час.
Если не получается заняться работой — просто посиди, почитай код проекта. Даже если его писал ты вчера. Это может помочь настроиться или найти ошибки. Просто открой и смотри.
Можно написать документацию к самым сложным участкам кода или вообще каждый метод покрыть документацией, если тебе так проще.
#11 Поработать над своей библиотекой
Макс. время: 2 часа.
Тут тоже главное не уйти в это с головой. Можно на время переключиться и поработать над своей библиотекой, которую затем можно использовать в основном проекте.
#12 Кодинг как хобби
Макс. время: 2 часа.
Аналогично предыдущему, но попроще. Делать какой-то простой, но бесполезный проект для души.
#13 Чтение для мотивации
Макс. время: 1 час.
Можно попробовать почитать мотивирующую книгу или статью на хабре и потом приступить к работе. Если не удалось приступить — нет смысла продолжать читать для мотивации дольше часа.
#14 Чтение для образования
Макс. время: 2 часа.
Если не получается мотивировать себя работать — нужно хотя бы читать, получая новые знания. В первую очередь читай про свой фреймворк, читай про средства разработки, про свой язык программирования.
Книги читай, только если сможешь ограничить себя во времени, но вообще лучше всего — справочники. В моем случае, по unity, android, xamarin, asp.net, webpack.
В крайнем случае, читай статьи, только следи, чтобы они были не развлекательными, а доносили новую информацию.
#15 Просто поразмышляй как программист
Макс. время: 1 час.
Просто лежи и думай о проекте, как ты сделал бы ту или иную фичу. Если не получается об этом проекте — думай о том что ты вообще хотел бы написать.
#16 Отдых
Увы, но не всегда выходит следовать даже самым простым сценариям. Если это так — пора отдохнуть. Но к отдыху тоже есть свои заметки:
Дополнительные методики и советы
Привычка очень важна
Самая убийственная вещь против прокрастинации — привычка. Нужно привыкнуть работать, следовать режиму, и тогда будет проще. Для этого нужно работать каждый день (не считая выходных), независимо от обстоятельств. Не важно — сонный ты, занимался делами весь день или у тебя какие-то планы на вечер.
Работать по таймеру
Беспрекословно следовать Pomadoro не стоит, но вот работа по таймеру в целом выходит продуктивней. Например, обязательно 2 часа на сценарий #1, потом час на сценарий #7.
Организуй буткемп
Если работать с еще одним человеком — будет проще заставлять себя работать. Главное не терять концентрацию.
Вещества (легальные)
Если не получается сконцентрироваться над задачей — возможно, помогут вещества.
Самое банальное — кофеин. Вот только, если я его пил уже на протяжении недели или больше — он бесполезен, лучше уже перетерпеть и работать без него, спускаясь ниже по таблице сценариев. Еще есть кофеин в таблетках, он может быть менее вреден, чем кофе, но легко злоупотребить.
Витамины — могут помочь чувствовать себя лучше, но не стоит превышать их дозировку и пить долго, вредно для почек.
Седативные антидепрессанты, успокоительные — полезно, когда есть время отдохнуть, но под ними вряд ли получится что-то делать. Нет смысла пить в разгар работы.
Энергетики — очень редко можно использовать, если идеальное пищеварение и нет кофеиновых отходняков.
Никотин убивает мотивацию. Бросать во время дедлайна — не имеет смысла. Курить желательно только с момента, когда уже что-то сделал за сегодня.
Режим питания
Стараться не есть вредную пищу, вообще. Однако, для рывка иногда можно съесть что-то вкусное, при идеальном пищеварении.
Если работаешь ночью или уставшим — плотно есть не стоит, уснешь.
Чай или кофе?
Можно выпить кружку кофе, если не кофеиновый отходняк, и при сильной необходимости сделать рывок. В остальных случаях лучше наварить себе литр чая и намешать туда полезной фигни: лимон, мед, разные виды чая.
Вода
Выпей побольше воды, поможет взбодриться. Несовместимо с тренировками. Стакан воды с утра, сразу, как проснулся, может помочь.
Режим сна
Он почти всегда имеет главный приоритет. Единственное исключение — дедлайн проекта.
Ложись до 12, даже если ничего не успел сделать. Используй будильник с формулами, чтоб точно проснуться вовремя.
Не стоит пытаться восстановить режим сна, не имея в запасе неделю свободного времени.
Когда встаешь пораньше — ставь будильник без возможности отложить его. С утра сразу умойся, чисти зубы, не стоит лежать в кровати. Вечером, если не можешь заснуть — переделай все рутинные дела чтоб с утра они не отвлекали (мытье посуды, готовка и т.д.).
Если режим сбит окончательно и одинаково неприятно просыпаться в любое время, всегда сонный, то имеет смысл просыпаться в 5 утра. Потом можно доспать, но не раньше часов 11 утра. Это поможет быстро восстановить режим и даже даст запас времени на его сдвиг, но первую неделю надо именно что в 5 просыпаться.
Музыка
Некоторые жанры не дают сконцентрироваться вначале, потому лучше включать только в процессе активной работы.
Лучше включать осты из игр, я например слушаю Silent hill, Transistor, Hades, Pyre, Assasins Creed, Witcher, Detroit.
Если много энергии — Minecraft, Firewatch, LOU, Thief.
Чувство вины бесполезно
Если накатывает чувство вины за то, что ничего не делаешь — просто спускайся ниже по списку приоритетов, пока не сможешь выполнять сценарий.
Душ
Иногда душ может помочь почувствовать себя получше. Именно душ, ванна — слишком долго и потянет в сон.
Мини-тренировка
Тренировка может помочь зарядиться энергией, но только короткая получасовая тренировка, потом накатит усталость. Можно сделать упражнения на растяжку и одно силовое или попрыгать на носках, это будет на выносливость.
Медитация
Медитировать стоит только, если ты выспался, и не больше часа, иначе будет сонливость. Всегда старайся концентрироваться на дыхании и делать это без музыки. Отличный вариант — выпить кофе залпом и медитировать полчаса, как раз при выходе из медитации будет куча энергии и мотивации.
Сон-перезагрузка
Можно уснуть не более чем на полчаса или просто полежать это время. Перед этим можно залпом выпить кофе.
Метод не эффективен при сильном недосыпе и усталости.
Дневник
Ведение дневника может помочь избавиться от стресса и разложить все по полочкам. Но делать слишком длинные записи чаще, чем 2 раза в неделю, тоже нет смысла.
Постоянное повышение продуктивности ведет к выгоранию
Если на протяжении многих дней ты все время повышал продуктивность — неизбежно наступит момент, когда еще повысить ее уже невозможно (очень сложно). Это может расстраивать, в такой момент лучше устроить 1-2 выходных, чтоб обнулить результат и любой следующий день казался продуктивней.
Примеры применения плана
Исходя из этого плана и того времени, которое вы успели выделить на работу, привожу примеры рабочих дней в начале выхода из состояния апатии. Потом вы сможете просто работать целый день)
6 часов
Сценарий | Время |
---|---|
Медитация/тренировка | 0:30 |
Чтение | 0:30 |
Ревью кода проекта | 0:20 |
Работа/рефакторинг | 1:00 |
Перерыв | 0:15 |
Работа/рефакторинг | 1:25 |
Перерыв | 0:20 |
Работа/рефакторинг | 1:40 |
4 часа
Сценарий | Время |
---|---|
Медитация/тренировка | 0:15 |
Чтение | 0:20 |
Ревью кода проекта | 0:20 |
Работа/рефакторинг | 1:00 |
Перерыв | 0:15 |
Работа/рефакторинг | 1:50 |
2 часа
Сценарий | Время |
---|---|
Чтение | 0:15 |
Ревью кода проекта | 0:20 |
Работа/рефакторинг | 1:25 |
Заключение
Естественно, в этом плане в этом плане куча недочетов, и он субъективен, используйте его как шаблон для написания своего личного плана действий.
Буду очень рад почитать ваши методики борьбы с прокрастинацией в комментариях.