День 3
До Kotlin, продуктом для меня было то, что имеет кнопочки или что-то что можно потрогать.
О том как менялось моё восприятие когда я въезжал в Kotlin и почему компилятор (и не только) — это отдельный продукт.
Погнали 🏎️
Начну со своего определения продукта — услуга, сервис или товар, который на достаточном уровне решает проблему пользователя, за решение которой он готов и может платить.
Всегда хотелось добавить сюда какую-то монетарную составляющую, но она зависит не только от продукта
Первый взгляд на Kotlin был очень туннельный: языковая конструкция — фича, их взаимодействие между собой — UC, а доступ к ним — UI/UX. То есть достаточно иметь дизайн языка и подсветку в IDE.
И почти сразу как я начал работать я понял как же я ошибался. Но обо всём по порядку
Начал я с того, что должен был исследовать сегмент Andorid и понять есть ли блокеры для его принятия.
Тут пошли первые изменения в мозгу: аутсорсу дорого переучивать разработчиков, программы в ВУЗах чаще на java, junior выбирают ЗП, а не язык, и т.п.
То есть первая осознаночка: что у каждого свой контекст и свои проблемы, а значит и ценность язык несёт каждому свою.
Одна из проблем: недостаточное обоснование почему Kotlin. Тут щёлкнуло, что это про онбординг, про маркетинг, а значит funnel, который можно измерять и улучшать.
Чем глубже я уходил общаться с энтерпрайзом, тем лучше я понимал, насколько критичен для них опыт разработки: целые отделы, которые занимают тестированием библиотек перед их внедрением, оценкой работы технологии, тюнингом технологии конкретно под свои кейсы... в общем целый рынок
И в итоге они заинтересованы в улучшении каждого шага, а их много:
- Открытие проекта
- Отзывчивость IDE
- Удобство читать и писать код
- Гибкость и простота конфигурации проекта
- Скорость сборки
- Читаемость ошибок/логов
- Работа с VCS
- Навигация по коду
- Кастомизация IDE
...
У каждой из этих штук есть сценарии использования, которые вариативны от контекста компании.
Классные продукты уделяют много времени классному сервису. Например документация, или support, или такая глобальная вещь как community и экосистема.
Продукт не висит в воздухе. В случае с Kotlin, чтобы стать ценным, нужно закрыть звериную долю сценариев, и только тогда он начнёт жить.
Машина может быть сколько угодно быстрой, технологичной, красивой. Но если у неё постоянно спускает колесо, то поклонников буде не много
Другая моя проблема была привычка смотреть на revenue. Я как-то привык подвязывать свою работу на активных пользователей, сегментировать по типу подписки, стараться привязать это к деньгам.
А тут open source продукт + и вопрос: сколько денег принесли trailing commas. Ну вот как?
В какой-то момент ко мне пришла кажется очень простая и при этом полная мысль: "чтобы понять продукт и его роль нужно понять его пользователей."
Через понимание сегментов мне стала видна роль каждой подсистемы в Kotlin, а так же влияние языка на программирование во всём мире
Я бы сказал, что эта мысль стала для меня моментом активации и я по-новому открыл для себя этот большой и красивый мир разработки софта, полный интересных людей и сложных задач.
Финал
Компилятор — штука, которая исходники переводит на язык исполняемой среды. Если у вас есть среда, которая умеет что-то, что изначально язык не предполагал, то можно написать плагин к компилятору. И когда будет встречаться специфичный код, то этот плагин начнёт работать.
И да, в мире есть ребята, которые хакают исполняемую среду под себя и бывает, что хотят нормально общаться с этими хаками. Поэтому они хотят расширять компилятор через плагины. Так что вполне себе сегмент и с большими проблемами.
Вот как это сделал Google d.android.com/jetpack/compose