SlideShare a Scribd company logo
1 of 28
Как мы разрабатываем
Sphinx
Аксенов Андрей
Sphinx Technologies Inc
Про доклад
• Nsk12…Ekb14
• Что? Сфинкс (сервер такой)
• Кто? Команда!
• Как? Удаленно!
• Что хорошо? Что плохо?
• Выводов не будет!
Структура компании
• Консультанты, 2
• Разработка, 6 (*)
• Консультации тоже
• (*) Условно включая меня…
• Продажи, 2
• Инфра, 2
• – А чо так мало? – А вот!!!
Мы говорим Ленин...
• Команда разработчиков
Мы говорим Ленин...
• Команда разработчиков
• Маленькая, очень
• Удаленная, полностью
• Звездочка, исторически
• Диктатура, вынужденно
• Ничто не религия – так сложилось
• Работа по домам – и плюсы и минусы
Вольно пасущиеся коты
• Внешняя часть
• Mantis, форум
• Внутренняя часть
• IRC, Skype, email, телефон
• Eventum, Wiki, Mantis
• Google Docs
Кафка. «Процесс».
- Холст, сыр, масло
• Как устроен процесс “про код”?
• Какие именно Мега Практики есть?
• Каких нету, каких зря, каких спецом?
• Как и почему именно так получилось?
• Полтора выстраданных опытом фокуса
“Мы е…и все на свете”
• Waterfall ?
• Agile ?
• SCRUM ?
• Kanban ?
• Six Sigma ?
. . .
“Мы е…и все на свете”
• Waterfall ?
• Agile ?
• SCRUM ?
• Kanban ?
• Six Sigma ?
. . .
• X3M !
“Do the reasonable thing”
• По-русски, возможно, “включи мозг”
• Раскидываем баги, фичи, редкий R&D
• Мини-лекции и “атаки” по потребности
• Отчитываемся (еженедельный звонок)
• Итерации типично короткие
• Результаты типично прозрачные
• Ничего особенного, как и обещал
Зоопарк VCS
• Публичный svn (R/O зеркало, Gcode)
• Был внутренний hg
• Стал внутренний git-svn
• Для длинных веток
• Для секретных веток
• Для промежуточных патчей
• Когда-нибудь будет чисто Github
Зоопарк сред разработки
• Каждый строчит, как он хочет
• gcc + emacs + …, MSVC 2008/2012
• MSVS 2005, Xcode, Codeblocks
• Довольно кроссплатформенно
• Платформо-зависимого кода... МАЛО
Про кодстиль
for ( int i=0; i<m_tSchema.GetAttrsCount(); i++ )
{
const CSphColumnInfo & tCol = m_tSchema.GetAttr(i);
ESphAttr eAttrType = tCol.m_eAttrType;
if ( eAttrType==SPH_ATTR_UINT64SET )
{
if ( tCol.m_eSrc==SPH_ATTRSRC_FIELD )
bHaveFieldMVAs = true;
dMvaIndexes.Add ( i );
dMvaLocators.Add ( tCol.m_tLocator );
Про кодстиль
• Своеобразный
• Пробелы
• Мини-венгерская нотация
• Смесь систем именования типов
• Но оправданный!
• Мгновенный контекст
• Читаемость без подсветки и в целом
Про кодстиль
• Форсирую стиль
• Форсирую компактность
• Политика?
• Религия?
• Прагматика!
• Ревью на старте. Типично ~1 мес
• Линт и сразу и потом. Google ftw
Про библиотеки итп STL
• STL, boost исторически не пользуемся
• Было нельзя, сейчас незачем
• Только вручную, только хардкор!
• Сторонние библиотеки, эээ, по ситуации
• libstemmer, libre2 линкуем
• libaot, часть стеммеров переписали
Про ревью
• Все еще без спецтулзов
• Git бранчи FTW
• NB, важно осознавать цели
• Баги так ловить нельзя
• Проверка стиля итп дури
• Проверка “туда ли идем”
• Двойные проверки особо важного
Внутренняя документация
• Есть полупубличная, полудохлая
• doc/internals*.txt
• Есть совсем внутренняя
• Особо секретная, так надо!!!
• Маленькая, всего 10 18 страниц
• Пишется по ситуации (найм / новое
/ хорошо забытое старое)
Внешняя документация
• Неизменно БОЛЬ
• Программисты плохо пишут
• Пользователи плохо спрошают
• Нужен уникальный спец-человек
• Штоп разбирался
• Штоп интересовался
• Все еще пока не нашли!
Про тестирование
• Внутреннее, автоматизированное
• Функциональные тесты
• 200+ штук, 4000+ запросов
• Юнит-тесты
• Тесты производительности (***)
• Спецтестеров нет, вряд ли будет
• Плюс фидбэк! (когда бывает)
“Толька! Этого мало!”
• Все равно проникают адовые баги :)
• Баги бывают трех классов, A, B, C
• Но иногда! бывают баги класса Ы
• issue-72, issue-136, …
• bug-660, bug-1117, …
• И отдельной строкой performance issues
• prefork spin, O(n^2) zones, …
Специфика удаленки
+ Спокойно, нету геопривязки, офиса,
свободный график…
– Спокойно, ограниченный контакт,
свободный график…
• Ключевое, самодисциплина
• Push модель vs pull модель
• В остальном – вроде обычный orgchart
Стоит ли так жить?
• Не знаю!!!
• Но вот – иногда возможно
Вопросы?
Аксенов Андрей
Sphinx Technologies Inc
shodan@sphinxsearch.com
+1 (888) 333-1345

More Related Content

What's hot

My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016Alex Chistyakov
 
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?HappyDev-lite
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Daniel Podolsky
 
Алексей Ефимов "Основные грабли при разработке видеохостинга"
Алексей Ефимов "Основные грабли при разработке видеохостинга"Алексей Ефимов "Основные грабли при разработке видеохостинга"
Алексей Ефимов "Основные грабли при разработке видеохостинга"Yandex
 

What's hot (7)

My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016
 
Ruby basics
Ruby basicsRuby basics
Ruby basics
 
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
 
Devconf15
Devconf15Devconf15
Devconf15
 
Барнаул15
Барнаул15Барнаул15
Барнаул15
 
Алексей Ефимов "Основные грабли при разработке видеохостинга"
Алексей Ефимов "Основные грабли при разработке видеохостинга"Алексей Ефимов "Основные грабли при разработке видеохостинга"
Алексей Ефимов "Основные грабли при разработке видеохостинга"
 

Viewers also liked

Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
 Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур  Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур it-people
 
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info it-people
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо... PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...it-people
 
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma Badoo Development
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoBadoo Development
 
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooTechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooBadoo Development
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruBadoo Development
 

Viewers also liked (7)

Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
 Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур  Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
 
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо... PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, Erlyvideo
 
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooTechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, Badoo
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
 

Similar to А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Компания навыворот (Андрей Аксенов)
Компания навыворот (Андрей Аксенов)Компания навыворот (Андрей Аксенов)
Компания навыворот (Андрей Аксенов)Ontico
 
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...ScrumTrek
 
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)Ontico
 
