Как я сам научился программировать за 8 недель. Как быстро научиться программировать


Как быстро научиться программировать? | KV.by

Можно ли быстро научиться программировать? Сколько времени потребуется для освоения простейших технологий? С чего начать обучение? Своими мнениями по этим вопросам делятся пользователи сайта Quora.

 

Энтони Фам, разработчик ПО в компании Isagenix

Я могу говорить только за себя. Так вот, я начал работать программистом только 3-4 месяца назад  и мне до сих пор кажется, что я совсем ничего не знаю. Поэтому я считаю, что быстро научиться программировать почти невозможно. (Все зависит от того, какой промежуток времени вы имеете в виду под словом «быстро»).

В конце февраля этого года мне предложили место в команде, занимающейся разработкой ПО с открытым кодом. У меня было где-то 2 месяца на то, чтобы стать Java-разработчиком и разобраться с Java, Spring, JavaScript, CSS, HTML, AngularJS, а также научиться использовать XML, Babel, Nodejs, PostgreSQL и многое, многое другое. Поскольку мне удалось справиться со всем этим, меня устроили младшим full stack-разработчиком на базе .NET.

С тех пор, как меня взяли на эту должность, я, в основном, изучал, как произвести рефакторинг кода (так как за годы работы они нарастили огромный технический долг), как работать в среде гибкой методологии разработки, а также как создавать блочные тесты – лучшее из всего придуманного.

И, честно говоря, я не могу сказать, что я знаю много, хотя, несомненно, сейчас я знаю больше, чем 3-4 месяца назад. И это одна из самых пугающих вещей в программировании – осознание того, что в этой области существует бесконечный объем информации, и, наверное, это одна из причин, почему так тяжело начать свой путь, ведь крайне сложно понять, с чего начинать обучение. С самого начала этого пути вы будете постоянно изучать что-то новое, особенно если вам будут приходить в голову необычные идеи и способы их реализации.

Как я успел понять за последние несколько месяцев, способность учиться – одно из самых важных умений. Выберите язык, среду разработки, найдите подходящий проект – и начинайте писать код. Google станет вашим лучшим другом в поиске необходимой для выполнения определенных вещей информации. 

Умение правильно искать нужную информацию – это бесценный навык, который пригодится вам в любой сфере вашей жизни. Просто надо решиться и начать что-то делать. Чтобы в будущем быть способным решать возникающие перед вами проблемы (а программисты, по сути, это люди, которые решают ряд определенных задач при помощи кода), нужно пробовать и ошибаться.

Мне нравится цитата Стива Джобса: «Каждый в нашей стране должен научиться программировать, потому что это учит думать». Слова «это учит думать», на мой взгляд, как раз-таки и подразумевают умение решать проблемы.

Обучение программированию – это непрерывный и бесконечный процесс, но так или иначе понадобится некоторое время для того, чтобы обрести ряд необходимых умений.

Эдака Морторей, более 20 лет работает с самыми разными языками и компаниями

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

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

Вы должны быть в курсе, как отладить и оптимизировать код. Рефакторинг – также крайне необходимый навык. Помимо процесса создания кода, программист также должен уметь работать с системой управления исходным кодом.

Необходимо знать об инфраструктуре данных, безопасности и конфиденциальности. Я никогда не слышал, чтобы кто-то смог выучить все это «быстро».

Ульрих Роман, ученая степень по физике, разработчик ПО уже более 20 лет

Я думаю, многие совмещают здесь два разных понятия:

  1. Овладение новым навыком
  2. Изучение способов применения и дальнейшее развитие этого навыка

Я искренне верю, что каждый человек с достаточным уровнем познавательных способностей может быстро что-либо выучить. И под «быстро» я имею в виду временной промежуток, исчисляемый днями, неделями или даже несколькими месяцами, в зависимости от сложности изучаемой темы.

Теперь перейдем к программированию.

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

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

 

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

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

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

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

Гастон Фонтенла Нюнез, программист в компании Circo Studio

Я тоже достаточно долгое время задавался этим вопросом. Ответ на него я обнаружил совсем недавно.

На читаемом мною курсе «Алгоритмы и программирование» у меня были студенты, которые в жизни не видели ни одной строки кода. У некоторых из них были способности к математике, а также умение нестандартно мыслить. Другие же были самыми обычными студентами, не особо заинтересованными, скорее, просто слушали.

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

Любой может за несколько дней научиться решать простейшие задачи и даже изучить базовый синтаксис языка С (или любого другого языка):

  1. Обучение программированию – это сложный и многоступенчатый процесс. Это как изучение языка, когда для того, чтобы считать себя профессионалом, необходимо выучить как можно больше способов сказать какую-либо фразу. Все это требует времени и сил. Кроме того, есть уровни овладения. Нельзя сказать, что вы «научились программировать», если вы можете написать простейшую программку.
  2. Крайне важен изучаемый материал. Интернет предоставляет огромное количество источников; все, что вам необходимо научиться делать – это научиться различать конкретное и немногословное объяснение от просто краткого, а также отсеивать слишком завернутые, длинные и, в целом, бесполезные материалы. Кроме того, если у вас есть наставник, который может помочь вам с разъяснением, то тогда, возможно, ваше обучение будет проходить намного быстрее.

Я не считаю себя ни экспертом, ни «нубом». Я где-то посередине, при этом продолжаю учиться каждый день, уточняю непонятные мне вопросы и стараюсь помочь, если это в моих силах. Я знаю, как делать действительно крутые и сложные вещи на C++, обучение этому в рабочих условиях заняло у меня где-то 2-3 года. Если вы так же, как я, увлекаетесь тем, что делаете, то вам понадобится где-то 4-5 лет.

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

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

