Similar presentations:
Стажировки и образовательные проекты. JetBrains
1.
Стажировкии образовательные
проекты
—
2.
JetBrains сегодня—
...
10 000 000+
700+
5 800 000+
...
99
успешной работы
высококлассных
разработчиков
продуктов
пользователей по всему миру
пользователей Kotlin
из Fortune 100 компаний
...
офисов
в Санкт-Петербурге,
Москве и других городах
3.
JetBrains сегодня—
21
10 000 000+
700+
5 800 000+
30
99
год успешной работы
высококлассных
разработчиков
продуктов
пользователей по всему миру
пользователей Kotlin
из Fortune 100 компаний
9
офисов
в Санкт-Петербурге,
Москве,
Новосибирске,
Праге,
Мюнхене,
Амстердаме,
Бостоне
и Фостер Сити
4.
JetBrains сегодня—
5.
JetBrains сегодня—
6.
Образовательные продукты JetBrains—
проектно-ориентированная
обучающая платформа
бесплатные и опенсорсные
образовательные IDE
совместим с IntelliJ IDEA,
PyCharm, WebStorm, CLion,
GoLand, и Android Studio
7.
Образование: полезные ссылки—
jetbrains.com/edu-products
— Все образовательные продукты
jb.gg/academy/student_offer
— Бесплатный триал JetBrains Academy
compscicenter.ru
— Обучение в Computer Science Center
research.jetbrains.org
— Лаборатории JetBrains Research
jb.gg/student
— Бесплатные студенческие лицензии
lp.jetbrains.com/internships/
— Лэндинг с примерами стажерских проектов
8.
Стажировки: как они устроены?—
● Индивидуальный интересный вам проект
● Для студентов / учащихся CSC
● Улучшение инструментов разработчика
● Погружение
в жизньинтересный
команды вам проект
Индивидуальный
● Обучение и cамостоятельность
● Улучшение инструментов разработчика
● Результат
● Погружение в жизнь команды
● Обучение и cамостоятельность
● Результат
9.
Стажировки: треки—
Разработчики
Исследователи
Тестеры
Продакт-менеджмент
Маркетниг
Дизайн
HR
Юристы
...
10.
Стажировки: конкурс—
Этап 1
Этап 2
Этап 3
Этап 4
Заполнение
профиля
в приложении
internship.
jetbrains.com
Выполнение
тестовых заданий:
2 недели
Собеседование
с ментором проекта
Стажировка!
11.
Стажировки: что важно при подаче заявки?—
● Срочный трудовой договор / стипендия
● Подробно заполнить профиль
● Техника (при необходимости)
● Внимательно изучить описание проектов
● Фултайм, свободный рабочий график
https://internship.jetbrains.com/seasons/?tab=archive
● Участие
во внутренних ивентах компании
● Почитать про продукты/лаборатории
● Вовремя засабмиттить тестовое задание
● Подготовиться к собеседованию
● Не бояться!
12.
13.
Как было прошлым летом—
● Более 2000 заявок
● 232 стажировки для разработчиков,
тестеров, научных исследователей,
маркетологов, продакт-менеджеров,
дизайнеров, эйчаров и юристов
● Удалённый формат
14.
Как будет этим летом?—
середина марта
апрель — май
июль — август
Публикация
проектов
internship.jetbrains.com
3 проекта, 2 этапа:
- Тестовое задание
- Собеседование
Стажировка
в удаленном формате
15.
Спасибо за внимание!—
Веб-приложение
internship.jetbrains.com
Задавайте вопросы
[email protected]
Следите за новостями
vk.com/jetbrains4students
16.
Зачем ML в SE?Что мы делаем в лаборатории ML4SE
Егор Богомолов
Лаборатория ML4SE @ JetBrains Research
@ebogomolov, [email protected]
17.
Немного обо мне● Учился в Академическом Университете (1-3
курс), затем в НИУ ВШЭ (4-6 курс), продолжил
обучение в аспирантуре
● Пробовал себя в биоинформатике, мобильной
разработке, участвовал в олимпиадах
● С 2017 года начал проходить практики,
стажироваться, и затем работать в лаборатории
ML4SE JetBrains Research
● Преподаю ML для школьников в ФТШ и 239
17/35
18.
О чем мы будем говорить?● JetBrains Research и лаборатория ML4SE
● Зачем машинное обучение программистам?
● Что особенного в ML4SE?
● Какими проектами мы занимаемся?
● Практики, стажировки, приходите!
18/35
19.
JetBrains Research19/35
20.
ML4SE Lab** Лаборатория “Методов машинного обучения в
области программной инженерии”
● ~20 исследователей
● 20+ публикаций на конференциях CORE A/A*
● Работа с продуктовыми командами JetBrains
● Ежегодные летние стажировки, осенние и
весенние практики для студентов
Страница лаборатории
20/35
21.
Машинное обучениеРаспознавание изображений
Автоматический перевод
Распознавание речи
Рекомендательные системы
Персональные ассистенты
Автопилоты
…
21/35
22.
Машинное обучение в SE-
Зачем?
Помогать разработчикам!
Разработчикам нужны инструменты:
IDE
CI / CD
Отслеживание issue
Общение внутри команд
…
22/35
23.
На каких этапах разработки поможет ML?● Написание кода:
● Улучшение структуры кода и читаемости:
● Отладка:
● Поддержка проекта:
23/35
24.
На каких этапах разработки поможет ML?● Написание кода: автодополнение, генерация фрагментов кода, поиск
● Улучшение структуры кода и читаемости:
● Отладка:
● Поддержка проекта:
24/35
25.
На каких этапах разработки поможет ML?● Написание кода: автодополнение, генерация фрагментов кода, поиск
● Улучшение структуры кода и читаемости: генерация комментариев,
описаний к коммитам, рекомендация рефакторингов, переименований
● Отладка:
● Поддержка проекта:
25/35
26.
На каких этапах разработки поможет ML?● Написание кода: автодополнение, генерация фрагментов кода, поиск
● Улучшение структуры кода и читаемости: генерация комментариев,
описаний к коммитам, рекомендация рефакторингов, переименований
● Отладка: поиск ошибок, автоматическое исправление ошибок,
улучшение статического анализа
● Поддержка проекта:
26/35
27.
На каких этапах разработки поможет ML?● Написание кода: автодополнение, генерация фрагментов кода, поиск
● Улучшение структуры кода и читаемости: генерация комментариев,
описаний к коммитам, рекомендация рефакторингов, переименований
● Отладка: поиск ошибок, автоматическое исправление ошибок,
улучшение статического анализа
● Поддержка проекта: поиск дубликатов сообщений об ошибках,
назначение программистов для их решения
27/35
28.
Особенности ML4SE● Код это не то же самое, что и текст
● Доступная информация – это не только код
● Программисты – довольно придирчивая аудитория
● Решения должны интегрироваться в сложные инструменты
● Данных как будто много (200M+ репозиториев на GitHub), но зачастую
собрать новые данные сложно
28/35
29.
Особенности ML4SE= Plain text
+ Syntax tree
+ Data flow
+ Control flow
+ ...
29/35
30.
Какие методы применяются?● Классический ML
● Все что есть в NLP
● Модификации моделей из NLP
для учета особенностей кода
● Графовые нейронные сети
● Кодо-специфичные модели
30/35
31.
Использование ML4SE моделей1. Сбор исторических данных
2. Оффлайн-эксперименты
3. Обучение хорошей модели
4. Интеграция в плагин
5. Тестирование на пользователях
6. Передача плагина в продуктовые
команды
31/35
32.
Использование ML4SE моделей1. Сбор исторических данных
Требуется извлекать информацию из кода,
системы контроля версий, сборок проекта, ...
2. Оффлайн-эксперименты
3. Обучение хорошей модели
4. Интеграция в плагин
5. Тестирование на пользователях
6. Передача плагина в продуктовые
команды
32/35
33.
Майнинг данных из кодаМы разрабатываем инструменты
для получения данных из кода.
Какие возникают трудности?
● Обработка (десятков) тысяч
проектов за разумное время
● Как получить больше
информации используя IDE?
● Как автоматически открывать
проекты?
GitHub:
PsiMiner
GitHub: AstMiner
33/35
34.
Использование ML4SE моделей1. Сбор исторических данных
2. Оффлайн-эксперименты
3. Обучение хорошей модели
Улучшение подходов к обучению, разработка
моделей, улучшение процесса тестирования
4. Интеграция в плагин
5. Тестирование на пользователях
6. Передача плагина в продуктовые
команды
34/35
35.
Обучение и тестирование моделей● Дообучение моделей для работы с конкретными проектами
● Анализ метрик для оценки качества генерации кода
● Сравнение различных оптимизаторов в задачах SE
● Использование гиперболических эмбеддингов для работы с кодом
35/35
36.
Дообучение моделей для конкретного проекта36/35
37.
Использование ML4SE моделей1. Сбор исторических данных
2. Оффлайн-эксперименты
3. Обучение хорошей модели
4. Интеграция в плагин
Требуется запускать модели на JVM, при
этом эффективно по времени и памяти
5. Тестирование на пользователях
6. Передача плагина в продуктовые
команды
37/35
38.
Запуск моделей в плагинахKInference: библиотека для запуска сложных
ML-моделей на чистом Kotlin
● Поддерживает модели, сериализованные
через ONNX
● Уже используется с Transformer-based
нейросетями (BERT, GPT) и CatBoost
● Опережает аналоги по скорости
● Получает все плюсы Kotlin-Multiplatform
GitHub: KInference
38/35
39.
Использование ML4SE моделей1. Сбор исторических данных
2. Оффлайн-эксперименты
3. Обучение хорошей модели
4. Интеграция в плагин
5. Тестирование на пользователях
6. Передача плагина в продуктовые
команды
Готовые решения оборачиваются в плагины
для IDE и других продуктов JetBrains, а затем
отправляются коллегам или пользователям
39/35
40.
Практические применения● Предложение имен методов и переменных
● Рекомендация рефакторингов
● Определение устаревших комментариев
● Определение типов переменных в Python
● Поиск ошибок в коде
● Автоматическое исправление ошибок
● Автодополнение сообщений к коммитам
40/35
41.
IRen: предложение имен переменныхПлагин модифицирует стандартный рефакторинг, добавляя
имена переменных на основе данных из текущего проекта
41/35
42.
IntelliJDeodorant: рекомендация рефакторинговGitHub:
IntelliJDeodorant
42/35
43.
Спин-офф: large-scale анализ кода● Поиск аномалий в коде на Kotlin
● Поиск паттернов в изменениях кода на Python
● Поиск паттернов в миграции типов
● Определение запахов в тестах на Python
● Изучение копирования и лицензирования кода на GitHub
● Анализ Jupyter ноутбуков на GitHub
● Анализ применения рефакторингов программистами
43/35
44.
Revizor: паттерны в изменениях кодаGitHub: Revizor
44/35
45.
Исследование лицензирования кодаViolation types
Most violated licenses
Most violating licenses
45/35
46.
Спин-офф: и не только ML!GitHub: Reflekt
GitHub: Kotless
GitHub: Hyperstyle
46/35
47.
Практики и стажировкиМы проводим:
● Стажировки – лето
● Практики – осень и весна
Процедура отбора:
● Выбор интересных проектов
● Тестовое задание
● Короткий звонок-знакомство
47/35
48.
Практики и стажировки● Стажировки – фулл-тайм, 2
месяца
● Практики – работа над НИРами,
курсовыми, дипломами
● Чаще всего проекты предполагают
продолжение на несколько
семестров
● Предполагаемый итог проекта –
публикации, конференции,
готовые инструменты
48/35
49.
Еженедельные семинарыКаждый понедельник у нас
проходит семинар или встреча
читательского клуба
Разборы статей по теме ML4SE и
рассказы о наших проектах
Записи доступны на YouTube
○
https://tinyurl.com/ml4se-seminar
Ссылки для записи
○
○
https://t.me/jetbrains_research
https://groups.google.com/forum/#!forum/jb
-ml-seminars/join
49/35
50.
Больше о наших проектахML4SE conference, day 1
ML4SE conference, day 2
Страница лаборатории
50/35