В январе этого года я заинтересовался темой написания кода силами ChatGPT. Начинал с того, что с его помощью ускорял написание кода небольших бекендов, крутящихся в AWS Lambda. Это задача, которую я регулярно решал вручную, но так как я ненастоящий программист (в смысле, не занимаюсь написанием кода большую часть рабочего времени), то тратил на это довольно много времени. В таком сценарии ChatGPT выступал для меня очень быстрым junior-разработчиком, что сильно ускоряло реализацию, хотя и добавляло этапов с глупыми ошибками по пути.
Со временем я понял, что количество глупых ошибок можно уменьшить, если сначала попросить AI-ассистента задать мне вопросы, ответы на которые ему нужны, чтобы описать требования к тому, что я хочу сделать. Ну и, соответственно, описать эти самые требования.
Но недавно попробовал с его помощью сделать совсем новую для себя штуку — написать небольшое Android-приложение. Весь мой опыт работы в Android Studio до этого сводился ровно к одной вещи — подготовке и проведению воркшопа по сбору крэшей при помощи AppMetrica. А приложение, которое хотелось написать, должно было логировать данные с датчиков телефона с максимальной частотой. И, к моему удивлению, на это мне хватило пары вечеров будних дней (часа по два) и нескольких субботних часов. Т.е. спустя примерно 8 часов взаимодействия с ChatGPT я смог закинуть собранную APK-шку на свой телефон, запустить приложение, нажать на кнопку, убрать телефон в карман и спустя 15 минут посмотреть на лог данных датчиков (акселерометра, гироскопа и магнитометра), записанный за время заезда в картинге.
Теперь передо мной стоит следующая задача, с которой я тоже не сказать, что много сталкивался — обработать этот лог и получить из него какую-то минимальную телеметрию заезда. Задача минимум — узнать время круга. И, да, если в Москве мне бы это показалось бессмысленным занятием, поскольку после заезда всегда можно посмотреть на распечатку своего заезда по кругам, то в нашем местном картинге в Пафосе узнать время своего лучшего круга — это уже большая удача.
Что из этого получится, узнаем через три недели. Почему через три? Потому что я решил провести эксперимент. Поддерживать бэклог проектов, которые мне было бы интересно реализовать, каждый месяц выбирать из них один (над конкретным принципом выбора я ещё думаю), формулировать гипотезу, которую хочется проверить, выделять MVP и смотреть, что с поддержкой ChatGPT получится реализовать за месяц. А через месяц груминг бэклога, переоценка проектов исходя из новых знаний за месяц и следующий проект.
О прогрессе в этом эксперименте буду рассказывать каждую неделю. Не переключайтесь ;)
#chatgpt_driven_development
Со временем я понял, что количество глупых ошибок можно уменьшить, если сначала попросить AI-ассистента задать мне вопросы, ответы на которые ему нужны, чтобы описать требования к тому, что я хочу сделать. Ну и, соответственно, описать эти самые требования.
Но недавно попробовал с его помощью сделать совсем новую для себя штуку — написать небольшое Android-приложение. Весь мой опыт работы в Android Studio до этого сводился ровно к одной вещи — подготовке и проведению воркшопа по сбору крэшей при помощи AppMetrica. А приложение, которое хотелось написать, должно было логировать данные с датчиков телефона с максимальной частотой. И, к моему удивлению, на это мне хватило пары вечеров будних дней (часа по два) и нескольких субботних часов. Т.е. спустя примерно 8 часов взаимодействия с ChatGPT я смог закинуть собранную APK-шку на свой телефон, запустить приложение, нажать на кнопку, убрать телефон в карман и спустя 15 минут посмотреть на лог данных датчиков (акселерометра, гироскопа и магнитометра), записанный за время заезда в картинге.
Теперь передо мной стоит следующая задача, с которой я тоже не сказать, что много сталкивался — обработать этот лог и получить из него какую-то минимальную телеметрию заезда. Задача минимум — узнать время круга. И, да, если в Москве мне бы это показалось бессмысленным занятием, поскольку после заезда всегда можно посмотреть на распечатку своего заезда по кругам, то в нашем местном картинге в Пафосе узнать время своего лучшего круга — это уже большая удача.
Что из этого получится, узнаем через три недели. Почему через три? Потому что я решил провести эксперимент. Поддерживать бэклог проектов, которые мне было бы интересно реализовать, каждый месяц выбирать из них один (над конкретным принципом выбора я ещё думаю), формулировать гипотезу, которую хочется проверить, выделять MVP и смотреть, что с поддержкой ChatGPT получится реализовать за месяц. А через месяц груминг бэклога, переоценка проектов исходя из новых знаний за месяц и следующий проект.
О прогрессе в этом эксперименте буду рассказывать каждую неделю. Не переключайтесь ;)
#chatgpt_driven_development
🔥16🦄7❤2👍1🤩1
Когда я размышлял о том, как же выбирать проекты для реализации силами ChatGPT, я осознал (не без помощи нескольких мудрых собеседников), что у меня есть три варианта мотивации для того, чтобы делать проекты в свободное от работы время:
- Я хочу быть тем человеком, который сделал такой проект.
- Я верю в финансовый успех проекта и хочу иметь в нём долю.
- Я верю, что могу быстро сделать такой проект (для кого-то) и получить в несколько раз больше денег за час своей работы, чем обычно.
Как вы уже, наверное, догадались, карманная телеметрия для картинга относится к первой категории. Поэтому основные моменты, которые я пытался оценить, прежде чем браться за него:
- Насколько сильно и как давно я хочу его сделать?
- Каким минимальным результатом я буду доволен?
- Насколько я верю, что за месяц смогу сделать MVP?
- Сколько новых вещей придётся изучить по дороге?
- Какие технические челленджи могут мне помешать?
Пойдём по порядку — от субъективного к менее субъективному.
Сделать проект с телеметрией для гонок я хочу очень давно. У меня были разные идеи того, что конкретно это могло бы быть, но именно в формате телеметрии для картинга этот проект крутится у меня в голове с тех пор, как я ходил в картинговую школу больше 10 лет назад.
Благодаря уровню телеметрии в ближайшем ко мне картинг-центре, планка минимального результата, которому я буду рад, сильно понизилась. Если раньше мне хотелось засунуть в телефон виртуального тренера, который будет мне подсказывать точки торможений и заходов в поворот, то теперь мне достаточно хотя бы просто времени круга.
Благодаря тому, что планочка минимального нужного результата упала, вероятность того, что такое можно сделать за месяц, резко возросла. Конечно, раньше тоже можно было бы сделать приложение, которое пытается понять твоё время круга, но никакой пользы (да и радости, скорее всего) оно бы не принесло, так как эта информация и так всегда была доступна.
Вот то, сколько всего нового придётся по дороге “потрогать”, меня немного смутило. Мой опыт и в разработке мобильных приложений, и в обработке данных ну совсем минимальный. С другой стороны, мне показалось, что это классная задачка для того, чтобы проверить, насколько опытный менеджер (тут и с мобилками, и с данными у меня всё в порядке) может взять себе в помощники ChatGPT и сделать всё в одиночку.
Ну и последнее — сколько и каких я вижу потенциальных технических проблем, которые могут мне помешать прийти к результату? Тут и по части мобилок, и по части данных у меня собрался целый набор, о котором, наверное, стоит поговорить отдельно. Возможно, даже после того, как что-то из этих опасений подтвердится (что-то уже), а что-то отпадёт.
#chatgpt_driven_development
- Я хочу быть тем человеком, который сделал такой проект.
- Я верю в финансовый успех проекта и хочу иметь в нём долю.
- Я верю, что могу быстро сделать такой проект (для кого-то) и получить в несколько раз больше денег за час своей работы, чем обычно.
Как вы уже, наверное, догадались, карманная телеметрия для картинга относится к первой категории. Поэтому основные моменты, которые я пытался оценить, прежде чем браться за него:
- Насколько сильно и как давно я хочу его сделать?
- Каким минимальным результатом я буду доволен?
- Насколько я верю, что за месяц смогу сделать MVP?
- Сколько новых вещей придётся изучить по дороге?
- Какие технические челленджи могут мне помешать?
Пойдём по порядку — от субъективного к менее субъективному.
Сделать проект с телеметрией для гонок я хочу очень давно. У меня были разные идеи того, что конкретно это могло бы быть, но именно в формате телеметрии для картинга этот проект крутится у меня в голове с тех пор, как я ходил в картинговую школу больше 10 лет назад.
Благодаря уровню телеметрии в ближайшем ко мне картинг-центре, планка минимального результата, которому я буду рад, сильно понизилась. Если раньше мне хотелось засунуть в телефон виртуального тренера, который будет мне подсказывать точки торможений и заходов в поворот, то теперь мне достаточно хотя бы просто времени круга.
Благодаря тому, что планочка минимального нужного результата упала, вероятность того, что такое можно сделать за месяц, резко возросла. Конечно, раньше тоже можно было бы сделать приложение, которое пытается понять твоё время круга, но никакой пользы (да и радости, скорее всего) оно бы не принесло, так как эта информация и так всегда была доступна.
Вот то, сколько всего нового придётся по дороге “потрогать”, меня немного смутило. Мой опыт и в разработке мобильных приложений, и в обработке данных ну совсем минимальный. С другой стороны, мне показалось, что это классная задачка для того, чтобы проверить, насколько опытный менеджер (тут и с мобилками, и с данными у меня всё в порядке) может взять себе в помощники ChatGPT и сделать всё в одиночку.
Ну и последнее — сколько и каких я вижу потенциальных технических проблем, которые могут мне помешать прийти к результату? Тут и по части мобилок, и по части данных у меня собрался целый набор, о котором, наверное, стоит поговорить отдельно. Возможно, даже после того, как что-то из этих опасений подтвердится (что-то уже), а что-то отпадёт.
#chatgpt_driven_development
🔥5❤3🤔2🦄2👍1
На прошлой неделе я рассказывал о том, какие проверочные вопросы у меня есть к проектам, которые я решил делать для себя (ну, в смысле, для портфолио, конечно). А сегодня хочу порассуждать о тех проектах, в которых я вижу потенциал для монетизации. Первое и, наверное, главное отличие — сначала надо найти человека, который тоже в этот потенциал монетизации поверит. Идеально, если это будет продакт, который пойдёт касдевить потенциальных клиентов, а ещё лучше, если продажник, который согласится продавать то, чего ещё нет. Но даже просто единомышленника, об которого можно обстучать идею и немного её причесать, может быть достаточно.
Следующее важное отличие — это то, что здесь я уже пытаюсь как-то прикинуть размер рынка и цену, которую человек готов заплатить за решение проблемы. Вот прямо сейчас, пока я вечерами дописываю код для картинговой телеметрии, по утрам я перекидываюсь с найденным единомышленником мыслями о том, как именно может выглядеть монетизация одного из проектов-кандидатов.
Кстати, если речь идёт о том, что результат должен быть достигнут за месяц, значит возможность купить пользователю надо дать хотя бы через 3 недели. Потому что дальше надо будет экспериментировать с источниками трафика, ценами и прочими штуками, влияющими на конверсию. Неделя, это, конечно, очень мало, но, надеюсь, хоть какие-то выводы за неё, наверное, можно будет сделать.
В остальном критерии те же самые — реализуемость, потенциальные блокеры, новые технологии. Но так как появляется ещё и критерий “монетизируемость”, во всём, что касается технологий, в этой категории проектов я должен сомневаться по-минимуму.
#chatgpt_driven_development
Следующее важное отличие — это то, что здесь я уже пытаюсь как-то прикинуть размер рынка и цену, которую человек готов заплатить за решение проблемы. Вот прямо сейчас, пока я вечерами дописываю код для картинговой телеметрии, по утрам я перекидываюсь с найденным единомышленником мыслями о том, как именно может выглядеть монетизация одного из проектов-кандидатов.
Кстати, если речь идёт о том, что результат должен быть достигнут за месяц, значит возможность купить пользователю надо дать хотя бы через 3 недели. Потому что дальше надо будет экспериментировать с источниками трафика, ценами и прочими штуками, влияющими на конверсию. Неделя, это, конечно, очень мало, но, надеюсь, хоть какие-то выводы за неё, наверное, можно будет сделать.
В остальном критерии те же самые — реализуемость, потенциальные блокеры, новые технологии. Но так как появляется ещё и критерий “монетизируемость”, во всём, что касается технологий, в этой категории проектов я должен сомневаться по-минимуму.
#chatgpt_driven_development
👍5❤2🤔2🔥1🦄1
Половина отведенного времени уже прошла, а у меня всё ещё нет никаких собранных в картинге данных. С этими мыслями началась третья неделя проекта по разработке приложения для сбора телеметрии. Я понимал, что если за эту неделю данных не появится, то научиться считать время круга за месяц, у меня уже вряд ли получится.
Из-за ограниченности времени по будням я решил тестировать работоспособность приложения в домашних условиях по-максимуму. Сначала просто ходил по дому с телефоном в кармане и выяснил, что ChatGPT мне кое-что не договорил про Foreground Service. Чтобы сбор данных действительно продолжался в фоновом режиме, надо было не просто создать сервис, а перенести в него всю логику сбора данных. Когда я начал переносить сбор данных в сервис, сломалось обновление списка сохраненных гонок. А ещё за время “домашних тестов” выяснилось, что через несколько минут приложение и сервис могут убиваться, как энергозатратные.
К выходным я пришёл с полностью разломанным приложением и списком проблем, о которых ChatGPT знал, но сам ничего не говорил. Мне даже стало казаться, что я работаю не с джуном из своей команды, а с аутсорсерами, которые все, что не сказано в требованиях, трактуют так, как им удобно. Но за субботу и половину воскресенья мы с ChatGPT объединили усилия и пофиксили все эти проблемы. В процессе тестирования я успел походить по дому, поездить на машине и даже навернуть несколько кругов по району на электросамокате. Приложение не вылетало ни через 10, ни через 15, ни даже через 20 минут. Осталось только доехать до картинга и записать 10 минут данных с датчиков, с которыми я буду работать в Google Colab на следующей неделе.
На тестовый заезд выбрался только вечером в воскресенье. Экипировался, запустил приложение, положил телефон в карман, проехал заезд, достал телефон из кармана и обнаружил, что сервис не запущен. До этого момента я был уверен, что каким бы образом ни завершалась работа фонового сервиса, он должен был записать файл с показаниями датчиков на диск. Запустил приложение и выяснил, что это не так и никаких данных не сохранилось.
Итог недели оказался смешанным: я узнал много нового про Foreground Service и взаимодействия через Intent в Android-приложениях, но насколько сильно продвинулся к цели — неясно. Впереди осталась одна неделя, за которую надо данные и собрать, и обработать. В успех уже не очень верится, потому что проанализировать данные с датчиков это отдельная большая задача. Но небольшая надежда на один красивый хак по вычислению времени круга, который не поможет в общем случае, но подходит конкретно для картинга в Пафосе, осталась. Если данные соберутся, с ним всё должно получиться очень просто.
#chatgpt_driven_development
Из-за ограниченности времени по будням я решил тестировать работоспособность приложения в домашних условиях по-максимуму. Сначала просто ходил по дому с телефоном в кармане и выяснил, что ChatGPT мне кое-что не договорил про Foreground Service. Чтобы сбор данных действительно продолжался в фоновом режиме, надо было не просто создать сервис, а перенести в него всю логику сбора данных. Когда я начал переносить сбор данных в сервис, сломалось обновление списка сохраненных гонок. А ещё за время “домашних тестов” выяснилось, что через несколько минут приложение и сервис могут убиваться, как энергозатратные.
К выходным я пришёл с полностью разломанным приложением и списком проблем, о которых ChatGPT знал, но сам ничего не говорил. Мне даже стало казаться, что я работаю не с джуном из своей команды, а с аутсорсерами, которые все, что не сказано в требованиях, трактуют так, как им удобно. Но за субботу и половину воскресенья мы с ChatGPT объединили усилия и пофиксили все эти проблемы. В процессе тестирования я успел походить по дому, поездить на машине и даже навернуть несколько кругов по району на электросамокате. Приложение не вылетало ни через 10, ни через 15, ни даже через 20 минут. Осталось только доехать до картинга и записать 10 минут данных с датчиков, с которыми я буду работать в Google Colab на следующей неделе.
На тестовый заезд выбрался только вечером в воскресенье. Экипировался, запустил приложение, положил телефон в карман, проехал заезд, достал телефон из кармана и обнаружил, что сервис не запущен. До этого момента я был уверен, что каким бы образом ни завершалась работа фонового сервиса, он должен был записать файл с показаниями датчиков на диск. Запустил приложение и выяснил, что это не так и никаких данных не сохранилось.
Итог недели оказался смешанным: я узнал много нового про Foreground Service и взаимодействия через Intent в Android-приложениях, но насколько сильно продвинулся к цели — неясно. Впереди осталась одна неделя, за которую надо данные и собрать, и обработать. В успех уже не очень верится, потому что проанализировать данные с датчиков это отдельная большая задача. Но небольшая надежда на один красивый хак по вычислению времени круга, который не поможет в общем случае, но подходит конкретно для картинга в Пафосе, осталась. Если данные соберутся, с ним всё должно получиться очень просто.
#chatgpt_driven_development
💔8⚡6👍4❤3👏1🦄1
Вот и закончилась решающая неделя, и можно подводить итоги проекта с картинговой телеметрией. Напомню, что к её началу я пришёл с приложением, которое пишет показания датчиков ровно до тех пор, пока я не приезжаю в картинг. И ещё идеей, как можно считерить, чтобы решить задачу подсчёта времени круга не в общем виде, а для конкретного картинга в Пафосе. Сегодня, выдохнув после этой финишной прямой, я решил, что следующие 7 дней посвящу размеренной рефлексии, так что итоги буду подводить постепенно.
Начну с рассказа про приложение. Если кратко, то по прошествии четырёх недель с начала разработки, приложение продолжало падать в картинге, но несмотря на это мне удалось собрать показания датчиков больше чем с 10 кругов. То есть минимальную задачу, поставленную перед приложением, мы с ChatGPT решили, но довольно странным путём.
Помните, я уже писал, что мой единственный до этого опыт разработки приложений на Андроиде был связан с проведением мастер-класса по сборке крэшей с помощью AppMetrica? Несмотря на это, мысль о том, что надо вставить крэш-аналитику в приложение, чтобы понять, как пофиксить проблему, пришла мне только в разговоре с другим посетителем картинга, когда я тестировал очередную новую версию.
А что я поменял в этой новой версии? Просто научился периодически дампить сохраненные с датчиков данные на диск. Мне снова пришлось порефакторить и попереносить логику из одной сущности в другую, но через несколько итераций общения с ChatGPT, мы добились того, что сервис в фоне пишет файлики раз в 30 секунд. Проверка новой версии приложения прошла относительно успешно и, несмотря на то, что оно всё ещё падало, у меня сохранялись данные датчиков с 5-6 кругов из каждого заезда.
Что хочется сказать про ChatGPT в контексте разработки приложения на Андроиде? Без бекграунда в управлении мобильной разработкой и обширного опыта проектирования разных приложений, я бы не справился с поставленной перед собой задачей. По сравнению с человеком без опыта у меня было два основные преимущества:
- Я знал какие вопросы ему задавать (И то не всегда. Привет, крэши!)
- Часто я мог исправить или заметить его ошибки самостоятельно
При этом второе не только фича, но и бага. Когда я сам правлю какие-то ошибки и не говорю об этом своему AI-помощнику, он теряет контекст. И следующий кусок кода, который он мне выдаст, не будет учитывать моих изменений. А значит мне либо снова придётся исправлять его код, либо придётся всё-таки рассказать о правках, которые я внёс. Пока не знаю, как эффективнее. Если бы речь шла про живого человека, я бы видел смысл в том, чтобы его поправлять, так как в следующий раз он сможет дальше продвинуться самостоятельно. А вот ChatGPT это не просто джун — это вечный джун! И поправляя его сегодня, ты не сделаешь его лучше для той задачи, которую нужно будет решать с нуля завтра.
#chatgpt_driven_development
Кстати, думаю о том, выкладывать ли код приложения на GitHub. Поставьте 👾, если вам интересно на него посмотреть.
Начну с рассказа про приложение. Если кратко, то по прошествии четырёх недель с начала разработки, приложение продолжало падать в картинге, но несмотря на это мне удалось собрать показания датчиков больше чем с 10 кругов. То есть минимальную задачу, поставленную перед приложением, мы с ChatGPT решили, но довольно странным путём.
Помните, я уже писал, что мой единственный до этого опыт разработки приложений на Андроиде был связан с проведением мастер-класса по сборке крэшей с помощью AppMetrica? Несмотря на это, мысль о том, что надо вставить крэш-аналитику в приложение, чтобы понять, как пофиксить проблему, пришла мне только в разговоре с другим посетителем картинга, когда я тестировал очередную новую версию.
А что я поменял в этой новой версии? Просто научился периодически дампить сохраненные с датчиков данные на диск. Мне снова пришлось порефакторить и попереносить логику из одной сущности в другую, но через несколько итераций общения с ChatGPT, мы добились того, что сервис в фоне пишет файлики раз в 30 секунд. Проверка новой версии приложения прошла относительно успешно и, несмотря на то, что оно всё ещё падало, у меня сохранялись данные датчиков с 5-6 кругов из каждого заезда.
Что хочется сказать про ChatGPT в контексте разработки приложения на Андроиде? Без бекграунда в управлении мобильной разработкой и обширного опыта проектирования разных приложений, я бы не справился с поставленной перед собой задачей. По сравнению с человеком без опыта у меня было два основные преимущества:
- Я знал какие вопросы ему задавать (И то не всегда. Привет, крэши!)
- Часто я мог исправить или заметить его ошибки самостоятельно
При этом второе не только фича, но и бага. Когда я сам правлю какие-то ошибки и не говорю об этом своему AI-помощнику, он теряет контекст. И следующий кусок кода, который он мне выдаст, не будет учитывать моих изменений. А значит мне либо снова придётся исправлять его код, либо придётся всё-таки рассказать о правках, которые я внёс. Пока не знаю, как эффективнее. Если бы речь шла про живого человека, я бы видел смысл в том, чтобы его поправлять, так как в следующий раз он сможет дальше продвинуться самостоятельно. А вот ChatGPT это не просто джун — это вечный джун! И поправляя его сегодня, ты не сделаешь его лучше для той задачи, которую нужно будет решать с нуля завтра.
#chatgpt_driven_development
Кстати, думаю о том, выкладывать ли код приложения на GitHub. Поставьте 👾, если вам интересно на него посмотреть.
👾6🔥3❤2😁1🦄1