www.kv.by

Как научиться программировать?

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

Сложно ли научиться программировать?

В интернет-пространстве существует масса ответов на вопрос, как быстро научиться программировать, но эти ответы в образе книг о том, как за день, неделю, 20 дней освоить программирование. Согласитесь, не внушает особого доверия, потому что, чтобы что-то делать очень хорошо, а тем более в таком сложном деле, настоящие «прогеры» учатся не один год, а получив профессию, продолжают учиться всю свою жизнь.

Программирование – сложный процесс, требующий наличие определенных специфических знаний и навыков, а также терпения, усидчивости и способности на начальном этапе «видеть »желаемый результат.

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

Как научиться программировать с нуля?

В первую очередь, определитесь, для чего вам нужно программирование, то есть, что вы планируете создавать благодаря полученным знаниям. К примеру, если это веб-старницы, то начните с основ HTML, а затем уже, непосредственно к PHP. Уделите достаточно внимания изучению среды разработки и средствам отладки, это в будущем значительно сэкономит вам время.

Многие не могут определиться, на каком языке программировать, так как языков немало и можно легко растеряться при выборе первого языка для изучения.

Самые популярные базовые языки программирования Паскль, С++, Ассамблер и, конечно же, Бейсик, который изучают на уроках информатике еще в средних классах школы.

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

Советы начинающим программистам

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

  1. Приучайтесь к самостоятельности. Прежде, чем рыскать по форумам в поисках того, кто поможет найти ошибку, попробуйте разобраться сами. Так вы гораздо быстрее освоитесь и наберетесь опыта.
  2. Если разобраться, все-таки не получилось, то не стесняйтесь искать помощи у тех, кто гораздо опытнее вас. Но обратите внимание на четкое и точное описание сути проблемы. Чем четче вы сформулируете мысль, тем быстрее и точнее получите ответ.
  3. Непрестанно совершенствуйтесь и развивайтесь. В современном мире с его сверхскоростями можно легко оказаться выброшенным за борт, если не двигаться вперед. Для этого можно, к примеру, осваивать другие языки программирования, чтобы расширить в будущем спектр ваших возможностей.
  4. Старайтесь свести к минимуму использование готовых решений. Только на начальном этапе допустимо копирование и дальнейшее изменение исходника, а в дальнейшем откажитесь от таких приемов.

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

kak-bog.ru

Анекдот о программистах:    — Я номер квартиры не помню.    — 384. Запомнить просто — две планки памяти 256+128.

Человек так устроен, что хочет всего и быстро, а еще лучше: всего и сразу. Мне часто приходится  отвечать на вопрос: «Сколько нужно времени, чтобы научиться программировать?». Я сам задал похожий вопрос на курсах английского языка. Я спросил: «Сколько нужно времени, чтобы изучить английский язык?». Что мы обычно ждем в ответ на такие вопросы? Что-нибудь вроде: «один год», «два года», в крайнем случае «два года с половиной». Вы можете догадаться, я услышал, что английский нужно изучать всю жизнь и все равно быть уверенным, что ты его не знаешь …

Люди хотят знать, сколько сил и времени им нужно потратить, а не получать пространные философские рассуждения на тему развития личности.

-Сколько времени нужно, чтобы научиться программировать?-80 учебных часов

-Как быстро научиться программировать?-Выполнять больше заданий в день

Подсчитаем, сколько времени могут занять 80 часов:

  1. 80 часов = «учебный год» по два часа в неделю
  2. 80 часов = полгода по три часа в неделю
  3. 80 часов = два с половиной месяца, если заниматься по одному часу в день
  4. … продолжите сами
  5. Четыре дня непрерывной работы

Быстро или медленно — зависит только от того, с какой скоростью вы будете двигаться. Но помните, что занятия меньше, чем два часа в неделю — это бессмысленная трата времени, потому что прогресс будет идти слишком медленно, т.к. большую часть времени вы будете вспоминать то, что делали на прошлом занятии. У меня были такие ученики, которые проходили за месяц то, что я с другими делал за полтора года. Только потому, что им очень нравилось и они буквально не вылезали из-за компьютера. Но это не пример для подражания. Для обычного человека, у которого есть и другие увлечения, нормальный срок для изучения основ программирования — полгода-год спокойной работы.

Чтобы понять, насколько вам интересно программирование, я предлагаю бесплатный курс «Введение в основы программирования».

progras.ru

Как я сам научился программировать за 8 недель / Хабр

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

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

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

Получение начального понимания языка программирования Python и общих методов программирования (2 выходных дня):
  • Learn Python the Hard Way. Несмотря на название, это довольно простой способ, он делает изучение основных понятий очень легким, и большинство уроков займет менее 10 минут. Тем не менее, я обнаружил, что данный способ не работает для некоторых, более сложных тем, так что я рекомендую остановиться после урока 42 и двигаться дальше.
  • Google’s python class. Читайте заметки и / или смотрите видео и делайте все упражнения, пока вы не будете выполнять их правильно — не подсматривая в ответы. Борясь с упражнениями, которые я постоянно делал неправильно было очень полезным для меня в качестве полученного опыта, и я узнал бы гораздо меньше, если бы я просто посмотрел на ответы и пытался убедить себя, что я понял упражнение.

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

Получение начального понимания веб-фреймворка Django (1 выходной):
  • Пройдите Django учебник.
  • Удалите весь код, который вы создали в процессе выполнения шагов из учебника.
  • Пройдите учебник еще раз, заново.
В первый раз я прошел учебник от начала до конца просто следуя инструкциям, шаг за шагом, без полного понимания, что каждый шаг делает, так как все было в новинку.

