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

Найдите партнёра по программированию
Я также нашёл работающий метод обучения: наличие реального живого человека, с которым можно поговорить.
Мой соучредитель Джош, который в основном занимается разработкой на Python, на самом деле учил Objective-C вместе со мной и ответил на многие мои вопросы по теории программирования («Как заставить оператор if снова работать?»), а также помогал мне отлаживать код, когда я действительно застрял.
Наличие чрезвычайно терпеливого партнёра по программированию, который мог объяснить основные принципы программирования, было огромной помощью. Джош часто помогал мне продумать большую часть логики решения задачи, прежде чем я прорабатывал конкретные детали в Objective-C.
Эффективно используйте ресурсы
Если вам не посчастливилось иметь рядом терпеливого программиста, готового отвечать на вопросы, есть и другие места, где можно получить помощь от реальных людей:
По вопросам о конкретном синтаксисе или реализации Stack Overflow — один из сайтов, которые я в последнее время посещаю чаще всего. Я сам не задавал там вопросов (я осторожен с вопросами, хотя сообщество довольно дружелюбно к новичкам), потому что мне это редко нужно — просматривая ответы на вопросы других людей, большинство моих проблем решается.
Treehouse обучает программированию с помощью видеоуроков, а также имеет форум сообщества, где можно обсудить сложные баги или конкретные упражнения, с которыми вы сталкиваетесь при прохождении курсов.
Когда нужна помощь, askadev позволяет связаться с опытными разработчиками. Я ещё не пробовал этот сервис, поэтому не знаю, насколько он полезен и охватывает ли он все языки программирования, но он бесплатный, так что стоит попробовать в следующий раз, когда понадобится помощь.
Если вы хотите платить опытным разработчикам за помощь, 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
Оригинальный английский текст:Что бы я сделал иначе, если бы учился программировать сегодня