Вакансия back-end разработчика на C#

Основные требования

  • Опыт разработки на C# + .NET.
  • Умение разбираться в чужом коде.

Обязанности

  • Разработка бэк-энда.
  • Разбор инцидентов, багфикс.
  • Документирование API.

Условия работы

  • Работа с почасовой оплатой. Ставка определяется по взаимной договоренности.
  • В месяц мы готовы платить до 40К исходя из оговоренной ставки. Соответственно ваша занятость будет не полный месяц.
  • Идеально подходит для подработки, а также для программистов с небольшим опытом работы.

Контакты

Чем облачная установка лучше локальной и почему мы работаем только в формате SaaS

В одном из прошлых постов я описывал причины, по которым компании интересуются нашей программой, но не решаются на её использование. Одной из таких причин является то, что картодромы не хотят, чтобы их данные находились в облаке, и настаивают на локальной установке физически на своем картодроме.

Пример такого формата есть у наших конкурентов; их программа сделана в виде прикладного ПО, устанавливаемого на компьютер, и в их ситуации вполне логично разместить на нем же сервер и базу, раз уж требуется какая-то установка. Но это было актуально лет так 10 назад. Сейчас же интернет не является чем-то дефицитным: повсеместно распространяется IP-телефония, интернет теперь более доступен и на мобильных устройствах.

И в отличие от аналогов, мы предлагаем решение, которое изначально задумано и реализовано как веб-приложение, доступ к которому происходит через браузер.

Но у нас есть и опыт локальной установки — первые месяцы мы размещали Авенду непосредственно на картодроме Le Mans, на одном из компьютеров. И за это время, надо сказать, мы хорошо оценили количество граблей на этом пути.

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

I. Установка, настройка и поддержка сервера

1. Работа с сервером, к которому нет физического доступа, несет под собой большие риски.

Основная проблема здесь — выход оборудования из строя. Осознают ли владельцы компаний потери из-за простоя сервера в таком случае?

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

Но данные риски исключены при работе с облаком, поскольку в этом случае у вас есть поддержка, доступная вплоть до 24/7.

2. Организовать массовую поддержку серверов и обновление ПО затратно или невозможно.

В силу того, что мы регулярно улучшаем свой продукт, примерно раз в месяц нам требуется производить обновление кода на сервере (по-научному, это называется деплой). В свое время я приезжал на картодром после 12 ночи для того, чтобы исключить проблемы с обрывом связи во время обновления и несколько раз такие обновления затягивались до 5 утра по причине того, что при обновлении выявлялись частные проблемы, связанные с особенностями локального сервера и таким образом требовалась установка/обновление/настройка ПО.

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

Я не представляю возможным проводить обновление на десятках картодромов по ночам. И уж тем более не представляю, как можно покрыть риски падения сервера в этот момент, если в это время ни у нас, ни у сотрудников трассы нет физического доступа к серверу.

3. То, что у вас работало на тестовой среде, может не заработать на боевой.

Среда, версии вспомогательного программного обеспечения и настройки на локальном сервере могут отличаться от тех, для которых проводилось тестирование. Следовательно, есть риск наступить на грабли при обновлении продукта. А если учесть, что на каждом картодроме может быть своя версия, то это десятки индивидуальных сред для тестирования.

В конечном счете дополнительное время на тестирование будет учтено в итоговой цене за продукт.

II. Безопасность

Довольно часто мне приходится слышать о том, что компании не хотят, чтобы их данные хранились где-то на стороне и чтобы у кого-либо был к доступ к этим данным.

После данных рассуждений, представители компаний приходят к заключению, что единственный вариант — установить сервер/базу локально. Мол, если что, они отключат интернет и никто не получит доступ к их данным.

Вот только есть несколько проблем:

1. В любое время, пока сервер подключен к интернету, к нему есть доступ. А значит в данном случае совершенно неуместно говорить о том, что у вас есть рубильник отключения его от внешнего мира. Это не решает ровным счетом ничего.

2. При обновлениях ПО разработчик должен получить доступ к серверу. Вариант того, что приобретатель ПО сам его устанавливает возможен, но это будет требовать времени на разработку, что будет учтено в цене.

3. Ваши сотрудники, а в особенности тот, кто будет обслуживать ваш сервер, должен обладать крайне высоким уровнем доверия. У этого человека будут все ваши бэкапы, то есть все ваши данные. Получается, что вы меняете шило на мыло. Ведь с нами у вас будет договор и юридическая страховка от «проблем». В случае с сотрудником, а очень часто сисадмины работают «на подработке», таких гарантий у вас не будет.

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

