Привет, Хабр! Мы открываем набор на вторую стажировку для разработчиков в 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)
kozhevnikovv
15.12.2015 16:20+1Только для жителей и гостей столицы? Или возможно удаленное посещение?
redmadrobot
15.12.2015 17:06К сожалению, удаленное посещение невозмжно. Стажировка очная в московском офисе Redmadrobot.
Zanael
16.12.2015 01:21Прошу прощения за вопрос — что вы вкладываете в понятие «лучшие стажеры»? Это активные (интересующиеся) / отвечающие на семинарах / хорошо программирующие / хорошо сделавшие итоговое задание / коммуникабельные /
красивые/…?
Интересны критерии оценки потенциальных кандидатов.
p.s. не подумайте что я тролль — к инициативе отношусь положительно.mc_murphy
16.12.2015 18:47Есть набор формальных критериев (качество выполнения заданий, результаты проверок на лекциях и пр.) и неформальных (скорость роста, усердие и внимательность, формулировка и состав вопросов, коммуникация).
По итогам мы собираем все в одно место и принимаем решение по каждому кандидату. В общем, так же, как это бывает после собеседований, но более информированно.
ad1Dima
16.12.2015 08:22iOS9, Android 6 и другие знания, которые вам не скоро ещё пригодятся.
*это не в претензию, это сожаление о медленной скорости обновления устройств*Mikhail_dev
16.12.2015 11:53А что значит не скоро пригодятся? В Android 6 появилась новая модель управления разрешениями, которую стоит учитывать вот прямщас, потому что всё равно все придут к Android 6, пусть в течение 3 или 4 лет. Забить на краши новой версии или вообще выбросить из головы мысли о том, что приложение будет жить более года, как-то неверно.
Android 6 нужно изучать уже, несмотря на то что дашборд показывает долю в 0.5 процента.ad1Dima
16.12.2015 12:33Да понятно, что надо учитывать последние версии OS. В android они через время новые фичи хотя бы бекпортируют.
Вот с iOS — беда. Ну добавили они контрол. На старых осях его как не было, так и нет.mc_murphy
16.12.2015 18:32Боль ваша, конечно, понятна. Но не все новинки бесполезны: например, всякие фишки типа force touch и quick actions можно спокойно встраивать уже сейчас, новые фичи по безопасности придется учитывать всем (иначе iOS 9 просто заблокирует доступ к ресурсам), работать с iPad multitasking и iPad Pro приходится уже какое-то время. Самое большое разочарование, наверное, это UIStackView, но мы пользуемся ORStackView без особых проблем.
В общем, тут есть много того, о чем нужно поговорить.
Palomnik
16.12.2015 18:37iOS 9 = 71% спустя ровно три месяца после выхода
developer.apple.com/support/app-store
Куда уж быстрее?
С андроид не так шустро, конечно, это да.
Mikhail_dev
16.12.2015 11:55Подскажите, в течение какого времени будет стажировка? Вы пишете что это зима. Т.е. полтора месяца? И еще: в вечернее время, это во сколько?
mc_murphy
16.12.2015 18:42Да, стажировка продлится около полутора месяцев.
Вечернее время мы спланировали так, чтобы можно было успевать с работы (18:30–19:00), но и заканчивать не поздней ночью (20:30–21:00). Это еще будет более точно скорректировано перед стартом для максимального удобства.
Lovesuper
MVPM – что? Это вы сами придумали?
BepTep
Идея принадлежит Мартину Фаулеру, см. Presentation Model. MVPM — интерпретация этой идеи применительно к iOS SDK.
Lovesuper
Мартин пишет,
Действительно выказываю почтение тем, кто докопался до насалфетных набросков Фаулера. Интересно, намного это полезней того же MVVM в разработке под iOS, например?
i_user
Учитывая то, что мне пока ни разу не довелось натыкаться на не то что одинаковые интерпретации MVVM в разных проектах, но даже и MVC — то вполне могут оказаться полезными знаниями (ну или на самом деле очередной интепретацией MVVM :-) ) )
BepTep
Я бы не стал говорить, что MVPM может быть полезней MVVM.
Я бы сказал, что каждый из этих шаблонов может быть более уместен в тех или иных условиях.
Набор классов iOS SDK физически разделяет пользовательские истории на экраны, предоставляя логическую единицу в виде наследников UIViewController. Учитывая подобный подход, мы получаем возможность применения различных шаблонов (MVC, MVP, MVVM, MVPM) в рамках одного и того же приложения. Один экран = один шаблон в самом абсурдном случае.
Следует понимать, что, с одной стороны, программная логика в рамках экрана может потребовать разделения. Выделения сущностей, посвящённых той или иной ответственности.
С другой стороны, MVPM и MVVM (как и вообще любой шаблон проектирования) предполагают изначальный overhead по коду; MVPM и MVVM физически сложнее MVC и MVP.
Таким образом, там, где это действительно необходимо, может быть применен MVPM.
В большинстве случаев не стоит делать предварительной оптимизации, и городить сущности ради конвенции.
В качестве примера могу привести три граничных случая.
Первый: классический экран авторизации с логином и паролем.
Второй: экран с таблицей, выводящей набор модельных сущностей посредством типичных ячеек.
Третий: экран с таблицей, содержащей набор полей ввода, значения которых могут влиять друг на друга.
Внимание, викторина: какой из шаблонов где следует применять? (-:
Sp0tted_0wl
Все эти экраны, так или иначе можно уложить в MVP или MVVM (при условии, что он two-way).