Советы сеньоров: как прокачать знания junior iOS

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

В’ячеслав Володько, iOS Engineer / Team Lead в Lohika

7 років досвіду розробки під iOS

З чого почати? Почніть із нетворкінгу. Знайдіть собі ментора. Спілкування із живими людьми дозволяє користуватись їх досвідом, швидше знаходити рішення проблеми, отримувати оцінку своїм навичкам. Це може бути колега з роботи, учасник мітапу чи конференції, навіть чувак зі StackOverflow. Головне, щоб людина була професійною та відкритою. Останнє навіть більш важливе: від спілкування разом із колегою свого ж рівня часто можна отримати більше користі, ніж від гордовитого інтравертного сіньйора.

Якомога частіше відвідуйте тематичні конференції, мітапи, хакатони. Там завжди можна натрапити або на цікаву доповідь, або на цікаву людину. Я б це радив розробнику будь-якого рівня. Так, на конференція нині можна побачити чимало шлаку серед доповідей. Тому у мене є одна проста стратегія: я хожу на всі заходи, куди є можливість потрапити. Так я точно не пропускаю круті штуки, що там відбуваються. Зокрема, я використовую календар подій на DOU, щоб моніторити цікаві події і завчасно купувати квитки за зниженими цінами. Також ніколи не соромтесь поцікавитись можливістю компенсації вартості конференції за рахунок вашої компанії. Навіть якщо це ніде не прописано в політиці компанії, як правило, менеджери зацікавлені у швидкому рості джуніорів і часто йдуть на зустріч.

Swift чи Objective-C? Із моменту випуску Swift у 2014 році для молодших розробників iOS з’явилась певна невизначеність — яку мову програмування вчити. З одного боку, мові Objective-C вже більше 30 років. І, незважаючи на її стрімкий розвиток у 2008-2014, вона не відповідає сучасним вимогам швидкості розробки, безпечності, а також вимагає досить серйозного знання механізмів управління пам’яттю та нутрощів Cocoa просто для того, щоб писати код без помилок.

Разом із тим, навіть зараз у 2018-му році мову Swift не можна назвати готовою до комерційної розробки і тим більше її ранні версії. Відсутність бінарної сумісності, нестабільність компілятора та IDE і досі створюють певні труднощі у розробці крупних проектів, тому не кожен архітектор наважується використовувати Swift на своєму проекті. Що вже казати про сотні існуючих проектів на Objective-C, які тепер чомусь незаслужено називають «legacy». Також Objective-C має очевидні переваги при роботі із бінарними протоколами (привіт, Core Bluetooth, Core Audio).

Таким чином, новачки у нашій справі так чи інакше мусять вчити одразу дві мови. Для того, щоб бути конкурентним, я б порадив віддавати перевагу Swift. При цьому розбиратись у спільних із Objective-C технологіях: Foundation, GCD, Core Data.

Пишіть власні проекти. Спробуйте написати свій додаток та опублікувати його в AppStore. Ви здивуєтесь, скільки в тому є роботи, окрім безпосередньо написання коду. Після цього ви станете набагато краще розуміти вашого замовника, навчитесь знаходити розумний компроміс між ідеальним та швидким рішенням проблеми, цінувати свій час. Приємний бонус — повага та заздрість з боку колег. А виручка від продажу програми чи від реклами у ній, навіть символічна, буде непоганим мотиватором до подальшого розвитку.

Розширюйте горизонти. У якийсь момент вам буде здаватись, що ви знаєте достатньо багато. Це хороший момент для того, щоб подивитись на свою роботу під іншим кутом. Пробуйте вчити інші мови програмування: я особисто раджу Python/Ruby. По-перше, багато інструментів автоматизації у світі iOS написані саме на цих мовах, а по-друге, вони дають можливість займатись web-розробкою. Дуже раджу спробувати розробляти backend: це змушує вчитись проектувати не один компонент в системі клієнт-сервер, як часто буває при розробці мобільних додатків, а всю систему у цілому. Це безцінний досвід.