III. Производительность

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

Поэтому нужно или рассматривать вариант аренды сервера (то есть размещаться не физически на картодроме), или инвестировать значительные средства в оборудование.

Производительность вашего сервера — это история про качество ваших услуг. Недостаточно иметь какую-то фича, важно также, чтобы пользователей устраивала скорость работы вашего сайта или ПО.

IV. Финансовая сторона

Представителям картодромов порой видится, что если сервер установить один раз и локально, то за него больше не придется платить. Это ошибка. Выше я уже затронул тему того, что любые сервера необходимо поддерживать. А значит за эту поддержку нужно платить.

V. Прочие трудности

При локальной установке вам также нужно будет решить следующие вопросы:

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

Таких мелких проблем наберется достаточно, чтобы в течение года работы вы потратили на это времени и денег больше, чем если бы это было предоставлено в коробке с единой ценой за аренду.

Заключение

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

Вакансия разработчика мобильного приложения на C# + Xamarin

Вакансия закрыта.

Основные требования

  • Опыт разработки приложений с использованием Xamarin,
  • Знание C# и умение разбираться в чужом коде,
  • Открыты к сотрудничеству, если у вас нет опыта, но много желания работать.

Обязанности

  • Разработка приложения для iOS, Android, Windows Phone.

Условия работы

  • Работа с почасовой оплатой. Ставку определяем исходя из ваших пожеланий по оплате за месяц.
  • В месяц платим не более 15-20К исходя из оговоренной ставки. Соответственно ваша занятость также будет не полный месяц.
  • Если у вас есть основное место работы и нас вы рассматриваете как подработку — это то, что нужно. Мы не ставим деадлайнов, поэтому вы сможете балансировать занятость у нас исходя из своей основной работы.

Контакты

Когда необходимо онлайн-бронирование

Тот самый момент, когда картинг-клуб не работает 31-го и 1-го и забронировать можно только через интернет:

booking

Бронирование доступно на сайте картинг-клуба Le Mans — booking.lemanskarting.ru

Трудности при продаже Авенды картодромам

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

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

  • Москва
  • Санкт-Петербург
  • Икша
  • Сочи
  • Краснодар
  • Майкоп
  • Тула
  • Екатеринбург
  • Зеленоград
  • Шарм-эль-Шейх

Итак, о причинах, почему мне отвечают «Нет»:

1. Цена

Наш продукт видится слишком дорогим. Этому есть как объективные, так и необъективные причины. При том, что приложение реально приносит пользу, для владельцев оно видится как убыток, потому что у них все итак работает. И нет никаких оснований с их точки зрения для того, чтобы платить. Далее разговор как правило продолжается, но уже в неправильном тоне, потому как на сотрудничество та сторона уже не рассчитывает.

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

Как это будет исправлено:

  1. Мы будем разрабатывать новый функционал, таким образом повышая ценность продукта.
  2. Мы сформируем лицензии и тарифы таким образом, чтобы компании могли экономить на ненужных им функциях, при этом были с нами.

2. Отсутствие имени у продукта

Кто бы что ни говорил, но маркетинг влияет на сознание при конкуренции. В любой ситуации человек изначально будет с предубеждением относиться к компании с известным именем. Если, например, на минуту представить, что компания Microsoft продавала бы решение, схожее с нашим, то к ней, компании Microsoft, ни у кого бы не было бы вопросов в духе «А вот вы будете получать наши финансовые данные, нам это не интересно, ставьте нам сервер локально и отдавайте продукт». Microsoft бы предложила удобные ей условия, и компании, которым нужны преимущества от использования продукта, закрыли бы глаза на недостатки, потому что это Microsoft и значит у них все сделано правильно.

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

Как это будет исправлено:

  1. Отчасти для этого я завел данный блог, чтобы стать публичнее и более открытым. Таким образом я планирую набрать некую известность.
  2. Мы будем непрерывно развиваться так долго, как только это возможно, непрерывно вкладывая средства в собственное развитие. Чем дольше мы сможем прожить — тем больше к нам будет доверия.
  3. Также имеет смысл перестать зацикливаться на крупных компаниях и начать искать рынок там, где в нас нуждаются, а не там, где нам хочется. Иными словами методом тупого перебора найти те компании, кто более охотно согласится на установку, нежели обхаживая подолгу те компании, которые нам стратегически интересны.

3. Нам не хотят платить абонентскую плату

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

