За последние несколько месяцев я учился писать приложения для iOS на Objective-C и наконец начал приводить свои мысли в порядок. Это оказалось гораздо сложнее, чем я представлял, и заняло слишком много времени.

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

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

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

如果学习编程可以重来

Найдите партнёра по программированию

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

Мой соучредитель Джош, который в основном занимается разработкой на Python, на самом деле учил Objective-C вместе со мной и ответил на многие мои вопросы по теории программирования («Как заставить оператор if снова работать?»), а также помогал мне отлаживать код, когда я действительно застрял.

Наличие чрезвычайно терпеливого партнёра по программированию, который мог объяснить основные принципы программирования, было огромной помощью. Джош часто помогал мне продумать большую часть логики решения задачи, прежде чем я прорабатывал конкретные детали в Objective-C.

Эффективно используйте ресурсы

Если вам не посчастливилось иметь рядом терпеливого программиста, готового отвечать на вопросы, есть и другие места, где можно получить помощь от реальных людей:

  Stack Overflow

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

  Treehouse

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

  askadev

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

  Codementor

Если вы хотите платить опытным разработчикам за помощь, Codementor подберёт вам людей, знакомых с языком, который вы изучаете. Они охватывают Android, iOS, HTML, CSS, PHP, Python и многие другие технологии.

Решение проблем с помощью резиновой уточки

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

Изучите стандарты

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

Знания Objective-C — это не всё, что нужно знать для разработки iOS-приложений, — по крайней мере, не таких, какие я хотел разрабатывать. Я совершил ошибку, решив, что простого знания Objective-C будет достаточно. Хуже того, я часто попадал в неприятности, потому что люди, отвечавшие на вопросы на Stack Overflow, в онлайн-учебниках и главах книг, объясняли, как разрабатывать на Objective-C, полностью пропуская веб-принципы, которые мне нужно было знать, и предполагая, что я их уже знаю.

Если бы я начинал заново сегодня, я бы сначала укрепил свои знания HTML и CSS. Когда я сталкивался с новыми технологиями, о которых мало знал, я сначала получал общее представление о них, прежде чем пытаться применить их в Objective-C.

Вы можете начать с любого языка

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

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

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

Найдите проект, который вам действительно небезразличен

Для меня самой большой сложностью в обучении, вероятно, было найти мотивацию продолжать учиться программировать. В прошлом я пробовал много раз: учил HTML и CSS в детстве, изучал основы Ruby несколько лет спустя и недавно взялся за Python.

Я решил изучать Objective-C не потому, что он нравился мне больше Ruby или Python, и не потому, что знал людей, изучавших Objective-C, а просто потому, что у меня был список идей для iOS-приложений, которые я хотел реализовать — мне действительно хотелось их создать.

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

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

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

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

  • Примечание: метод отладки с маленькой жёлтой уткой, также известный как отладка с резиновой уткой или yellow duck de-bugging (Rubber Duck Debugging), — один из методов отладки кода, используемых в программной инженерии. Он означает, что во время отладки, исправления ошибок или тестирования программы нужно терпеливо объяснять маленькой жёлтой утке назначение каждой строки кода, чтобы вызвать вдохновение.

Источник статьи:www.labazhou.net
Оригинальный английский текст:Что бы я сделал иначе, если бы учился программировать сегодня