Как устроен поиск
Как устроен поискКак устроен поиск
Как устроен поискAndrew Aksyonoff
 
Как устроен поиск (Андрей Аксёнов)
Как устроен поиск (Андрей Аксёнов)Как устроен поиск (Андрей Аксёнов)
Как устроен поиск (Андрей Аксёнов)Ontico
 
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29Sergey Tihon
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровьМаксим Сячин
 
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"Yandex
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструментыRoman Dvornov
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Ontico
 
Всему своё время Highload Junior 2016
Всему своё время   Highload Junior  2016Всему своё время   Highload Junior  2016
Всему своё время Highload Junior 2016Roman Ivliev
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON
 
Гибкое прототипирование для гибкой разработки (Максим Гапонов)
Гибкое прототипирование для гибкой разработки (Максим Гапонов)Гибкое прототипирование для гибкой разработки (Максим Гапонов)
Гибкое прототипирование для гибкой разработки (Максим Гапонов)Ontico
 
Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумоеAlexander Byndyu
 
UWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворкахUWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворкахAlexander Makarov
 
Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Ontico
 
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере ResharperCodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере ResharperCodeFest
 
Мастер-класс: Системное мышление
Мастер-класс: Системное мышлениеМастер-класс: Системное мышление
Мастер-класс: Системное мышлениеCEE-SEC(R)
 

