Уже девять лет я делаю приложение с расписанием автобусов для посёлка Иртышский в Омской области. И почти всё это время сам там не живу - уехал через полгода после запуска, а приложение осталось, им до сих пор пользуются.
И сразу скажу: я не программист. Работаю в IT системным аналитиком, а код пишу для себя, как хобби. Захотел бы научиться программировать всерьёз - пошёл бы на курсы и научился. Но мне это никогда не было нужно. Нужно было получить желаемую утилиту, а программирование тут просто инструмент. Это - моё творчество.
А вспомнил я про эти девять лет сегодня вечером. Сегодня 16 июня 2026 года, и ровно семь лет назад, день в день, я научил приложение скачивать расписание из интернета - до этого оно лежало прямо в сборке. Сегодня этот способ убрал, расписание теперь приходит по‑другому. Провозился полвечера, а потом посчитал - приложению‑то уже девять лет.
Началось всё с маминого телефона. Я приехал к родителям, мама сказала, что расписание поменялось, и полезла искать фотографию в галерее. А там сотни картинок из WhatsApp, открытки и пожелания, и где‑то среди них одна фотография листка с расписанием из автобуса. Она листала и не могла найти. В посёлке это работает так: новое расписание печатают, клеят на остановке и в автобусе, кто‑то фотографирует и пересылает дальше - по родне, по чатам. А потом эту фотографию ищи.
Тогда я и решил сделать приложение, чтобы расписание всегда было под рукой. И хотел, чтобы там были напоминания: поставить будильник за 15, 30, 45 минут до автобуса.
1 апреля 2017 года в Google Play появился «Маршрут 327».

Как это вообще делается
До расписания я уже ковырял приложения - пару игр про цвета. Просто потому, что было интересно собрать что‑то работающее и выложить. Тогда я писал на Java под Android и на Swift под iOS, хотя Mac у меня не было. Я ставил хакинтош и тестил на айфоне жены. Расписание отлично легло как подопытный проект. Задача понятная, данные живые. И было кому показать.
Программировать толком я не умел. Я учился через задачи. Хотел в приложении какую‑нибудь штуку - шёл читать, как такое вообще делается. Нужен список на экране - читаю про ListView. Потом надо переписать его на RecyclerView - читаю про RecyclerView. И так постоянно: захотел, пошёл разбираться, сделал, проверил. Иногда наоборот - узнаю про какую‑то технологию, и сразу придумываю, куда её приткнуть. Узнал, что есть Firebase Messaging - решил, что хочу писать пассажирам сообщения прямо в приложение (например, что расписание поменялось).
Все иконки я рисовал сам в Figma. Тоже просто потому, что было интересно.
iOS‑версию я начал, но забросил. Там надо было каждый год платить за учётку разработчика, а приложение тогда не приносило ни копейки. Отдавать такие деньги за свой же бесплатный проект было жалко. Да и писать сразу на двух языках было сложно для меня.
Но айфоны у людей были, и про iOS меня всё равно спрашивали. Поэтому позже я выкрутился костылём: сделал маленькую веб‑версию приложения - одностраничник с тем же расписанием, плюс бот в телеграм‑канале, который по слову «расписание» выдаёт на неё ссылку. Поддерживаю я её по остаточному принципу и, честно говоря, скорее отказался бы. Но ей пользуются, так что она живёт - и, как окажется дальше, ещё пригодится.
В Google Play приложение ушло под именем «Маршрут 327». Ссылку я разослал друзьям, кому‑то передал через родителей. Внутри была кнопка «поделиться»: она отправляла ссылку на приложение вместе со всем расписанием текстом, и люди им делились. Ещё я распечатал листовку с QR‑кодом и повесил на остановке.


Пользователи росли медленно. На учётку разработчика Google я потратил 25 долларов, и помню момент через много лет, когда приложение наконец её окупило. К тому времени я вбухал в него сотни часов. Окупилась учётка - смешно.

Девять лет я что‑то туда добавлял
Потом появились новые маршруты. Соседние деревни попросили сами пассажиры: они иногда ездят на проходящих автобусах, и им тоже нужно расписание. В итоге маршрутов стало четыре, на этом и остановилось.
А дальше я просто что‑то туда добавлял:
шаринг расписания строкой, чтобы можно было переслать его кому угодно;
напоминания с будильником;
уведомления;
автоскролл к ближайшему рейсу, чтобы не листать руками;
внутренние сообщения пассажирам прямо в приложении;
покупки, чтобы отключить рекламу;
in‑app‑обновление от Google;
разные иконки для автобуса и маршрутки;
пометки о заездах - на дачи (через Падь, Тепличный);
проверку, что база вообще читается, с отдельным экраном на случай ошибки.
А ещё несколько раз переписывал приложение целиком - с Java на Kotlin, потом на новый интерфейс, потом ещё раз. Это хобби, руки чешутся, и ты сам себе придумываешь задачу там, где без неё можно было обойтись.

