Site icon AppTractor

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

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

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

Этот пост о двух вещах. Во-первых, 2 года назад меня взяли на работу в технологическую компанию в Кремниевой долине, которая на 99% использует SwiftUI в своих приложениях (я работаю iOS-инженером уже более 7 лет). У меня не было никаких знаний о SwiftUI, поэтому я в основном изучал его в процессе работы и глядя на код, который писали другие. Теперь я начал работать над своими собственными двумя приложениями со SwiftUI, так как я начал заниматься программным обеспечением как бизнесом. Я столкнулся со многими проблемами, просто создавая их, хотя я думал, что знаю, как использовать SwiftUI.

Чувствуя, что мне не хватает правильной дорожной карты обучения, я решил изучить SwiftUI правильным способом с помощью курса Hacking with Swift «Hacking with iOS — SwiftUI Edition». Изучение этого курса показало мне, как много существующих знаний я упускал. Они могли бы сэкономить мне часы времени на разработку как на работе, так и в этих личных проектах. Так много моментов «о, я мог бы использовать это вместо этого».

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

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

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

Вот некоторые ответы.

Сделать что-то -> Изучить (курс/книгу/статью) -> Сделать еще больше

Это бесконечный цикл. У людей есть сильная тенденция начинать с курсов и оставаться там, чувствуя себя продуктивными, но на самом деле не производя ничего. Это известно как «ад обучения» (tutorial hell).

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

Изобретать колесо — один из лучших способов обучения. Так вы учитесь справляться с более сложными задачами. Да, довольно часто есть встроенный подход, который прост и правилен, но почти так же часто Apple не предоставляет вам удобного API, и вам остаётся решать проблему самостоятельно.

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

Это известно как «ад обучения» (tutorial hell).

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

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

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

Есть очень старая пословица о программировании: «На любом языке можно программировать на Фортране». Сегодня, когда наши программистские начинания — это не просто языки, а, как правило, новые языки плюс фреймворк или два, еще важнее иметь надежного проводника, который поможет человеку сориентироваться в особенностях платформы и научит его писать код, идиоматичный для этой платформы. На мой взгляд, просто «найдите то, что вас увлекает, и создайте это» — крайне неполный совет.Когда я начал программировать Cocoa, а затем Cocoa-Touch, я обнаружил, что Big Nerd Ranch — это бесценный ресурс. Парень, который его основал, программировал в среде NeXt еще до того, как она перешла в Mac OS X, а затем и в iOS. Все эти ресурсы, о которых я пишу, на самом деле являются книгами по этой теме.

Мне кажется, что это давно ушедший мир.

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

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

Например, я помню, как однажды в баре нашего местного казино собралось около 20 iOS-разработчиков (казино нас ненавидело, так как никто не играл в азартные игры, и мы не пили много — это была кучка любителей диетической колы! Мы не приносили казино большого дохода), и мы говорили о книге Мэтта Гэллоуэя «Эффективный Objective-C», буквально у каждого из присутствующих была эта книга — все прочитали ее от корки до корки и усвоили ее содержание до такой степени, что могли вести жаркие дискуссии с другими разработчиками в группе по всем вопросам, затронутым в книге.

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

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

Те же самые технологические авторитеты, которые создали ад учебников, теперь делают контент против него. У людей, у которых последнее видео — «Don’t Get Stuck in Tutorial Hell», все их предыдущие видео — это куча учебников поверхностного уровня, которые растягивают раздел «Начало работы» в документации с 20 минут чтения до 1.5 часов видеоконтента, где они рекламируют свой курс или patreon.

Exit mobile version