Similar to А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014 (20)

Компания навыворот (Андрей Аксенов)
Компания навыворот (Андрей Аксенов)Компания навыворот (Андрей Аксенов)
Компания навыворот (Андрей Аксенов)
 
Белоус Екатерина
Белоус ЕкатеринаБелоус Екатерина
Белоус Екатерина
 
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
 
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
 
Как устроен поиск
Как устроен поискКак устроен поиск
Как устроен поиск
 
Как устроен поиск (Андрей Аксёнов)
Как устроен поиск (Андрей Аксёнов)Как устроен поиск (Андрей Аксёнов)
Как устроен поиск (Андрей Аксёнов)
 
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровь
 
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструменты
 
Go
GoGo
Go
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)
 
Всему своё время Highload Junior 2016
Всему своё время   Highload Junior  2016Всему своё время   Highload Junior  2016
Всему своё время Highload Junior 2016
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодня
 
Гибкое прототипирование для гибкой разработки (Максим Гапонов)
Гибкое прототипирование для гибкой разработки (Максим Гапонов)Гибкое прототипирование для гибкой разработки (Максим Гапонов)
Гибкое прототипирование для гибкой разработки (Максим Гапонов)
 
Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумое
 
UWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворкахUWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворках
 
Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...
 
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере ResharperCodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
 
Мастер-класс: Системное мышление
Мастер-класс: Системное мышлениеМастер-класс: Системное мышление
Мастер-класс: Системное мышление
 

More from it-people

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Coit-people
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghubit-people
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrainsit-people
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologiesit-people
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндексit-people
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...it-people
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalrit-people
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...it-people
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАНit-people
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банкit-people
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Coit-people
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНСit-people
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...it-people
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologiesit-people
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn Systemit-people
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologiesit-people
 
«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндексit-people
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...it-people
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognicianit-people
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...it-people
 

More from it-people (20)

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies
 
«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
 