Как это будет исправлено:

  1. В ближайшее время мы останемся классическим SaaS решением, предлагаю и продукт и инфраструктуру. Поэтому мы опять же, просто будем искать своего потребителя, ну и конечно доносить ценность SaaS’а до всех остальных.

4. Многие компании способны обойтись без нас

По факту наш продукт для большинства картодромов — это nice to have, нежели нечто необходимое, как например подключение к интернету или наличие бухгалтера в компании. Без нас могут прожить — это ключевое. Но есть компании, которым без нас прожить сложно. Именно там мы и хотим быть.

Как это будет исправлено:

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

Пока это все основные препятствия, которые мне видятся. Если вдруг что-то вспомню или изменится, это будет освещено в моих новых постах. Оставайтесь на связи!

Avenda: Начало

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

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

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

Одна из вех — это конец 2011 года, когда я пришел к выводу, что было бы неплохо научиться продавать услуги через интернет. Я смотрел на это как на конвейер в духе Яндекс.Маркета, где все процессы описаны и автоматизированны, таким образом посетитель получает качественный сервис под ключ, не вставая с дивана. И в тот же момент в моем сознании родилась мысль, что по аналогии с тем, как доставка является неотъемлемой частью процесса продажи товаров через интернет, так и бронирование будет являться неотъемлемой частью при продаже услуг. Иными словами, только витриной не обойтись, и тому есть примеры — уже существуют сайты, на которых продаются услуги без бронирования. Это был не мой путь.

Поняв это, я стал думать что же такое можно было бы бронировать. В то время рождались и умирали сервисы бронирования. Один из которых, помню был Море салонов, в который инвестировал Аркадий Морейнис. Были и есть также сервисы бронирования столиков в ресторанах. Да их собственно много. В том же году, в 2011 я активно стал заниматься картингом и моим излюбленным местом на тот момент был Картинг-клуб Le Mans. В результате, в мае 2012-го года, когда я уже понял что я буду делать сервис бронирования для картинга, я подошел к одному из совладельцев Ле Мана и предложил встречу, на которой пообещал обсудить деловое предложение.

Встретились мы примерно через неделю и я начал с того, что рассказал о своей профессиональной жизни, что являюсь айтишником помимо увлечения картингом. Я рассказал об идее, которая у меня есть (на тот момент, кроме нее у меня ничего не было, нет были скриншоты и прототип, но они были сделаны с намеком на витрину сервиса, на котором предположительно должны были продуваться услуги, а не непосредственно о бронировании). Главный вопрос, который стоял на встрече для меня — нужно ли это вообще картонному. Как оказалось, я попал в тему, постольку поскольку уже в тот момент Дима (так звали совладельца) подумывал о покупке аналогичной системы из-за рубежа от одного известного бренда. О том, как я познакомился с их представителем в день запуска нашего сервиса прямо на картодроме Ле Ман (вот так удача, Карл!), о том, как поел их шоколад, я расскажу как-нибудь в других постах. Впринципе, об этом намерении Димы я узнал где-то через полгода или год. Так что на тот момент моим единственным драйвером было только то, что нужно работать, если я действительно хочу сделать продукт. С той стороны, как минимум, предварительный интерес есть.

В общем, в мае 2012 я и начал очередной виток борьбы за создание продукта. На тот момент я даже не понимал всей экономики моего будущего «стартапа», я думал только о том, что данная идея неизбежно будет реализована и займет отдельную нишу.

С этими мыслями я активно начал искать человека с техническими навыками, для того, чтобы нагрузить его непосредственно разработкой.

Сам я тяготел к UI/UX и до этого у меня уже сформировалось понимание, что нельзя все сделать самому, именно поэтому вариант искать хотя бы еще одного человека был единственно верным для меня. К слову, я его нашел довольно быстро.

О том, как это было, я расскажу в следующих постах. Следите за новостями!

Как рассчитать выручку картодрома, а также любого другого предприятия

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

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