Над парой вещей я провозился непропорционально долго, хотя со стороны это мелочь. Взять иконки автобуса и маршрутки. Мне казалось, без них никак: автобус уходит строго по расписанию, а маршрутка - как наполнится. Набилась битком, водитель видит, что все на месте, и поехал раньше времени. Хотелось, чтобы человек по значку сразу понимал, можно ли чуть опоздать или лучше совсем не рисковать.

Самая моя любимая часть - новогоднее расписание. На каникулах в Иртышском не одно расписание, а целых четыре: 31 декабря своё, 1–2 января другое, потом ещё, и так далее. Все эти годы я обновлял их вручную. Заранее забивал в базу следующий кусок, ставил себе будильник на время, когда уходит последний автобус, и ровно в этот момент публиковал изменения. Чтобы не сбить людей, которые иначе увидят завтрашнее расписание раньше времени. Потом я сделал так, чтобы приложение вычитывало сразу все варианты и само переключалось между ними.
Когда я рассказал об этом другу‑программисту, настоящему, он сказал:
«кажется, это самое навороченное приложение с расписанием для деревни, которое вообще существует. Ты слишком много времени на него тратишь»
Я уехал, а приложение осталось
Осенью 2017 года я уехал в Москву. Получается, сам я пользовался своим приложением месяцев пять‑шесть, а разрабатывал гораздо дольше.
При этом им пользуются. Сейчас около 300 уникальных человек в день - для посёлка, где живёт примерно три с половиной тысячи, плюс пара соседних деревень, это много, на мой взгляд. И это не случайные заходы: ретеншн высокий, люди возвращаются. Для меня тут до сих пор загадка. Казалось бы, ездишь каждый день на одном автобусе - расписание давно в голове, зачем открывать приложение. Но открывают и смотрят.

Летом народу больше. Вокруг посёлка садовые товарищества, и в сезон на тех же автобусах из города едут дачники. На графике это и видно - к лету пики тянутся к четырёмстам. Под них я когда‑то и сделал в расписании пометки, что автобус заезжает на дачи: кому в эти товарищества, тому важно, завернёт рейс или пройдёт мимо.
Расписание мне присылают пассажиры и кондуктор - они присылают фото нового листка, и только так я узнаю, что что‑то поменялось.
Однажды я ехал на этом автобусе когда был в гостях, спросил у кондуктора, актуальное ли расписание на листке в салоне. Он показал мне на телефон: посмотрите в приложении, там актуальное. В моём же приложении. Я говорю - так это я его и заполняю. Он сначала не понял. Потом дошло: а это вы приложение сделали? Вот вы какой. Было немного странно, но приятно.
Люди и тишина
Сначала я делал так. У рейсов, время которых уже прошло, вместо обратного отсчёта писалось слово «Уехал». Для меня это был просто маркер: время вышло, на этот рейс уже не успеть. Но люди прочитали его буквально - что автобус вот прямо сейчас точно уехал. Хотя его на линии могло вообще не быть, рейс могли отменить, а «Уехал» всё равно горело. И мне стали писать. Почему у вас написано, что автобус был, а его не было. Где водитель. Почему перевозчик такой безответственный. Буду жаловаться.
В итоге слово я убрал совсем. Теперь у таких рейсов просто тускнеет карточка и пропадает время до отправления - и всё, никаких заявлений про то, уехал автобус или нет. Стало честнее: вышло время - вот тебе тусклая строчка, а ездил он там или не ездил, я знать не могу.
Меня регулярно принимают за перевозчика. Требуют автобусы, которых я не вожу, и расписание, которого у меня нет, - оно ведь всё приходит от самих пассажиров. Я добавил в приложение контакты кондуктора и Минтранса, чтобы люди писали туда. Поставил дисклеймер, что я никак не связан ни с перевозчиком, ни с министерством, ни вообще с транспортной системой. Я разработчик приложения, и всё. При переходе в неофициальный телеграм‑канал ещё раз написано то же самое. Главный мой вывод за девять лет: дисклеймеры мало кто читает.
Звучит это примерно так:

А иногда доходит до угроз. Один отзыв пришёл мне на почту: моё приложение «равняется написанному на заборе», и автор грозился жаловаться в «Омскую губернию» - раз перевозчик ездит не по тому расписанию, что у меня.

Мне всегда от таких писем грустно (не смотря на перл про Омскую губернию). Человек стоит на морозе, автобуса нет, и злость надо куда‑то деть - я это понимаю. Просто не все знают, как тут всё устроено. Гарантий я дать не могу, я только сделал приложение, чтобы людям не рыться в фотографиях по чатам.
Но бывает и обратное. Иногда, когда на меня в канале наезжают, другие пользователи за меня вступаются.

Без меня объясняют: человек, который сделал приложение, к перевозчику отношения не имеет, перечитайте, там всё написано. В такие моменты возвращается вера в людей.
Ещё одно наблюдение - грустное. Недавно был лишний выходной в пятницу, и автобус работал по воскресному расписанию. Чтобы это попало в приложение, мне нужно расписание обновить. Никто не написал. Я сам в четверг спросил в канале, не будет ли изменений, и мне ответили - да, будет как в воскресенье. Одно сообщение от любого пассажира - и все, кто пользуется приложением, узнали бы заранее. Но порог в это одно сообщение почему‑то слишком высокий.
Вывод, который я для себя сделал: люди очень быстро привыкают к чему‑то удобному и начинают считать, что им это должны. Жаловаться напишут, а сказать, что расписание поменялось, - нет. И всё равно я чувствую ответственность. Не из‑за автобусов. А из‑за того, что вижу: этим пользуются каждый день, значит, это нужно.
Экономика хобби
Если честно считать, я в глубоком минусе. Учётка разработчика, домен, хостинг, реклама, которая почти ничего не приносила, - и сотни, если не тысячи часов сверху. У меня одно время стояло расширение в Android Studio, которое считало, сколько времени я трачу на проект. Оно постоянно ломалось и теряло статистику, но даже то, что я видел, - это огромные числа.
С рекламой отдельная история, и тянулась она годами:
2017-й - добавил баннеры и через месяц удалил совсем, надоели;
2019-й - вернул;
2022-й - на admob к тому моменту накопилось около 90 долларов, вывести не успел (порог был 100), а потом Google просто удалил мой аккаунт в admob, как гражданина РФ с платёжным профилем РФ;
2023-й - прикрутил рекламу Яндекса, поначалу в основном ради статистики по использованию. Позже она начала хоть что‑то приносить, и, удивительно, но это какая‑то да мотивация. Маленький позитивный отклик от приложения в мою сторону.
Реклама Яндекса на пике приносила чуть больше 1500 рублей за месяц, но это пару раз, обычно в районе тысячи. Я шучу, что приложение начало оплачивать мне мобильную связь или домашний интернет. Но не и то и другое сразу - не хватит.

