🔥

Тред #3


День 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