Також раджу почитати матеріали з теорії тестування. Зараз це допоможе вам навчитись обирати потрібний рівень юніт-тестування на проекті, а завтра, коли ви будете тімлідом, — спілкуватись із QA-інженерами та оцінювати їх роботу.

Не забувайте відпочивати. З мого досвіду, стомлений програміст — поганий програміст. Краще працювати 6 годин на добу, зате продуктивно, аніж 16 годин як попало. Овертайми навряд чи зроблять вас кращим спеціалістом.

Цікаве чтиво:
objc.io
Natasha The Robot
NSHipster
Swift Documentation

Вячеслав Карамов, Lead iOS Engineer в Waverley Software

6 лет опыта разработки под iOS

Первое и самое важное — чтобы вам это нравилось. Нравился сам процесс вне зависимости от финансового результата. Потому что когда вас мотивирует только финансовое вознаграждение, вы себя будете заставлять работать, а не хотеть работать. Чувствуете разницу? Долго в таком режиме вы вряд ли протянете, так что лучше попробуйте себя в той области, где вам действительно нравится.

Читайте книги, читайте документацию по языку, на котором собираетесь писать код. Для нативной разработки под iOS сейчас используются Objective-C и Swift. Второй более популярен на новых проектах, а старичок Objective-C — на «старых». Вы должны хорошо знать оба. По Swift могу посоветовать Advanced Swift: Updated for Swift 4.

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

  • Учите английский! Он вам будет необходим как воздух, не только для чтения книг, документации и писем, но и для общения с заказчиком. Пока вы junior, вас могут и не показывать заказчику, но по мере роста вашей квалификации (и зарплаты) такая необходимость обязательно возникнет.
  • Подпишитесь на интересующие вас рассылки и блоги по теме, например iOS Dev Weekly и Mike Ash blog. Так вы сможете быть в курсе свежих веяний из мира разработки под iOS.

Заведите себе учетную запись на GithHub. Изучайте чужой код. Возьмите стороннюю библиотеку и разберитесь, как она реализована. Если нашли ошибку, сделайте fork, исправьте, пошлите pull request. Если представится возможность, напишите свою библиотеку, сделайте ее доступной через CocoaPods. Так вы не только повысите свою квалификацию, но и правильно пропиарите себя. Правильный PR еще никому не мешал.

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

Иван Сокуренко, Technical Lead of iOS Department в CHI Software

6 лет опыта разработки под iOS

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

Я бы выделил 6 основных направлений, на которых будут строиться ваши знания:

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

2. Базы данных и основной инструмент для работы с ними на iOS — Core Data. Здесь нам с вами повезло, так как в 90% случаев наш клиент является «тонким» и не предполагает большого количества записей в базе. Но подводных камней там достаточно, и вам предстоит набить много шишек, прежде чем получится сделать действительно хорошо.

3. Потоки. Есть несколько основных вариантов работы с ними: GCD, NSOperation и NSOperationQueue. Стоит не зацикливаться на одном, а изучить оба подхода. Работа с потоками поможет сделать ваши приложения максимально быстрыми, эффективными и приятными для пользователя.

4. Работа с сетью. Вам предстоит очень много и тесно сотрудничать с разработчиками бэкенда, которые будут готовить интерфейс для ваших походов на сервер за информацией для отображения, для реализации аудио-/видеозвонков, реализации пересылки сообщений. Решения всех этих задач предполагают базовое понимание передачи данных по сети и ее организации. Поэтому даже если пока у вас нет потребности работать с чем-то кроме HTTP, с сетью и сетевыми протоколами стоит разобраться.

5. UI/UX. Задача красиво нарисовать приложение — в первую очередь ответственность дизайнера. Но заставить эти элементы красиво и динамично двигаться по экрану — это уже на вас. Делайте красивые анимации, избавляйтесь от рывков и резких прыжков или зависаний интерфейса, и пользователь всегда захочет вернуться в ваше приложение.

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

Несколько общих советов

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

Изучите хотя бы на уровне чтения Objective-C. Несмотря на то, что Swift становится основным языком разработки под iOS и OS X и для него создано множество библиотек, все еще существуют крупные проекты, написанные на Objective-C. Возможно, вам даже повезет поработать на таком ;) Если же вы решили заниматься геймдевом, C++ — must have.

