image
Привет, Хабр! Мы открываем набор на вторую стажировку для разработчиков в Redmadrobot. Старт — в середине января.

Чего ждать от нас?


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

Проектирование
  • MVC, MVP, MVVM, MVPM и SOA в iOS- и Android-приложениях
  • Data binding
  • Уместное и правильное применение шаблонов проектирования
  • Разработка по принципам реиспользования и универсальности
  • Поддержка общей кодовой базы в чистоте и актуальном состоянии после каждого WWDC и Google I/O

Многопоточность
  • Модели взаимодействия потоков в Android и iOS
  • Способы общения с main thread
  • Как многопоточность согласуется с жизненным циклом

Безопасность
  • Как по-настоящему защитить HTTPS соединение
  • Что надо знать о шифровании данных на устройстве
  • Root доступ: можно ли добиться безопасности приложений
  • Что делать с Jailbreak на iOS-устройствах
  • Модель угроз: как уберечь доверчивых пользователей от них самих

UI
  • Как стать UI-ниндзей и AutoLayout-джедаем

Android 6
  • Новая модель разрешений
  • Backups
  • Doze mode

Коммуникация в производстве
  • Роль и ответственность разработчика в рамках успеха всего проекта
  • Как общаться с BA, DES, QA и не сойти с ума

Из чего мы исходим при составлении программы
  • Максимально актуальные и нужные навыки
  • Материалы из реальных проектов
  • Вечерние занятия три раза в неделю, которые получится совмещать с работой
  • Сложные и интересные домашние задания
  • Знакомство с внутренней кухней компании
  • Ну и, конечно, возможность стать одним из Роботов для тех, кто на нашей волне

Стажировку проведут лучшие технические специалисты Redmadrobot: Артур Сахаров ( mc_murphy ), Егор Тафланиди ( BepTep ), Роман Чуркин ( firmach ), Максим Ефимов ( MaximEfimov ), Александр Смирнов ( scottKey ), Артем Кулаков ( Fi5t ), Григорий Матвиевич ( fountainhead ) и многие другие.

Что мы ищем в вас?


Вы имеете опыт разработки под мобильные платформы, но хотите разложить все по полочкам? Вы уже пишете код лучше всех и думаете, куда расти дальше? Вы еще не пишете код лучше всех, но являетесь middle’ом и энтузиастом? Давайте синхронизируемся по тем терминам, знание которых мы ожидаем перед началом:

Класс. Объект.
Инкапсуляция. Наследование. Полиморфизм.
Частные методы. Публичные методы. Виртуальные методы.
Конструкторы. Деструкторы. Акцессоры. Мутаторы. Поля/свойства.
Жизненный цикл приложения. Жизненный цикл экрана/страницы.
Ссылки. Указатели. Reference Type. Value Type.

iOS: Протоколы. Категории. Расширения. ARC. Модификаторы указателей. Блоки. Замыкания. id. Селекторы. Отсылка сообщений. Делегаты. GCD. Переиспользование ячеек. View. Контроллеры. Модель.

Android: Интерфейсы. Абстрактные классы. Внутренние классы. Шаблонные классы. GC. Модификаторы доступа. Рефлексия. Boxing/unboxing. Activity. Fragment. View. Adapter. Intent.


Знакомо? Тогда нам по пути.
Половина стажировки будет посвящена лекциям и семинарам, а вторая пройдет с упором на практическое применение полученных знаний. Обратите внимание, что мы сформируем две группы: iOS и Android, но при желании вы сможете ходить на лекции параллельного потока.

Стажировка не оплачивается. Лучшие стажеры будут приглашены на постоянную работу.

Как записаться?


Заполнить анкету до 23 декабря — мы выйдем на связь в течение двух недель.
Проведем эту зиму вместе — будет холодно интересно :)

