1 июн. 2009 г.

Как напутствие начинающему программисту

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

Если вы переживаете насчет того, сумеете ли вы научиться программировать, – не стоит волноваться. Воспользуйтесь 10 советами из этой статьи: я надеюсь, они вам помогут и послужат дополнительным мотиватором!
1. Ставьте перед собой конкретную цель
Люди, желающие научиться программировать, очень часто спрашивают меня, какой язык им выбрать для изучения. Это можно понять, но, тем не менее, это совершенно неправильный вопрос в начале пути.
Первое, что нужно выяснить, это какова ваша конечная цель. Для чего вы хотите научиться программировать?
Это как поездка в отпуск. Никто не едет в отпуск, не определившись сперва, куда хочет приехать. И никто не учится программировать ради самой учебы. Всегда есть какая-то причина.
Вы хотите научиться писать код, чтобы что?
Уделите немного времени этому вопросу и подумайте над своей конечной целью. Когда у вас будет цель, вы сможете понять, что вам нужно для ее достижения!
По-прежнему не уверены, что может быть целью? Вот распространенные варианты:
Я хочу устроиться на работу в какой-нибудь компании в своем городе, чтобы получать стабильный доход. Я хочу открыть собственное дело: делать сайты для мелкого бизнеса. Я хочу зарабатывать деньги на создании мобильных приложений. Я хочу работать в тех-стартапе. Если вы не хотите потерять даром время и просто бесцельно слоняться, вам обязательно нужно определить, какова ваша цель №1.
2. Составьте план и придерживайтесь его
В современном самостоятельном обучении программированию прекрасно то, что руководств и статей, по которым можно учиться, невероятно много. Поискав статьи и видео по нужной теме, можно обучиться чему угодно.
Однако, у этого есть и обратная сторона. Поскольку доступно очень много ресурсов, трудно найти лучшие из них. А охватить все нереально.
Мой совет? Не пытайтесь найти самое лучшее руководство по изучению X, Y или Z.
Просто выберите какое-нибудь одно.
Даже если оно не будет самым лучшим в мире, все равно скорее всего будет достаточно хорошим. Самое главное в этом деле не выбрать лучшее руководство, а пройти его полностью.
И давайте будем откровенны: проводить время, скупая онлайн-курсы и перепрыгивая с одного пособия на другое, это лишь слегка завуалированная прокрастинация и недостаток концентрации.
Просто остановите свой выбор на чем-то одном и изучите это до конца (случаи, когда пособие оказалось откровенно ужасным, – исключение). Если в итоге руководство вам все же не понравится, всегда можно воспользоваться другим.
3. Это марафон, а не спринт
Есть много постов в блогах и видеороликов, где вам обещают, что вы научитесь программировать и найдете работу за 3-6 месяцев. Ну, это возможно, но есть множество «если».
Если у вас в настоящее время нет работы на полную ставку, если у вас есть деньги (курсы, например, могут стоить до 10 тыс. долларов) и если вы сможете выдерживать нужный темп, тогда да, вероятно, вы сможете найти работу веб-разработчика.
Проблема в том, что продвижение подобных идей рисует перед людьми чрезмерно оптимистичную картину того, как легко стать программистом. А когда они понимают, насколько это на самом деле сложно, наступает жестокое разочарование.
У меня есть друзья, которые закончили курсы и нашли работу в течение нескольких месяцев. Но я также знаю людей (и слышал о таких людях), которые учились самостоятельно и это потребовало куда большего количества времени, порядка 1-2 лет.
Если хотите услышать реальную историю такого самоучки, почитайте мое интервью с Оуеном . У него была работа на полную ставку, плюс маленький ребенок, но он сумел самостоятельно научиться программировать. Для этого ему пришлось ежедневно вставать до рассвета и грызть гранит науки в течение двух лет.
Недавно он получил полноценное место веб-разработчика, но это потребовало много времени и очень, очень тяжелого труда.
Я совершенно не намерен вас обескураживать. Просто хочу дать вам более реалистичную картину того, на что похоже обучение программированию. Это определенно возможно! Но настраивайтесь на то, что на достижение цели потребуется год или даже больше, а вовсе не пара месяцев.
4. Побеждают медленные и настойчивые
Теперь вы знаете, что изучение программирования это сложный процесс. Старайтесь в этом процессе избегать также выгорания.
Некоторые люди хотят изучить как можно больше и как можно скорее. Для этого начинают заниматься по 5 часов в день после работы.
Опять же, несмотря на то что для кого-то возможно выдерживать такой темп, для других это может быть уже слишком. Есть реальная опасность выдохнуться и сдаться. А вот сдаваться как раз не надо!
Итак, что же делать, чтобы и не выгореть, и не сдаться?
Нацеливайтесь на разумный прогресс. Начинайте с малого, с 30 минут или часа в день. Или 1-2 часов несколько раз в неделю.
Конечно, чем больше времени вы будете уделять учебе, тем значительнее будет прогресс. Но начиная с малого, вы сможете постепенно увеличивать количество времени, которое тратите на программирование.
А когда учеба войдет в привычку, вам будет легче выдерживать заданный темп.
5. Не сравнивайте свой прогресс с прогрессом других людей
Этому совету тяжело следовать, но в процессе достижения своей цели старайтесь не сравнивать себя с другими.
С одной стороны, может быть полезно видеть, что по сравнению с другими ваши достижения находятся на должном уровне. Но с другой стороны, в эпоху социальных сетей подобные сравнения чаще могут привести к разочарованию.
Ключ к успеху в том, чтобы учиться, не поднимая головы и не заботясь о том, как там дела у других людей. Переживайте только о собственном прогрессе.
Другие люди могут учиться быстрее или медленнее вас, и это прекрасно. У всех разные жизненные ситуации и свои темпы продвижения.
Чем меньше вы будете думать о сравнении себя с окружающими, тем больше сможете сосредоточиться на собственном пути.
……но старайтесь подружиться с «коллегами»! Хотя сравнивать себя с другими людьми не стоит, я все же не советую целиком отрезать себя от внешнего мира.
На самом деле, если вы учитесь самостоятельно, онлайн, вы быстро можете почувствовать себя одиноким.
Если вы найдете других людей, которые тоже учатся программировать, и подружитесь с ними, это может стать для вас мощным источником мотивации.
Почему?
Ну, для начала, знание того, что есть и другие люди, сталкивающиеся с такими же проблемами, какие возникают у вас, поможет вам воспрять духом.
К тому же, друзья могут помогать друг другу с возникающими проблемами. Когда у вас больше одной точки зрения, вы можете прийти к лучшему решению, чем когда рассчитываете только на себя.
Если вы учитесь программированию в учебном заведении, старайтесь заниматься совместно с другими студентами. Если вы учитесь онлайн, попытайтесь найти сообщества программистов, например, тематические группы в социальных сетях.
Построение дружеских отношений и связей поможет вам сохранять мотивацию на пути к вашей цели. Вы, в свою очередь, тоже будете мотивировать других людей.
6. Сделайте программирование своей привычкой и найдите для него время в расписании
Найти время на программирование может быть действительно сложной задачей. Ведь у всех нас очень занятая жизнь, верно?
Но если вы найдете возможность выделять время на программирование ежедневно или хотя бы несколько раз в неделю, это будет правильным подходом.
Выработка привычек (хороших или плохих) похожа на протаптывание тропинок. Когда идете в первый раз, идти трудно, потому что понятного пути как такового еще нет. Но чем чаще будете ходить по этой дорожке, тем ровнее и чище она будет. И тем легче будет ходить.
С выработкой привычек то же самое. Первые несколько раз, вероятно, будет сложно усадить себя за программирование. Но постепенно ваш мозг привыкнет. К тому же, мозг любит всякую рутину, так что со временем станет легче обзаводиться привычками.
Есть несколько способов, с помощью которых можно приучить себя к чему-либо. Главный из них – установить «триггер»: нечто, происходящее прямо перед вашей новой привычкой. Например, вы можете попытаться вписать программирование в свои утренние ритуалы, садясь за рабочий стол сразу после своей первой чашки кофе или чая.
Или вы можете приступать к программированию вечером, сразу как уберете со стола после ужина.
В любом случае, ключевой момент при выработке привычек это постоянное повторение действий.
7. Учитесь искать нужную информацию и решать проблемы
Умение самостоятельно решать проблемы является одним из самых важных (если не самым важным) навыком веб-разработчика.
Возможно, вы думаете, что опытные разработчики уже имеют готовые ответы на все случаи жизни. Это и близко не соответствует истине!
Конечно, знают они гораздо больше, но все равно много вещей ищут в Google (или DuckDuckGo). Я так и делаю, несмотря на то что работаю в этой сфере уже семь лет.
И теперь, когда вы знаете этот страшный секрет, давайте поговорим о том, как же вам приобрести столь ценный навык решения проблем.
Только путем практики!
Когда зависнете на какой-то проблеме, не бегите сразу за помощью. Проведите какое-то время в поисках решения в интернете. Например, поищите по тексту сообщения об ошибке, которое получаете.
Я часто ищу что-то вроде «Х не работает», потому что в выдаче будет Stack Overflow и размещенные там посты людей, столкнувшихся с такой же проблемой.
Также можно почитать документацию инструмента или любого ПО, которое используете и с которым возникли сложности.
Когда, наконец, найдете решение своей проблемы, потратьте еще немного времени на дополнительное изучение этой темы в более широком контексте. Благодаря этому любое исправление бага превратится в шанс для улучшения ваших навыков.
Думайте об этом в следующем ключе. Когда вы впервые ищете решение какой-то проблемы, у вас может уйти на это три часа. Если вы запомните, как нашли подходящее решение, в следующий раз поиски займут гораздо меньше времени.
Научившись справляться с самыми распространенными случаями, на которых случается застрять, вы начнете работать быстрее и станете более эффективным разработчиком.
8. Не просто смотрите видео – создавайте что-нибудь!
Люди, изучающие программирование, часто попадают в одну ловушку. Они читают множество руководств и смотрят кучу видео, но совершенно не отрабатывают приобретенные знания на практике.
Вот если кто-то скажет вам, что учится бегать, но на поверку окажется, что он никогда собственно не бегает, вы же сочтете его болтуном, верно? Конечно, стоит потратить какое-то время на изучение подходов и выбор кроссовок. Но рано или поздно наступает пора заняться делом.
То же касается и веб-разработки. Да, очень важно изучить какие-то основы и, может, даже обзавестись нужными программами, которые облегчат вам работу. Но если вы будете только пассивно поглощать руководства, вы так ничему и не научитесь.
Я учился веб-разработке на работе. У меня, собственно, даже не было возможности бродить по YouTube в поисках классных видео. Просто времени не было! Маячили дедлайны и нужно было до их наступления успеть понять, как заставить свою веб-страницу работать.
Это была «разведка боем» и, конечно, это был большой стресс. Но, оглядываясь назад, могу сказать, что это был лучший способ обучения. Проработав пару лет веб-разработчиком, я приобрел множество полезных навыков. И все они накапливались по мере практической работы!
В общем, мой совет таков:
Руководства и книги это прекрасные вещи. Но, выучив одну главу, нажимайте на паузу. Открывайте свой редактор и прорабатывайте то, что только что изучили. Попробуйте воспроизвести примеры, которые были в учебном материале.
Это будет тяжелее, чем просто читать или слушать, но подобная практика поможет вам закрепить материал.
9. Будьте готовы к поражениям
Все мы хотим хорошо справляться и не допускать ошибок.
Но попытки избегать поражений и ошибок это ужасный способ продвижения вперед. Потому что только пройдя через всю неразбериху можно понять, как делать что-то правильно.
Когда я был начинающим веб-разработчиком, я очень боялся что-то напутать. Я терпеть не мог обращаться за помощью к начальству, поскольку это означало, что сам я не справился.
А уж если я допускал ошибку, которая, к тому же, влияла на весь работающий сайт, это был вообще конец света.
В подобных ситуациях первое, чего мне хотелось, это чтоб никто не узнал о моем провале. Но я знал, что самый быстрый (и самый честный) способ решить возникшую проблему – прямо сказать о ней боссу и попросить о помощи.
Конечно, ситуации бывают разные. Что касается меня, у меня никогда не было неприятностей по работе, когда я совершал ошибки или признавал, что чего-то не знаю.
Боязнь провала может привести к тому, что вы будете пытаться оставаться в «безопасности» и избегать ситуаций, в которых потенциально можете совершить ошибку. Но при таком раскладе у вас не будет такого прогресса, какой мог бы быть.
Несмотря на все сложности, продолжайте двигаться вперед и испытывать новое. Если вы при этом допускаете ошибки, это нормально! Когда речь идет о программировании, ситуаций на грани жизни и смерти практически не бывает. Самое плохое, что может с вами произойти, это вы почувствуете себя идиотом или подвергнетесь критике.
И об эго. Засуньте его подальше и примите как данность, что в жизни бывают провалы. Этому совету я сам стараюсь следовать, но это нелегко. Тем не менее, если мы будем открыты для неудач и совершения ошибок, в долгосрочной перспективе мы станем куда лучшими специалистами!
10. Постоянно учитесь
Никогда не прекращайте учиться.
Когда вы только начинаете свою карьеру, мир веб-разработки кажется пугающе огромным: есть сотни навыков, которые нужно приобрести.
По мере учебы и практики вы начинаете чувствовать себя комфортнее. И хотя это хорошо (потому что означает, что вы наработали много навыков и приобрели уверенность в себе), не останавливайтесь на достигнутом!
Наша индустрия постоянно меняется. И если вы в течение долгого времени не будете меняться вместе с ней, ваши навыки устареют.
Возьмем пример. Я научился довольно хорошо работать со свойством float в CSS. Я слыхал о flexbox, да и коллеги говорили, что это классная штука. Но я сомневался, стоит ли тратить время на изучение этой новой технологии. Честно говоря, сомневался я лишь потому, что мне было лень учить что-то новое без абсолютной необходимости.
В конечном итоге я все же изучил flexbox. Это не заняло много времени и, когда я разобрался в этой технологии, я начал пинать себя за то, что не сделал этого раньше.
Я понял важность обновления своих знаний. Промедление в изучении flexbox не повредило моей карьере. Но если бы я не изучил эту технологию вовсе, в какой-то момент я стал бы неконкурентоспособен как веб-разработчик.
Опять же. Это не означает, что нужно изучать все языки и инструменты, существующие в мире (по желанию – пожалуйста). Но вы можете стараться изучать новые инструменты, которые начинают широко применяться в вашей сфере деятельности.
Например, React.js и Node.js вышли несколько лет назад, а теперь доминируют в индустрии. Если вы еще с ними не знакомы, изучить эти инструменты будет полезно.
Как отслеживать тренды и определять, что становится популярным?
Я пользуюсь следующими источниками:
Syntax.fm это подкаст Веса Боса и Скотта Толински. Фантастическая вещь. Они говорят о том, что нового в веб-разработке, а также затрагивают другие темы из этой сферы.
CSS Tricks содержит тысячи статей и обучающих материалов по использованию CSS. Его создатель, Крис Койер, также помогал создавать Codepen.io. Stack Overflow каждый год выпускает аналитику по результатам опроса на тему веб-разработки. На основе этих данных хорошо видно, какие технологии популярны, а какие устаревают.
Smashing Magazine затрагивает различные темы из сферы веб-разработки, UX/UI и веб-дизайна. ППросто сделайте это!
Я надеюсь, что после прочтения этих советов изучение веб-разработки будет для вас более увлекательным и менее тревожным занятием.
Последний совет: просто занимайтесь разработкой. Даже если вы не знаете точно, что делаете, не позволяйте этому останавливать вас. Начните с чего-нибудь, а по ходу дела разберетесь.
Источник: https://vk.com/@programmistov-10-sovetov-tem-kto-uchitsya-programmirovat