Читайте документацию. Еще одно преимущество от Apple — хорошая документация большинства фреймворков. При решении любой задачи в первую очередь загляните в документацию. Stack Overflow никуда не денется.

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

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

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

Автоматизируйте. Лень — главное достоинство программиста. В процессе разработки и выпуска приложения есть очень много рутинной работы, которая отнимает много времени и сил. Есть средства и сервисы, которые помогут избавиться от рутинной работы типа создания provisioning profile, добавления и обновления библиотек в проекте, сборки билдов и выгрузки их на Crashlytics и TestFlight. Лично я использую match, CocoaPods, Jenkins + Fastlane.

Полезные материалы

Обязательно смотрите The Apple Worldwide Developers Conference (WWDC).

Много полезных уроков, статей и видео можно найти здесь:

Конечно же, Хабрахабр. Ну и куда же без Stackoverflow. Много готовых и интересных UI элементов здесь.

P. S. You should have at least intermediate level of English.
P. P. S. Пусть работа и изучение новых технологий приносит удовольствие. У вас все получится!

Вадим Булавин, Senior iOS Developer в TEAM International

5 лет опыта разработки под iOS

Главной спецификой нашей профессии является быстрое устаревание инструментов и технологий. Поэтому возникает необходимость в постоянном воспроизводстве своего профессионализма в ответ на изменения информационного поля и конъюнктуры рынка труда.

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

Изучите классические книги

Must-read:

  • McConnel, S. Code Complete: A Practical Handbook of Software Construction, Second Edition;
  • Martin, R. Clean Code: A Handbook of Agile Software Craftsmanship;
  • Fowler, Beck. Refactoring: Improving the Design of Existing Code;
  • Gamma et al. Design Patterns: Elements of Reusable Object-Oriented Software.

Nice to read:

  • Hunt A., Thomas D. The Pragmatic Programmer: From Journeyman to Master;
  • Sonmez J. Soft Skills: The software developer’s life manual.

В данном списке нет ни одной книги по iOS разработке. Это связано с тем, что по данному направлению существует курс лекций, за короткий срок успевший стать классическими, речь о котором пойдет дальше.

English > Swift

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

Оптимальным вариантом является посещения курсов английского в офисе. При отсутствии такой возможности, рассмотрите вариант самостоятельного обучения на небезызвестном LinguaLeo.

Computer Science

Освойте следующие темы:

  • Структуры данных. Уровень понимания: способность объяснить и использовать массивы (Array), списки (List), словари (Dictionary), деревья (Tree), графы (Graph) и др. в практических задачах.
  • Алгоритмы. Понимание принципов базовых алгоритмов поиска, сортировки, обхода коллекций. Концепция O(n).
  • Системное программирование. Базовое понимание процесса компиляции и управления памятью.

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

iOS

Изучение разработки под iOS рекомендую построить следующим образом:

  1. В полном объеме освойте курс Стэнфордского университета Developing iOS 11 Apps with Swift, который бесплатно доступен на iTunes. Если ранее вы не имели опыта разработки под iOS, вручную набирайте все примеры из лекций, запускайте их в iOS-симуляторе и разбирайте все непонятные моменты.
  2. Освойте N-е количество статей из www.raywenderlich.com/category/ios. Вы еще неоднократно будете обращаться к данному ресурсу, который является лучшим для начинающих iOS-разработчиков.

Значение N из пункта 2 определить сможете вы сами, когда появится субъективная уверенность в собственных силах для реализации полнофункционального приложения. Главная цель — перейти к практике в наиболее короткий срок, а не становится справочником по теории, которую вы не можете применить.

Swift or Objective-C?

Сконцентрируйтесь на изучении Swift: все новые проекты разрабатываются именно на нем, а Objective-C является рудиментом legacy-проектов.

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

Portfolio

Займитесь pet-проектами. Найдите идею, которая вас вдохновляет, реализуйте ее в iOS-приложении и выложите на GitHub. Наличие подобных проектов — огромный плюс при поиске работы не только для начинающих, но и для опытных разработчиков.

