Исходное сообщение: https://letslearnabout.net/blog/5-things-i-wish-i-knew-when-i-started-programming/

Если бы вы могли вернуться в то время, когда вы начали программировать, какие советы вы бы дали себе?

1. Программирование — это мышление

Когда мы тратим время на создание нового приложения, мы тратим много времени на размышления. Какой тип базы данных я должен использовать: NoSQL или SQL? Какие методы я должен добавить в свои классы? Как структурировать веб-приложение?

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

И вы должны тратить меньше времени на изучение языков и больше времени на реальное мышление.

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

Я знаю, звучит впечатляюще, когда говоришь, что ты выучил 5 языков всего за один год. Но вы действительно выучили 5 языков? Или вы просто изучаете основы 5 языков, никогда не углубляясь в написание базовых циклов for и создание базовых классов?

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

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

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

Можно ли сказать, что вы знаете, как говорить на 4 языках?

Может быть, вы умеете считать, как сказать «Привет, меня зовут Х» и т. д., но можете ли вы говорить с носителем языка или читать книгу на этом языке?

Тогда почему вы делаете то же самое с языками программирования?

Я знаю, потому что раньше так думал.

Я делал урок за уроком, видео за видео, пост за постом в блоге, думая, что знаю Python, Django, Flask, Laravel или Node.js только потому, что я провожу несколько недель за просмотром видео во второй половине дня.

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

Но я читал все эти посты, смотрел все эти видео (за несколько недель), верно? Я должен знать, как создать проект!

Нет. Я не должен. Точно так же я не мог говорить по-французски после 3 месяцев занятий и не мог прочитать ни одной книги по-французски.

Что же делать?

Часть того, что я сказал ранее, связано с тем, что я присоединился к челленджу #100DaysOfCode.

Вместо изучения базовых основ языка или фреймворка, а затем перехода к другому, думая, что я его уже изучил, я бы изучил основы, ТОГДА я начинаю проект на этом языке или фреймворке.

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

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

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

2.- Придерживайтесь одного языка

Теперь, когда вы прочитали первый пункт, это должно прийти вам в голову как следующий логический шаг, верно?

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

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

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

Я не говорю, что учебники плохие. На самом деле они дают прочную основу того, как устроен проект, как решать основные проблемы, но в какой-то момент вы должны держаться за руки. Учитесь по учебникам, но не зацикливайтесь на Tutorial Purgatory, хорошо?

Пример из жизни: Я

Я использовал много языков программирования: Javascript, Java, C++, C#, PHP, Python. Но я могу кодировать только на нескольких языках (Python, Javascript и, возможно, PHP и Java). Как видите, изучение большого количества языков за небольшой промежуток времени не окупается.

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

Я перешел от цикла for в 4 строки к одному с пониманием списка, тому, как использовать лямбда-выражения и т. д. Но больше я узнаю, создавая реальные проекты (например, этот проект с открытым исходным кодом для создания Python Chat) или прочитав книгу Трюки с Python Дэна Бадера.

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

Конечно, есть люди с моим (или меньшим) опытом, которые выучили больше языков, чем я. Но знают ли они какой-либо язык на том уровне, на котором я знаю Python? Я сомневаюсь.

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

Еще один пример из жизни

Очень глубокое изучение одного языка (и ограничение возможностей трудоустройства, потому что вы знаете только 1 или 2 языка) по сравнению с изучением множества языков (и ограничение себя, потому что вы не можете делать больше, чем базовые вещи) — это давняя дискуссия.

Но позвольте спросить вас: если бы вам пришлось делать операцию на жизнь или смерть, вы бы предпочли хирурга с 5-летним опытом или врача, который балуется хирургией, стоматологией и прошел курс окулиста в течение 3 месяцев?

Тогда вы уже ответили на предыдущий вопрос.

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

3.- Имейте страстный проект

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

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

Или, может быть, вы любите готовить. Тогда почему бы не создать веб-приложение рецептов, где вы сможете писать свои рецепты! Затем вы добавляете функцию «поделиться этим рецептом». А затем вы добавляете опцию «поиск по ингредиентам». Затем голосование за рецепты. Потом…

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

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

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

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

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

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

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

4.- Программирование не похоже на фильмы

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

И много времени на поиски в сети.

Нормально тратить много времени на чтение сообщений на StackOverflow, Reddit, в блогах других людей (в конце концов, вы здесь!) и просмотр видео на Youtube.

Из-за этого вам нужна настойчивость. Иногда вы не решите проблему сразу, и вы потратите часы (или даже дни!), чтобы решить проблему. Не волнуйтесь, это часть процесса.

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

Вывод. Программирование — это не только действия. Нужно много думать, читать и учиться. И это красиво.

5.- Дополнительно: обучение — это долгий процесс: наслаждайтесь им

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

Когда я начинал (на самом деле, до последнего года обучения), я делал много туториалов.

Я смотрел видео, иногда на скорости 150–200%, потом переходил к следующему. Да, я всегда кодирую вместе с учителем, но редко ставлю видео на паузу, чтобы прочитать, что написано в документации, или поиграть с кодом, пытаясь его сломать и исправить, отобразить новое и т. д.

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

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

Вы не станете первым, кто закончит обучение, но вы многому научитесь. И он приживется, обещаю.

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

Вывод

  • Чтобы научиться решать проблемы, нужно научиться программировать, а не просто изучать больше языков.
  • Сосредоточьтесь на одном языке и выучите его очень хорошо. Самая высокооплачиваемая работа для людей, умеющих решать сложнейшие задачи на одном языке, не зная 20 из них.
  • Подумайте о проекте, который вы хотите зафиксировать на несколько недель или месяцев. Создайте его базовую версию и начните добавлять функции по мере изучения.
  • Программирование — это не только действия. Нужно много думать, читать и учиться. И это красиво.
  • Наслаждайтесь временем, изучая программирование. Медленный и устойчивый выигрывает гонку.

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

Мои обучающие видео на Youtube

Мой Гитхаб

Свяжитесь со мной в Твиттере