А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

  • 2. Про доклад • Nsk12…Ekb14 • Что? Сфинкс (сервер такой) • Кто? Команда! • Как? Удаленно! • Что хорошо? Что плохо? • Выводов не будет!
  • 3. Структура компании • Консультанты, 2 • Разработка, 6 (*) • Консультации тоже • (*) Условно включая меня… • Продажи, 2 • Инфра, 2 • – А чо так мало? – А вот!!!
  • 4. Мы говорим Ленин... • Команда разработчиков
  • 5. Мы говорим Ленин... • Команда разработчиков • Маленькая, очень • Удаленная, полностью • Звездочка, исторически • Диктатура, вынужденно • Ничто не религия – так сложилось • Работа по домам – и плюсы и минусы
  • 6. Вольно пасущиеся коты • Внешняя часть • Mantis, форум • Внутренняя часть • IRC, Skype, email, телефон • Eventum, Wiki, Mantis • Google Docs
  • 7. Кафка. «Процесс». - Холст, сыр, масло • Как устроен процесс “про код”? • Какие именно Мега Практики есть? • Каких нету, каких зря, каких спецом? • Как и почему именно так получилось? • Полтора выстраданных опытом фокуса
  • 8. “Мы е…и все на свете” • Waterfall ? • Agile ? • SCRUM ? • Kanban ? • Six Sigma ? . . .
  • 9.
  • 10. “Мы е…и все на свете” • Waterfall ? • Agile ? • SCRUM ? • Kanban ? • Six Sigma ? . . . • X3M !
  • 11. “Do the reasonable thing” • По-русски, возможно, “включи мозг” • Раскидываем баги, фичи, редкий R&D • Мини-лекции и “атаки” по потребности • Отчитываемся (еженедельный звонок) • Итерации типично короткие • Результаты типично прозрачные • Ничего особенного, как и обещал
  • 12. Зоопарк VCS • Публичный svn (R/O зеркало, Gcode) • Был внутренний hg • Стал внутренний git-svn • Для длинных веток • Для секретных веток • Для промежуточных патчей • Когда-нибудь будет чисто Github
  • 13. Зоопарк сред разработки • Каждый строчит, как он хочет • gcc + emacs + …, MSVC 2008/2012 • MSVS 2005, Xcode, Codeblocks • Довольно кроссплатформенно • Платформо-зависимого кода... МАЛО
  • 14. Про кодстиль for ( int i=0; i<m_tSchema.GetAttrsCount(); i++ ) { const CSphColumnInfo & tCol = m_tSchema.GetAttr(i); ESphAttr eAttrType = tCol.m_eAttrType; if ( eAttrType==SPH_ATTR_UINT64SET ) { if ( tCol.m_eSrc==SPH_ATTRSRC_FIELD ) bHaveFieldMVAs = true; dMvaIndexes.Add ( i ); dMvaLocators.Add ( tCol.m_tLocator );
  • 15. Про кодстиль • Своеобразный • Пробелы • Мини-венгерская нотация • Смесь систем именования типов • Но оправданный! • Мгновенный контекст • Читаемость без подсветки и в целом
  • 16. Про кодстиль • Форсирую стиль • Форсирую компактность • Политика? • Религия? • Прагматика! • Ревью на старте. Типично ~1 мес • Линт и сразу и потом. Google ftw
  • 17. Про библиотеки итп STL • STL, boost исторически не пользуемся • Было нельзя, сейчас незачем • Только вручную, только хардкор! • Сторонние библиотеки, эээ, по ситуации • libstemmer, libre2 линкуем • libaot, часть стеммеров переписали
  • 18.
  • 19. Про ревью • Все еще без спецтулзов • Git бранчи FTW • NB, важно осознавать цели • Баги так ловить нельзя • Проверка стиля итп дури • Проверка “туда ли идем” • Двойные проверки особо важного
  • 20. Внутренняя документация • Есть полупубличная, полудохлая • doc/internals*.txt • Есть совсем внутренняя • Особо секретная, так надо!!! • Маленькая, всего 10 18 страниц • Пишется по ситуации (найм / новое / хорошо забытое старое)
  • 21. Внешняя документация • Неизменно БОЛЬ • Программисты плохо пишут • Пользователи плохо спрошают • Нужен уникальный спец-человек • Штоп разбирался • Штоп интересовался • Все еще пока не нашли!
  • 22. Про тестирование • Внутреннее, автоматизированное • Функциональные тесты • 200+ штук, 4000+ запросов • Юнит-тесты • Тесты производительности (***) • Спецтестеров нет, вряд ли будет • Плюс фидбэк! (когда бывает)
  • 23.
  • 24. “Толька! Этого мало!” • Все равно проникают адовые баги :) • Баги бывают трех классов, A, B, C • Но иногда! бывают баги класса Ы • issue-72, issue-136, … • bug-660, bug-1117, … • И отдельной строкой performance issues • prefork spin, O(n^2) zones, …
  • 25.
  • 26. Специфика удаленки + Спокойно, нету геопривязки, офиса, свободный график… – Спокойно, ограниченный контакт, свободный график… • Ключевое, самодисциплина • Push модель vs pull модель • В остальном – вроде обычный orgchart
  • 27. Стоит ли так жить? • Не знаю!!! • Но вот – иногда возможно
  • 28. Вопросы? Аксенов Андрей Sphinx Technologies Inc shodan@sphinxsearch.com +1 (888) 333-1345