Резюме

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

  • Рассмотрите использование сторонних сервисов, например, jsonresume.org.
  • Постоянно поддерживайте резюме в актуальном состоянии. Для этого используйте облачное хранилище или систему контроля версий.
  • Выступая в качестве инициатора подачи резюме, вместе с ним отправьте сопроводительное письмо. При необходимости адаптируйте доступные в интернете шаблоны сопроводительных писем.
  • Зарегистрируйтесь, если вы еще этого не сделали, на LinkedIn. Это эффективное средство для поиска вакансий и установления деловых связей. И сделайте, наконец, презентабельное фото для вашего профиля.

Заключение

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

Все перечисленные мероприятия направлены именно на развитие этого важнейшего навыка. Читайте классические книги; практикуйтесь в iOS разработке в начале с использованием видео и текстовых руководств, а затем — на собственных pet-проектах. Создайте профессиональное резюме и поддерживайте его в актуальном состоянии.
Уверен, у вас есть все необходимое для достижения поставленных целей.

Станислав Рябый, iOS Developer в Dev-Pro

5 лет опыта разработки под iOS

Несколько лет я работал с Objective-C, за полтора месяца освоил Swift и вышел на нормальный темп разработки. Фактически я прочитал документацию и начал кодить: практический опыт помог быстрее освоиться с языком. Вообще, чем больше технологий изучаешь, тем больше решений находишь: начинаешь сравнивать, разбираться в отличиях и особенностях, если чего-то не хватает — ищешь альтернативу в том, что используешь сейчас. Проще говоря, находишь какие-то классные фишки и переносишь их из одного комьюнити в другое.

Главные советы для начинающего

Почитай документацию (скорее всего, ничего не поймешь).

Тогда найди книгу, где уже разжевали основы.

Посмотри на App Store простенькое приложение на два-три скрина и попытайся сделать такое же:

  • проведи декомпозицию приложения — разбери на составные части;
  • на основе декомпозиции напиши план своей работы;
  • пошагово выполни задуманное, сделай своё первое приложение, посмотри, как язык работает.

Это маленький практический опыт, который может стать предметом обсуждения при первом интервью на работу.

База. Бытует мнение, что обучение в университете ничего не дает. Я думаю, что всему действительно можно обучиться самостоятельно — интернет дает доступ к огромному количеству ресурсов, но мне вуз дал полезные знания. Например, такие дисциплины, как «Системный анализ», «Базы данных», «Дискретная математика», «Алгоритмы» и другие. Хотя они используются в работе редко, но развивают мышление и направляют в нужное русло.

Трудности со Swift. Objective-C — надежный, проверенный язык, с которым крупные компании все еще работают, но, скорее всего, позже таки перейдут на Swift. У Swift есть большой недостаток — это новый язык. Каждое обновление несет за собой апдейт кодовой базы приложения. В результате что-то может перестать работать корректно или перестать работать вообще.

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

Тренды и полезности

Нетехнические советы

Есть уйма технических советов, любой более опытный коллега, скорее всего, с удовольствием подтолкнет тебя в правильном направлении. Но я бы хотел поделиться еще и нетехническими советами, обозначить грабли, на которые наступать не стоит. Эти рекомендации, как мне кажется, могут облегчить жизнь не только iOS Junior Developer, но любому новичку в IT-компании.

Не испытывать чувство вины и быть реалистом.
Junior Developer приходит в первую компанию, чувствует себя неуверенно, начинает отдавать себя всего проекту. Этим часто пользуются. Вместо 160 часов новичок работает 180-200 часов, а говорит, что 170 из-за чувства вины за свое незнание. Мой совет: не чувствовать себя виноватым! Это не проблема Junior-специалиста, что он делает задачу медленнее, чем от него ожидали, это задача менеджера — учесть уровень разработчика в своих планах. Ответственность новичка — сказать, сколько времени ему реально понадобится.

