Pull to refresh

Опыт построения b2b-продукта: 3 континента за 6 лет и полведра набитых шишек

«Maxifier Development» corporate blog Client optimization *
Сегодня нам, компании Maxifier Development, исполняется 6 лет… Ну ладно, соврал, не сегодня. На самом деле случилось это недели две назад, но только сейчас, когда я возвращаюсь из нашего нью-йоркского офиса обратно в родную Самару, наконец-то дошли руки что-то написать по этому поводу.

За шесть лет мы прошли путь от идеи на бумажке до международной компании стоимостью в десятки миллионов долларов. Создали сложный программный продукт в области оптимизации Интернет-рекламы, которым ежедневно пользуются крупные медиа-компании в Европе и Америке и уже подтягивается Россия. Открыли офисы в США, Японии и Англии.

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

Я надеюсь, что теперь мы будем регулярно публиковать статьи, связанные как с нашей предметной областью, так и просто посвященные вопросам разработки, менеджмента, взаимодействия с клиентами и прочим «интересностям» в ИТ. Но в этой, начальной статье хочется просто оглянуться назад, на основные вехи развития нашей компании.
наши скромные завоевания
Читать дальше →
Total votes 39: ↑37 and ↓2 +35
Views 25K
Comments 16

Хит-парад факапов: top-5 наших любимых багов в честь Дня тестировщика

«Maxifier Development» corporate blog IT systems testing *
Иллюстрация В Интернете уже есть немало подборок очень интересных багов – самых забавных и тех, что принесли максимальный урон (например, здесь).

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

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

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

Чтобы сохранять некоторую интригу, каждый случай будет состоять из двух частей – как это выглядело изначально, и что мы выяснили в итоге.
Итак —
Читать дальше →
Total votes 101: ↑94 and ↓7 +87
Views 58K
Comments 39

Сериализация в Java: как заглянуть внутрь черного ящика

«Maxifier Development» corporate blog Open source *Java *
Translation
Испокон веку в Java есть чудесный механизм сериализации, который позволяет, не прилагая особых умственных усилий, сохранять в виде последовательности байт сколь угодно сложные графы объектов. Формат хранения хорошо документирован, есть куча примеров, сериализованные объекты «весят» вполне себе немного, пересылаются по сети на раз, есть куча возможностей для кастомизации… Все это звучит прекрасно, но только до тех пор, пока вы не останетесь один на один каким-нибудь многомегабайтным бинарным файлом, содержащим очень-очень ценные и нужные именно сейчас данные.

Как голыми руками залезть в этот файл, и понять, что же хранится внутри этого огромного сериализованного графа объектов, не имея исходного кода? На эти и многие другие вопросы может ответить Serialysis – библиотека, которая позволит вам детально проанализировать сериализованные java-объекты (сериализованная форма — это мой вариант перевода выражения serial forms, решил не уходить далеко от оригинала). Таким образом можно получить информацию об объекте, которая не доступна через его публичный API. Библиотека также является полезным инструментом при тестировании сериализации ваших собственных классов.
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Views 15K
Comments 1

Запад есть Запад, Восток есть Восток. О разнице культур и взаимодействии внутри международной компании

«Maxifier Development» corporate blog
Разница менталитетов и национальных деловых культур – тема вечная и актуальности своей не теряющая: чужая душа – по-прежнему потемки, а чужая заокеанная душа – еще и неиссякаемый источник курьезов и недопониманий. Поэтому хочу остановиться на одном принципиальном различии в мировоззрении двух культур. Сразу скажу, в данном сравнении речь пойдет только о русских и американцах (или, точнее, носителях русской и американской культур и ментальности). По англичанам мой опыт несколько другой, а по другим нациям не столь большая выборка, чтобы делать какие-либо выводы.

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

Наверное, я мог бы попробовать сформулировать разницу в одном предложении, но для полного понимания приведу красивую теоретическую базу, подтверждающую опыт.
Иллюстрация
Читать далее
Total votes 109: ↑92 and ↓17 +75
Views 58K
Comments 63

Написание диссертации. Инструкция к применению. Взгляд с другой стороны баррикад

«Maxifier Development» corporate blog
image
На Хабре регулярно появляются статьи, ориентированные на помощь при написании и защите диссертации (например, здесь и здесь). Лично мне в свое время помогли шуточные заповеди диссертанта, коим уже не один десяток лет (вариант, который впервые увидел я, был еще рукописным, причем потрепанным не хуже древнерусских летописей).

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

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

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

При этом обращу внимание, что все нижесказанное ни в коей мере не официальная позиция ученых советов или, наоборот, тайное знание клана профессоров, а просто субъективное мнение отдельно взятого меня.
Итак, поехали.
Total votes 115: ↑112 and ↓3 +109
Views 188K
Comments 98

Слишком быстрый, слишком мегаморфный: что влияет на производительность вызова метода в Java?

«Maxifier Development» corporate blog High performance *Java *
Translation
От переводчика:
спор сторонников написания final везде и всюду и их противников сродни спору остроконечников и тупоконечников. Как и в некоторых других сообществах, в нашей компании этот вялотекущий спор шел годами. И только эта статья Ричарда Вэрбёртона (Richard Warburton) позволила нашим остроконечникам взять верх.


О чём речь?

Начнем с небольшого рассказа. Несколько недель назад я отправил в список рассылки Java core libs своё предложение убрать модификатор final с некоторых методов. В результате возникло несколько тем для дискуссии. Одна из них, например, — выяснить, в какой степени ухудшится производительность вызова метода, который был final, если этот final с него убрать.

У меня были некоторые соображения о том, возникнет регрессия производительности или нет, но я сначала попытался узнать, публиковал ли кто-нибудь уже результаты бенчмарков по этому вопросу. К сожалению, я ничего не смог найти. Это не означает, что они не существуют или что другие люди не исследовали ситуацию, но я не встречал никакого кода, прошедшего экспертную проверку. Так что самое время написать несколько бенчмарков.
Читать дальше →
Total votes 42: ↑42 and ↓0 +42
Views 21K
Comments 5

Ускоряем процесс разработки с помощью Vagrant

«Maxifier Development» corporate blog
image Как часто вам приходится разрабатывать и запускать приложение локально и упорно искать проблемы, потому что на продакшене приложение ведёт себя не совсем так, как вы этого хотели? А как часто вам присылают тикеты для решения проблемы в приложении, хотя на самом деле проблема именно в несовместимости версий разных приложений? А как долго вам приходится ждать виртуалку, когда для запуска новой версии приложения недостаточно ресурсов локальной машины? Для нас эти вопросы были довольно больными, и мы сломали тысячи копий в спорах, стараясь решить их. Практика показывает, что одним из вариантов для решения этих проблем может стать Vagrant.
Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Views 66K
Comments 10