Денег это толком не приносило. Тут мне справедливо скажут: так убери рекламу совсем, зачем она тебе. И крыть нечем, доход с неё - слёзы. Но убирать рука не поднимается. Сидит во мне наивная надежда, что когда‑нибудь оно могло бы приносить и нормальные деньги. И я бы такому, честно, обрадовался - не ради самих сумм, а потому что это значило бы, что вещь вышла состоятельная, раз за неё готовы платить. Хотя деньгами одними тут не объяснишь. Даже сильнее хочется другого: чтобы эти годы и весь вложенный труд кто‑то заметил и оценил. Вот это для меня и была бы настоящая прибыль.
В какой‑то момент я сделал платную подписку - ту самую, что убирала рекламу и открывала платные маршруты. Иртышский при этом всегда оставался бесплатным. Стоила она копейки: 15 рублей в месяц, вдвое дешевле одной поездки, или 30 рублей сразу за три месяца. Кто‑то покупал, но это были сущие гроши, и в итоге я подписку убрал. Всерьёз заработать я и не рассчитывал - просто было любопытно, будут ли вообще платить и как это устроено (ограничение функций в бесплатной версии я подсмотрел в других приложениях и захотел попробовать сам). А потом всё решилось само: с 2022 года расплачиваться через Google в России стало нельзя. Оплатить подписку теперь попросту некому, да и деньги мне бы уже не дошли.
А вот совсем уж курьёз. Есть в приложении кнопка - поблагодарить разработчика, копеечку закинуть. За все годы, что она там висит, мне прислали что‑то буквально пару раз, и то в самом начале, когда я её только добавил. Раза два по сто рублей, а потом разом триста. Тремстам я особенно обрадовался: ого, людям не всё равно, кому‑то не жалко! А потом случайно выяснилось, что эти триста - от мамы. Я её даже немного отругал: так‑то она хотела поддержать, а вышло наоборот. Но реальность вот такая.
Дешевле было бы не делать ничего.
Потом появился «собственный программист»
Я давно думал, как развивать это дальше. Нельзя же бесконечно переписывать одно и то же приложение. Мне хотелось не четыре маршрута, а площадку, куда можно добавлять любые нишевые маршруты - те, которых нет в больших приложениях. В Яндекс.Картах этих автобусов нет, и актуального расписания там нет и не было. На сайте Минтранса я его тоже никогда не мог найти. Если бы оно появилось у Яндекса, моё приложение было бы не нужно. Но его там нет.
И вот у меня появился, в кавычках, бесплатный программист. Я рассказал нейросети, какую площадку хочу, и за неделю она это собрала. Сайт, на котором кондуктор может зарегистрироваться, создать свои маршруты и расписания и быстро их править. Генерацию листка с QR‑кодом сверху - такого же, как клеят в автобусе, только этот QR сразу подключает нужный маршрут в приложении. Единый источник данных, из которого расписание тут же появляется и у Android‑пользователей, и на той самой веб‑версии, которую я когда‑то делал костылём. Теперь мне даже не надо лезть в базу руками: зашёл, поправил пару строк, опубликовал.
И вот тут цифры начинают давить. В Android‑приложение я за девять лет сделал 514 коммитов - руками, по вечерам и выходным, вычитывая на каждый чих, как это вообще делается. Веб‑платформу - с регистрацией, ролями, тестами - 117 коммитов за одну неделю. За ту же неделю заодно переписал половину самого приложения. Только не подумайте, что нейросеть всё сделала сама, по волшебству. Я её постоянно дёргал: вот это переделай, тут вообще не то получилось. Код при этом я уже почти не пишу. Объясняю, что хочу, смотрю, что вышло. Выходит прилично. Но кое‑чем за это приходится платить, и про это - дальше.
Чем я за это плачу
Нейросеть и правда делает это хорошо. На выходе - рабочая вещь, ровно та, о которой я когда‑то мечтал и которую сам же и придумал. Только теперь я могу вообще не открывать код и не представлять, как оно внутри собрано. Вот от этого мне не по себе.
Девять лет возни руками дали мне то, что иначе не возьмёшь, - насмотренность. Я когда‑то сам, на коленке, прикручивал в приложении сбор событий через Firebase. А потом уже на основной работе впервые увидел, как метрики собирают в большой банковской системе, - и понял всё с ходу, потому что своими руками делал похожее. Не слышал краем уха, а трогал руками.
Ни о чём не жалею. Девять лет назад никакого ИИ и в помине не было, и дорога вышла интересная - я всё время что‑то читал и в чём‑то ковырялся. Сейчас будто доехал до её конца. Хорошо это или плохо - честно, не знаю. Но эта самая нейросеть за неделю дала людям то, что я своими руками не мог дать годами.
И сразу оговорюсь, а то поймут не так. Это не ода нейросетям и не реклама, мне за них не платят, и звать всех в светлое будущее я не нанимался. Просто так теперь устроена реальность вокруг меня, и я пробую сам для себя её переварить - вслух, на примере своего автобуса.
Я долго думал, писать ли всё это вообще. История про одно приложение для одной далёкой деревни - ну кому оно интересно. Но это же не совсем про автобусы. Это про то, как маленькое упрямое дело тянется годами и потихоньку тебя меняет, а потом приходит инструмент, который за вечер делает то, на что ты когда‑то угробил годы. Если вы дочитали досюда - значит, и вас где‑то тут кольнуло.
И раз уж кольнуло - последнее. Если вы знаете какой‑нибудь маленький маршрут, которого нет в больших приложениях, - напишите мне. Это бесплатно. Добавлю расписание к себе, а люди будут сканировать QR или переходить по ссылке и пользоваться. Буду только рад, если где‑то ещё закроется вопрос одного частного автобуса.
Комментарии (9)

