8.74M
Category: advertisingadvertising

Стажировки и образовательные проекты. 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 Research
19/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
English     Русский Rules