Советы начинающим iOS разработчикам

    Если не знаешь, надо не бояться, а узнавать.
    Айн Рэнд “Атлант расправил плечи”



    Добрый день, меня зовут Игорь Томич и я лектор курсов iOS-разработки и сооснователь онлайн курсов Master Up. Это мой первый пост в наш корпоративный блог, в котором я решил поделиться советами для начинающих iOS-разработчиков. Свое первое приложение для iOS я начал писать в начале 2009 года, а в мае 2012 году провел первый курс обучения по рарзработке под эту же платформу и к этому времени у меня скопилось достаточно “часто повторяемых ошибок” и путей их решения.


    Внимательность




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

    Посещайте правильные ресурсы




    Нет времени читать вторичную информацию, надо обращаться к первоисточникам и генераторам движения вперед. Apple всегда будет ресурсом изначальной информации по платформе, приучитесь читать документацию с developer.apple.com/ios. Читайте и смотрите качественный контент www.raywenderlich.com, nshipster.com, nsscreencast.com. Следите за деятельностью и мнением “грандов”, таких как Matt Thompson, Matt Gammell, John Gruber, Mike Ash Evan Doll. Найдите таких, подача и интенсивность информации подходит лично вам.

    Смотрите WWDC




    Apple тратит много усилий и финансов пытаясь донести глубокое понимание различных технологий проводя ежегодный Worldwide Developers Conference. Обязательно смотрите видео developer.apple.com/wwdc/videos, это просто кладезь правильной и доступной к пониманию информации.

    Практикуйтесь, не пытаясь сразу понять все




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

    Понимать, что ошибки не уникальны




    Очень часто при малейшем отклонении от правильного поведения начинающий разработчик впадает в ступор. Вероятность того, что уже кто-то столкнулся с вашей проблемой довольно высока. Поищите по тексту ошибки в google или stackoverflow. Попробуйте посмотреть issues на github в случае ошибок в сторонних библиотеках. Мы не уникальны, как и наши ошибки, используйте “опыт интеренета” для быстрого нахождения ответов.

    Используйте Cocoapods




    Не пишите “велосипеды”, скорее всего cocoapods.org уже содержит библиотеку, которая решает вашу проблему. В современных проектах, количество сторонних компоненов давно больше десятка, по этому умение работать с менеджеров пакетов будет большим плюсом.

    Читайте GitHub




    Cмотрите популярные библиотеки на GitHub. Скачивайте и смотрите чужие проекты. Сейчас в open source доступно много хороших и реальных приложений. Например проекты Cheddar и InkPad.

    Задавать себе вопросы




    Лучший способ изучить любую платформу это понять философию и уметь отвечать на вопрос “почему?”. iOS довольно целостная платформа, которая берет свои корни из NeXTSTEP. Постарайтесь “прочувствовать” подход, пути решения и логику в фреймворках.

    Завести pet project




    Хороший способ мотивированно писать и получить опыт общения с конечными пользователями. Решите проблему которая интересна лично вам. У меня есть куча примеров, когда маленький проект “для себя”, стал неплохим финансовым вознаграждением разработчику. Это и наш личный проект Маршрутки и Тренировка зрения двух ребят с нашего курса.

    Времени никогда не будет хватать




    В этом сразу стоит признаться себе, надо просто начинать учиться и делать, в противном случае всегда будут причины немного отложить обучение или написание своего проекта. Начните с малого, но сегодня.
    Master UP
    0,00
    Компания
    Поделиться публикацией

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 33

      0
      Кратко, годно, по существу. Спасибо. Хоть я и не начинающий iOS-разработчик, но советы довольно годные. Хотя почти без конкретики.
        0
        Ходил к Игорю на самый первый курс — оказалось, что два года неправильно хендлил жесты.
          0
          А как Вы это делали?
            0
            Дополнительно хранил состояние translation между вызовами для получения дельты.
              0
              Это сильно :)
                +2
                Сам себе злобный Буратино! ))))
          0
          отличные советы! применимые кстати, к любой платформе или языку
            +2
            Думаю стоит упомянуть вот этого парня — Mike Ash
              0
              А чего он сделал?
              0
              И вот этот ресурс www.objc.io
                0
                Там тоже есть спорные моменты, которые я бы не стал советовать новичкам.
                А именно:
                • вынесение логики из ViewController'а в модель, а из модели в категорию. Для этого имеет смысл создать новую сущность, по типу декоратора
                • создание категории на NSObject для загрузки UIView из ксиба. Тоже довольно сомнительная фича, т.к. в таком случае все классы получают эту фичу: NSArray, NSDictionary и т.п., а это им совершенно ни к чему.
                  0
                  А я за тонкие View Controller. Вот тут Mike Weller начал цикл статей, думаю скоро продолжит.
                    0
                    Тогда уж сразу MVVM
                      –1
                      И это тоже. ReactiveCocoa решает
                      0
                      А я за тонкое _все_.
                0
                cocoapods я бы не стал настоятельно рекомендовать, особенно начинающим разработчикам.
                В таком пакетном подходе есть достаточно весомые недостатки:
                — зависимость от сервера
                — зависимость от репозитория, на который указывает пакет.

                Например был у вас проект, вы его сделали и он себе работает. Вы его положили к себе в репозиторий и занялись другими проектами. Но через год вышел iOS7 и нужно что-то поменять в проекте. Вы спокойно выгружаете свой проект и бац: нужной версии нет в репозитории, владелец переехал со своими исходниками с гитхаба на битбукет, но в cocoapods этого не поменяли. Или вообще удалил свои исходники.
                Ну и перестал работать cocoapods вдруг (есть такая вероятность, всё не вечно) и все ваши проекты стали сиротами. И ищи по интернету все зависимости по всем проектам. И хорошо, если найдется.

                  +2
                  Да, это все минусы, но по факту есть только 2 альтернативных пути:
                  1. Git modules
                  2. Ручное управлние библиотеками «Закинь их в проект»

                  Первый вариант имеет все недостатки cocoapods, намного сложнее в конфигурации и неудобен в крупных проектах.
                  Второй вариант «адский ад» после 10 компонентов.

                  Мы храним проекты из cocoapods в репозитории, таким образом решена проблема «исчезновения» проекта из cocoa specs. А то, что проект когда-то закроют, нас не пугает. Выберем достойную альтернативу, на этот момент.

                  Хочется узнать, а каким способом вы управляете сторонними библиотеками и компонентами?
                    0
                    Так как я в год разных приложений делаю с десяток, и практически у всех у них поддержка очень вялая (пара правок в месяц в самом лучшем случае или вообще ничего), то самый лучший подход — это ручное управление.
                    А то, что вы делаете — это особо не отличается от ручного подхода. Cocoapods вы используете только для ускорения процесса загрузки компонент, насколько я понял. В процессе разрабтки вы же не обновляете пакеты?

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

                    А у ручного подхода есть еще достоинства — есть возможность три раза подумать, а действительно ли этот компонент тут нужен?

                    Я нигде не говорил, что cocoapods — это плохо. Я просто хотел сказать, что нужно кроме достоинств говорить и о недостатках, особенно начинающим разработчикам. Так как они очень доверчиво относятся к тому, что им говорят учителя/наставники. Так проще не утонуть в куче новых знаний. И таким образом рождаются стереотипы.
                    0
                    Слишком уж категорично вы на счет cocoapods)
                      0
                      «не стал бы настоятельно рекомендовать» — это не тоже самое, что «настоятельно бы не рекомендовал».
                      Тут в советах его настоятельно рекомендуют, вот я бы не стал этого делать :-) Так, что я не категоричен, я не очень ясно выразился.
                        +4
                        Основной месседж в статье — не писать велосипеды. Можно использовать кокоаподс, только как поисковик по библиотекам, а дальше уже выкачивать и складывать локально, или просто комитить вместе с папкой Pods.

                        А вообще, за последние 2 года я не разу не встречал такого, что бы с репозитория пропали исходники, кроме (Three20, но то к лучшему, и то история доступна). За то ситуаций, где подкинутые локально сорцы очень устаревали и даже переставали собираться на новом СДК было полно. Хотя в новой версии уже все давно пофикшено, но обновить мы не можем, потому, что даже не помним с какого комита эти исходники + кто-то туда своего кода наколбасил, а чо, все равно ведь локально лежат.
                          0
                          да — это недостатки ручного управления пакетами. Найти исходники можно по названию классов. Не автоматизировано, но всё-же.
                          Если наколбашего в стороннем коде и это сделано правильно и с пользой — то нужно заливать в «общаг». Если разработчик этого не сделал — это плохо. Если решение специфичное только для этой задачи, то в Objective-C есть много способов сделать это без вмешательства в сторонний код (категории, наследование например).
                          В общем любой метод правильный, если использован правильно. И об этом нужно рассказывать новичкам.
                      +1
                      Я даже собственный проект разбиваю на локальные pods, это позволяет мне видеть где и как я начинаю делать плохой дизайн, ведь тут зависимости явно проступают на первый план!
                        0
                        вы говорите про модульность, а cocoapods — это частный случай модульности.
                          +2
                          я знаю, про что я говорю — потому и говорю
                        0
                        есть ещё особенно талантливые компании, которые добавляют в свои pods всё подряд. как brightcove, например, Brightcove-Video-Cloud-App-SDK-Player-and-Sharing-Kit.
                          +1
                          Вообще CocoaPods уже не помешает система рейтинга какая-то. А то все эти «useful tools for iOS development» и «Blocks for UIAlertView instead of delegate» в десяти экземплярах захлямляют все только.
                            0
                            Я б вообще премодерацию ввел)
                              0
                              так есть же премодерация.
                                0
                                Ну так все ж подряд мержат. Да и права на пуш есть у многих людей.
                        0
                        А каких грандов читать, если занимаешься разработкой под Android? И вообще полезные ресурсы, кроме всеобъемлющих вроде того же stackoverflow и родных вроде видео с Google I/O?

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

                        Самое читаемое