TheGodfather
19.06.2026 12:02Я, возможно, сейчас крамольную вещи скажу, но не могу удержаться.
Вы не пробовали связаться с перевозчиком?
С одной стороны, я догадываюсь, что шанс получить хоть какой-то ответ невелик, но с другой стороны - если это маленький перевозчик конкретной деревни, то может им самим было бы удобно вам как-то передавать актуальное расписание (GTFS, :D, держи карман шире, ага), или по крайней мере кондукторам рассказать. Вот вы написали, что вам как-то кондуктор на ваше же приложение показал - так вот от этого же буквально один шаг до чуть более прямой связи, нежели вам пассажир сфоткал размытый листочек на остановке. Если будет прямой контакт между составителями\публикаторами расписания и вами - всем будет только лучше. У вас - актуальное расписание из первых рук, у перевозчика - меньше жалоб и долгосрочное сотрудничество. Вдруг вообще перевозчик сам ищет как с вами связаться (мечты...)?
Тем более, если сейчас вы работаете с разными маршрутами, так даже если один, второй проигнорируют, вдруг в третьем ваше письмо прочтет человек с энтузиазмом?
Попытка не пытка ведь? Вдруг получится

GenTT Автор
19.06.2026 12:02На самом деле часто именно кондуктор и присылал мне фото нового расписания - напрямую или через канал в телеге (там почти 800 человек, но большая их часть просто тихие боты, я думаю). В общем контакт есть, но он полностью на инициативе самих пассажиров или кондуктора. Перевозчику я писал пару раз уже после первой встречи - ответа не получил. Сейчас, когда появилась удобная админка, я думаю что поищу контакты всевозможных перевозчиков по стране и расскажу им об этом - возможно, как и говорите, у кого-то энтузиазм найдется. Спасибо за комментарий и интерес к статье! Очень рад

salnicoff
19.06.2026 12:02Вывод, который я для себя сделал: люди очень быстро привыкают к чему‑то удобному и начинают считать, что им это должны.
Это главное, что нужно вынести из этой истории. :-(

GenTT Автор
19.06.2026 12:02Я не теряю веру в то, что всегда есть и будут энтузиасты, которым нужно чуть больше, чем большинству. И они не будут опускать руки и вот это всё.
В любом случае я рад, что, возможно, мне удалось сделать жизнь каких-то людей чуть лучше (раз они к этому даже привыкли). Мне кажется это нормально, может даже хорошо.
Спасибо вам за комментарий и интерес к статье! Моя первая статья, рад отклику
vokuzh_by
19.06.2026 12:02Моя первая статья
Ну у вас хорошо получилось, интересно читать в подробностях.
Рад что ещё такие энтузиасты остались, которые даже в убыток, но просто для себя и окружающихиз "булко-зажопинска"занимаются как хобби :)
[ Позвольте посоветовать на будущее, не использовать длинные тире — , потому что если человек пишет, он машинально жмёт минус на нумпаде или минус на цифровой строке.
А как длинные тире ставить ещё знать надо, что ALT+0151
И вот эту палку → — обычно LLM-ки ставят. Хотя даже если с LLM-кой писали, продолжайте дальше,Вам разрешаюхорошее чтиво... ]
GenTT Автор
19.06.2026 12:02Спасибо! Про тире - писал в Obsidian в маркдауне, а потом сюда копировал. Уже тоже заметил и был удивлен, откуда оно взялось

vokuzh_by
19.06.2026 12:02был удивлен, откуда оно взялось
Так это метод проб и ошибок, наберётесь ещё опыта :)
Для начинающего Вы стрельнули отлично !
nerudo
Я одного не понял - а как актуализируется расписание?
GenTT Автор
До того как я сделал сайт с админкой было так: в телегу или в личные сообщения мне присылают фото с расписанием из автобуса или с остановки, я открываю БД и редактирую, затем публикую. При первом последующем запуске у пользователей качается свежая версия БД и всё отображается.
Теперь, когда есть сайт, всё может точно так же - мне пришлют расписание и я его поправлю, но уже в удобном интерфейсе, никаких БД и прочего ручного труда.
Но лучший вариант, чтобы сами кондукторы или ответственные пассажиры регались, я буду добавлять их маршруты и они сами смогут вносить изменения в админке. Легко и удобно. Но для этого нужно чтобы люди узнали что такая возможность есть, а также регались и поддерживали свои маршруты.
К сожалению, нет никакого единого правдивого источника, откуда можно было бы получить расписание - ни на сайтах министерств, ни где бы то ни было еще. Я искал, но актуального не нашел.
Спасибо за комментарий и интерес к статье!
p.s. Вот так мне сообщали о новогоднем расписании для 323 маршрута