Например, по оценке на задачу уйдет 70 часов, но ты понимаешь, что сделаешь за 100. Думаешь, что сможешь посидеть вечерами и успеть в срок. Это неправильный подход! Скорее всего, ты не успеешь закончить, станешь задерживать остальных, а риски будут на тебе, если не озвучишь их менеджеру заранее. Лучше сообщить, что эта задача может быть выполнена за 100 часов. PM сможет это учесть и вовремя скорректировать планы.

Не нужно постоянно перерабатывать.
У новичков есть заблуждение, что если работать по 10-12 часов в день они будут быстрее развиваться. Если бы они работали 8 часов, а остальное время отдыхали — развитие было бы куда быстрее. Именно отдых — одна из составляющих эффективного обучения. Ведь переутомление, недосып и усталость приводит к ухудшению когнитивных способностей, выгоранию и демотивации.

Не ориентироваться на других.
Если ты видишь рядом мотивированного «звездного специалиста», который работает 10-12 часов и не выгорает — не пытайся за ним повторить! Ты способен(-на) быть отличным, талантливым специалистом, работая 8 часов, позволяя себе отдых и полноценный сон. А вот «звезды» часто становятся даже помехой успеха, а не двигателем проекта, завязывая все процессы на себе.

Сфокусируйся на своей зоне ответственности.
Быть активным и давать дельные советы — хорошо, а вот пытаться решить все возможные проблемы на проекте не стоит. Проникая в чужую зону ответственности, ты можешь навредить, а не помочь. Junior должен успешно выполнить свою задачу на том участке, который ему доверили.

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

Кирилл Коваленко, iOS Tech Lead в Nullgravity

5 лет опыта разработки под iOS

Программист — не чародей, который занимается черной магией, а мои советы — не альманах, действуя по которому, вы получите ответы на все вопросы. Но я могу вам подсказать, в каком направлении стоит двигаться.

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

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

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

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

Чистый код — пишите свой код так, чтобы каждый смог понять, как он работает и легко смог его поддерживать. Уменьшайте фактор автобуса. Старайтесь писать комментарии там, где они нужны.

Следующий шаг — это технология, на которой вы хотите разрабатывать. Уделите внимание основным компонентам. Научитесь работать с окружением, которое вам предоставляется. Пользуйтесь всеми преимуществами языка, не бойтесь создавать playground и экспериментировать. Вы должны понимать, что вам предоставляет язык, и уметь применять его. Разберитесь, как работает UIKit и какие технологии он предоставляет, какие базовые компоненты у него есть. При поступлении задачи не ищите сразу готовое решение (готовый код), постарайтесь разобраться, как данный функционал можно реализовать и что у вас для этого есть.

Устройте для себя марафон. Составьте список технологий (работа с многопоточностью, базы данных и т. п.), попробуйте создать демо по каждой из них и выложите на свой GitHub. Именно так внутри компании Nullgravity мы стараемся развивать экспертизу разработчиков в разных технологиях. Для вас это будет большим плюсом: вы сможете собрать себе портфолио, разобраться глубже в технологиях, сделать для себя шпаргалки/заготовки и набить шишки. Не забывайте писать документацию: как это работает и что вы тут делали.

Не прекращайте учиться и всегда стремитесь развиваться!

Павло Захаров, Senior iOS Developer / Team Lead в CoreValue

4 роки досвіду розробки під iOS

Привіт друже, якщо ти це читаєш — напевно, ти почав свою подорож у світ iOS розробки. Я хочу поділитись з тобою деякими порадами та лайфхаками, які, я сподіваюсь, поможуть тобі у цій нелегкій, але захопливій подорожі. Лінки на всі сайти/ресурси/тулзи, згадані в цьому коментарі, наведені внизу.

