Введение


Начнем с того, что я живу в довольно крупном городе, в котором по разным подсчетам проживает несколько сотен тысяч людей с сильно ощутимыми еврейскими корнями. Город этот сменил несколько названий, сейчас он называется Санкт-Петербург.

Сколько точно в Петербурге еврейских организаций, я не знаю, могу сказать только что есть несколько синагог, пара общинных центров, более 10 детских садов, несколько подростковых клубов, студенческие организации, детские лагеря, семейные лагеря и выезды, молодежные лидерские программы, поездки, курсы, стажировки, организации для пенсионеров и есть еще активные и инициативные люди, которые постоянно что-то организуют.

Все это приводит к тому, что каждый месяц в городе проходит несколько десятков еврейских мероприятий. Для примера, 13 сентября в разных частях города прошло 11 совсем не мелких мероприятий (50-200 человек каждое).

Какую я заметил проблему и как её хотел решить?


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

Тут отчасти работает веками сформированный принцип, что еврею нужно минимум две синагоги. В одну он будет ходить, зато в другую ни ногой! Это может казаться смешным, но так и есть — большинство моих знакомых точно могут назвать две еврейские организации в городе: одна им нравится, во вторую они бы точно не пошли.

Я посчитал нужным собрать все мероприятия вместе и сделать афишу еврейских мероприятий Санкт-Петербурга.

Я должен отметить, что данная идея приходила в голову не только мне. За нее брались несколько человек, но афиши в городе так и не было. Важно отметить, что я понимал, что могу не только организовать создание этой афиши, найдя грант и наняв кого-то для выполнения частей этого проекта. Я мог сделать это своими руками и за свой счет!

Техническая часть


У меня есть опыт создания сайтов. Мне в достаточной степени известны PHP, MySQL, HTML, JS и CSS, чтобы за несколько часов сделать с нуля back-end для афиши, ну или можно было взять что-то готовое и допилить, поэтому насчет серверной части я особо не думал — тут ответов у меня было больше, чем вопросов.

Вопросы были по клиентской части — сделать сайт было просто, но для эффективного взаимодействия с аудиторией я всерьез задумался над созданием приложения. И первое приложение я решил писать для iOS.

Во время первой попытки попробовать написать приложение для iOS я впервые столкнулся с языком Objective-C. Простые вещи на нем выглядели, на мой взгляд, крайне громоздко. Я был очень рад, когда появился Swift. Основной недостаток, который я сейчас в нем вижу помимо его молодости — нет возможности писать приложения для iOS ниже 7 версии.

Я начал писать приложение на Swift. Оно было и остается довольно простым — есть 4 экрана: события, новости, мудрость дня и юмор дня. Первые два экрана представляют из себя простые TableView со списком событий и новостей — нажатие на элемент списка открывает подробное описание. Данные для приложения берутся с помощью запроса к серверу, который отдает XML или JSON. Ах да, еще в приложении есть Push-уведомления, и пара незначительных фич, которые появились позже. Трудно описать свои ощущения от первого запуска своего приложения в эмуляторе, ярче этого были только: запуск приложения на своем iPhone, увидеть на экране телефона Push-уведомление, посланное своими руками, ну и затем появление своего приложения в App Store — месте, в которое я раньше заходил только как потребитель контента.

Серверную часть я писал быстро. Разработка приложения шла долго. Сейчас описанные в предыдущем абзаце задачи мне кажутся простыми в решении, но тогда я смотрел на XCode и его вроде бы просто Interface Builder как на дремучий лес. Сервер отдавал XML со списком и описанием новостей и событий. Нужно было этот XML прочесть, разложить по полочкам и выводить в нужные элементы UI. После того, как я научился парсить XML на Swift я столкнулся с тремя новыми для себя вещами, которые отняли еще несколько дней.

1) Расположение элементов на экране iPhone / iPad
Заставить элементы ячеек TableView и ViewController с полным описанием событий нормально отображаться не только на определенном экране iPhone, а на всех возможных экранах было не просто. Посмотрев ряд обучающих видео на YouTube, я (как мне тогда казалось) познал истину про расположения элементов. Я тогда понял далеко не все, но путем проб и ошибок я смог «универсально» разместить элементы на экране.

