Исходное сообщение: 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 из них.
- Подумайте о проекте, который вы хотите зафиксировать на несколько недель или месяцев. Создайте его базовую версию и начните добавлять функции по мере изучения.
- Программирование — это не только действия. Нужно много думать, читать и учиться. И это красиво.
- Наслаждайтесь временем, изучая программирование. Медленный и устойчивый выигрывает гонку.
И вопрос к вам: если бы вы могли вернуться в то время, когда вы начали программировать, какие советы вы бы дали себе?