Завжди пам’ятай, що iOS розробникам дуже пощастило: 98% проблем, які в тебе виникнуть, вже були обговорені на stackoverflow.com. Тому вміння правильно сформулювати питання та швидко нагуглити відповідь, на мою думку, набагато цінніше за, наприклад, знання API напам`ять. Наступні поради можуть прозвучати дуже по-капітанськи, але з власного досвіду знаю, що далеко не всі девелопери вміють добре гуглити.

Коли зіткнувся з проблемою — не спіши, подумай хвилину-дві: що найкраще характеризує твою проблему, які слова основні, а які — другорядні. Спробуй якомога більше узагальнити свою проблему. Не роби занадто довгих або навпаки занадто коротких, неоднозначних запитів. Намагайся використовувати прості однозначні слова. Якщо не знаєш, як сформулювати на англійській — сформулюй на рідній мові, потім в Google Translate. Завжди шукай інформацію на англійській мові. Історично сталось так, що її в надрах інтернету в десятки разів більше, ніж інформації будь-якою іншою мовою. І наостанок, не бійся спитати поради у інших девелоперів, якщо потрапив у глухий кут. Іноді свіжий погляд може зауважити очевидні речі, які людина, яка вже годинами колупається на одній ділянці коду, може прогледіти через банальну втому.

Не бійся нових фреймворків та технологій. Я вважаю, що єдиний спосіб вивчити новий фреймворк/технологію/мову програмування — це почати працювати з нею в реальному проекті. Теорія — це добре, але practice makes perfect. Якщо, наприклад, ти не писав на Swift, а тільки на Objective-C, або ж ніколи не працював з фреймворком Х і тобі пропонують робити проект з його використанням — не відмовляйся тільки через те, що в тебе немає досвіду з цим.

За декілька тижнів ти розберешся зі страшним і незрозумілим фреймворком, і речі, які здавались тобі складними, стануть очевидними і, найголовніше, — ти додаси в свій арсенал ще одну технологію. Якщо ж треба швидко подивитись на основні можливості фреймворка і розібратись, як він працює, найкращий ресурс — raywanderlich.com. Тут зібрано сотні туторіалів по iOS і не тільки. Пояснення зрозумілі і не сухі. Для кожного туторіала ти зробиш міні-проект, щоб отримати hands on expierence.

Не недооцінюй теорію. Іноді знання того, що і як працює під капотом, можуть вберегти тебе від нічних дебагінг-сесій та багатьох помилок. Найкращий ресурс для цього — лекції з WWDC від Apple. Інженери Apple самі розповідають, що і як працює. Apple у цьому плані молодці. Кожна лекція з World Wide Developer Conference за кожен рік записується, щоб потім її можливо було передивитись в режимі онлайн. Є лекції про кожен фреймворк з Cocoa/CocoaTouch. Тонни інформації. Добре виробити собі звичку, якщо є вільна годинка — дивитись лекцію-дві. Потім ти зможеш використати в своїх проектах ті самі підходи, які використовує Apple. Ще один плюс — ця інформація стане тобі у нагоді на співбесідах, коли хитрий інтерв`юер захоче задати підступне запитання.

Swift у кожну хату. У 2014 багато людей казали, що Swift нестабільний, і обирали для проектів Objective-C. Через 4 роки Swift майже повністю витіснив Objective-C. Навіть останній ортодокс зараз визнає перевагу Swift над Objective-C. Якщо ти починаєш новий проект — тільки Swift. Якщо з якоїсь причини змушений писати на Objective-C — пам’ятай, що знати Swift для iOS розробника це must у 2018. Це неймовірна мультипарадигмальна мова, яка використовується не тільки для iOS програмування. Є фреймворки для написання бекенду та багато іншого. Спробуй перейти на Swift, якщо ще не перейшов, і ти полюбиш його, як полюбив я. Якщо хочеш якнайефективніше використовувати мову та задіяти всі можливості в своєму коді — Swift Talk від ObjC.io допоможе тобі в цьому.

Objective-C/C++. В минулому пункті мова йшла про те, що Swift перевершує Objective-C. Це так, але більш низькорівневі мови, як Objective-C та C++ дають вам розуміння того, як працюють деякі базові аспекти в програмуванні e. g. memory management, static/dynamic polymorphism, exception handling. Знання цих мов хоча б на початковому рівні допоможе розібратись, як мова працює «під капотом» і вбереже від багатьох помилок, які роблять програмісти.

