В 2012 году трое руководителей разработки, включая меня, решились на авантюру по созданию собственного образовательного проекта. Так появилась Школа разработки интерфейсов. Спустя девять лет и одну пандемию проект живёт, и сегодня я с радостью приглашаю вас в ШРИ 2021. Но тут же должен оговориться: на Хабре я выступаю рупором для ещё нескольких моих коллег, которые курируют школы по своим направлениям. В Школе мобильной разработки будем обучать специалистов по iOS и Android — за это направление отвечает Илья Богин bryunyon, руководитель разработки приложения Яндекс и мобильного Браузера. Школа бэкенда ориентирована в основном на Python, ей заведует Александр Кошелев daevaorn (в Яндексе Саша руководит созданием сервисов для организаций). За Школу дизайна отвечают сразу трое тимлидов — Денис Мосин, Илья Александров и Дима Быков comajumper.



У Яндекса и у меня лично уже был опыт одновременного проведения школ для нескольких специализаций. Возможно, кто-то помнит проект «Мобилизация» 2016-2017 года: тогда тоже запускались сразу четыре школы. Да и в последние годы мы часто объединяли студентов разных направлений в команды для сдачи выпускного проекта. Эта базовая конфигурация сохранится: в первой половине обучения (она же — первая половина лета-2021) будут лекции, семинары и небольшая практика в каждой из школ отдельно, а затем все студенты соберутся в команды, чтобы делать совместный продакшен-проект. В любой команде будет бэкенд-разработчик, дизайнер, а также фронтенд- или мобильный разработчик. Защиты проектов пройдут в самом конце августа.

Чтобы поступить, нужно заполнить анкету. 15 февраля мы опубликуем тестовое задание, ответы на которое будем принимать до 29 марта (возможно, продлим срок на неделю — в зависимости от числа желающих). Вот какие знания нужны для учёбы:

Школа разработки интерфейсов

Нужно знать HTML, CSS и JavaScript и иметь опыт разработки интерфейсов — подойдет даже небольшой.

Полезные ссылки для изучения
Книги
— Кит Грант — CSS для профи
— Николас Закас — JavaScript для профессиональных веб-разработчиков
— Николас Закас — ECMAScript 6 для разработчиков
— Кайл Симпсон — Вы не знаете JavaScript
— Роберт Мартин — Идеальный программист
— Пассиг Катрин, Яндер Йоханнес — Программирование без дураков

Два мощных ресурса про верстку и JavaScript: WebReference и Современный учебник JavaScript

Курсы на Scrimba
Learn Flexbox
Learn CSS Grid
Learn CSS Variables
Learn CSS Animations
Introduction to ES6+
Learn modern JavaScript
Introduction to TypeScript
Learn React
Learn React Hooks

Курсы на Udacity
Linux Command Line Basics
Networking for Web Developers
Software Testing
Web Tooling & Automation
Website Performance Optimization
Browser Rendering Optimization
Responsive Web Design Fundamentals
Responsive Images
Intro to Progressive Web Apps
Offline Web Applications

Видеоматериалы
Предыдущая ШРИ
Канал Академии Яндекса

Попробовать себя в решении задач можно на CodeSignal и Codewars.

Школа мобильной разработки

iOS-разработчикам нужно иметь базовые знания Swift. Для Android важен начальный опыт написания мобильных приложений на Java или Kotlin. Опыт программирования на других языках и знание алгоритмов будет плюсом для обоих направлений.

Ссылки
Android

Полезные сайты
Документация
Android Weekly
Fragmented Podcast
Официальный сайт Kotlin
Android Development CodeLabs
Официальный блог разработчиков Android

Книги
— Joshua Bloch — Effective Java
— Marcin Moskala — Effective Kotlin. Best practices
— Brian Goetz — Java Concurrency in Practice
— Dmitry Jemerov, Svetlana Isakova — Kotlin in Action
— The Busy Coder's Guide to Android Development (справочник на все случаи жизни)

Курсы
— Stepik:
Java. Базовый курс
— Udacity:
Developing Android Apps
Android Basics: User Interface
Developing Android Apps
— Udemy:
Become an Android Developer from Scratch
— Coursera:
Android App Development Specialization

Видеоматериалы
Предыдущая Школа мобильной разработки
Официальный YouTube-канал разработчиков
Курс Computer Science Center по Kotlin
Android Academy Global
Android Broadcast

iOS

Полезные сайты
Документация
NSHipster
Блог Swift Programming на Medium
Блог мобильных Яндекс.Карт на Medium
31 ссылка для тех, кто хочет освоить iOS-разработку
Статьи по iOS и Swift на raywenderlich.com

Книги
— Нахавандипур Вандад — iOS. Приемы программирования
— Во Ханг — Оптимизация производительности для iOS
— App Development with Swift
The Swift Programming Language
SwiftBook

Курсы
— Coursera: iOS App Development with Swift Specialization
— Udacity: Intro to iOS App Development with Swift