2) Сертификаты для приложений
Чтобы выйти за рамки эмулятора, а именно запускать приложения на своих устройствах и распространять приложения через App Store — нужны сертификаты. Внятного объяснения и алгоритма получения и использования сертификатов на русском языке я на тот момент не нашел. Сейчас процедура получения сертификатов мне кажется уже не такой дикой, но я все равно не понимаю зачем нужно такое большое число шагов. Ну и отдельные сертификаты для Push-уведомлений — просто песня.

3) Push-уведомления и Parse
Я не сталкивался до этого момента с Push-уведомлениями в качестве их отправителя. Оказалось, что это тоже не просто. После чтения материалов на эту тему я остановил выбор на Parse. Почему? Для моих масштабов он бесплатен, а еще он выглядит довольно понятным в работе и симпатичен. Уведомления сейчас отсылаются всем пользователям, они как аналог смс-рассылке.

Анонс приложения


Первый этап был — просьба PR в социальных сетях от еврейских организаций города. Меня в разной степени поддержали почти все, к кому я обращался. Пошли первые установки. Я неожиданно понял, что приложение работает только на iOS старше 8 версии. И все потому, что для iOS 7 нужно добавить пару мелочей. Добавил. Неделя ожидания модерации и вот уже пользователи iOS 7 тоже видят афишу!

Просьбы выпустить версию для Android не были неожиданностью, это приложение — тема для отдельной статьи.

Где проект сейчас?


Приложение вышло после новогодних праздников 2015 года. Приложение бесплатное, без рекламы. В команде пока три волонтера: волонтер редактор событий, волонтер редактор новостей и волонтер технарь (я). Сейчас у приложения есть iOS и Android клиент, плюс события и новости доступны на сайте. Количество установок перевалило за 1100, растет немного каждый день.

«В чем цимес?»


(Ци́мес (идиш צימעס) — десертное блюдо еврейской кухни. Наиболее близкое значение на русский язык можно перевести как «В чем соль?»)

1) Я сделал полезную вещь для общины — люди узнают о новых событиях, новостях и вакансиях именно через приложение. На каждом мероприятии можно встретить людей, которые бы не пришли на него, не будь это события в приложении. Дело не том, что мероприятия и программы — скучные или низкого качества. Как правило, все как раз наоборот. Дело просто в том, что донести информации до всех организаторы не могут.

2) Опыт. Мои затраты труда и времени, на хостинг/домен и $99/год за право публиковаться в App Store, а потом еще и $25 за Google Play окупились сполна. Я попробовал то, что раньше делать не умел! Это очень классно.

P.S.


И еще кое-что: я долго варил в голове эту идею, но не брался потому что думал, что сделаю не самое лучшее приложение (понятное дело, что так и случилось). «Я не профессиональный программист, не дизайнер. Продукт созданный целиком моими руками не будет произведением искусства. Так чего мне браться?» — таков был ход моих мыслей.

В этот момент я получил очень хороший совет, простой, но он реально заставил какое-то реле в моей голове щелкнуть. Совет был такой — сделай, покажи людям, собери обратную связь и продолжай работать над своим приложением.
Так я и поступил. Прошло 8 месяцев и я могу с уверенностью сказать, что полученный мной опыт для меня просто бесценен. Приложение не самое красивое и не самое функциональное, но оно как добротный молоток продолжает забивать гвозди. И я продолжаю над ним работать.

Если вы страдаете от перфекционизма и поэтому не делаете чего-то, чего бы вам хотелось, подумайте еще раз, что вы теряете если попробуете? А что вам мешает кроме страха сделать плохо или лени? Через 100 лет тебя уже не будет, трать если не все, то хотя бы часть своего времени на реализацию своих идей, а не только будь инструментом реализации чужих идей.

В конце хочу привести цитату еврейского мудреца Гилеля, который жил более 2000 лет назад: «Если не я за себя — то кто за меня? А если я только за себя — то кто я? И если не сейчас — то когда?»

Если публику заинтересовала моя статья — я напишу еще — не только про афишу еврейских мероприятий Петербурга, но и про другие свои проекты.