Комментарии (17)


  1. Lovesuper
    15.12.2015 15:47
    +1

    MVPM – что? Это вы сами придумали?


    1. BepTep
      15.12.2015 16:07
      +7

      Идея принадлежит Мартину Фаулеру, см. Presentation Model. MVPM — интерпретация этой идеи применительно к iOS SDK.


      1. Lovesuper
        15.12.2015 16:17

        Мартин пишет,

        As such this material is very much in draft form and I won’t be doing any corrections or updates until I’m able to find time to work on it again.

        Действительно выказываю почтение тем, кто докопался до насалфетных набросков Фаулера. Интересно, намного это полезней того же MVVM в разработке под iOS, например?


        1. i_user
          15.12.2015 18:51

          Учитывая то, что мне пока ни разу не довелось натыкаться на не то что одинаковые интерпретации MVVM в разных проектах, но даже и MVC — то вполне могут оказаться полезными знаниями (ну или на самом деле очередной интепретацией MVVM :-) ) )


        1. BepTep
          15.12.2015 20:06
          +1

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

          Набор классов iOS SDK физически разделяет пользовательские истории на экраны, предоставляя логическую единицу в виде наследников UIViewController. Учитывая подобный подход, мы получаем возможность применения различных шаблонов (MVC, MVP, MVVM, MVPM) в рамках одного и того же приложения. Один экран = один шаблон в самом абсурдном случае.

          Следует понимать, что, с одной стороны, программная логика в рамках экрана может потребовать разделения. Выделения сущностей, посвящённых той или иной ответственности.
          С другой стороны, MVPM и MVVM (как и вообще любой шаблон проектирования) предполагают изначальный overhead по коду; MVPM и MVVM физически сложнее MVC и MVP.

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

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

          Внимание, викторина: какой из шаблонов где следует применять? (-:


          1. Sp0tted_0wl
            15.12.2015 20:59

            Все эти экраны, так или иначе можно уложить в MVP или MVVM (при условии, что он two-way).


  1. kozhevnikovv
    15.12.2015 16:20
    +1

    Только для жителей и гостей столицы? Или возможно удаленное посещение?


    1. redmadrobot
      15.12.2015 17:06

      К сожалению, удаленное посещение невозмжно. Стажировка очная в московском офисе Redmadrobot.


      1. Zanael
        16.12.2015 01:21

        Прошу прощения за вопрос — что вы вкладываете в понятие «лучшие стажеры»? Это активные (интересующиеся) / отвечающие на семинарах / хорошо программирующие / хорошо сделавшие итоговое задание / коммуникабельные / красивые /…?
        Интересны критерии оценки потенциальных кандидатов.
        p.s. не подумайте что я тролль — к инициативе отношусь положительно.


        1. mc_murphy
          16.12.2015 18:47

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

          По итогам мы собираем все в одно место и принимаем решение по каждому кандидату. В общем, так же, как это бывает после собеседований, но более информированно.


  1. ad1Dima
    16.12.2015 08:22

    iOS9, Android 6 и другие знания, которые вам не скоро ещё пригодятся.
    *это не в претензию, это сожаление о медленной скорости обновления устройств*


    1. Mikhail_dev
      16.12.2015 11:53

      А что значит не скоро пригодятся? В Android 6 появилась новая модель управления разрешениями, которую стоит учитывать вот прямщас, потому что всё равно все придут к Android 6, пусть в течение 3 или 4 лет. Забить на краши новой версии или вообще выбросить из головы мысли о том, что приложение будет жить более года, как-то неверно.
      Android 6 нужно изучать уже, несмотря на то что дашборд показывает долю в 0.5 процента.


      1. ad1Dima
        16.12.2015 12:33

        Да понятно, что надо учитывать последние версии OS. В android они через время новые фичи хотя бы бекпортируют.

        Вот с iOS — беда. Ну добавили они контрол. На старых осях его как не было, так и нет.


        1. mc_murphy
          16.12.2015 18:32

          Боль ваша, конечно, понятна. Но не все новинки бесполезны: например, всякие фишки типа force touch и quick actions можно спокойно встраивать уже сейчас, новые фичи по безопасности придется учитывать всем (иначе iOS 9 просто заблокирует доступ к ресурсам), работать с iPad multitasking и iPad Pro приходится уже какое-то время. Самое большое разочарование, наверное, это UIStackView, но мы пользуемся ORStackView без особых проблем.

          В общем, тут есть много того, о чем нужно поговорить.


    1. Palomnik
      16.12.2015 18:37

      iOS 9 = 71% спустя ровно три месяца после выхода
      developer.apple.com/support/app-store

      Куда уж быстрее?

      С андроид не так шустро, конечно, это да.


  1. Mikhail_dev
    16.12.2015 11:55

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


    1. mc_murphy
      16.12.2015 18:42

      Да, стажировка продлится около полутора месяцев.
      Вечернее время мы спланировали так, чтобы можно было успевать с работы (18:30–19:00), но и заканчивать не поздней ночью (20:30–21:00). Это еще будет более точно скорректировано перед стартом для максимального удобства.