Видеоматериалы
Видео из курса Яндекса по iOS-разработке на Stepic
Курс Стэнфорда по iOS 13 и SwiftUI
Курс Стэнфорда по iOS 11 и Swift 4
Codeforces

Полезные сайты для обеих платформ

Рефакторинг.Гуру
HackerRank
LeetCode

Школа бэкенд-разработки

Нужно знать основы Python, понимать, как приложения развёртываются на серверах, уметь делать запросы к базам данных и хотя бы на начальном уровне знать, как создаются веб-приложения.

Ссылки
Книги

— Марк Лутц — Изучаем Python

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

— Антонио Меле — Django 2 в примерах

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

— Если вы можете свободно читать профильную литературу на английском, то порекомендуем пару книг о разработке на основе тестов: Harry Percival — Test-Driven Development with Python; Kevin Harvey — Test-Driven Development with Django.

— Тони Гэддис — Начинаем программировать на Python

Видеоматериалы

Лекции Тимофея Хирьянова по алгоритмам

Тимофей — один из преподавателей МФТИ. Лекций по алгоритмам множество, но эти наглядные. Особенно полезны для новичков, но и разработчику с опытом тоже пригодятся.

Видеокурс Школы бэкенд-разработки 2019

Посты из Академии Яндекса
Python для SRE-инженеров и тех, кто хочет ими стать
Объектно-ориентированное программирование на Python: с чего начать?
Что точно стоит почитать начинающему Python-разработчику — вне зависимости от сферы?
Язык Python и интерпретатор СPython

Другое
Специализация по алгоритмам и структурам данных
Гайд по разработке бэкенд-сервисов на Python на примере прошлого вступительного задания
Документация Python 3.9.1
Классная вводная статья о параллелизме
О разных типы параллелизма в Go (с гифками)
Ответ на то, зачем использовать nginx и Gunicorn
О Docker
Полный пример того, как задеплоить ML-приложение
— И ещё много материалов здесь и здесь

Школа дизайна

У Школы есть два направления — дизайн продукта и дизайн коммуникаций. Для поступления в школу продуктового дизайна нужно уметь работать в Figma и иметь хотя бы небольшой опыт в дизайне мобильных приложений или сайтов. Умение собирать динамические прототипы и работать с компонентами будет преимуществом.

Тем, кто хочет заниматься коммуникационным дизайном, понадобится опыт работы в Figma, Photoshop или Illustrator либо навык быстро осваивать новый софт. Опыт работы с брендом и понимание разных каналов коммуникации будут плюсом.

Ссылки
Книги для продуктового дизайнера
— Илья Бирман — Пользовательский интерфейс
— Дональд Норман — Дизайн привычных вещей
— Эд Кэтмелл — Корпорация гениев. Как управлять командой творческих людей
— Адам Ватан, Стив Шогер — Рефакторинг пользовательского интерфейса
— Тим Браун — Дизайн-мышление в бизнесе
— Алан Купер — Об интерфейсе
— Кимберли Элам — Графический дизайн. Принцип сетки

Книги для дизайнера коммуникаций
— Майкл Джанда — Сожги свое портфолио! То, чему не учат в дизайнерских школах
— Вилли Кунц — Типографика: макро- и микроэстетика
— Юрий Гордон — Книги про буквы от Аа до Яя
— Пол Рэнд — Дизайн: форма и хаос
— Все книги Эдварда Тафти
— Ян Чихольд — Облик книги
— Эмиль Рудер — Типографика
— Джим Кэмп — Сначала скажите «нет»
— Дмитрий Чернышёв — Как люди думают
— Артемий Лебедев — Ководство

Полезные сайты
— Подобрать сочетающиеся шрифты — Fontjoy
— Найти бесплатные иконки — Flaticon
— Подобрать цветовую гамму — Coolors
— Распознать и скачать понравившийся шрифт — Font Squirrel
— Вдохновиться примерами чужих логотипов — Logobook
— Создать инфографику — Infogram
— Попробовать себя в прототипировании — Figma

Полезные статьи бюро Артёма Горбунова — про элементы и приёмы в дизайне
Текст
Якорные объекты
Точка, линия, прямоугольник
Внутреннее и внешнее
Отступы
Чередование ритма
Гомогенезация
Модульность

Видеоматериалы
Как проектировать интерфейсы для многомиллионной аудитории. Лекция Школы мобильного дизайна
Разбор тестового задания на стажировку 2019 года

Посмотрим, позволит ли обстановка провести все занятия в офлайне в московском офисе. Если нет — будем встречаться удалённо (возможно — с переходом в офлайн ближе к осени). Студентам из других городов оплатим переезд и проживание.

Я всегда говорил, что ШРИ и другие школы позволяют получить опыт промышленной разработки, релевантный для большой компании. С четырьмя потоками одновременно и богатым набором навыком в студенческих командах будет ещё круче. Желаю вам удачи!