Во второй раз я не был так сосредоточен на новизне концепции и смог сосредоточиться на понимании того как все части взаимосвязаны.

Получение более глубокого понимания Python / общих концепций программирования (4-8 выходных дня):

Опять же, я хотел бы рекомендовал попробовать каждый из них и посмотреть, какой вам понравится больше. Я делаю оба, но это, наверное, перебор.

Практика построения простых веб-приложений (2 выходных дня):
  • Выполняйте упражнения из Django в примерах. Эти упражнения не так строго ведут ученика, как учебник Django, но они предлагают хороший способ, чтобы начать разрабатывать свои собственные простые веб-приложения.
Создайте свой прототип (2 выходных дня):

Вот и все. 8 недель (или меньше) и вы ушли от ничего не зная о разработке программного обеспечения до рабочего прототипа. Не так уж и сложно, так ведь?

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

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

Оригинал: How I Taught Myself to Code in 8 Weeks

habr.com

Программировать с нуля. «Сейчас» — самое подходящее время, чтобы начать / Блог компании #tceh / Хабр

(Иллюстрации к статье А.П. Ершова «Программирование — вторая грамотность»)

Стив Джобс не написал ни строчки кода, Билл Гейтс — написал. Пол Грэм — первоклассный программист, Питер Тиль — юрист по образованию, сооснователь PayPal и владелец Palantir (написал ли он что-нибудь?), а Илон Маск в детстве написал свою игру и успешно её продал.

Никита truesnow из #tceh сказал мне, что на курсе «Врубаемся в Ruby» они научат программировать любого человека, даже с нуля. Я спросил его: «А с гуманитарием справитесь?» И мы задумались, были ли случаи, когда «гуманитарий» выучил язык программирования?

На ум сразу пришел бомж-программист, но после успеха с его приложением он предпочёл остаться «дзен-монахом». Есть ли еще примеры? Вдохновляющий пример, что научиться кодить может каждый — слепой программист. Когда я прочитал статью на Хабре «Смотря на код с закрытыми глазами», то понял, что нет преград, кроме собственных отмазок.

А у меня для вас есть три истории из моей жизни. Просто три истории.

История первая — ламер
Слово «ламер» я прочитал в «Компьютерре». Там давалось такое определение: «Ламер — отнюдь не безграмотный человек, не умеющий (как бы это помягче выразиться?) программировать». Окрылённый истиной я побежал и рассказал об этом друзьям-одноклассникам, но они предпочли поиграть в футбол, вместо того чтобы освоить суперспособности. Забавно, что потом все они зарабатывали программированием деньги, а я нет. Через неделю я записался в краевую станцию юных техников (КСЮТ), где был кружок по программированию. Там для новичков давали qbasic. А боги прогали на C. Так вот как-то один из «богов» подозвал меня к монитору и спросил: «Так сможешь?». И показал прогу, которая ждала, когда пользователь введёт в командной строке любой символ, а потом поворачивала его на 90 градусов. Я был ошеломлен.

Наверное, меня это так зацепило, что я решил — во что бы то не стало, выучить все что можно, и стать самым крутым программистом. Заряда хватило на годы. Этот случай я позабыл, прошло несколько лет, и, вспомнив о нем, я написал не больше десятка строк на basic`e минут за 20. Программа работала идеально.

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

История вторая — первый шифр
Идея пришла внезапно. Пришла так, что не смог заснуть и сел кодить. Из шифров тогда я знал только про пляшущих человечков из Шерлока Холмса (а это класс 8 или 9, занимался программированием полгода-год). Мне захотелось написать шифр, чтобы нельзя было так просто его вскрыть простым анализом.

Задумка была следующая: каждой букве русского алфавита мы приписываем массив из 5 символов в виде букв русского и английского языка, спецсимволы. При шифровании мы рандомно выбираем один из них. Получалась «расширенная» простая замена. Это сейчас мне понятно как его ломать, но тогда для меня была запредельная высота. Через 3-4 года я поступлю на компьютерную безопасность.

Вывод. Решать интересные задачи — это круто. Но гораздо круче придумывать и находить задачи самому.

История третья — триумф BASIC`а
Я уже 2 года «занимался» программированием. И тут в школе появилась… информатика. Меня почему-то отправили в слабую группу. Как узнал позже, моё лицо не понравилось преподавательнице и она посчитала, что я тупой. Мои друзья ворвались в кабинет к директору и сказали, что я занял призовое место на краевой олимпиаде по программированию. Начались, разборки, но мне было так пофиг, что я остался в слабой группе, где учили вводить цифры в Exсel. За первую неделю я сдал всю программу и спокойно ходил играть в Diablo 2 в компьютерный клуб.

А на олимпиаде был забавный случай. Разрешённые языки — C, Pascal, а я то был прожжённым бейсичником. Выкрутился. Задачу принимали в виде exe'шника, а я подсуетился и нашёл бейсик, который кует exe'шники. Программы проходили тесты, а сами тесты принимались на серваке. Одна задача была сугубо вычислительная. Давались координаты центров и радиусы двух окружностей. Требовалось выдать взаимное расположение окружностей в текстовом виде: пересекаются, касаются, одна в другой, совпадают, и прочие.

С формулами было возиться лень, и недавно я как раз разбирался с графикой. Задачу решил графически, рисовал окружность одним цветом, а потом «сканировал» попиксельно по второй окружности, втыкаюсь ли я в уже окрашенный пиксель. Был большой страх, что прога не сможет работать на серваке без монитора, но все обошлось — 10 тестов из 10. На разборе задач был звездный час. Полсотни человек решили задачу один в один как автор, какого же было их удивление, когда я рассказал свой способ.