Во-вторых, информация о доходах вашего картодрома не является чем-то секретным и узнать его [доход] может каждый. Способов как это сделать как минимум 5, и сейчас я о них расскажу:

  1. Оценить стоимость аренды помещения в этом районе. Аренда, как правило, занимает значительную долю в расходах картодрома, поэтому по ней можно судить о примерной выручке, которую должна получать компания, чтобы приносить прибыль. Не стоит при этом забывать, что бизнес бывает разный и в конкретно взятом случае картодром может быть и убыточным, плюс аренда может стоить по разному в зависимости от срока.
  2. В дополнение к первому способу можно посчитать число сотрудников в компании и оценить примерный объем ФОТ (фонда оплаты труда). Как известно он также занимает львиную долю практически в любой компании. Оценив з/п в сумме с арендой вы получите всё тот же, проектный минимум, на который должен выходить картодром для того, чтобы существовать.
  3. Данный способ также универсален для любых компаний, мы просто считаем проходимость в лоб. В случае с картодромом, смотрим на зону выпуска и считаем людей. Делать это лучше всего в нагруженный день, то есть в выходной, потому что вес от него наибольший, а значит и точность будет выше.
  4. Если вам лень так долго стоять и ждать, то можно пойти упрощенным путем и посчитать емкость — максимум того, что может заработать картодром при полной загрузке, после чего умножить полученную сумму на взвешенный коэффициент и получить приближенную к реальной загрузку и доход. Например: в выходной картодром работает 12 часов, если в заезде выпускают 10 машин, один заезд стоит 700 рублей, то физический максимум, который может заработать картодром за день — это 12х4х10х700 = 336 000 рублей, где 4 — это количество заездов в час. Реальная сумма может быть примерно половина от рассчитанной, плюс минус, но это уже мелочи. Также нужно учитывать наличие скидки у определенной категории клиентов. На выходе мы получим оценку с погрешностью 20-30%.
  5. Наконец-то расскажу вам о высокоточном методе, с помощью которого, вы сможете, в том числе, посчитать выручку вашего любимого Макдональдса или столовой на работе. Ограничения у этого метода есть, о них скажу чуть позже, если сами не поймете. Итак, мы приходим в кафе/столовую/на картодром и заказываем что угодно. Нам нужен чек, на котором есть две полезные цифры — это его порядковый номер с момента установки и часто бывает номер операции за день. Ну вы поняли: проходимость уже посчитана за вас, и вам остается только умножить на средний чек, чтобы получить выручку. Если вы придете, например, через неделю и снова сделаете покупку на этой же кассе, то по сквозному номеру сможете оценить покупки за длительный период более точно. Ограничение как вы понимаете в том, что вы должны «попасть» на тот же кассовый аппарат, что и прежде.

Итог

Теперь вы умеете приближенно считать выручку любого предприятия. Надеюсь также, что если вы владелец картодрома, то сможете принять правильное решение при оценке возможного сотрудничества с нами.

Решение проблемы с отсутствием ручек в аэропорту Хургады

Предысторией послужило то, что один раз, приехав в Египет, я столкнулся с совершенно нелепой ситуацией, когда мне нужно заполнить некую бумажку для визы, а ручки у меня с собой нету. И таких людей толпа вокруг тебя… Помню, спрашивал у кого-то ручку, но он прикинулся глухим. Не с первого раза, но я нашел у кого одолжить и благополучно заполнил квиток.

В этот момент в моем телефоне в блоке Trips я сразу же поставил тудушку на следующее своё путешествие:

photo_2015-12-20_18-55-13

Так получилось, что следующей моей поездкой стал также отдых в Египте. Готовясь к ней, я по этой записи вспомнил всё, что происходило, и решил действовать нестандартно.

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

Пара человек подошли к столу, взяли ручку, взяли вторую, взяли горстку и пошли в сторону очереди. По пути они, столкнувшись с кем-то из других пассажиров, я увидел, как женщина показала им направление, где нашла эти ручки и туда двинулся новый караван 🙂 Это было весело, хотя пожалуй, только мне. Для всех остальных это показалось, наверное, обыденностью и никто не заметил подвоха.

Это не был PR. Скорее акция благотворительности. Просто хотелось сделать что-то неординарное.

Вакансия front-end разработчика на JavaScript

Основные требования

  • Опыт разработки на JavaScript.
  • Знание хотя бы одного фреймворка, а в идеале AngularJS.
  • Умение разбираться в чужом коде.

Обязанности

  • Разработка фронт-энда.
  • Разбор инцидентов, багфикс.

Условия работы

  • Работа с почасовой оплатой. Ставку определяем исходя из ваших пожеланий по оплате за месяц.
  • В месяц платим не более 15-20К исходя из оговоренной ставки. Соответственно ваша занятость также будет не полный месяц.
  • Если у вас есть основное место работы и нас вы рассматриваете как подработку — это то, что нужно. Мы не ставим деадлайнов, поэтому вы сможете балансировать занятость у нас исходя из своей основной работы.

Контакты