0
Как мы разрабатываем
Sphinx
Аксенов Андрей
Sphinx Technologies Inc
Про доклад
• Nsk12…Ekb14
• Что? Сфинкс (сервер такой)
• Кто? Команда!
• Как? Удаленно!
• Что хорошо? Что плохо?
• Выводов ...
Структура компании
• Консультанты, 2
• Разработка, 6 (*)
• Консультации тоже
• (*) Условно включая меня…
• Продажи, 2
• Ин...
Мы говорим Ленин...
• Команда разработчиков
Мы говорим Ленин...
• Команда разработчиков
• Маленькая, очень
• Удаленная, полностью
• Звездочка, исторически
• Диктатура...
Вольно пасущиеся коты
• Внешняя часть
• Mantis, форум
• Внутренняя часть
• IRC, Skype, email, телефон
• Eventum, Wiki, Man...
Кафка. «Процесс».
- Холст, сыр, масло
• Как устроен процесс “про код”?
• Какие именно Мега Практики есть?
• Каких нету, ка...
“Мы е…и все на свете”
• 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
• Для длинных веток
• Для с...
Зоопарк сред разработки
• Каждый строчит, как он хочет
• 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);
ESphA...
Про кодстиль
• Своеобразный
• Пробелы
• Мини-венгерская нотация
• Смесь систем именования типов
• Но оправданный!
• Мгнове...
Про кодстиль
• Форсирую стиль
• Форсирую компактность
• Политика?
• Религия?
• Прагматика!
• Ревью на старте. Типично ~1 м...
Про библиотеки итп STL
• STL, boost исторически не пользуемся
• Было нельзя, сейчас незачем
• Только вручную, только хардк...
Про ревью
• Все еще без спецтулзов
• Git бранчи FTW
• NB, важно осознавать цели
• Баги так ловить нельзя
• Проверка стиля ...
Внутренняя документация
• Есть полупубличная, полудохлая
• doc/internals*.txt
• Есть совсем внутренняя
• Особо секретная, ...
Внешняя документация
• Неизменно БОЛЬ
• Программисты плохо пишут
• Пользователи плохо спрошают
• Нужен уникальный спец-чел...
Про тестирование
• Внутреннее, автоматизированное
• Функциональные тесты
• 200+ штук, 4000+ запросов
• Юнит-тесты
• Тесты ...
“Толька! Этого мало!”
• Все равно проникают адовые баги :)
• Баги бывают трех классов, A, B, C
• Но иногда! бывают баги кл...
Специфика удаленки
+ Спокойно, нету геопривязки, офиса,
свободный график…
– Спокойно, ограниченный контакт,
свободный граф...
Стоит ли так жить?
• Не знаю!!!
• Но вот – иногда возможно
Вопросы?
Аксенов Андрей
Sphinx Technologies Inc
shodan@sphinxsearch.com
+1 (888) 333-1345
А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014
А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014
А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014
А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014
Upcoming SlideShare
Loading in...5
×

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

421

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
421
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

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

    Clipping is a handy way to collect important slides you want to go back to later.

×