Вывод. Школа — зло. Результат — круто. Нестандартное мышление — прикольно. Обходной путь есть всегда.

Зачем взрослым учиться программировать
У меня есть три ответа на этот вопрос. Они зависят от горизонта планирования:

— Цель на 1 неделю или месяц — это вызов. Это как пробежать марафон или забраться на Эльбрус, проверить не засохли ли мозги, выйти из зоны комфорта.

— Цель на год-два — это бабло. За это время можно научиться создавать ценность и работать удаленно. Или учить других. Очень многие хотят научиться программировать.

пруф

сам поискал 8 сентября:

на русском в 1000 раз меньше:

— Цель на 5-10 лет — развитие в целом. Во-первых, вы улучшите своё мышление. Во-вторых, вы сделаете неоценимый подарок детям. Они получат несколько лет форы в изучении программирования и у вас появится много чудных моментов совместного написания программ. Для полного счастья останется научиться играть в компьютерные игры, но это вы скорее всего уже умеете.
Как научиться программировать
Есть заезженная картинка на этот счёт:

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

Если готовы приступить по-взрослому, то есть множество ресурсов для самообучения. От Coursera (раз, два) до всяких %имя%academy (codeacademy, htmlacademy и пр)

Если намерения совсем серьёзные, могу посоветовать курс «Врубиться в Ruby».

Во-первых, есть живой преподаватель с хорошим бэкграундом в разработке. Виталий Куреннов, 6 лет пишет на Ruby и больше года обучает всех желающих этому навыку, работал над Ruby проектами для Nokia и Avaya.Во-вторых, есть группа единомышленников, работая бок о бок с которыми, у вас многократно повысятся шансы дойти до победного конца и освоить программирование до того уровня, когда оно начнет приносить прибыль.

— Никита, почему именно Ruby? — Все просто, мы нашли очень хорошего преподавателя.

Про Ruby Попробовать сделать первые шаги можно прямо сейчас, займет всего 5-10 минут.

Нашел шикарный ресурс с геймификацией и сразу из браузера tryruby.org За 5 минут выполняем несколько заданий, получаем ачивку и переходим на следующий уровень.

А зомбяк не хотите ли? railsforZOMBIES.org

Про Lisp