Спрощуй собі життя. Все, що економить тобі час, є корисним. Вивчи гарячі клавіші в ХCode. Вони роблять навігацію по проекту швидшою і кожен раз, коли ти пересуваєшся між файлами, економлять тобі мілісекунди часу. Беручи до уваги, як часто це відбувається, за місяць набігає великий ресурс часу. Використовуй Alcatraz для XCode. Там багато корисних плагінів, які можуть допомогти саме тобі. Якщо дистрибутаєш свій проект тестерам та на AppStore, такі інструменти, як fastlane та Crashlytics, зекономлять багато часу. Завжди відслідковуй, що вийшло цікавого і нового, дізнавайся, що ще може спростити тобі роботу.

Networking. Спілкуйся з іншими девелоперами, обговорюй свої проблеми та їх рішення, слухай, сперечайся. Як відомо, в суперечці народжується істина. Бери участь у різних заходах. Відвідуй хакатони та конференції. Це дасть тобі змогу знайти однодумців та непомітно для себе вирости як спеціалісту. Можу порадити з того, що відвідував особисто я, — конференція try! Swift в Токіо та WWDC в Каліфорнії. Якщо буде можливість — їдь і не шкодуй грошей. Такі івенти дають натхнення та мотивують ще більше любити свою роботу.

For beginners. Окремо пункт для людей, які тільки починають свій шлях. Можливо, ти вирішив стати iOS девелопером і не знаєш, з чого почати? На мою думку, стенфордський курс по iOS Development — те, що тобі треба. Викладач торкається всіх основних можливостей CocoaTouch, дуже добре пояснює, проводить live демо для кожного уроку, є приклади коду. Дуже рекомендую. І ще дуже зверни пильну увагу на UIKit. На рівні Trainee/Junior більшість твоїх завдань буде пов’язана з юзер-інтерфейсом. І взагалі UI, на мою думку, — найважливіша частина програмування під iOS.

English. У XXI столітті кожна освічена людина, на мою думку, має володіти англійською мовою принаймні на рівні Intermediate. Особливо, якщо ти девелопер. Вся документація на англійській мові, спілкування з замовниками на англійській. Must know English. Якщо є проблема з англійською, рекомендую школу — Green Forrest. На моїх очах піднімали людей з абсолютно нульового рівня до Upper-Intermediate за короткий час.

Люби Apple. На мою думку, кожен хороший iOS Developer має бути трохи Apple fanboy. Слідкуй за новинками, дивись Keynote — надихайся. Якщо є можливість — купуй собі девайси від Apple, адже, user experience дуже важливий. Можливо, ти побачиш якісь цікаві рішення, які зможеш потім використати в своїх додатках.

Лінки

https://stackoverflow.com — якщо раптом хтось не знає, де відповіді на 98% питань :)
https://www.raywenderlich.com — туторіали по iOS і не тільки
developer.apple.com/videos — лекції WWDC
https://talk.objc.io — Swift Talk by ObjC.io
roadfiresoftware.com/...​shortcuts-for-developers — гарячі клавіші XCode
github.com/alcatraz/Alcatraz — менеджер плагінів для XCode
https://fastlane.tools — automatic deployment

Якщо маєш якісь питання чи зауваження — із задоволенням відповім. Пиши на  Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. . Успіхів тобі, друже.


Подписывайтесь на наш Telegram-канал для джуниоров, чтобы не пропустить интересные вакансии, стажировки, курсы, статьи.

Похожие статьи:
Я Lead Software Engineer, занимаюсь проектами по виртуализации для автомотив-сектора в GlobalLogic. Эта статья подготовлена на основе моего...
Компания Apple сообщила, что пользователи приложения Facebook для iOS начали получать возможность публиковать и просматривать Live...
У Національному банку України не збираються переглядати суперечливу політику щодо курсу валют попри різке невдоволення...
Адам Леос — Senior Software Engineer в Roku. Пару лет назад он принял решение о релокации и в итоге выбрал своей целью США. Всего...
На нашем YouTube канале появились новые видеоролики.Обзор DEXP Octava (Ixion X250):Видеообзор Archos 50...
Яндекс.Метрика