«Однако я не думаю, что смогу убедить кого-нибудь (старше 25) выучить Lisp.» Пол Грэм, «Побеждая посредственность»Начитавшись Грэма, осваиваю Lisp.;; Welcome to L(λ)THW! (let ((llthw '(learn lisp the hard way))) (format t "~{~@(~A~)~^ ~}, because ~{~A~^ ~} is easier!" llthw (cddr llthw))) ;; Common Lisp: Powerful, Expressive, Programmable, General Purpose, Multi-Paradigm.

Нашёл для себя удобную браузерную обучалку Learn Lisp The Hard Way

«За те годы, что я проработал в Viaweb, я прочитал множество объявлений о найме на работу. Примерно каждый месяц появлялся новый конкурент. Первое, что я делал после того, как проверял, доступна ли онлайновая демонстрация работы их программы, — смотрел список их вакансий. Через пару лет я научился отличать опасных конкурентов от неопасных. Чем больше отдавало IT-мэйнстримом от описания требуемых кандидатур, тем менее опасна была компания. Самыми безопасными были те, кому требовались специалисты по Oracle. О таких не стоило беспокоиться. Также мы были спокойны, если требовались разработчики на C++ или Java.

Если требовались программисты на Perl или Python, это уже было слегка пугающе — это значило, что компанией или, по крайней мере, ее технической частью заправляли настоящие хакеры. Если бы я когда-нибудь увидел объявление о найме на работу Lisp-хакеров, я бы обеспокоился не на шутку.» Пол Грэм, «Побеждая посредственность»

Ещё пара советов
  • Читайте Хабр. Например, вот это статья может очень помочь тем кто уже начал свой путь — «Почему научиться программировать так чертовски тяжело?» Или история успеха — «Как я сам научился программировать за 8 недель»
  • Читайте Пола Грэма. Он вдохновит заняться программированием кого угодно. Даже меня. Даже на Lisp.
  • Найдите единомышленников
  • Найдите вдохновляющую задачунапримерОбщие упражнения:Project Euler содержит более 500 математических задач (на теорию чисел, числовых систем и пр.), которые нужно решить, используя программирование на любом языке.Code Abbey хранит более 200 задач по программированию. За решения 125 из них выдают сертификат, чем мотивируют многих студентов.Rosalind — это ещё один сайт наподобие Project Euler, который предоставляет на выбор более 200 задач по биоинформатике.Codingbat.com дарит упражнения по Java и Python, как для новичков, так и для продвинутых программистов.codegolf.stackexchange.com – сайт, на котором публикуют и обсуждают программистские головоломки.Ruby Quiz — серия головоломок, в которых вас просят написать короткие программы различной сложности. Исходные решения описаны на Ruby, но их можно реализовать на любом языке.

    Задачи из олимпиад по программированию:UVa Online Judge — коллекция из сотен задач с олимпиад по программированию, с онлайн-системой проверки решений.TopCoder содержит сложные задачи на алгоритмы, собранные годами с разных соревнований. Также несколько раз в месяц проводит олимпиады по программированию.CodeForces похож на TopCoder, но содержит больше задач на соревнованиях и несколько особых фишек, включая «виртуальные соревнования».Timus — то же, что и UVA. Содержит задачи с последних соревнований (мирового и регионального уровня).SPOJ — похож на UVA, с огромным числом языков программирования на выбор.USACO содержит несколько задач на алгоритмы с руководством по их решению.

    Под определённые языки: Для Prolog, Lisp и подобных языков посетите P-99 и L-99, наборы из 99 задач для повышения вашей эффективности в данных языках.Python Challenge — объединяет загадки и головоломки, которые помогут вам серьёзно прокачаться в Python.4Clojure — набор упражнений по программированию, специально разработанных под Clojure, Lisp-подобный язык.

  • Соревнуйтесь
  • Играйте в Игры для программистов
  • Пишите код каждый день
  • Пишите о своих успехах и находках на Хабр

P.S. Ещё интересные статьи с Хабра на тему быть/не быть программистом и как делать шаги на пути мастерства

P.P.S. Алан Кэй делится яркой идеей об идеях. Архитектура, математика, обучение, программирование и много ещё интересного.

habr.com

Как быстро научиться программировать: 7 советов

Чтобы облегчить обучение программированию и хорошо усвоить основы, необходимо правильно выбрать темп работы и использовать некоторые способы.

1. Читайте больше кода

Новичок должен пытаться понять код. Для этого стоит изучать много примеров кода. Полезно самостоятельно разбирать примеры, прежде чем читать пояснения.

2. Набирайте и запускайте код

Недостаточно смотреть в учебник. Примеры лучше запомнятся, если набирать их своими руками, компилировать и запускать в редакторе. Это позволит пропустить код через себя и отметить важные детали. Следите, чтобы результат был правильным.

3. Меняйте работающий код

Это ещё один способ лучшего понимания материала. Экспериментируйте с чужой программой для получения различных результатов. Это позволит ускорить обучение.

4. Быстро переходите к написанию своей программы

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

5. Используйте отладчик

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

6. Ищите больше источников

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

7. Задавайте вопросы другим программистам

Не получилось понять информацию в учебнике, попросите объяснить. Не нужно бояться, что тем самым вы будете раздражать людей. Покажите, что думаете и прикладываете усилия, подробно объясните, что именно не даётся.

bunkerbook.ru

Почему научиться программировать так чертовски тяжело? / Блог компании Hexlet / Хабр

Привет, Хабр!

Взявшись за работу над образовательным проектом Хекслет, мы понимали, что на нас ложится большая ответственность. К нам приходит огромное количество новичков с вопросами и комментариями, такими как:

  • С чего начать обучение программированию?
  • У вас есть курс по Java для новичков, но я слышал, что нужно изучать Python, правда ли это?
  • На других сайтах все просто и понятно, а у вас какие-то компиляции и тесты!
  • Непонятно зачем нужен этот ваш курс по алгоритмам, в реальной жизни все алгоритмы уже реализованы в стандартных библиотеках
Но сложнее всего объяснить новичку, грубо говоря, во что он ввязывается. Благодаря очень простым, игровым образовательным проектам многие считают, что программирование это очень легко, а наши виртуальные машины, где нужно запускать тесты и компилировать код – это надуманная сложность. Давно хотелось найти такой материал, который бы подготовил новичка к длинному и сложному пути к карьере программиста. И недавно наши коллеги из Viking Code School такой материал написали! А мы его перевели для вас.

Квинси Ларсон был просто “офисным парнем в костюме”. Он решил научиться программировать. Начал спрашивать людей вокруг. Изучил немного Руби, потом быстренько посмотрел на другие языки вроде Scala, Clojure и Go. Он изучил Emacs, а потом Vim, а потом раскладку Dvorak. Он втыкал в Линукс, копался с Лиспом и кодил на Питоне, и жил при этом в командной строке больше полутора лет.

Его швыряло туда-сюда как листочек в торнадо. Каждый совет, который он слышал, тащил его то в одну, то в другую сторону, до тех пор пока он не прошел “каждый онлайн-курс по программированию во вселенной”. В конце концов, не смотря на то, что он получил работу разработчика ПО, Квинси:

… был уверен, что на первый взгляд нормальные программисты, с которыми я общался, были на самом деле социопатами, которые получили, а потом подавили в себе, травму при изучении программирования.

Ох. Звучит знакомо?

Фаза 1: Медовый месяц
Сложно винить человека, который приходит в индустрию программирования с какими-то особыми ожиданиями.

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

С другой стороны, движение «Learn to Code” проделало фантастическую работу по удалению барьеров, и показало что кодить на самом деле довольно просто. Инструменты вроде Codecademy, Treehouse и Code School так мягко и за ручку подводят тебя к коду, что можно быть уверенным – я не просто смогу научиться программировать, я смогу стать полноценным разработчиком!

Внезапно, проблема не в страхе, а в избыточных надеждах и высоких ожиданиях.

В большинстве случаев эти инструменты на самом деле здорово справляются со своей задачей. Они проводят тебя как ребенка по дороге, полной страшных переменных и условий, ранних фаз синтаксиса. После каждого упражнения в игровом формате вы чувствуете себя все более и более уверенным в своих способностях. Я на самом деле могу это делать! Я практически уже разработчик!

Проблема в том, что вы находитесь в фазе “медового месяца”. Может казаться, что конец близок, но в реальности вы прошли лишь крохотный отрезок пути. Это только начало…

Рисуем маршрут
Перед тем как перейти к Фазе 2, давайте взглянем взглянем на весь путь.

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

Дорогу к рабочей позиции разработчика можно определить в виде отношения вашей веры в себя к изменениям ваших навыков:

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

Мы рассмотрим уникальные испытания, которые ждут нас в следующих трех фазах, но для начала вкратце рассмотрим каждую фазу:

1. Медовый месяц это очень приятное, очень комфортное путешествие через огромное количество отполированных до блеска обучающих ресурсов, которые показывают, что на первый взгляд сложные штуки на самом деле совершенно понятны, особенно с такой интенсивной поддержкой. Вы грубо говоря изучаете базовый синтаксис, но ощущаете себя героем.

2. Скала смятения это болезненное осознание реальной сложности после того, как помощник отпускает вашу руку. Оказывается, вы ничего не можете сделать сами. Главными испытаниями становится постоянная отладка кода. Непонятно какие вопросы задавать чтобы хотя бы начать двигаться в правильном направлении.

3. Пустыня отчаяния это долгий и одинокий путь через бездорожье, где каждое новое направление кажется верным, но часто вы просто ходите кругами и голодаете по ресурсам, которые могли бы помочь. Остерегайтесь “миражей мании” как сирен пустыни! Они уведут вас в никуда.

4. Подъем благоговения это та часть, где вы наконец находите путь через пустыню и начинаете понимать как создавать приложения. Ваш код все еще дырявый и хрупкий как карточный домик. Вера в себя растет потому что ваши сайты вроде как работают, вы изучили несколько важных паттернов, ваши друзья считают ваши интерфейсы крутыми, но вам страшно заглянуть под капот, и вы не знаете как делать production-ready код. Как отсюда построить мост к состоянию “готов к реальной работе”?

Я брал интервью у сотен разработчиков в течение последних нескольких лет и слышал отголоски всё одной и той же истории снова и снова. Цель этого поста — научить вас двигаться по пути обучения с широкого раскрытыми глазами и с таким компасом в руках, с которым вы ловко обойдёте все ямы, в которые попали те, кто шли до вас.

Давайте вернемся к фазе 2…

Фаза 2: Скала смятения
Итак, вы находитесь в фазе 1 – „Медовый месяц“. Вы заполняете пробелы и завершаете задачи, связанные с кодом в то время как ваша уверенность и возможности растут. Это не так уж плохо… К чему суета? Вы поднялись на «Гору иррационального изобилия»…

Будьте осторожны! Вы собираетесь переступить пропасть, которая ломает многих сильных учеников, вытесняя их в лагерь под названием „кодинг — это слишком тяжело“. Точный момент этого скачка происходит тогда, когда вы садитесь за клавиатуру, открываете свой текстовый редактор и пытаетесь в первый раз создать проект с нуля без каких-либо встроенных в браузер редакторов, костылей кода или полезных советов.

Блин…

Вы можете немного оттянуть этот момент, продолжая следовать учебникам, но никто ещё не достиг неба, не оторвавшись от земли, и настанет момент, когда вы будете творить волшебство в пустом текстовом файле. Вы только что вошли во вторую фазу обучения, где уверенность падает вниз на землю. Добро пожаловать на «Скалу смятения»:

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

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

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

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

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

Два ключевых фактора
Так в чем же на самом деле разница между первой и второй фазой? Почему фаза 2 («Скала смятения») так ужасна по сравнению с фазой 1 («Медовый месяц»)? Понимание этого поможет вам понять, что вашей вины абсолютно нет в том что, ваше путешествие выглядит так, как мы только что описали.

Есть два основных момента во время прохождения каждой фазы: плотность ресурсов и объем знаний. Давайте посмотрим, что это такое, прежде чем изучать, как они выведут вас к фазе 3.

Фактор 1: плотность ресурсов
Как я уже сказал выше, когда вы только начинаете, то кажется будто, миллион сторонних ресурсов пытаются схватить вас за руку и затянуть в программирование. Это потому, что их много!

Введите в поисковике «Уроки программирования», и на вас обрушится стена из нужных и полезных инструментов, таких как статьи, видеоролики и учебники. И, честно говоря, это здорово! Никогда раньше не было так много способов, чтобы начать учиться программированию.

К сожалению, на более поздних этапах плотность ресурсов быстро падает. Любой, кто прошёл от стадии новичка до среднего уровня, может подтвердить, что существует БОЛЬШАЯ разница между количеством имеющихся ресурсов в самом начале и тогда, когда вы впервые ищете помощь самостоятельно, без посторонней поддержки.

Эта проблема усугубляется при переходе к третьей фазе, когда количество знаний быстро возрастает, и есть одна причина, по которой мы называем эту фазу „Пустыней отчаяния“. Как только вы пройдете её и начнете точно чувствовать, что именно вам нужно искать, то ресурсы вернутся, и вы сможете использовать в работе большее количество технических средств, таких как блоги и видеоролики. Отчасти это просто умение задать правильные вопросы.

Вот как выглядит плотность ресурсов в каждой фазе (большая концентрация линий указывает на большую плотность ресурсов):

Фактор 2: объем знаний
Теперь давайте поговорим о втором вопросе, об объеме знаний. Он представляет собой общую широту новых тем, которые вы осваиваете в каждой фазе. Вот как это выглядит:

Когда вы только начали обучение, набор вещей, которые вам нужно понимать, ещё достаточно узкий. Каждому человеку, независимо от целей обучение, языка и предпосылок, необходимо изучить, что такое цикл «for», как построить логику условного оператора и познакомиться с основными структурами синтаксиса программирования. А зачастую даже и не приходится сталкиваться с некоторым из вышеприведенных базовых понятий, поэтому объем знаний на этом этапе является очень узким.

Как только вы отходите от основ, вы замечаете быстрое расширение базы знаний, так как начинаете сталкиваться с более сложными вопросами, такими как понимание разновидностей ошибок, или, когда именно использовать код, который вы знаете и как вообще его использовать. А это две разные вещи, потому что нет „правильного“ ответа на точный вопрос… Пока всё очень размыто.

По мере продвижения к третьему этапу объем знаний станет расти. Теперь вы должны понимать, какие инструменты использовать, какие языки изучать, как писать модулярный код, знать основы CS и объектно-ориентированного программирования, обладать грамотным стилем кода и уметь искать ответы на вопросы (хотя бы в нескольких источниках). Каждый заход в Google или на сайт Hacker News погружает вас в огромное множество кроличьих нор и ошеломляет вас такими вещами, которых вы не знаете, но чувствуете, что должны их знать.

Вы не знаете, чего именно вы не знаете.

Только тогда, когда вы, наконец, сделали рывок и покинули пустыню, объем знаний снова начинает сужаться. К этому моменту, вы уже определили свою выбранную технологию и её место в общей системе. Вы, наконец, знаете (и довольно неплохо), чего именно вы не знаете и можете проложить путь через эти ямы. Вы будете продолжать расширять кругозор по мере продвижения вперед, к началу своей карьеры.

Фаза 3: Пустыня отчаяния
С пониманием ключевых факторов, можно увидеть, что «Скала смятения» является критической точкой. Мучения, вызванные совокупностью быстро растущего объема знаний и упадка плотности ресурсов привели к фазе, которую я называю „Пустыня отчаяния“.

В сущности, это пустыня, где вы знаете, что где-то есть конец, но не знаете, как до него добраться:

Пустыня длинна и кишит опасностями. Вы поймаете себя на том, что по пути рисуете «Миражи мании», которые представляют из себя десятки заманчивых ресурсов, содержащих искомые решения, но они опять бросают вас там, где есть только вы и песок, простирающийся во все стороны до горизонта.

Возможно, вы зарегистрируетесь на нескольких массовых открытых онлайн-курсах, таких как от Coursera, Udacity или EDX, или найдете учебник, который пообещает сопровождать вас всю дорогу. Вы думали, что извлекли урок из фазы медового месяца, что не существует простых ответов, но соблазн искать спасение слишком велик, и вы вновь верите обещанию, что именно на этот раз вас доставят к финишу, до которого не дошли другие.

Вы не можете выучить этот материал ни за неделю, ни за месяц, и на за один курс обучения, чтобы там не говорили, поэтому хватит попадаться в эту ловушку!

Существует НАМНОГО больше вещей, которые предстоит узнать, чем вы, возможно, ожидали. Даже если вы в состоянии заставить работать некоторые приложения, то очень трудно не чувствовать себя слабым звеном в огромной цепочке становления настоящим профессионалом. Трудно измерить ваш прогресс. Как вы узнаете, что вам изучать, если изучаете только необходимые вещи?

Даже если вы двигаетесь в правильном направлении, трудно определить ваш прогресс. Вы будете чувствовать себя совершенно потерянным до того самого момента, когда вы, наконец, сможете создать что-то, что выглядит и действует так, как вы ожидали. Но, вооружившись упорством и хорошим компасом, вы в конечном итоге получите ваши первые несколько „реальных“ запущенных приложений и поймете, что, наконец, начинаете получать опыт.

Безусловно, до этого момента было трудно, но, возможно, вся эта история с веб-программированием и не такая сложная, в конце концов… Everything's coming up Milhouse!

Фаза 4: Подъем благоговения
Вы прошли через пустыню и ваша уверенность растет. Вы мастерски владеете искусством гугл-фу и, наконец, понимаете о чем пишут в блогах и говорят в видеороликах. Возможно, вы уже углубились в конкретный язык или фреймворк и вы уверены, что вы можете скомпилировать и запустить работающее приложение.

Это и есть «Подъем благоговения»:

Снаружи всё может выглядеть хорошо, но в глубине души вы знаете, что вы ещё не достигли цели.

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

Это фаза состоит из двух полюсов: вы чувствуете, что одна ваша половина — это пуленепробиваемый разработчик, а вторая — тонкая фанера с дикими глазами новичка, который утонул в своём пути. Чем дальше вы продвигаетесь, тем больше растет терзающее чувство неопределенности, как будто кто-то собирается «разоблачить» вас, как обманщика.

Вы чувствуете, что уже должны стать разработчиком, но дистанция между кодом, который вы пишете и «профессиональной» рабочей средой не сокращается…

В конце концов, однако, это произойдёт. Столько сил не могут быть потрачены даром! «Пустыня отчаяния» позади, а «Скала смятения» превратилась в далекое воспоминание. Вы, наконец, по-настоящему, на подъеме. Вы обучаетесь быстрей и разумней, чем когда-либо прежде, вы получили достаточное количество нужной практики, и ваши обрывочные знания превращаются в набор навыков профессионального уровня.

«Подъем благоговения» всегда занимает больше времени, чем вы ожидаете, и кажется бесконечным, потому что вы так близко… Но вы всё же достигнете его. Если вы настойчиво идёте в правильном направлении (тема следующего поста), то сможете убедить кого-то платить вам и спокойно продолжать учиться дальше. Работа ваша.

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

Одно дело — знать путь, а другое дело — идти по нему. Давайте поможем вам начать.

Как дойти до конца живым
Путешествие кажется тяжёлым и это, честно говоря, не редкость. Важно понимать куда вы идёте, особенно если идёте в одиночку. Но вы не должны сдаваться. Есть способы, которые помогут быстро обойти большинство встречающихся проблем. Изучение кода редко даётся настолько просто, насколько некоторые делают вид, но это не так сложно, как кажется вам в периоды глубокого отчаяния.

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

I: Как Выжить в «Медовом месяце»
Разнообразие доступных ресурсов в «Медовом месяце» доставляет много веселья. Они делают большую работу, чтобы сформировать вам нужный тип логического мышления, который вы должны будете развивать в течение последующих фаз. Это прекрасное время, чтобы начать учиться коду. Итак, пробуйте, наслаждайтесь, но не забывайте держать в голове эти два совета:
  1. Начните пробовать разные ресурсы, чтобы найти те, которые лучше вам помогают в обучении, ищите наиболее интересные для вас проекты. Это могут быть быстрые решения от KhanAcademy, упражнения в браузере от Codecademy, книга Learn to Program Криса Пайна или школа кода Try Ruby. В начале будьте открытыми для всего и игнорируйте наставления в стиле «вы должны учить только это». На данном этапе весь код одинаковый.
  2. Далее выберите один подходящий для вас ресурс и старайтесь придерживаться только его. Пройдите курс от начала до конца, чтобы получить все основные знания, которые вам помогут написать базовые скрипты и приложения. А в дальнейшем приготовьтесь начать создавать свои собственные проекты.
II: Выживание на «Скале смятения»
Почти каждый из вас пройдёт через «Скалу смятения», поскольку единственный способ стать разработчиком — это разрабатывать. Вы можете претендовать на эту профессию, подписавшись на статьи (или на туториалы, которые выдают за «полные» курсы), но этим вы будете только откладывать неизбежное. Учебники — это хороший способ решить начальные задачи, но в некоторой момент вы должны будете отучить себя от соски и столкнуться с реальным миром.

Вот три совета, которые помогут самостоятельно перейти к компилированию:

  1. Работайте с кем-то в паре, даже если он такой же новичок как и вы. Вы будете удивлены, насколько легче отладить кажущуюся неисправимой ошибку, если подключить ещё две пары глаз.
  2. Читайте больше чужого кода, чтобы познакомиться с хорошими паттернами. Постарайтесь понять, почему автор сделал именно так, а не иначе. Вы ведь не сможете стать писателем, не читая чужих книг, не правда ли? Мы подробно рассмотрим это в следующем посте, а сейчас, заострите своё внимание на мелких проектах и задачах, для которых другие люди уже написали решения.
  3. Начните с малого и программируйте постоянно. Вы должны думать о будущих крупных и интересных проектах, но для этого ваша отладка должна стать гладкой, а поиск ресурсов не должен составлять труда. Опыт вы ничем не замените.
III: Выживание в «Пустыне отчаяния»
После того, как вы начали справляться с отладкой, самой большой проблемой становится отсутствие необходимых знаний и полная неизвестность, где их взять… Пустыня отчаяния. Всё что вам действительно нужно на этом этапе — это мощное движение вперед. Миражи мании открывают всё более интересные, но уводящие в сторону пути и кроличьи норы, как и схемы быстрого обучения, которые в конечном итоге только отнимают у вас время.

Итак, вот ключи к выходу из «Пустыни отчаяния»:

  1. Поставьте перед собой определенную цель, которую вы хотите достичь, потому что в противном случае вы закончите тем, что устанете гоняться за своим хвостом, изучая различные виды интересных, но по большому счёту ненужных вещей. Но если у вас есть свободное время, то можете опустить этот совет…
  2. Найдите верный путь, который ведет прямо к поставленной цели и убедитесь, что он действительно направляет вас к ней. Вам нужно копать глубже и не искать ответ среди рекламных лозунгов, суперобложек и улыбающиеся лиц на веб-сайтах различных курсов на вопрос „поможет ли мне это достичь поставленной цели или нет?“
  3. Сконцентрируйте всё своё внимание и не отвлекайтесь, потому что, если вы относитесь к тем людям, которым интересно изучать код, вы также заинтересуетесь изучением других интересных вещей. В те моменты, когда программирование даётся тяжело, вы должны особенно сильно продвигаться вперед, а не браться осваивать другие модные занятия.

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

IV: Выживание на «Высоком подъеме»
Подъем благоговения является одним из самых сложных переходов. Вы умеете разрабатывать приложения, но хотите стать настоящим веб-разработчиком. Подходя к этой фазе и к работе, вы должны делать три вещи:
  1. Найдите лучшую практику по программированию и следуйте её рекомендациям. Вы должны видеть разницу между решением и лучшим решением. Лучшие практики покажут большое различие между вашим вымученным кодом и профессиональным кодом высокого качества, написанным на рабочем месте.
  2. Сдерживайте свои амбиции. Наверняка, у вас есть такие пробелы в знаниях, о которых вы даже не подозреваете. Вы должны найти и восполнить их.
  3. Не пренебрегайте рутинной работой, она редко кому-то нравится, но она очень важна для перехода к профессиональному уровню. В неё входят такие вещи, как тестирование, модели данных, архитектура и деплой. Всё это очень легко забывается, но имеет основополагающее значение для правильного развития.

Ключ к решению вышеперечисленных проблем и к восхождению на «подъем благоговения» — это обратная связь. Студенты, которые полностью обучились самостоятельно могут быть работоспособными, но они редко обладают разборчивым, модульным, и гибким кодом, который характеризует их востребованность в профессиональной сфере. Вы должны работать с другими людьми, которые будут оспаривать ваши предположения, задавать каверзные вопросы и заставлять вас устранять утечки в ведре ваших знаний.

Итак… Возможно ли это вообще?
Это все может звучать ошеломляюще, но я уверяю вас, что многие другие упорно шли к своей цели и выжили на этом пути.

Понимая что вас ждёт, вы уже находитесь в выгодном положении, осталось только составить четкий план и обеспечить доступ к подходящему виду поддержки.

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

Удачи!

habr.com